263 lines
8 KiB
Markdown
263 lines
8 KiB
Markdown
|
|
# Оновлюємо систему
|
|||
|
|
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-1~ubuntu.25.10~questing \
|
|||
|
|
docker-ce-cli=5:28.5.2-1~ubuntu.25.10~questing \
|
|||
|
|
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/](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
|
|||
|
|
|
|||
|
|
|