FAQ
Réponses rapides aux questions qui reviennent le plus souvent. Chaque réponse renvoie vers la page complète qui traite le sujet en profondeur.
Prise en main
Où se trouve mon interface d'administration ? Les installations systemd standard lient le CMS au loopback uniquement (127.0.0.1:3001 par défaut pour l'instance 1) et placent Caddy ou nginx devant, de sorte que vous accédez à l'admin via le domaine admin de votre site. Les installations quick et offline servent l'admin directement sur le port 8080 de l'hôte.
La construction du site se fait-elle automatiquement quand j'édite ? Non, les builds sont des opérations explicites, déclenchées depuis le dashboard, via un build webhook configuré, ou exécutées à la main. Chaque build est journalisé, et un échec n'écrase jamais votre site en ligne.
J'ai installé et il me renvoie sans cesse vers /setup. Une installation fraîche est livrée avec un mot de passe admin placeholder, et chaque requête est redirigée vers la page de setup jusqu'à ce que vous en définissiez un vrai (12+ caractères avec majuscule, minuscule et chiffre). Une fois défini, la page de setup disparaît.
Le endpoint /health ? Chaque instance expose un endpoint de santé pour la supervision : {"status":"ok","db":"ok"} en cas de succès, 503 lorsque la base de données est injoignable.
Comptes et accès
Quelle différence entre admin et éditeur ? Les admins gèrent les utilisateurs, les builds, les réglages, les clés API et tout le contenu. Les éditeurs n'y accèdent pas ; leur accès peut en outre être restreint par types de contenu et langues autorisés.
Pourquoi un éditeur ne peut-il pas publier ? Si le workflow d'approbation est activé (Settings → Workflow), les tentatives de publication non-admin deviennent des soumissions pour relecture. Désactivez-le pour la publication directe.
Pourquoi tout le monde est-il déconnecté après le changement du secret ? La variable d'environnement CHINASKI_SECRET signe les sessions et dérive la clé qui chiffre les identifiants stockés. Faites sa rotation délibérément : les sessions meurent immédiatement, et les réglages chiffrés (mot de passe SMTP, secrets) doivent être re-sauvegardés ensuite.
Je suis bloqué par des échecs de connexion. Les verrouillages sont fixes par IP : 60 secondes après 5 échecs, 5 minutes après 10, 30 minutes après 20, et ils survivent aux redémarrages. Ils ne peuvent pas être ajustés dans l'admin ; le seuil d'échecs configurable ne sert qu'aux alertes dans le journal des événements.
Contenu et builds
Mes modifications n'apparaissent pas sur le site. La publication de contenu met à jour la base de données, pas la sortie statique ; le site ne change que lorsqu'un build s'exécute. Déclenchez-en un depuis le dashboard (ou par API/webhook), puis vérifiez le statut du build et l'historique des builds, y compris les éventuels blocages de promotion-guard.
Un build s'est terminé mais le site semble ancien. Les builds ne promeuvent qu'une sortie saine : erreurs de rendu, violations de quality-guard (chute du nombre de pages, liens cassés, régressions d'accessibilité), ou échecs de manifest stoppent la promotion et laissent le site précédent en service. L'historique des builds indique quel contrôle a refusé ; vous pouvez forcer la promotion de ce build si vous acceptez la régression.
Combien de temps un build peut-il durer ? Les builds ont un plafond strict de 30 minutes ; un build expiré est tué et laisse la sortie en ligne intacte.
Où est passé mon article ? Le contenu supprimé va à la corbeille, pas directement dans le néant ; les purges des éléments mis à la corbeille s'exécutent périodiquement. Consultez la liste Trash pour restaurer.
Sauvegardes et récupération
Que sauvegarde-t-on ? La sauvegarde système quotidienne capture la base de données (rétention par défaut de 14 jours) et met en miroir les médias. Les sauvegardes en app créent des archives tar.gz complètes (base de données, médias, thèmes, templates), vérifiées après création par défaut, et poussées en option vers DigitalOcean Spaces.
Restauration vers un nouvel hôte : problèmes de connexion ? Restaurez l'ancien fichier env avant toute chose : la clé de chiffrement des identifiants stockés dérive de votre CHINASKI_SECRET, donc une base de données restaurée ouverte sous un autre secret perd silencieusement les secrets stockés ; définissez d'abord le secret d'origine. Runbook complet sur la page disaster-recovery.
Posture de sécurité
- Les cookies de session sont signés, Secure, HttpOnly et SameSite=Lax ; des tokens CSRF protègent chaque requête admin modifiant un état ; un nonce CSP par requête bloque les scripts inline.
- Les intégrations sortantes sont validées contre les plages d'adresses privées/internes (les webhooks ne peuvent pas cibler votre réseau interne), ne suivent jamais les redirections, et plafonnent la taille des réponses.
- Les uploads sont identifiés par le contenu du fichier, pas par l'extension ; les uploads SVG sont rejetés d'emblée ; l'import CSV en masse est plafonné (4 MiB, 5 000 lignes, transaction unique).
Repères rapides de dépannage
- Les logs vont au journal système (avec des lignes JSON structurées pour les événements à signal fort, y compris les IPs clientes : le README documente un extrait de politique de rétention journald que vous pouvez adopter pour correspondre à votre politique de confidentialité).
- Un build est « busy » uniquement pendant qu'il s'exécute ; le verrou expire de lui-même si un build meurt sans le signaler.
- Les conflits de ports / incohérences de proxy ont leur propre page (voir Troubleshooting → Port Conflicts).
Feature map honesty
- Pas d'écosystème de plugins, pas d'architecture de hooks, pas de marketplace de thèmes ; pas d'éditeur drag-and-drop ; pas de Postgres (le multi-tenancy est un élément de roadmap). Étendre le système signifie modifier le code, pas installer.
- Le cœur est sous licence MIT.
Language and multilingual questions
- Langues multiples, modes d'URL path/subdomain, alternates hreflang et un sélecteur de langue statique sont intégrés et documentés sur leurs propres pages. Les réglages par langue couvrent les titres de blog et les textes de la notice de cookies, et l'interface d'administration elle-même est livrée localisée.
- La publication planifiée respecte le fuseau horaire du site ; le contenu dont la langue est retirée de l'ensemble actif ne peut pas être « orphelin » : l'admin refuse le retrait tant que ce contenu n'est pas supprimé ou réaffecté.