Files
ebook-extension/COOLIFY_DEPLOYMENT.md

15 KiB

🚀 Coolify Deployment Guide - Ebook Translation System

Kompletný návod na nasadenie Ebook Translation System do Coolify.


📋 Predpoklady

Čo potrebujete:

  • Coolify inštalovaný na vašom serveri
  • Git repozitár (GitHub, GitLab, Gitea, atď.)
  • Doména alebo subdoména (odporúčané)
  • SSH prístup k serveru (voliteľné, ale užitočné)

🎯 Architektúra Deploymentu

┌──────────────────────────────────────────────────┐
│              Coolify Server                      │
│                                                  │
│  ┌────────────────────────────────────────────┐ │
│  │  Traefik Reverse Proxy                     │ │
│  │  (automaticky od Coolify)                  │ │
│  │  - SSL/TLS (Let's Encrypt)                 │ │
│  │  - Domain routing                          │ │
│  └──────────────────┬─────────────────────────┘ │
│                     │                            │
│  ┌──────────────────▼─────────────────────────┐ │
│  │  Backend Container (FastAPI)               │ │
│  │  - Port: 8000                              │ │
│  │  - Volumes: logs, translations             │ │
│  └──────────────────┬─────────────────────────┘ │
│                     │                            │
│  ┌──────────────────▼─────────────────────────┐ │
│  │  PostgreSQL Container                      │ │
│  │  - Port: 5432 (internal)                   │ │
│  │  - Volume: postgres_data                   │ │
│  └────────────────────────────────────────────┘ │
│                                                  │
└──────────────────────────────────────────────────┘

🔧 Príprava projektu

KROK 1: Nahrajte projekt do Git repozitára

# Ak ešte nemáte Git repozitár

# 1. Inicializujte Git v projekte
cd /home/richardtekula/Documents/WORK/extension/Ebook_System
git init

# 2. Pridajte .gitignore
cat > .gitignore << 'EOF'
# Environment variables
.env
.env.local
.env.production
*.env

# Python
__pycache__/
*.py[cod]
.venv/
venv/
*.so

# Logs
*.log
logs/

# Database
*.db
*.sqlite

# IDE
.vscode/
.idea/
*.swp

# OS
.DS_Store
Thumbs.db

# Temporary
*.tmp
*.bak
EOF

# 3. Commitnite súbory
git add .
git commit -m "Initial commit: Ebook Translation System"

# 4. Pridajte remote repozitár (GitHub/GitLab/atď.)
git remote add origin https://github.com/vase-meno/ebook-system.git
git branch -M main
git push -u origin main

🚀 Nasadenie v Coolify

KROK 1: Vytvorenie nového projektu v Coolify

  1. Prihláste sa do Coolify webového rozhrania
  2. Kliknite na "+ New" alebo "New Resource"
  3. Vyberte "Docker Compose"

KROK 2: Konfigurácia Git repozitára

  1. Source: Vyberte váš Git provider (GitHub, GitLab, atď.)
  2. Repository: Zadajte URL vašeho repozitára
    https://github.com/vase-meno/ebook-system.git
    
  3. Branch: main (alebo master, podľa vášho nastavenia)
  4. Auto Deploy: Zapnite (automatický deployment pri každom push)

KROK 3: Nastavenie Build Configuration

  1. Build Pack: Docker Compose
  2. Docker Compose Location: docker-compose.yml (v root adresári)
  3. Base Directory: / (root projektu)

KROK 4: Environment Variables

V Coolify prejdite na "Environment" sekciu a pridajte tieto premenné:

# ==========================================
# DATABASE
# ==========================================
POSTGRES_DB=ebook_prod
POSTGRES_USER=ebook_user
POSTGRES_PASSWORD=VaseSilneHeslo123!@#

DATABASE_URL=postgresql://ebook_user:VaseSilneHeslo123!@#@postgres:5432/ebook_prod

# ==========================================
# SECURITY
# ==========================================
# Vygenerujte: python3 -c "import secrets; print(secrets.token_urlsafe(32))"
SECRET_KEY=vygenerovany-32-znakovy-tajny-kluc-pouzite-prikaz-vyssie

DEBUG=false
ENVIRONMENT=production

# ==========================================
# ADMIN
# ==========================================
ADMIN_USERNAME=admin
ADMIN_PASSWORD=VaseAdminHeslo123!@#

# ==========================================
# CORS & DOMAINS
# ==========================================
# Nastavte na vašu skutočnú doménu!
CORS_ORIGINS=https://ebook.vasa-domena.sk,https://www.ebook.vasa-domena.sk
TRUSTED_HOSTS=ebook.vasa-domena.sk,www.ebook.vasa-domena.sk

# ==========================================
# APPLICATION
# ==========================================
APP_NAME=Ebook Translation System
APP_VERSION=1.0.0
LOG_LEVEL=WARNING

HOST=0.0.0.0
PORT=8000
WORKERS=4

# ==========================================
# TIMEZONE
# ==========================================
TZ=Europe/Bratislava

DÔLEŽITÉ:

  • Kliknite na "🔒" ikonu pri citlivých premenných (heslá, SECRET_KEY) aby boli skryté
  • Použite silné heslá - min. 16 znakov
  • Vygenerujte nový SECRET_KEY - nikdy nepoužívajte default hodnoty

KROK 5: Domain Configuration

  1. Prejdite na "Domains" sekciu
  2. Kliknite "Add Domain"
  3. Zadajte vašu doménu:
    ebook.vasa-domena.sk
    
  4. Zapnite "Enable SSL/TLS" (Let's Encrypt)
  5. Uložte

DNS Konfigurácia: V DNS nastaveniach vašej domény vytvorte A record:

Type: A
Name: ebook (alebo @ pre root doménu)
Value: IP_ADRESA_VASHO_SERVERA
TTL: 3600

KROK 6: Storage/Volumes Configuration

Coolify automaticky vytvorí volumes definované v docker-compose.yml:

  • ebook_postgres_data - PostgreSQL databáza
  • ebook_backend_logs - Aplikačné logy
  • ebook_translation_files - Nahrané prekladové súbory

Overenie volumes:

# SSH do servera
ssh user@vas-server.sk

# Zoznam volumes
docker volume ls | grep ebook

KROK 7: Deploy!

  1. Skontrolujte všetky nastavenia
  2. Kliknite "Deploy" alebo "Start"
  3. Sledujte deployment logy v reálnom čase

Coolify vykoná:

  1. Clone Git repozitára
  2. Build Docker images (podľa Dockerfile)
  3. Vytvorenie volumes
  4. Spustenie PostgreSQL kontajnera
  5. Spustenie Backend kontajnera
  6. Nastavenie Traefik reverse proxy
  7. Vygenerovanie SSL certifikátu (Let's Encrypt)

Overenie Deploymentu

1. Skontrolujte Health Endpoint

curl https://ebook.vasa-domena.sk/health

Očakávaný výstup:

{
  "status": "healthy",
  "timestamp": 1736612345.67,
  "version": "1.0.0",
  "environment": "production",
  "database_status": "connected"
}

2. Otvorte Admin Panel

Otvorte prehliadač a choďte na:

https://ebook.vasa-domena.sk/login

Prihláste sa s credentials z environment variables:

  • Username: admin
  • Password: Vaše ADMIN_PASSWORD

3. Skontrolujte Logy v Coolify

V Coolify prejdite na:

  • "Logs" → Sledujte deployment a runtime logy
  • Hľadajte chyby alebo varovania

4. Testujte funkčnosť

  1. Vygenerujte kupón:

    • V admin paneli prejdite na "Generate"
    • Vygenerujte testovací kupón
    • Skontrolujte či sa uložil do databázy
  2. Nahrajte translation file:

    • Prejdite na "Translation Upload"
    • Nahrajte testovací Excel súbor
    • Overte či sa nahralo úspešne

🔍 Monitoring a Debugging

Sledovanie Logov v Coolify

  1. V Coolify dashboarde kliknite na váš projekt
  2. Prejdite na "Logs"
  3. Vyberte kontajner:
    • backend - Aplikačné logy
    • postgres - Databázové logy

Real-time logs:

# SSH do servera
ssh user@vas-server.sk

# Nájdite názov vášho projektu v Coolify
docker ps | grep ebook

# Sledujte logy
docker logs -f <container-name>

# Alebo použite docker-compose (ak máte prístup k docker-compose.yml)
docker-compose logs -f backend

Databázové operácie

# SSH do servera
ssh user@vas-server.sk

# Pripojte sa do PostgreSQL kontajnera
docker exec -it <postgres-container-name> psql -U ebook_user -d ebook_prod

# SQL príkazy:
# Zobraziť všetky kupóny
SELECT * FROM coupon_codes LIMIT 10;

# Počet kupónov
SELECT COUNT(*) FROM coupon_codes;

# Použité kupóny
SELECT code, used_at FROM coupon_codes WHERE usage_count > 0;

# Ukončite psql
\q

Backup Databázy

# SSH do servera
ssh user@vas-server.sk

# Vytvorte backup
docker exec <postgres-container-name> pg_dump -U ebook_user ebook_prod > backup_$(date +%Y%m%d_%H%M%S).sql

# Alebo pomocou docker-compose
docker-compose exec postgres pg_dump -U ebook_user ebook_prod > backup.sql

🔄 Update a Redeploy

Automatický Update (Git Push)

Ak máte zapnuté Auto Deploy v Coolify:

# Lokálne na vašom počítači
cd /home/richardtekula/Documents/WORK/extension/Ebook_System

# Urobte zmeny v kóde
# ...

# Commitnite zmeny
git add .
git commit -m "Update: pridaná nová funkcia"
git push origin main

# Coolify automaticky detekuje push a spustí redeploy

Manuálny Redeploy

V Coolify:

  1. Prejdite na váš projekt
  2. Kliknite "Redeploy" alebo "Restart"
  3. Sledujte logy

Rebuild from Scratch

Ak potrebujete celkom nový build (napr. po zmene Dockerfile):

V Coolify:

  1. Zastavte aplikáciu: "Stop"
  2. Vymažte staré images (voliteľné)
  3. Kliknite "Deploy" znovu

SSH metóda:

# Zastavte všetko
docker-compose down

# Vymažte volumes (POZOR: stratíte dáta!)
docker-compose down -v

# Rebuild a spustite
docker-compose up -d --build

🛠️ Riešenie Problémov

Problem: Backend sa nespustí

Symptómy:

  • Container sa crashuje
  • Health check failuje
  • 502 Bad Gateway error

Riešenie:

  1. Skontrolujte logy:

    docker logs <backend-container-name>
    
  2. Skontrolujte environment variables:

    docker exec <backend-container-name> env | grep DATABASE_URL
    
  3. Overte databázové pripojenie:

    docker exec <backend-container-name> python -c "
    from sqlalchemy import create_engine
    import os
    engine = create_engine(os.getenv('DATABASE_URL'))
    conn = engine.connect()
    print('Database connection OK!')
    "
    

Problem: Databáza nie je dostupná

Symptómy:

  • could not connect to server: Connection refused
  • database "ebook_prod" does not exist

Riešenie:

  1. Skontrolujte či PostgreSQL beží:

    docker ps | grep postgres
    
  2. Skontrolujte logy:

    docker logs <postgres-container-name>
    
  3. Reštartujte PostgreSQL:

    docker restart <postgres-container-name>
    
  4. Overte že databáza existuje:

    docker exec <postgres-container-name> psql -U ebook_user -l
    

Problem: SSL certifikát nefunguje

Symptómy:

  • SSL certificate errors
  • "Not secure" v prehliadači

Riešenie:

V Coolify:

  1. Prejdite na "Domains"
  2. Kliknite "Regenerate Certificate"
  3. Počkajte 1-2 minúty
  4. Skontrolujte či sa certifikát vygeneroval

DNS check:

nslookup ebook.vasa-domena.sk
# Overte že IP adresa sedí

Problem: CORS chyby v Extension

Symptómy:

  • Extension nedokáže kontaktovať backend
  • Console chyby: CORS policy: No 'Access-Control-Allow-Origin'

Riešenie:

  1. Skontrolujte CORS_ORIGINS v .env:

    CORS_ORIGINS=https://ebook.vasa-domena.sk
    
  2. Overte že extension používa správnu URL:

    • Otvorte ebook_extension/config.js
    • Skontrolujte API_BASE: "https://ebook.vasa-domena.sk"
  3. Reštartujte backend:

    docker restart <backend-container-name>
    

📊 Performance Tuning

Optimalizácia Pre Production

  1. Zvýšte počet workers:

    # V .env
    WORKERS=4  # 2-4x počet CPU cores
    
  2. Použite Gunicorn namiesto Uvicorn:

    Upravte Dockerfile:

    CMD ["gunicorn", "main:app", \
         "-w", "4", \
         "-k", "uvicorn.workers.UvicornWorker", \
         "--bind", "0.0.0.0:8000", \
         "--access-logfile", "-", \
         "--error-logfile", "-"]
    
  3. Povoľte PostgreSQL connection pooling:

    V backend kóde (SQLAlchemy):

    engine = create_engine(
        DATABASE_URL,
        pool_size=20,
        max_overflow=40,
        pool_pre_ping=True
    )
    

🔒 Bezpečnosť

Checklist pred produkciou:

  • DEBUG=false
  • Silné ADMIN_PASSWORD (min 16 znakov)
  • Unikátny SECRET_KEY (32+ znakov)
  • ENVIRONMENT=production
  • Špecifické CORS_ORIGINS (nie wildcard)
  • SSL/HTTPS enabled
  • Firewall nakonfigurovaný
  • Pravidelné zálohy nastavené
  • Log monitoring aktívny
  • Environment variables sú označené ako secret v Coolify

Pravidelná údržba:

# Rotácia logov (každý mesiac)
docker exec <backend-container-name> find /app/admin-backend/logs -name "*.log" -mtime +30 -delete

# Záloha databázy (každý týždeň)
docker exec <postgres-container-name> pg_dump -U ebook_user ebook_prod > backup_weekly.sql

# Docker cleanup (každý mesiac)
docker system prune -af --volumes

📱 Chrome Extension Setup

Po úspešnom deployi backendu:

1. Aktualizujte Extension Config

# Lokálne na vašom počítači
cd /home/richardtekula/Documents/WORK/extension/Ebook_System/ebook_extension

# Otvorte config.js
nano config.js

Zmeňte:

export const CONFIG = {
  API_BASE: "https://ebook.vasa-domena.sk",  // ← VAŠA DOMÉNA!
  VERIFY_ENDPOINT: "/verify",
  TRANSLATIONS_ENDPOINT: "/translations/latest",
  // ... zvyšok
};

2. Načítanie do Chrome

  1. Chrome: chrome://extensions/
  2. Zapnite "Developer mode"
  3. "Load unpacked"
  4. Vyberte ebook_extension/ priečinok
  5. Hotovo! 🎉

3. Testovanie

  1. Kliknite na extension icon
  2. Zadajte testovací kupón
  3. Verify
  4. Vyberte jazyk
  5. Test translation

🎉 Hotovo!

Váš Ebook Translation System je úspešne nasadený na Coolify!

Ďalšie kroky:

  1. Vytvorte prvých admin používateľov
  2. Vygenerujte kupóny pre používateľov
  3. Nahrajte prekladové súbory
  4. Distribuujte Chrome extension
  5. Nastavte monitoring a alerting
  6. Pravidelné zálohy

Potrebujete pomoc? Skontrolujte logy alebo kontaktujte podporu.


📞 Užitočné Odkazy


Autor: Ebook Translation System Team Verzia: 1.0.0 Posledná aktualizácia: {{ current_date }}