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

124 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Gogs
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, forge, git]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/gogs/gogs]
---
# 💻 Gogs
> Forge Git ultra-légère écrite en Go — l'ancêtre de Gitea, encore plus minimaliste, conçue pour tourner sur un Raspberry Pi ou un NAS avec quelques Mo de RAM.
## 📋 Informations Générales
| Attribut | Valeur |
|----------|--------|
| **Nom** | Gogs |
| **Slug** | gogs |
| **Description** | Forge Git ultra-légère (Go) — minimaliste, auto-hébergeable sur Raspberry Pi |
| **Site officiel** | https://gogs.io |
| **Repository** | https://github.com/gogs/gogs |
| **Stars** | 47 585 ⭐ |
| **Licence** | MIT |
| **Langage principal** | Go |
| **Catégorie** | Development |
| **Tags** | [catalogue, development, forge, git] |
## 📝 Description
**Gogs** (« Go Git Service ») est une **forge Git ultra-légère** écrite en Go, créée en 2014 par Unknwon. C'est historiquement le **projet parent de Gitea** : en 2016, des contributeurs mécontents de la gouvernance ont forké Gogs pour créer Gitea, qui a depuis largement dépassé Gogs en popularité et en fonctionnalités.
Gogs conserve néanmoins sa philosophie : **un binaire unique, SQLite par défaut, 100 % MIT, RAM de l'ordre de 50100 Mo pour une instance personnelle**. Les fonctionnalités restent volontairement plus limitées que Gitea/GitLab : pas de CI/CD natif (sauf via webhooks externes), pas de packages registry, pas de projects kanban, mais tout l'essentiel : dépôts Git, issues, pull requests, wiki, releases, webhooks, gestion d'organisation. Idéal pour un **usage personnel** : un Raspberry Pi, un vieux laptop, un NAS Synology — là où Gitea/GitLab seraient trop gourmands.
**Modèle de licence** : 100 % MIT, pas de version commerciale. Le développement a ralenti (releases moins fréquentes que Gitea) mais reste actif. Pour un self-host moderne, beaucoup préfèrent aujourd'hui **Gitea** (compat ascendante quasi totale, plus actif) ou **Forgejo** (fork communautaire de Gitea).
## 🚀 Installation
### Via Docker (recommandé)
```yaml
# docker-compose.yml
version: "3.8"
services:
gogs:
image: gogs/gogs:0.13
container_name: gogs
restart: unless-stopped
ports:
- "3000:3000" # web UI
- "2222:22" # SSH Git
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./data:/data
# Optionnel : PostgreSQL au lieu de SQLite pour la production
db:
image: postgres:13
restart: unless-stopped
environment:
POSTGRES_USER: gogs
POSTGRES_PASSWORD: ***changeme***
POSTGRES_DB: gogs
volumes:
- ./postgres:/var/lib/postgresql/data
```
### Installation manuelle
```bash
# Binaire Linux (consomme ~30 Mo de RAM au repos)
wget https://github.com/gogs/gogs/releases/download/v0.13.0/gogs_0.13.0_linux_amd64.tar.gz
tar -xzf gogs_0.13.0_linux_amd64.tar.gz
cd gogs && ./gogs web
# Configuration par défaut : SQLite + port 3000
# UI web : http://localhost:3000/install (assistant de premier lancement)
```
## ⚙️ Configuration
- **`/data/gogs/conf/app.ini`** : fichier de configuration principal (équivalent INI du YAML Gitea).
- **Sections clés** : `[server]` (DOMAIN, ROOT_URL, SSH_DOMAIN, SSH_PORT), `[database]` (DB_TYPE = sqlite3 ou postgres), `[security]` (REVERSE_PROXY_AUTHENTICATION_USER_HEADER), `[service] DISABLE_REGISTRATION`.
- **Premier lancement** : visiter `/install` pour l'assistant web (création admin, choix DB, configuration SMTP).
- **SSH** : Gogs embarque un serveur SSH interne sur le port 22 interne (mappé 2222 par défaut sur l'hôte), ou utiliser OpenSSH de l'hôte (`START_SSH_SERVER = false` + AuthorizedKeysCommand).
- **Backups** : `gogs backup` (commande intégrée) exporte la base + les repos dans un tar.gz unique.
## 🔗 Alternatives
- **Gitea** — Fork communautaire de Gogs, plus actif, plus de fonctionnalités (CI, packages, projects), même philosophie légère.
- **Forgejo** — Fork de Gitea, gouvernance par fondation, 100 % communautaire.
- **GitLab CE** — Forge complète mais lourde (≥4 Go RAM, plus complexe à administrer).
- **OneDev** — Forge DevOps tout-en-un, plus orientée équipe/CI.
## 🔒 Sécurité
- **Expositions** : Gogs écoute sur 3000 (web) et 22 interne (SSH Git) — ne jamais exposer 3000 sans reverse-proxy HTTPS.
- **Mises à jour** : Gogs publie moins fréquemment que Gitea, mais reste sous maintenance — surveiller les CVE et planifier les montées de version.
- **2FA** : support natif TOTP depuis 0.13, à imposer pour les comptes admin.
- **Secrets** : `[security] SECRET_KEY` doit être long et unique (sert à signer les sessions et les cookies).
- **Authorized keys** : si vous utilisez l'option `AuthorizedKeysCommand` pour déléguer à OpenSSH, vérifier les permissions (`0700` sur le home dir, `0600` sur les clés).
## 📚 Ressources
- [Site officiel](https://gogs.io)
- [Documentation](https://gogs.io/docs)
- [Repository GitHub](https://github.com/gogs/gogs)
- [Selfh.st — Gogs](https://selfh.st/apps/?tag=Development)
- [Gogs vs Gitea — Comparatif](https://docs.gitea.io/en-us/comparison/)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-gitea]] — Fork communautaire moderne de Gogs
- [[app-onedev]] — Forge DevOps tout-en-un
- [[app-code-server]] — Web IDE à coupler avec la forge
- [[app-traefik]] — Reverse-proxy HTTPS
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker