Gaylémon regroupe les outils autour d'un serveur Palworld privé: console d'exploitation, scripts Ubuntu, collecteurs, projections publiques, terminal des échos et microsite.
Le principe est simple: Palworld reste stable, les sauvegardes sont lues en lecture seule, et le site ne reçoit que des données filtrées. Les secrets, les sauvegardes réelles et les données privées ne vont pas dans Git.
cmd/etinternal/: service web Go, agent sortant, API signée et accès PostgreSQL 16.db/: migrations PostgreSQL, historique et rétention.server/: scripts Ubuntu, unitéssystemd, collecteurs et tests.scripts/: console et outils Windows.portal/: microsite statique, routes/,/terminal,/resume,/classements,/carte,/githubet exemples JSON.docker/: Nginx local pour le microsite et image du tunnel API Palworld.docs/: guides courts, contrats de données et notes d'exploitation.dependencies/: verrous des dépendances externes, sans cloner leur code.
cloudflared, SteamCMD et Palworld ne sont pas possédés par ce dépôt. Gaylémon peut s'y brancher, mais ne doit pas en prendre le contrôle.
.\scripts\initialiser-projet.ps1
.\scripts\valider-depot.ps1L'initialisation prépare les dossiers ignorés et copie des exemples JSON si aucune donnée réelle n'existe. Elle ne contacte pas Ubuntu, Docker ou Cloudflare.
Pour ouvrir la console:
.\Gaylemon Ops Console.ps1Pour servir le microsite:
docker compose up -d micrositePar défaut, Nginx écoute seulement sur 127.0.0.1.
Routes utiles du microsite:
http://127.0.0.1:8787/: tableau de bord public;http://127.0.0.1:8787/terminal: terminal plein écran des échos;http://127.0.0.1:8787/resume: résumé quotidien des joueurs;http://127.0.0.1:8787/classements: palmarès dédié;http://127.0.0.1:8787/carte: carte dédiée de Palpagos;http://127.0.0.1:8787/github: page technique publique du dépôt.
Pour exposer localement l'API REST Palworld aux annonces Discord et aux sondes d'exploitation via Docker Desktop:
.\scripts\palworld-api-tunnel.ps1 start
.\scripts\palworld-api-tunnel.ps1 statusLe port reste lié à 127.0.0.1. Le bot lit les JSON publics par défaut et utilise l'exemple bot.env.example, hors Git une fois rempli; les variables REST restent vides sauf si une commande d'annonce en jeu est activée.
Si Docker Desktop ne peut pas joindre le LAN à cause d'un subnet Docker concurrent, le même script peut démarrer un tunnel SSH Windows local:
.\scripts\palworld-api-tunnel.ps1 start -Mode windows-ssh# Validation locale
.\scripts\valider-depot.ps1
# Diagnostic en lecture seule
.\scripts\diagnostiquer-integrations.ps1
# Audit des fichiers Ubuntu actifs
.\scripts\auditer-source-ubuntu.ps1
# Aperçu d'une livraison Ubuntu
.\scripts\deployer-ubuntu.ps1
# Mise en scène sous /tmp sur Ubuntu
.\scripts\deployer-ubuntu.ps1 -Stage
# Installation explicite, avec sauvegarde
.\scripts\deployer-ubuntu.ps1 -Install-Install ne redémarre aucun service par défaut. Le redémarrage de palworld.service demande une option et une confirmation explicites.
Ne jamais versionner:
.env, clés SSH, jetons et mots de passe;- sauvegardes Palworld, bases SQLite, journaux et PID;
- données réelles sous
portal/data/; - ressources extraites du jeu sous
portal/assets/game/; - archives et rapports sous
runtime/; - clones complets sous
vendor/.
Les exemples *.example.json sont fictifs et servent au développement local.
Les exports publics réels restent non versionnés. Le site lit notamment:
public-metrics.jsonpour l'état live, les joueurs connectés etonlineSinceAt;public-stats.jsonpour les sessions et agrégats joueurs;public-save-index.json,public-save-snapshot.json,public-save-bases.json,public-save-diagnostics.jsonetplayers/{slug}.jsonpour les fiches, Pals, bases et exports JSON d'analyse; ces fichiers partagent une génération et l'index devient actif en dernier;public-events-channel.jsonpour le canal v6 actif et son repli contrôlé,public-events-head-v6.jsoncomme pointeur actif, le manifeste de compatibilité, les générations immuablespublic-events-v6/et les résuméspublic-daily/pour/terminal,/resumeet les derniers échos de l'accueil;- les contrats
public-events*.jsonv5 pendant la période de compatibilité; public-uptime.json,public-uptime-history.jsonetpublic-availability.jsonpour la disponibilité calculée depuis l'API REST Palworld.
Nginx sert les pages et les JSON v5 dynamiques en no-store. Le pointeur actif et le manifeste de compatibilité v6 sont revalidés avec ETag; les manifestes et têtes de génération, fragments, résumés et assets versionnés restent en cache immuable.
Le flux des échos est traité comme une donnée chaude: projection canonique près de SQLite, pointeur actif léger, tête de génération, fragments journaliers immuables et réconciliation complète espacée. L'export v5 complet reste disponible temporairement sans être chargé par les routes v6 normales.
- Sommaire
- Sécurité
- Support
- Architecture
- Échos publics v6
- Sécurité d'exploitation
- Configuration locale
- Développement
- Déploiement
- Publication sur la VPS Nethercore
- Opérations
- Bot Discord
- Publication GitHub
- Démarche GitHub du microsite
Le code Gaylémon est sous licence MIT. Palworld, ses ressources et ses marques appartiennent à leurs ayants droit. PalworldSaveTools reste une dépendance séparée avec ses propres licences.
Voir aussi THIRD_PARTY_NOTICES.md.