# Оновлюємо систему
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
      
 