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
Проверьте компоненты. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.
Проверьте компоненты. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.

Создайте проект и выберите версию

Создайте новый каталог и .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
Создайте проект и выберите версию. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.
Создайте проект и выберите версию. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.

Сохраните 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:
Сохраните Compose с локальным портом. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.
Сохраните Compose с локальным портом. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.

Проверьте настройки и запустите

Сначала выполните только проверку прав и 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
Проверьте настройки и запустите. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.
Проверьте настройки и запустите. Реальный стенд rootless Docker: sudo здесь не требуется. n8n 2.45.5 — версия записанной демонстрации, а не рекомендация последнего релиза для эксплуатации.

Откройте 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. Интерфейс зависит от версии. Откройте изображение для просмотра в полном размере.

Пустая форма владельца n8n
Создайте владельца после подключения к n8n через закрытый SSH-туннель. Форма показана до ввода учётных данных.

Проверьте работу и резервное копирование

Запустите ручной 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 и проверьте оба значения.

Поля message и verified в настройках Edit Fields
В Edit Fields добавьте несекретное сообщение и логическое значение verified.
Успешный workflow n8n с Manual Trigger и Edit Fields
Демонстрация из двух узлов после реального успешного ручного выполнения.
Результат n8n с тестовым сообщением и verified равным true
Фактический результат Edit Fields: тестовое сообщение и verified = true.

Официальные источники