8 KiB
Оновлюємо систему
sudo apt update && sudo apt upgrade -y
Встановлюємо залежності
sudo apt install -y ca-certificates curl gnupg lsb-release
Додаємо ключ Docker
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Додаємо репозиторій Docker
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Оновлюємо apt і показуємо доступні версії (для перевірки)
sudo apt update apt-cache madison docker-ce | awk '{print $3}'
Встановлюємо конкретну версію Docker CE (тут 28.5.2 для Portainer)
sudo apt install -y
docker-ce=5:28.5.2-1ubuntu.25.10questing
docker-ce-cli=5:28.5.2-1ubuntu.25.10questing
containerd.io
docker-buildx-plugin
docker-compose-plugin
Блокуємо версію, щоб apt не оновлював Docker автоматично
sudo apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Перевіряємо встановлення
docker --version docker compose version
Установка webmin
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.sh
sudo apt-get install --install-recommends webmin usermin
sudo reboot
Логин и пароль в webmin это пароль рута. Он должен быть сложный и длинный но желательно без спец символов бывали с этим глюки.
Portainer
Создаем директорию на сервере
sudo docker volume create portainer_data
Установка Portainer с необходимыми параметрами
sudo docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Проверка запущенных контейнеров
sudo docker ps
У вас есть 5 минут на настройку.
https://support.boxpizza.com.ua:9443/ Portainer висит портом в интернет пароль должен быть очень сложный и на 32 символа. Это важно так как только через него можно управлять контейнерами.
Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.
Якщо ви отримуєте наведене вище повідомлення про помилку, ви можете вирішити це, зупинивши та перезапустивши контейнер Portainer. Це дасть вам ще 5 хвилин для завершення початкового налаштування.
docker stop portainer
docker start portainer
--- БАЗА ДАНИХ (Згенеровано новий пароль) ---
POSTGRES_PASSWORD=GenX_99!SuperStrongPass#2025_Ukr
--- JWT КЛЮЧІ (УВАГА: Це стандартні ключі для старту. Див. інструкцію нижче для зміни) ---
JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
--- НАЛАШТУВАННЯ DASHBOARD (STUDIO) ---
DASHBOARD_USERNAME=admin DASHBOARD_PASSWORD=Admin_Supabase_Secure_2025!
--- КЛЮЧІ ШИФРУВАННЯ (Згенеровано нові) ---
SECRET_KEY_BASE=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 VAULT_ENC_KEY=12345678901234567890123456789012 PG_META_CRYPTO_KEY=12345678901234567890123456789012
--- ПОРТИ ТА НАЛАШТУВАННЯ DB ---
POSTGRES_HOST=db POSTGRES_DB=postgres POSTGRES_PORT=5432 POOLER_PROXY_PORT_TRANSACTION=6543 POOLER_DEFAULT_POOL_SIZE=20 POOLER_MAX_CLIENT_CONN=100 POOLER_TENANT_ID=notefix-tenant-id POOLER_DB_POOL_SIZE=5
--- ПОРТИ API (KONG) ---
KONG_HTTP_PORT=8000 KONG_HTTPS_PORT=8443
--- НАЛАШТУВАННЯ DB SCHEMAS ---
PGRST_DB_SCHEMAS=public,storage,graphql_public
--- ВАЖЛИВО: URL АДРЕСИ ---
Припускаємо, що у вас налаштовано SSL (https) через проксі
SITE_URL=https://n8n.notefix.net.ua ADDITIONAL_REDIRECT_URLS=https://n8n.notefix.net.ua API_EXTERNAL_URL=https://n8n.notefix.net.ua SUPABASE_PUBLIC_URL=https://n8n.notefix.net.ua
--- АВТОРИЗАЦІЯ ---
JWT_EXPIRY=3600 DISABLE_SIGNUP=false ENABLE_EMAIL_SIGNUP=true ENABLE_EMAIL_AUTOCONFIRM=false ENABLE_ANONYMOUS_USERS=false ENABLE_PHONE_SIGNUP=true ENABLE_PHONE_AUTOCONFIRM=true
--- EMAIL (SMTP) ---
Налаштуйте тут реальні дані свого поштового сервісу (Gmail, SendGrid тощо)
Якщо поки немає пошти - залиште як є, але підтвердження email не працюватиме.
MAILER_URLPATHS_CONFIRMATION="/auth/v1/verify" MAILER_URLPATHS_INVITE="/auth/v1/verify" MAILER_URLPATHS_RECOVERY="/auth/v1/verify" MAILER_URLPATHS_EMAIL_CHANGE="/auth/v1/verify" SMTP_ADMIN_EMAIL=admin@n8n.notefix.net.ua SMTP_HOST=supabase-mail SMTP_PORT=2500 SMTP_USER=fake_mail_user SMTP_PASS=fake_mail_password SMTP_SENDER_NAME=Supabase_Admin
--- ІНШЕ ---
STUDIO_DEFAULT_ORGANIZATION=Notefix Org STUDIO_DEFAULT_PROJECT=Notefix Project IMGPROXY_ENABLE_WEBP_DETECTION=true OPENAI_API_KEY= FUNCTIONS_VERIFY_JWT=false
--- LOGFLARE (Аналітика логів) ---
LOGFLARE_PUBLIC_ACCESS_TOKEN=lf_public_key_random_generated_string_123 LOGFLARE_PRIVATE_ACCESS_TOKEN=lf_private_key_random_generated_string_456
--- DOCKER ---
DOCKER_SOCKET_LOCATION=/var/run/docker.sock
--- GOOGLE AUTH (Опціонально) ---
GOOGLE_PROJECT_ID= GOOGLE_PROJECT_NUMBER=
version: "3.8"
volumes:
n8n_app_data:
n8n_db_data:
services:
postgres:
image: postgres
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
- EXECUTIONS_DATA_PRUNE=true
volumes:
- n8n_db_data:/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
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
links:
- postgres
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
- NODE_ENV=production
- WEBHOOK_URL=${DOMAIN}
- GENERIC_TIMEZONE=${TIMEZONE}
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
- EXECUTIONS_DATA_PRUNE=true
depends_on:
postgres:
condition: service_healthy
volumes:
- n8n_app_data:/home/node/.n8n
- /n8n-local-files:/files
networks:
default:
external:
name: supabase_default