---
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 :

```bash
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)

```yaml
# 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

- [Site officiel SourceHut](https://sourcehut.org/)
- [Documentation d'auto-hébergement](https://man.sr.ht/installation.md)
- [Repositories Git de SourceHut](https://git.sr.ht/~sircmpwn)
- [Philosophie et FAQ](https://sourcehut.org/principles/)
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)

## 🔗 Pages Liées

- [[cat-development]] — Catégorie Development
- [[app-gitea]] — Alternative moderne plus accessible
- [[app-phorge]] — Plateforme collaboration pre-commit
- [[app-traefik]] — Reverse-proxy HTTPS recommandé
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker
