mirror of
https://github.com/yusufipk/RepoHub.git
synced 2026-09-11 18:46:07 +00:00
- Implemented SyncAuth to control sync access with server-only mode and secret key authorization - Consolidated environment variables into single .env.example with improved sync configuration - Protected all sync API endpoints (ubuntu, fedora, arch, homebrew, winget) with authentication checks
4.8 KiB
4.8 KiB
RepoHub Sync Security Configuration
Bu doküman, RepoHub sync işlemlerinin güvenliği ve otomatikleştirilmesi için yapılandırmayı açıklar.
Güvenlik Yapılandırması
Environment Değişkenleri
.env.local dosyasına aşağı değişkenleri ekleyin:
# Sync Configuration
# Enable sync operations only from the server itself (set to 'true' on production server)
SYNC_SERVER_ONLY=true
# Automatic sync frequency in days (set to 0 to disable automatic sync)
AUTO_SYNC_DAYS=1
# Secret key to authorize sync operations from server
SYNC_SECRET_KEY=your_very_secure_secret_key_here
Değişkenlerin Açıklaması
- SYNC_SERVER_ONLY:
trueolarak ayarlandığında, sync işlemleri sadece sunucudan yapılabilir - AUTO_SYNC_DAYS: Otomatik sync sıklığı (gün olarak).
0= otomatik sync kapalı - SYNC_SECRET_KEY: Sunucu sync işlemleri için gerekli gizli anahtar
Sunucu Sync İşlemleri
1. Manuel Sync (Sunucudan)
Sunucuda sync işlemleri yapmak için:
# Tüm platformları sync et
./scripts/server-sync.sh auto-sync
# Sadece Windows paketlerini sync et
./scripts/server-sync.sh sync-winget
# Sync durumunu kontrol et
./scripts/server-sync.sh status
2. Cron Job ile Otomatik Sync
Otomatik sync kurulumu için:
# Günlük otomatik sync kur
sudo ./scripts/cron-setup.sh install
# Haftalık otomatik sync kur (her 7 günde bir)
sudo AUTO_SYNC_DAYS=7 ./scripts/cron-setup.sh install
# Cron job durumunu kontrol et
sudo ./scripts/cron-setup.sh status
# Cron job'ı kaldır
sudo ./scripts/cron-setup.sh remove
API Güvenliği
Sync Endpoint'leri
Tüm sync endpoint'leri artık güvenlik kontrolü yapar:
/api/sync- Genel sync endpoint'i/api/sync-winget- Windows paket sync'i/api/sync-homebrew- macOS paket sync'i/api/sync-fedora- Fedora paket sync'i/api/sync-arch- Arch paket sync'i/api/auto-sync- Otomatik sync
Güvenlik Kontrolü
Server-only modda (SYNC_SERVER_ONLY=true):
- Secret Key Kontrolü: Request header'ında
x-sync-secretolmalı - IP Kontrolü: İstek localhost'tan gelmeli veya doğru secret key içermeli
Normal modda (SYNC_SERVER_ONLY=false):
- Herkes sync işlemi yapabilir (geliştirme için)
Örnek API Kullanımı
# Server-only modda sync yapmak
curl -X POST \
-H "Content-Type: application/json" \
-H "x-sync-secret: your_secret_key" \
-d '{}' \
http://localhost:3002/api/sync-winget
# Sync durumunu kontrol et
curl -H "x-sync-secret: your_secret_key" \
http://localhost:3002/api/sync
Güvenlik İpuçları
1. Secret Key Güvenliği
- Güçlü ve rastgele bir secret key kullanın
- Secret key'i
.env.localdosyasında saklayın, asla kod içine koymayın - Secret key'i düzenli olarak değiştirin
2. Sunucu Güvenliği
- Sync script'lerini sadece sunucuda çalıştırın
- Cron job'ları root kullanıcısı olarak ayarlayın
- Log dosyalarını düzenli olarak kontrol edin
3. Ağ Güvenliği
- Sync endpoint'lerini firewall ile koruyun
- Sadece localhost'tan erişime izin verin
- SSL/TLS kullanın (production'da)
Monitoring ve Logging
Log Dosyaları
- Sync Log:
/var/log/repohub-sync.log - Cron Log:
/var/log/cron.log(sistem bağımlı)
Log İzleme
# Son 20 sync log satırını göster
tail -20 /var/log/repohub-sync.log
# Real-time log izleme
tail -f /var/log/repohub-sync.log
# Cron job loglarını kontrol et
sudo tail -20 /var/log/cron.log
Troubleshooting
Yaygın Sorunlar
-
403 Forbidden Error
SYNC_SECRET_KEYdoğru ayarlanmamış- Header'da
x-sync-secreteksik
-
Cron Job Çalışmıyor
- Script executable değil
- Environment değişkenleri eksik
- Log dosyası izinleri yanlış
-
Sync Başarısız
- API URL yanlış
- Ağ bağlantısı sorunu
- Disk alanı yetersiz
Debug Komutları
# Sync script test et
./scripts/server-sync.sh test
# Cron job durumunu kontrol et
sudo ./scripts/cron-setup.sh status
# Environment değişkenlerini kontrol et
env | grep SYNC
Production Dağıtımı
Adım 1: Environment Ayarı
# .env.local dosyasını production'a kopyala
cp .env.local.example .env.local
# .env.local dosyasını production değerleriyle düzenle
Adım 2: Secret Key Oluştur
# Güçlü secret key oluştur
openssl rand -hex 32
# Bu değeri .env.local dosyasına ekle
Adım 3: Cron Job Kur
# Production cron job kur
sudo AUTO_SYNC_DAYS=1 ./scripts/cron-setup.sh install
Adım 4: Test Et
# Sync işlemini test et
./scripts/server-sync.sh test
# Otomatik sync'i test et
curl -X POST \
-H "Content-Type: application/json" \
-H "x-sync-secret: your_secret_key" \
-d '{}' \
http://localhost:3002/api/auto-sync
Bu yapılandırma ile sync işlemleriniz güvenli ve otomatik hale gelecektir.