Автодеплой сервисов на удаленную машину через GitHub Actions при merge в main.
services/n8n/docker-compose.yml— отдельный compose дляn8n.services/postgres/docker-compose.yml— отдельный compose дляpostgres..github/workflows/deploy-services.yml— отдельные job для каждого сервиса, запуск только из веткиmain.services/*/env.example— шаблоны переменных окружения.
- Вы делаете merge в
main. - GitHub Actions подключается к вашей машине по SSH.
- Копирует файлы в
/opt/telemanga-devops. - Job
deploy_n8nподнимаетn8nчерез его отдельный compose-файл. - Job
deploy_postgresподнимаетpostgresчерез его отдельный compose-файл (если заданыPOSTGRES_*secrets).
На целевой машине должны быть:
- Docker
- Docker Compose plugin (
docker compose) - Открыт SSH доступ снаружи (белый IP / проброшенный порт)
Создайте рабочую папку:
sudo mkdir -p /opt/telemanga-devops
sudo chown -R "$USER":"$USER" /opt/telemanga-devopsВ репозитории Settings -> Secrets and variables -> Actions добавьте:
SSH_HOST— белый IP или DNS вашей машины.SSH_PORT— обычно22.SSH_USER— пользователь на сервере.SSH_PRIVATE_KEY— приватный ключ для SSH (лучше отдельный deploy key).N8N_BASIC_AUTH_USER— логин для входа в n8n.N8N_BASIC_AUTH_PASSWORD— пароль для входа в n8n.N8N_ENCRYPTION_KEY— длинный случайный ключ для шифрования данных n8n.GENERIC_TIMEZONE— напримерAsia/Tashkent.POSTGRES_DB— имя базы для postgres.POSTGRES_USER— пользователь postgres.POSTGRES_PASSWORD— пароль postgres.
.env для каждого сервиса создается автоматически в workflow из GitHub Secrets при каждом деплое:
/opt/telemanga-devops/services/n8n/.env/opt/telemanga-devops/services/postgres/.env
Локально services/*/env.example используйте только как шаблон.
- Создать
services/<name>/docker-compose.yml. - Добавить
services/<name>/env.example. - Добавить отдельный job
deploy_<name>в workflow. - Добавить нужные
<NAME>_*secrets в GitHub.