Aller au contenu
Avancé

Déploiement

Variables d'environnement, mise en production et hébergement.

Ghost's Sanctuary est deux processus : le bot Python (qui porte l'API et la base) et le site Next.js. Ils partagent un jeton, et rien d'autre.

Vérifier avant de déployer

Doctor
npm run doctor          # vérifie tout, y compris la validité des secrets
npm run doctor:full     # + build + tests

Le doctor ne se contente pas de constater qu'une variable est remplie : il valide vos identifiants Discord par un véritable échange client_credentials, et vos identifiants Roblox en présentant un code volontairement invalide. Un ✓ signifie qu'une vérification a réussi.

Variables du bot

VariableRôleSans elle
DISCORD_TOKENJeton du botLe bot ne démarre pas
DISCORD_CLIENT_IDIdentifiant d'applicationDéduit du jeton
GS_API_TOKENJeton partagé avec le siteL'API ne démarre pas
GS_DATABASE_PATHChemin de la base SQLitedata/ghosts_sanctuary.db
APP_URLAdresse du site/verify bascule sur la vérification par code
SYNC_COMMANDSForce la resynchro des commandesResynchro seulement si l'arbre a changé

Variables du site

VariableRôleSans elle
APP_URLBase de toutes les URL absoluesRepli sur localhost:3000
AUTH_SECRETSignature des sessions (32+ car.)Aucune connexion possible
DISCORD_CLIENT_SECRETOAuth DiscordPersonne ne peut se connecter
BOT_API_TOKENDoit égaler GS_API_TOKENAucune donnée réelle affichée
ROBLOX_CLIENT_ID / SECRETOAuth Roblox« Configuration requise » sur /verify
SUPPORT_AGENT_IDSAgents du supportPersonne ne traite les demandes

Aucun secret dans le navigateur

Seules les variables préfixées NEXT_PUBLIC_ atteignent le navigateur, et aucune ne contient de secret. Ne préfixez jamais une clé d'API ainsi : elle deviendrait lisible par tous les visiteurs.

De localhost à la production

Trois valeurs changent, et rien d'autre : APP_URL, DISCORD_REDIRECT_URI et ROBLOX_REDIRECT_URI. Aucune URL n'est codée en dur dans le projet. Déclarez ensuite les nouvelles URL de redirection chez Discord et chez Roblox.

Sauvegardes

bash
npm run backup

Pourquoi pas une simple copie de fichier

La base tourne en mode WAL : une partie des données vit dans le journal, pas encore dans le fichier principal. Copier le .db pendant que le bot écrit produit une sauvegarde amputée. Le script utilise l'API de sauvegarde de SQLite, puis relit la copie pour prouver qu'elle est exploitable.

Hébergement

L'intégration au panel Pterodactyl (YorkHost) est entièrement facultative : le bot et le site n'en dépendent pas. Renseignée, elle permet de lire l'état du serveur et de le redémarrer depuis le site. Le chemin est toujours navigateur → route Next.js → panel ; la clé ne part jamais dans le navigateur.

L'API interne reste locale

Elle écoute sur 127.0.0.1. Ne l'exposez pas sur Internet : elle fait confiance à son appelant, c'est justement pourquoi elle reste sur la boucle locale.

Déploiement — Documentation · Ghost's Sanctuary