Initial vault setup
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user