Устанавливаем n8n на FastPanel с Docker Compose: Понятное руководство
Опубликовано 03.07.2025
В этом руководстве я покажу вам, как легко установить n8n, мощный инструмент для автоматизации рабочих процессов, на ваш сервер с FastPanel, используя Docker Compose. FastPanel отлично подходит для управления веб-серверами, а Docker Compose упрощает развертывание сложных приложений, таких как n8n, с его зависимостями (PostgreSQL и Redis).
Что понадобится
- Ваш сервер с установленным FastPanel.
- Домен или поддомен, который вы будете использовать для доступа к n8n (например,
n8n.yourdomain.com
). - Базовые знания работы с SSH и командной строкой.
Шаг 1: Подготовка сервера
Подключаемся к серверу по SSH и создаём директорию:
sudo mkdir -p /opt/n8n_stack
cd /opt/n8n_stack
Шаг 2: Создание файлов конфигурации
Понадобятся следующие файлы:
docker-compose.yml
.env
init-data.sh
healthcheck.js
2.1. docker-compose.yml
nano docker-compose.yml
version: '3.8'
x-shared: &shared
restart: always
image: docker.n8n.io/n8nio/n8n:1.91.3
env_file: .env
user: "1000:1000"
volumes:
- /opt/n8n_stack/n8n_storage:/home/node/.n8n
- ./healthcheck.js:/healthcheck.js
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
services:
postgres:
image: postgres:11
restart: always
env_file: .env
volumes:
- /opt/n8n_stack/db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
redis:
image: redis:6-alpine
restart: always
volumes:
- /opt/n8n_stack/redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10
n8n:
<<: *shared
ports:
- "127.0.0.1:5678:5678"
healthcheck:
test: ["CMD", "node", "/healthcheck.js"]
interval: 5s
timeout: 5s
retries: 10
n8n-worker:
<<: *shared
command: worker
depends_on:
- n8n
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:5678/healthz || exit 1"]
interval: 5s
timeout: 5s
retries: 10
2.2. .env
nano .env
# n8n
N8N_HOST=your_n8n_domain.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://your_n8n_domain.com/
N8N_ENCRYPTION_KEY=your_secure_password_for_n8n
GENERIC_TIMEZONE=Europe/Moscow
TZ=Europe/Moscow
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=your_db_name
DB_POSTGRESDB_USER=your_non_root_db_user
DB_POSTGRESDB_PASSWORD=your_non_root_db_password
# PostgreSQL (root)
POSTGRES_DB=your_db_name
POSTGRES_USER=your_db_user
POSTGRES_PASSWORD=your_db_password
# PostgreSQL (non-root for n8n)
POSTGRES_NON_ROOT_USER=your_non_root_db_user
POSTGRES_NON_ROOT_PASSWORD=your_non_root_db_password
2.3. init-data.sh
nano init-data.sh
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
DO
\$do\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '${POSTGRES_NON_ROOT_USER}') THEN
CREATE USER "${POSTGRES_NON_ROOT_USER}" WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
ELSE
ALTER USER "${POSTGRES_NON_ROOT_USER}" WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
END IF;
END
\$do\$;
GRANT ALL PRIVILEGES ON DATABASE "${POSTGRES_DB}" TO "${POSTGRES_NON_ROOT_USER}";
EOSQL
else
echo "SETUP INFO: Переменные окружения POSTGRES_NON_ROOT_USER или POSTGRES_NON_ROOT_PASSWORD не заданы."
fi
chmod +x init-data.sh
2.4. healthcheck.js
nano healthcheck.js
var http = require('http');
var options = {
host: '127.0.0.1',
port: 5678,
path: '/healthz',
method: 'GET',
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
process.exit(res.statusCode === 200 ? 0 : 1);
});
req.on('error', function(e) {
console.log('ERROR: ' + e.message);
process.exit(1);
});
req.end();
Шаг 3: Запуск n8n с Docker Compose
docker compose up -d
Проверьте статус:
docker compose ps
Все сервисы должны быть в статусе running
или healthy
.
Шаг 4: Настройка FastPanel
Зайдите в FastPanel → Сайты → Добавить сайт.
Используйте домен, указанный в
.env
(n8n.yourdomain.com
).После создания:
- Перейдите в настройки сайта.
- Включите Обратный прокси (Reverse Proxy).
- Укажите адрес:
127.0.0.1:5678
. - Убедитесь, что выдан SSL (обычно Let’s Encrypt автоматически).
Поддержка WebSocket (если потребуется вручную):
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Шаг 5: Доступ к n8n
Откройте в браузере:
https://n8n.yourdomain.com
Вы увидите приветственную страницу n8n. Всё готово — можно создавать автоматизации!
Если у вас возникли вопросы или проблемы — задавайте их в комментариях.
Похожие посты
047 | Plesk: Гибкая панель для веб-профессионалов и разработчиков
09.07.2025
045 | FastPanel: Мощная и удобная панель для эффективного управления сервером
07.07.2025
044 | Hestia Control Panel: Мощная и бесплатная альтернатива
06.07.2025
042 | Панели управления сайтом: Ваш ключ к легкому хостингу
04.07.2025