Files
wiki/Catalogue-Self-Hosted/apps/app-sourcehut.md
T
2026-06-09 18:40:21 +02:00

6.9 KiB


title: SourceHut created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, git-hosting, ci-cd, mailing-lists, minimalist] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://sourcehut.org/]

💻 SourceHut

Suite de développement minimaliste et opinionnée — hébergement Git, CI/CD, mailing lists, paste, todo — créée par Drew DeVault sous l'égide de la Software Freedom Conservancy (SFC). L'anti-GitHub philosophique.

📋 Informations Générales

Attribut Valeur
Nom SourceHut
Slug sourcehut
Description Suite dev open source : git, CI, mailing lists, paste
Site officiel https://sourcehut.org/
Repository https://git.sr.ht/~sircmpwn/sr.ht
Stars 0 sur selfh.st (~2 500 cumulés)
Licence AGPL 3.0 (serveur)
Langage Python (Flask), Go, PostgreSQL
Catégorie Development
Note Projet mature créé par Drew DeVault (sircmpwn) et hébergé par la Software Freedom Conservancy. C'est l'alternative la plus crédible à GitHub dans une philosophie FOSS radicale, sans tracking, sans JS obligatoire.

📝 Description

SourceHut (prononcer « source-hat », abréviation sr.ht) est une suite de développement open source modulaire, créée par Drew DeVault (également créateur de sway, wlroots, contributeur central de l'écosystème Wayland) et administrée par la Software Freedom Conservancy (SFC, organisation derrière Git, BusyBox, etc.).

Architecture en briques : SourceHut n'est pas un monolithe. La suite se compose de services indépendants communicant via OAuth : gitsrht (hébergement Git), buildsrht (CI/CD avec runners), listssrht (mailing lists), pastesrht (pastebin), todosrht (tickets), metasrht (auth + profils), hubsrht (dashboard). On peut auto-héberger la suite complète ou seulement les briques utiles.

Philosophie : workflow Unix, mailing lists en première classe (les patches s'envoient par email, à la mode LKML/Linux), pas de JavaScript obligatoire côté client, pas de tracking, pas de walled garden, et une CLI robuste (hut). C'est le choix naturel des développeurs qui veulent réapprendre les outils « old-school » de l'open source.

Usage typique : héberger projets personnels, dotfiles, blog (man.sr.ht), collaborer via mailing lists. Le builds.sr.ht est utilisé massivement par les mainteneurs Wayland et de nombreux projets C/Go. SourceHut n'est pas un clone de GitHub : c'est une approche fondamentalement différente, optimisée pour la lecture, l'archive à long terme, et l'open source sérieux.

🚀 Installation

Installation recommandée (manuelle, complexe)

SourceHut n'a pas d'image Docker officielle (par philosophie, l'équipe fournit des playbooks Ansible/Shell). L'installation est lourde (~6 services) mais bien documentée :

git clone https://git.sr.ht/~sircmpwn/sr.ht
cd sr.ht

# Dépendances : Python 3.11+, PostgreSQL 13+, Redis, nginx
# Mail server (Postfix) pour lists.sr.ht
# Mercurial, Git, CVS, Subversion (pour gitsrht)

sudo ./scripts/install.sh

# Configurer la base
cd metasrht && make database

# Démarrer via systemd
sudo systemctl enable --now gitsrht buildsrht listssrht metasrht

Docker (community-maintained, à vérifier)

# docker-compose.yml (approximatif)
version: "3.8"
services:
  metasrht:
    image: sourcehut/metasrht:latest
    restart: unless-stopped
    environment:
      - SRHT_DOMAIN=git.example.com
      - DATABASE_URL=postgres://srht:CHANGEME@db:5432/metasrht
    depends_on:
      - db

  gitsrht:
    image: sourcehut/gitsrht:latest
    restart: unless-stopped
    environment:
      - SRHT_DOMAIN=git.example.com
      - OAUTH_CLIENT_ID=CHANGEME
      - OAUTH_CLIENT_SECRET=CHANGEME
    depends_on:
      - metasrht

  buildsrht:
    image: sourcehut/buildsrht:latest
    restart: unless-stopped
    environment:
      - SRHT_DOMAIN=builds.example.com
    depends_on:
      - metasrht

  listssrht:
    image: sourcehut/listssrht:latest
    restart: unless-stopped
    environment:
      - SRHT_DOMAIN=lists.example.com
    depends_on:
      - metasrht

  db:
    image: postgres:13
    restart: unless-stopped
    environment:
      - POSTGRES_USER=srht
      - POSTGRES_PASSWORD=CHANGEME
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

⚙️ Configuration

  • Sous-domaines dédiés : git.example.com, builds.example.com, lists.example.com, meta.example.com — un vhost par service derrière Traefik/Caddy, certificat Let's Encrypt par sous-domaine.
  • OAuth interne : chaque brique s'authentifie auprès de metasrht (service d'identité) — enregistrer manuellement chaque sous-service comme client OAuth.
  • Mail sortant : configurer un relais SMTP (Mailgun, Postmark, ou Postfix local) — SourceHut envoie beaucoup d'emails (notifications, patches).
  • Runners CI : builds.sr.ht consomme des manifests YAML et délègue à des build workers Linux/BSD séparés (VM à provisionner à part).
  • Backups : pg_dump sur toutes les bases + tar sur les repos Git (~srht/git/) — quotidien.

🔗 Alternatives

  • app-gitea / app-forgejo — Forges Git plus accessibles, UI moderne, workflow « post-commit » classique.
  • app-gitlab — Plateforme complète CI/CD, plus industrielle, plus lourde à maintenir.
  • app-phorge — Fork de Phabricator, workflow pre-commit, focus collaboration.
  • Savannah (GNU) — Le « grand-père » de l'hébergement FOSS, encore actif.
  • Pagure — Forge Python du projet Fedora, mailing lists natives.

🔒 Sécurité

  • Surface d'attaque : 4-6 services web + mail + base — segmenter avec Traefik, mTLS interne entre services via réseau Docker ou Wireguard.
  • Mises à jour : suivre le blog ~sircmpwn et la mailing list ~sircmpwn/meta.sr.ht — l'équipe publie des advisories clairs.
  • Authentification : 2FA activable par TOTP, imposé pour les admins.
  • HTTPS obligatoire : Let's Encrypt via Traefik, HSTS strict (max-age=31536000).
  • Tokens : rotation régulière des tokens OAuth entre services.

📚 Ressources

🔗 Pages Liées