Sur un serveur debian, en root.
apt install ca-certificates curl gnupg lsb-release docker.io
apt install docker-compose
Pourquoi des dockers ? Parce qu'il n'y a pas à l'heure actuelle de package wiki.js pour debian. On pourrait l'installer directement sur la debian de façon classique en utilisant un tgz mais pour les mises à jour, ce serait fastidieux. Éventuellement, avec git, on peut se simplifier la tâche des mises à jour. Mais avec le docker et son update-companion, là, c'est du gateau. En plus ça n'utilise pas tellement plus de ressources donc pour moi, tant qu'il n'y a pas de package debian, le choix est vite vu.
mkdir -p /etc/wiki
openssl rand -base64 32 > /etc/wiki/.db-secret
docker network create wikinet
docker volume create pgdata
docker create --name=db \
-e POSTGRES_DB=wiki \
-e POSTGRES_USER=wiki \
-e POSTGRES_PASSWORD_FILE=/etc/wiki/.db-secret \
-v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro \
-v pgdata:/var/lib/postgresql/data \
--restart=unless-stopped \
-h db \
--network=wikinet \
postgres:17
docker create --name=wiki \
-e DB_TYPE=postgres \
-e DB_HOST=db \
-e DB_PORT=5432 \
-e DB_PASS_FILE=/etc/wiki/.db-secret \
-v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro \
-e DB_USER=wiki \
-e DB_NAME=wiki \
-e UPGRADE_COMPANION=1 \
--restart=unless-stopped \
-h wiki \
--network=wikinet \
--add-host=gitea:IP_GITEA\
-p 80:3000 \
-p 443:3443 \
ghcr.io/requarks/wiki:2
docker create --name=wiki-update-companion \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart=unless-stopped \
-h wiki-update-companion \
--network=wikinet \
ghcr.io/requarks/wiki-update-companion:latest
docker start db
docker start wiki
docker start wiki-update-companion
Administration -> Stockage -> Git : entrez les paramètres de votre dépôt privé git dédié à cette tâche pour garder l'historique des articles.
Notez le paramètre --add-host=gitea:IP_GITEA lors de la création du docker, essentiel pour pouvoir contacter un serveur gitea privé.
Et voilà ! Au pire du pire, la machine crashe définitivement et tous les articles restent parfaitement visibles sur le git puisque c'est du markdown. Il peuvent alors être utilisé pour réinstaller un nouveau wiki et synchronisé avec le git pour récupérer l'état actuel.