Bibliothèque de templates gitrust

Bienvenue dans l'atelier gitrust. Chaque fichier ici est standalone et copiable tel quel — un fichier, un cas d'usage. Les commentaires internes suffisent à l'adapter. Pour les explications pédagogiques, référez-vous aux manuels qui pointent vers ces templates.

Convention : copiez le fichier qui correspond à votre cas, adaptez les valeurs marquées CHANGE_ME, puis supprimez les commentaires si vous le souhaitez. Ne modifiez pas les fichiers dans ce dépôt — travaillez toujours sur une copie locale.


Fichiers d'environnement (env/)

Fichier Cas d'usage
env/dev-local.env Instance de développement local sur localhost:4000 — PostgreSQL local, pas de TLS, debug activé
env/production-mono-machine.env Production mono-machine derrière reverse-proxy — PostgreSQL, SMTP, Redis sessions, TLS délégué
env/production-ci-heavy.env Production avec CI runners distants intensifs — tuning pool de connexions, rate limiting ajusté
env/tests-e2e.env Environnement E2E Playwright — base éphémère, seed de données, SMTP mock
env/ssh-guard-direct.env Bloc SSH_GUARD_* pour gitrust exposé Internet sans reverse-proxy SSH (profil direct)
env/ssh-guard-nginx.env Bloc SSH_GUARD_* pour gitrust derrière nginx stream avec PROXY protocol v2 (profil nginx)

Stacks Docker (docker/)

Fichier Cas d'usage
docker/docker-compose.minimal.yml Stack minimale : gitrust + PostgreSQL uniquement — idéale pour l'évaluation et les tutoriels
docker/docker-compose.production.yml Stack production : gitrust + PostgreSQL + Redis sessions + relay SMTP Postfix
docker/docker-compose.with-ci-runner.yml Stack production + CI runner Dagger en sidecar — pour instances avec builds fréquents
docker/podman-quadlet.container Alternative Podman Quadlet — déploiement rootless systemd-native sans Docker daemon

Reverse-proxy (reverse-proxy/)

Fichier Cas d'usage
reverse-proxy/nginx-tls.conf Nginx avec TLS Let's Encrypt — virtual host gitrust, headers de sécurité, proxy WebSocket SSE
reverse-proxy/caddy-Caddyfile Caddyfile — TLS automatique, configuration minimale, idéal pour les petites instances
reverse-proxy/traefik-dynamic.yml Traefik config dynamique — intégration labels Docker, middlewares rate-limit et auth

Systemd (systemd/)

Fichier Cas d'usage
systemd/gitrust.service Service systemd avec hardening AppArmor/seccomp — pour déploiement binaire natif sans Docker
systemd/gitrust-backup.timer Timer systemd de sauvegarde quotidienne — déclenche backup.sh à 2h00 avec journalisation

Configurations CI (.gitrust-ci.yml) (ci/)

Fichier Cas d'usage
ci/rust.gitrust-ci.yml Pipeline CI pour projet Rust — fmt, clippy, test, audit de dépendances, SBOM
ci/go.gitrust-ci.yml Pipeline CI pour projet Go — vet, staticcheck, test, build multi-arch
ci/python.gitrust-ci.yml Pipeline CI pour projet Python — ruff, mypy, pytest, packaging wheel
ci/node.gitrust-ci.yml Pipeline CI pour projet Node.js — ESLint, Vitest, build, audit npm
ci/dagger-power-mode/dagger.json Squelette Dagger Power Mode — module Go minimal à étendre pour pipelines complexes
ci/dagger-power-mode/main.go Module Dagger Go — fonctions build/test/publish prêtes à adapter

Sécurité (security/)

Fichier Cas d'usage
security/fail2ban-gitrust-ssh-guard.conf Jail + filtre fail2ban consommant le flux JSON stable de gitrust-ssh-guard (durcissement SSH)

Scripts de sauvegarde et restauration (backup/)

Fichier Cas d'usage
backup/backup.sh Sauvegarde complète — pg_dump + rsync des dépôts bare + copie des clés SSH host
backup/restore.sh Restauration complète depuis une archive de sauvegarde — avec vérification d'intégrité

Clients API d'exemple (api-clients/)

Ces exemples illustrent l'authentification par Personal Access Token (PAT) et les opérations CRUD de base sur l'API REST gitrust v1.

Fichier Cas d'usage
api-clients/python-create-repo.py Client Python — créer un dépôt via l'API v1 avec httpx et PAT
api-clients/rust-list-repos.rs Client Rust — lister les dépôts avec pagination via reqwest et PAT
api-clients/curl-pat-auth.sh Shell curl — exemples d'authentification PAT, GET/POST/DELETE sur les endpoints principaux

Scripts de migration (migration/)

Fichier Cas d'usage
migration/from-gitea.sh Import en masse depuis Gitea — dépôts, membres, issues via le worker d'import gitrust
migration/from-forgejo.sh Import en masse depuis Forgejo — même mécanique, adaptée à l'API Forgejo

Comment utiliser ces templates depuis les manuels

Les manuels narratifs pointent vers ces fichiers depuis leurs sections how-to. Par exemple :

  • admin/how-to/configurer-smtp.md« Copiez template/env/production-mono-machine.env puis... »
  • admin/tutorials/01-installation-docker.md« La stack s'appuie sur template/docker/docker-compose.minimal.yml »
  • developer/how-to/implementer-endpoint-api.md« Testez avec template/api-clients/curl-pat-auth.sh »

Les templates ne contiennent pas d'explication pédagogique — tout le contexte se trouve dans les manuels.