Установка Coolify: Развёртывание приложений с Self-Hosted PaaS
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Установка n8n через Docker, интеграции webhook, создание рабочих процессов, подключение 400+ приложений, запланированные задачи, управление учётными данными и развёртывание в production.
n8n — это платформа автоматизации рабочих процессов с открытым исходным кодом и визуальным интерфейсом, которая может подключать 400+ приложений и сервисов. Вы можете запустить её на собственном сервере как самостоятельно размещаемую альтернативу таким сервисам, как Zapier и Make (Integromat). Вы можете создавать сложные автоматизации без написания кода или добавлять пользовательскую логику с помощью JavaScript/Python.
n8n (сокращение от «nodemation») позволяет создавать рабочие процессы с помощью узловой визуальной программирования. Ключевые особенности:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Moscow
- N8N_ENCRYPTION_KEY=надёжный-ключ-шифрования
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
# Запустить контейнер
docker compose up -d
# Проверить логи
docker logs n8n -f
N8N_ENCRYPTION_KEY используется для шифрования учётных данных. Если вы потеряете это значение, все ваши учётные данные станут недоступными. Храните его в безопасном месте.
version: '3.8'
services:
postgres:
image: postgres:15
container_name: n8n-postgres
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: надёжный-пароль
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=надёжный-пароль
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- GENERIC_TIMEZONE=Europe/Moscow
- N8N_ENCRYPTION_KEY=надёжный-ключ-шифрования
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=пароль-администратора
volumes:
- ./n8n-data:/home/node/.n8n
ports:
- "127.0.0.1:5678:5678"
volumes:
postgres-data:
server {
listen 80;
server_name n8n.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
}
}
/slack-notify{{ $json.message }}# Тест webhook
curl -X POST https://n8n.example.com/webhook/slack-notify \
-H "Content-Type: application/json" \
-d '{"message": "Привет, n8n!"}'
# Cron-выражения
0 9 * * 1-5 # Будни в 09:00
*/15 * * * * # Каждые 15 минут
0 0 * * * # Каждую полночь
0 8 * * 1 # Каждый понедельник в 08:00
Настройки → Учётные данные → Добавить учётные данные
Пример: GitHub API
- Тип учётных данных: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- Проверить соединение
GitHub Trigger (событие push)
→ IF (branch == 'main')
→ Slack ("Новый деплой: {{ $json.commits[0].message }}")
→ Email (уведомить команду)
Cron Trigger (каждое утро в 09:00)
→ PostgreSQL (получить вчерашние продажи)
→ Code (форматировать данные)
→ Google Sheets (добавить в отчёт)
→ Slack (отправить сводку)
environment:
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
redis:
image: redis:7-alpine
container_name: n8n-redis
restart: unless-stopped
# Резервное копирование данных n8n
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/
# Резервное копирование PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql
С n8n на серверах REXE VPS вы можете автоматизировать все свои бизнес-процессы. С 2 ГБ ОЗУ можно запускать сотни рабочих процессов.
n8n является самостоятельно размещаемым и с открытым исходным кодом; Zapier — облачный и платный. С n8n ваши данные остаются на вашем собственном сервере, и вы можете создавать неограниченное количество рабочих процессов и выполнений. Zapier может быть более удобным, но имеет ежемесячные лимиты выполнений и высокие затраты. n8n также позволяет писать пользовательский код на JavaScript/Python.
Убедитесь, что переменная окружения WEBHOOK_URL правильно установлена (https://n8n.example.com/). Проверьте, что прокси Nginx поддерживает WebSocket-соединения (заголовки Upgrade и Connection). Убедитесь, что порт 443 открыт в брандмауэре. Убедитесь, что рабочий процесс в n8n находится в состоянии 'Active'.
Если N8N_ENCRYPTION_KEY изменён, существующие учётные данные не могут быть расшифрованы. В этом случае необходимо заново создать все учётные данные. Поэтому хранение ключа шифрования в безопасном месте (менеджер паролей, vault) имеет критическое значение. Создавайте резервную копию этого ключа при резервном копировании.
Ограничьте историю выполнений: EXECUTIONS_DATA_MAX_AGE=168 (7 дней). Для больших наборов данных сохраняйте бинарные данные в файловой системе: N8N_DEFAULT_BINARY_DATA_MODE=filesystem. Контролируйте количество воркеров с помощью режима очереди. Отключите ненужные рабочие процессы.
Вы можете видеть вывод каждого узла в редакторе рабочих процессов. Тестируйте отдельные узлы с помощью 'Execute Node'. Просматривайте прошлые запуски из списка выполнений. Добавьте узел ошибки для перехвата ошибок и получения уведомлений в Slack/email. Проверяйте системные логи с помощью docker logs n8n.
При использовании PostgreSQL обновление безопасно. Создайте резервную копию базы данных перед обновлением: docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql. Затем обновите с помощью docker compose pull && docker compose up -d. n8n выполняет автоматические миграции. При использовании SQLite создайте резервную копию директории ./n8n-data/.
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Установка Nextcloud с Docker, настройка Apache/Nginx, установка базы данных, SSL-сертификат, синхронизация файлов, магазин приложений и оптимизация производительности.
Установка Portainer CE, управление Docker и Kubernetes, развёртывание стеков, управление томами/сетями, авторизация пользователей, вебхуки и интеграция GitOps.