6.4 KiB
6.4 KiB
AuthCentral - Dokploy Deployment Guide
🚀 Dokploy'a Deploy Etme
Ön Hazırlık
-
Repository'yi GitHub'a Push Edin
git add . git commit -m "Production ready build" git push origin main -
.env.production Dosyası Oluşturun
.env.production.exampledosyası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.ymldosyası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!
- JWT_SECRET: Güçlü bir secret kullanın (min 32 karakter)
- DB_PASSWORD: Güvenli bir şifre seçin
- REDIS_PASSWORD: Redis için şifre ayarlayın
- 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:
- GitHub'a push edin
- Dokploy dashboard'da "Redeploy" butonuna tıklayın
- 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_PASSWORDdoğru mu?- PostgreSQL container çalışıyor mu?
Redis Connection Error
Error: failed to connect to redis
✅ Kontrol edin:
REDIS_HOST=redis(service name)REDIS_PASSWORDayarlandı 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ı
- ✅ Admin kullanıcı oluşturun
- ✅ Test kullanıcısı ile register deneyin
- ✅ OAuth login test edin
- ✅ Email doğrulama test edin
- ✅ Avatar upload test edin
- ✅ Swagger dokümantasyonu kontrol edin
AuthCentral başarıyla deploy edildi! 🚀