Files
AuthCentral/DOKPLOY_DEPLOYMENT.md
Beyhan Oğur 8b1fbdee99 first commit
2026-04-26 21:37:58 +03:00

6.4 KiB
Raw Blame History

AuthCentral - Dokploy Deployment Guide

🚀 Dokploy'a Deploy Etme

Ön Hazırlık

  1. Repository'yi GitHub'a Push Edin

    git add .
    git commit -m "Production ready build"
    git push origin main
    
  2. .env.production Dosyası Oluşturun

    • .env.production.example dosyasını kopyalayın
    • Gerçek değerlerinizle doldurun
    • ÖNEMLİ: Bu dosyayı GitHub'a pushlamamayın!

Dokploy Adımları

1. Yeni Proje Oluştur

  • Dokploy dashboard'a giriş yapın
  • "New Project" butonuna tıklayın
  • Proje adı: authcentral

2. GitHub Repository Bağlayın

  • Source type: GitHub
  • Repository: Projenizin GitHub URL'si
  • Branch: main
  • Build type: Docker Compose

3. Environment Variables Ayarlayın

Dokploy dashboard'da aşağıdaki environment variable'ları ekleyin:

Veritabanı:

DB_USER=postgres
DB_PASSWORD=YOUR_SECURE_PASSWORD
DB_NAME=gauth
DB_HOST=postgres
DB_PORT=5432

Redis:

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=YOUR_REDIS_PASSWORD
REDIS_USER=default

JWT:

JWT_SECRET=YOUR_SUPER_SECRET_JWT_KEY

OAuth - Google:

GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

OAuth - GitHub:

GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret

URLs:

APP_URL=https://yourdomain.com
CLIENT_CALLBACK_URL=https://yourdomain.com/api/v1/auth

Email:

EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your_email@gmail.com
EMAIL_HOST_PASSWORD=your_app_password
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
EMAIL_FROM=noreply@yourdomain.com

Avatar Settings:

AVATAR_H=150
AVATAR_W=150
AVATAR_Q=90
AVATAR_B=cover
AVATAR_F=webp

4. Docker Compose Dosyası

  • Dokploy otomatik olarak docker-compose.prod.yml dosyasını kullanacak
  • Bu dosya sadece uygulama servisini içerir
  • PostgreSQL ve Redis Dokploy'da harici servisler olarak yönetilir:
    • PostgreSQL: Dokploy managed database
    • Redis: Dokploy managed cache
    • AuthCentral app: Container (port: 8080)

5. Deploy

  • "Deploy" butonuna tıklayın
  • Build loglarını izleyin
  • Deploy tamamlandığında URL'niz aktif olacak

📋 Build Özellikleri

WebP Desteği Aktif

Avatar resimleri varsayılan olarak WebP formatında:

  • WebP (default, optimize edilmiş, küçük dosya boyutu)
  • JPEG (alternatif)
  • PNG (lossless)

WebP Avantajları:

  • %25-35 daha küçük dosya boyutu (JPEG'e göre)
  • Modern tarayıcılarda tam destek
  • Yüksek kalite ve düşük boyut

Dockerfile Özeti

# Build Stage - CGO enabled for WebP
FROM golang:1.25.6-alpine AS builder
WORKDIR /app
RUN apk add --no-cache git gcc musl-dev libwebp-dev
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go mod tidy
RUN go install github.com/swaggo/swag/cmd/swag@latest
RUN swag init
RUN CGO_ENABLED=1 GOOS=linux go build -a -ldflags '-linkmode external -extldflags "-static"' -o main .

# Run Stage - WebP runtime library
FROM alpine:latest
WORKDIR /app
RUN apk --no-cache add ca-certificates libwebp
COPY --from=builder /app/main .
COPY --from=builder /app/.env .
COPY --from=builder /app/web ./web
COPY --from=builder /app/docs ./docs
EXPOSE 8080
CMD ["./main"]

Production Yapı

  • PostgreSQL: Dokploy managed service (harici)
  • Redis: Dokploy managed service (harici)
  • Application: Docker container
  • Volumes: ./uploads (avatar storage)

🔒 Güvenlik Notları

Önemli!

  1. JWT_SECRET: Güçlü bir secret kullanın (min 32 karakter)
  2. DB_PASSWORD: Güvenli bir şifre seçin
  3. REDIS_PASSWORD: Redis için şifre ayarlayın
  4. Email Credentials: Gmail için "App Password" kullanın

Production Checklist

  • Tüm secrets güçlü ve benzersiz
  • OAuth callback URL'leri doğru
  • Email SMTP ayarları test edildi
  • Domain DNS ayarları yapıldı
  • SSL sertifikası aktif (Dokploy otomatik)
  • Rate limiting aktif (default: )
  • CORS ayarları yapılandırıldı

🗄️ Veritabanı

İlk Admin Kullanıcı Oluşturma

Deploy sonrası container'a bağlanın:

# Dokploy dashboard'dan container terminal'i açın veya:
docker exec -it app_auth_central /app/main seed-admin

Varsayılan Admin:

  • Email: admin@gauth.local
  • Password: Admin@123

⚠️ İlk login sonrası şifreyi değiştirin!

PostgreSQL Extensions

UUID extension otomatik olarak yüklenir:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

📊 Monitoring

Healthcheck Endpoints

# Application health
curl https://yourdomain.com/

# Validate token
curl https://yourdomain.com/v1/auth/validate \
  -H "Authorization: Bearer YOUR_TOKEN"

Logs

Dokploy dashboard'dan:

  • Application logs
  • PostgreSQL logs
  • Redis logs

görüntüleyebilirsiniz.


🔄 Update (Güncelleme)

Yeni kod push ettiğinizde:

  1. GitHub'a push edin
  2. Dokploy dashboard'da "Redeploy" butonuna tıklayın
  3. Build tamamlanınca otomatik restart olur

Zero-downtime deployment için Dokploy'un "Rolling Update" özelliğini kullanın.


🆘 Troubleshooting

Build Hatası

Error: CGO_ENABLED=0 build failed

Çözüldü: WebP kütüphanesi kaldırıldı

Database Connection Error

Error: failed to connect to database

Kontrol edin:

  • DB_HOST=postgres (service name)
  • DB_PASSWORD doğru mu?
  • PostgreSQL container çalışıyor mu?

Redis Connection Error

Error: failed to connect to redis

Kontrol edin:

  • REDIS_HOST=redis (service name)
  • REDIS_PASSWORD ayarlandı mı?

OAuth Login Error

Error: OAuth callback failed

Kontrol edin:

  • Google/GitHub Console'da callback URL doğru mu?
  • CLIENT_CALLBACK_URL=https://yourdomain.com/api/v1/auth
  • OAuth credentials doğru mu?

📖 API Endpoints

Deploy sonrası:

  • Swagger UI: https://yourdomain.com/v1/docs/index.html
  • Health: https://yourdomain.com/
  • Register: POST https://yourdomain.com/v1/auth/register
  • Login: POST https://yourdomain.com/v1/auth/login

🎉 Deploy Sonrası

  1. Admin kullanıcı oluşturun
  2. Test kullanıcısı ile register deneyin
  3. OAuth login test edin
  4. Email doğrulama test edin
  5. Avatar upload test edin
  6. Swagger dokümantasyonu kontrol edin

AuthCentral başarıyla deploy edildi! 🚀