Backend (PHP+SQLite): Discord OAuth2 + JWT, coklu hesap (1 Discord = 3-5), tek-kullanimlik join token (/api/join/prepare+verify), custom skin yukleme/sunma, hesap/Discord/HWID ban, admin paneli kartlari; deterministik offline UUID (PHP<->C# paritesi dogrulandi). 25 entegrasyon testi gecti. AthenaCore (Forge 1.12.2): tek client+server mod — join token dogrulama + kick, grace-gate, custom skin uygulama. Sunucu offline-mode kalir (UUID/dunya verisi korunur). Masaustu: WPF -> Avalonia (Windows+Linux), Discord giris/hesap/skin/oyna; WMI/DPAPI yerine cross-platform (machine-id HWID, AES-GCM secret store). Derlenir + calisir. CI: athenacore-mod.yml (JDK8), desktop-release.yml (Win+Linux self-contained). Deploy: deploy.sh (.env uretimi, php-gd, nginx Authorization gecisi) + HANDOFF.md. Android: backend hazir; entegrasyon spec'i ANDROID_INTEGRATION.md.
5.1 KiB
Athena — Kurulum / Devreye Alma Rehberi (HANDOFF)
Bu dosya, senin yapman gereken (otomatikleştirilemeyen / kasıtlı olarak ertelenen) adımları sıralar. Kod tarafı (backend + AthenaCore mod + CI) hazır; aşağıdakiler devreye alma içindir.
⚠️ Önce güvenlik: Sohbette paylaştığın Discord Client Secret, Bot Token ve root şifresi açıkta kaldı. Devreye almadan/aldıktan sonra Discord secret + bot token'ı yenile (Regenerate) ve root şifreni değiştir (
passwd). Sırlar yalnızca sunucudaWebBackend/data/.enviçinde tutulur — repoya asla girmez (.gitignore+ nginxdeny /dataile korunur).
1) Discord uygulaması (OAuth2)
- https://discord.com/developers/applications → New Application (veya mevcut uygulaman).
- OAuth2 → Redirects kısmına şunu ekle (birebir):
https://oyna.athenastudios.com.tr/api/auth/discord/callback - OAuth2 → Client ID ve Client Secret değerlerini al.
- Scope olarak yalnızca
identifykullanılıyor (ekstra izin gerekmez). - Bu değerleri sunucuda
WebBackend/data/.enviçine yaz (aşağıda).
2) Backend'i sunucuya kur (oyna.athenastudios.com.tr)
WebBackend/ klasörünü sunucuya kopyala ve root olarak:
cd WebBackend
sudo ATHENA_ADMIN_PW='root-sifrenden-FARKLI-guclu-bir-parola' bash deploy.sh
deploy.sh ne yapar (idempotent — mevcut data/ ve files/ ASLA silinmez):
- nginx + PHP 8.4 (fpm, gd, sqlite3, curl, mbstring, zip) + certbot kurar,
- kodu
/var/www/html'e kopyalar (web kökü =public/;src/data/seed/cliweb'e kapalı), data/.envyoksa üretir:JWT_SECRETveATHENA_SERVER_KEYotomatik; Discord alanları boş,files/skins/oluşturur, izinleri (www-data) ayarlar,- nginx'te Authorization header'ı PHP'ye iletir (Bearer JWT için şart),
- HTTPS (Let's Encrypt) + HSTS + güvenlik başlıkları + ufw (22/80/443/25565),
- SHA-256 index üretir.
Kurulumdan sonra data/.env'i düzenleyip Discord bilgilerini gir:
sudo nano /var/www/html/data/.env
# DISCORD_CLIENT_ID=... DISCORD_CLIENT_SECRET=... (DISCORD_BOT_TOKEN opsiyonel)
sudo systemctl reload php8.4-fpm nginx
ATHENA_SERVER_KEY değerini not al — oyun sunucusu modunda aynısını kullanacaksın (adım 4).
Doğrulama
curl -I https://oyna.athenastudios.com.tr/api/server_config.json # 200
curl -sI "https://oyna.athenastudios.com.tr/api/auth/discord/start?platform=desktop&port=1&nonce=x" # 302 -> discord.com
Admin panel: https://oyna.athenastudios.com.tr/admin?password=ADMIN_PAROLAN
(yeni kartlar: Kullanıcılar (Discord), Minecraft Hesapları & Skinler, ban/skin yönetimi).
3) AthenaCore modu (jar) — derle ve yerleştir
- Derle: GitHub'da
v1.0.0gibi bir tag push'la →AthenaCore Modworkflow'u jar üretir (Release + artifact). Ya da Actions'tan elleworkflow_dispatch.- Çıktı:
athenacore.jar.
- Çıktı:
- Modpack'e koy (kilitli/anti-cheat): jar'ı sunucuda
/var/www/html/files/mods/içine bırak, admin panelden Mod Sınıflandırma → AthenaCore → Zorunlu işaretle ve Index'i Yenile. Böylece tüm istemcilere otomatik, kilitli iner. - Oyun sunucusuna koy: aynı jar'ı Forge 1.12.2 sunucusunun
mods/klasörüne kopyala.
4) Forge 1.12.2 oyun sunucusu ayarı
Bu adımı sen uygula (canlı sunucuya ben dokunmadım). Önce dünya + eklenti/yetki verisini yedekle.
server.properties:online-mode=false(offline kalır; güvenlik AthenaCore + join_token ile).- UUID'ler değişmez (deterministik offline UUID kullanılıyor) → dünya/envanter/yetki bozulmaz.
- AthenaCore'a backend anahtarını ver. En temizi ortam değişkeni (start script'te):
(Alternatif: ilk açılışta oluşan
export ATHENA_SERVER_KEY="<data/.env içindeki ATHENA_SERVER_KEY ile AYNI>" java -Xmx... -jar forge-1.12.2-14.23.5.2860-universal.jar noguiconfig/athenacore.cfgiçindeserverKey=vebackendUrl=.) - Başlat. Davranış:
- Athena Launcher'dan doğrulanmış, banlı olmayan hesaplar girebilir.
- Token sunamayan (vanilla / launcher dışı) istemciler ~12 sn içinde atılır.
- Banlama: admin panelden discord/username/uuid ile → o hesap/kullanıcı giremez.
- Skinler launcher'dan yüklenince oyunda otomatik görünür.
İlk kurulumda bir test dünyasında doğrula: bir hesapla gir (UUID
usercache.json'da değişmemeli), skin render olmalı, launcher dışı bir client atılmalı.
5) Masaüstü launcher (Avalonia, Win/Linux) & Android
- Masaüstü ve Android launcher'lar bu backend'e (
https://oyna.athenastudios.com.tr) bağlanır. - CI ile derlenirler (bkz.
.github/workflows/). Tag (v*) push'u → otomatik Release. - Discord giriş, çoklu hesap (1 Discord = 3-5), skin yükleme ve oyuna otomatik bağlanma launcher tarafında hazırdır; backend uçları yukarıda kuruldu.
6) Bakım / öneriler
- Cron (paket tazeleme):
*/5 * * * * php /var/www/html/cli/build_index.php data/.envvedata/*.dbyedekle. Sırları periyodik döndür.- Admin paneli yalnız HTTPS üzerinden kullan (parola URL'de gider).