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 :
administration_manual/how-to/configurer-smtp.md→ « Copieztemplate/env/production-mono-machine.envpuis... »administration_manual/tutorials/01-installation-docker.md→ « La stack s'appuie surtemplate/docker/docker-compose.minimal.yml»developer_manual/how-to/implementer-endpoint-api.md→ « Testez avectemplate/api-clients/curl-pat-auth.sh»
Les templates ne contiennent pas d'explication pédagogique — tout le contexte se trouve dans les manuels.
GitRust