Installation
Lancer Spunto Lite avec un seul docker run ou un fichier compose, puis le mettre à jour, le sauvegarder et le désinstaller.
Spunto Lite est un seul conteneur. Il a besoin du socket Docker (pour créer les workers à côté de
lui), de votre ~/.ssh (en lecture seule) et de deux volumes : l’un pour ses données, l’autre pour
le socket de l’agent SSH qu’il partage avec les workers.
Avec docker run
docker run -d --name spunto-lite --restart unless-stopped -p 80:80 \
-e DATA_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME/.ssh:/host-ssh:ro" \
-v spunto-lite-ssh-agent:/run/spunto-ssh-agent \
-v spunto-lite-data:/app/data \
ghcr.io/spuntodotnet/spunto-lite:latest
Ouvrez ensuite http://localhost. Il n’y a pas de compte à créer ni d’écran de connexion.
Conservez la clé de chiffrement.
DATA_ENCRYPTION_KEYchiffre tous les secrets que vous enregistrez. Générez-la une fois, notez-la, et passez la même valeur chaque fois que vous recréez le conteneur — avec une autre clé, les secrets enregistrés ne peuvent plus être déchiffrés. Sans elle, Lite se rabat sur une clé de développement non sécurisée.
Avec compose
Enregistrez ceci sous docker-compose.yml, mettez DATA_ENCRYPTION_KEY=… dans un fichier .env
à côté, et lancez docker compose up -d :
services:
spunto-lite:
image: ghcr.io/spuntodotnet/spunto-lite:latest
container_name: spunto-lite
restart: unless-stopped
ports: ["80:80"]
environment:
DATA_ENCRYPTION_KEY: ${DATA_ENCRYPTION_KEY}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${HOME}/.ssh:/host-ssh:ro
- spunto-lite-ssh-agent:/run/spunto-ssh-agent
- spunto-lite-data:/app/data
# Facultatif — relayer l'ssh-agent de l'hôte (voir « Clés SSH et git ») :
# macOS (Docker Desktop) :
# - /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock
# Linux :
# - ${SSH_AUTH_SOCK}:/run/host-services/ssh-auth.sock
volumes:
spunto-lite-data:
spunto-lite-ssh-agent:
Depuis les sources
Le fichier compose du dépôt construit l’image à partir du checkout et ajoute le domaine HTTPS local utilisé par ses tests :
git clone https://github.com/spuntodotnet/spunto-lite.git
cd spunto-lite
cp .env.example .env # facultatif — les valeurs par défaut conviennent d'emblée
docker compose up -d --build # ou ./start.sh
Un autre port
Si le port 80 est pris, publiez-en un autre et indiquez-le à Lite, pour que les URL qu’il fournit correspondent :
docker run … -p 8080:8080 -e PORT=8080 … ghcr.io/spuntodotnet/spunto-lite:latest
Les workers sont alors à http://worker-<id>.localhost:8080.
Vérifier qu’il tourne
curl -s http://localhost/api/health
docker logs -f spunto-lite
Mettre à jour
Récupérez la nouvelle image et recréez le conteneur avec les mêmes volumes et la même clé :
docker pull ghcr.io/spuntodotnet/spunto-lite:latest
docker rm -f spunto-lite
docker run -d --name spunto-lite … # la même commande que ci-dessus
# ou, avec compose :
docker compose pull && docker compose up -d
Les migrations de la base s’exécutent au démarrage. Les workers sont des conteneurs distincts : ils
ne bougent pas pendant la mise à jour, leurs agents se reconnectent dès que Lite est revenu, et un
worker arrêté démarre comme d’habitude. Quand une version modifie ce qui entre dans une image
d’espace de travail, l’image du projet est reconstruite au lancement suivant, plutôt que de laisser
vos workers sur l’ancienne recette. Outre latest, chaque version est étiquetée par son numéro et
chaque build par le SHA court de son commit, si vous préférez en épingler un.
Sauvegarder
Tout ce que Lite sait se trouve dans le volume spunto-lite-data — un seul fichier SQLite.
Sauvegardez-le et vous avez sauvegardé l’installation (gardez la clé de chiffrement avec) :
docker run --rm -v spunto-lite-data:/data -v "$PWD":/backup alpine \
tar czf /backup/spunto-lite-data.tgz -C /data .
Les fichiers de vos workers sont dans leurs propres volumes (mp-worker-<id>-workspace), et les
volumes partagés d’un projet dans mp-proj-<projectId>-<name> : sauvegardez-les à part s’ils
contiennent quelque chose que vous ne pouvez pas recloner.
Désinstaller
Supprimez d’abord vos projets depuis le tableau de bord — cela supprime leurs workers, leurs images et leurs volumes — puis supprimez Lite lui-même :
docker rm -f spunto-lite
docker volume rm spunto-lite-data spunto-lite-ssh-agent
Tout ce qui reste porte un nom en mp-… (docker ps -a, docker volume ls, docker images).