Ana içeriğe geç

Dokploy / Traefik

docker-compose.dokploy.yml tek başına çalışan bir compose dosyasıdır: her servis tanımını docker-compose.yml'den extends ile alır, dosya üstüne Traefik ağını ve TLS için router etiketlerini ekler. Hiçbir şey host portu yayınlamaz: loopback bağlamaları docker-compose.override.yml'dadır ve Compose onu yalnızca örtük olarak yükler — Dokploy kurulumu onu hiç görmez (3000 portu zaten Dokploy'un kendi arayüzüdür). Worker gelen trafik almaz; dahili ağda kalır.

Yapılandır

# .env
API_DOMAIN=push.example.com
DASHBOARD_DOMAIN=push-admin.example.com
DOCS_DOMAIN=docs.example.com
TRAEFIK_NETWORK=dokploy-network # ya da Traefik ağınızın adı neyse
TRAEFIK_CERT_RESOLVER=letsencrypt
API_PUBLIC_URL=https://push.example.com
CORS_ORIGINS=https://www.example.com,https://app.example.com

Çalıştır

docker compose -f docker-compose.dokploy.yml up -d

Dokploy'da

  1. Bir Compose uygulaması oluşturup deponuzun fork'una yönlendirin.
  2. Compose yolunu docker-compose.dokploy.yml yapın. Başka bir şey yok: ek dosya da, custom command de gerekmez. (Yalnızca docker-compose.yml çalışırsa konteynerler sağlıklı kalkar ama router etiketi taşımaz ve Traefik iki alan adında da 404 page not found döner.)
  3. .env'inizi Environment sekmesine yapıştırın. ENCRYPTION_KEY, HMAC_SECRET ve panel sırları (ADMIN_API_TOKEN, SESSION_SECRET, ADMIN_PASSWORD_HASH) orada olmalı; Compose aksi halde başlamayı reddeder.
  4. Deploy edin. Traefik etiketleri alır ve üç alan adı için sertifika çıkarır.

Etiketler ne yapar

traefik.http.routers.opennotification-api.rule: Host(`${API_DOMAIN}`)
traefik.http.routers.opennotification-api.entrypoints: websecure
traefik.http.routers.opennotification-api.tls.certresolver: ${TRAEFIK_CERT_RESOLVER}
traefik.http.services.opennotification-api.loadbalancer.server.port: "3000"

Küçük bir middleware X-Powered-By'ı siler. Push SDK'ları bu ucu telefonlardan ve tarayıcılardan çağırır; proxy timeout'larını kısa tutun — takılan bir upstream kuyruğa alınmamalı, düşürülmeli.

Traefik arkasında ölçekleme

docker compose -f docker-compose.dokploy.yml up -d --scale worker=3

Kuyruklar Redis'te paylaşılır; worker'lar yükü bölüşür. API durumsuzdur ve aynı şekilde ölçeklenir; Traefik kopyalar arasında round-robin yapar.

Panel

Dosya paneli aynı TLS çözümleyiciyle DASHBOARD_DOMAIN üzerinden yönlendirir; API'ye dahili ağdan http://api:3000 olarak ulaşır. Bir yönetim yüzeyidir: hiç dışarı açmak istemiyorsanız dosyadaki dashboard etiketlerini silin ve 127.0.0.1:3001'e VPN ya da SSH tüneliyle ulaşın.

Dokümantasyon sitesi

Dokümanlar aynı stack'in parçasıdır: DOCS_DOMAIN üzerinden yönlendirilen bir docs servisi (nginx arkasında statik dosyalar). Environment sekmesinde diğer iki alan adının yanına yazın; ayrıca deploy edilecek bir şey yok.