Installation
Prérequis
Docker. Rien d'autre pour installer ; Node ≥ 22 et pnpm en plus si vous développez sur le code.
Installation guidée
git clone https://git.cythin.eu/cythin/kastell.git
cd kastell
sh outils/installer.sh
Le script pose les questions dont la réponse ne se devine pas — port, adresse
publique, environnement, visioconférence, analyse antivirale, relais de
notification — écrit .env en tirant au sort tous les secrets, puis lève la
composition et attend que l'instance réponde.
Un .env existant n'est jamais écrasé sans votre accord : le script propose de
le garder tel quel, ou de le sauvegarder à côté avant d'en écrire un neuf. Ce
fichier porte peut-être les secrets d'une instance en service.
L'artefact est construit dans l'image, et les migrations sont jouées par l'application à son démarrage. Exiger une chaîne Node sur l'hôte pour lever six conteneurs ajouterait un prérequis que l'exploitant n'utiliserait jamais ensuite.
Le script ne demande jamais la clé .p8 du relais de notification : saisie à une
invite, elle resterait dans l'historique du shell et dans le tampon du terminal.
Elle se colle dans .env, à la main.
En trois commandes, avec pnpm
git clone https://git.cythin.eu/cythin/kastell.git
cd kastell
pnpm install
pnpm demarrer
pnpm demarrer lève PostgreSQL, Redis, MinIO, LiveKit, egress et ClamAV,
construit l'artefact et l'inscrit avec sa révision git. Il prépare aussi .env :
il le crée s'il manque, y ajoute les clés apparues depuis, et tire au sort les
secrets — sans jamais toucher à une valeur déjà renseignée.
L'interface et l'API sont servies par le même artefact, sur le même port :
http://localhost:8080.
Le cookie de session n'a donc jamais de frontière à franchir, et l'auto-hébergeur n'a pas de reverse proxy à composer pour que l'application fonctionne.
Créer le premier compte
- Sur
http://localhost:8080, « Créer un espace ». Votre adresse, votre mot de passe — personne d'autre ne les voit. - Puis, en ligne de commande :
pnpm amorcer-root votre@adresse.fr "Amorçage de l'instance."
La console root apparaît alors dans le rail.
amorcer-root ne voyage pas dans l'image. Si vous avez installé par
outils/installer.sh sans Node sur l'hôte, il faut Node ≥ 22 et pnpm pour cette
seule commande.
amorcer-root ne crée pas de compte : il accorde un droit à un compte
existant. Un script qui créerait le compte devrait choisir un mot de passe,
donc l'écrire quelque part. Le droit root passe par un compte né du parcours
normal.
Ce script ne fonctionne que sur une instance vierge. Dès qu'un root existe, l'octroi passe par la console et laisse une trace nominative.
Les courriels ne partent pas
En développement, le transport est console : liens de vérification, de
connexion, d'invitation et de mobilisation s'écrivent en clair dans les traces.
pnpm logs
Vérifier que tout fonctionne
pnpm verif
Plus de six cents garanties, jouées contre une base dédiée (…_verif, créée
au besoin) qui n'est jamais celle de développement. Voir
Vérifier.
Sans Docker
Si vous disposez déjà de PostgreSQL, Redis et d'un stockage S3 :
cp .env.example .env # renseigner les valeurs
pnpm migrate
pnpm dev # API sur 8080, interface sur 5173 avec rechargement