GHOSTVPS / Автоматизация
Приватный n8n через Docker и SSH-туннель
Запустите закрытый редактор n8n, не публикуя порт 5678 в интернете.
Обновлено · GhostVPS

Перед началом
Новый Linux VPS с sudo, Docker Engine 28+, Compose v2 и SSH. Сначала установите Docker по официальной инструкции. Пример с SQLite и одним контейнером — для знакомства и ручных workflow, не для промышленного кластера или публичных webhook. Не накладывайте его на готовую установку n8n.
Проверьте компоненты
Обе команды на VPS должны завершиться успешно. Если компонент отсутствует, используйте официальную установку Docker, а не неизвестный скрипт в root shell. Ресурсы выбирайте по своим workflow, не по произвольному обещанию минимальной RAM.
Ваш VPS · терминал Linux
sudo docker version
sudo docker compose version

Создайте проект и выберите версию
Создайте новый каталог и .env. Замените REPLACE_WITH_REVIEWED_STABLE_VERSION точной поддерживаемой стабильной версией из официальных релизов n8n, изучив безопасность и обновление. Не оставляйте шаблон и не используйте непроверенный плавающий тег.
Ваш VPS · терминал Linux
mkdir -m 700 ~/n8n-private
cd ~/n8n-private
nano .env
Содержимое файла
N8N_VERSION=REPLACE_WITH_REVIEWED_STABLE_VERSION

Сохраните Compose с локальным портом
Сохраните текст как compose.yaml в каталоге проекта. Порт публикуется только на 127.0.0.1. Именованный том сохраняет базу и сгенерированный ключ шифрования при пересоздании контейнера. Не меняйте адрес на 0.0.0.0 и не подключайте Docker socket.
Содержимое файла
services:
n8n:
image: docker.n8n.io/n8nio/n8n:${N8N_VERSION:?Set N8N_VERSION in .env}
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
TZ: Etc/UTC
GENERIC_TIMEZONE: Etc/UTC
N8N_HOST: localhost
N8N_PORT: "5678"
N8N_PROTOCOL: http
N8N_EDITOR_BASE_URL: http://localhost:5678
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:

Проверьте настройки и запустите
Сначала выполните только проверку прав и config. Исправьте ошибки до pull и up. После запуска compose ps должен показывать работающий n8n. При ошибке смотрите журнал. Не открывайте редактор в интернет для обхода проблемы туннеля.
Ваш VPS · терминал Linux
chmod 600 .env &&
grep -Eq '^N8N_VERSION=[0-9]+[.][0-9]+[.][0-9]+$' .env &&
sudo docker compose config --quiet &&
sudo docker compose pull &&
sudo docker compose up -d &&
sudo docker compose ps

Откройте SSH-туннель
На своём компьютере подставьте аккаунт и адрес в SSH-команду. Проверьте отпечаток доверенным способом. Оставьте терминал открытым, откройте http://localhost:5678 на этом же компьютере и создайте владельца. Если порт занят, используйте слева 15678 и адрес localhost:15678.
Ваш компьютер · терминал
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:5678:127.0.0.1:5678 deploy@203.0.113.10
Реальные снимки из изолированной демонстрации n8n 2.45.5. Интерфейс зависит от версии. Откройте изображение для просмотра в полном размере.

Проверьте работу и резервное копирование
Запустите ручной workflow с несекретным тестовым значением и проверьте успех. Обезличивайте журналы перед отправкой. До обновлений сохраните согласованную копию тома, ключа и настроек; не используйте down -v. Для публичных webhook отдельно нужны домен, TLS и reverse proxy по текущей документации. Не отключайте secure cookies для обхода ошибок.
Ваш VPS · терминал Linux
sudo docker compose logs --tail=50 n8n
Для проверки соедините Manual Trigger с Edit Fields (Set). Добавьте message (String) = GhostVPS tutorial check и verified (Boolean) = true. Сохраните, нажмите Execute, откройте результат Edit Fields и проверьте оба значения.





