Initial vault setup
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Opengist
|
||||
created: 2026-06-08
|
||||
updated: 2026-06-08
|
||||
type: app
|
||||
tags: [catalogue, pastebin, self-hosted]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=33, https://github.com/thomiceli/opengist]
|
||||
---
|
||||
|
||||
# 📋 Opengist
|
||||
|
||||
> **Opengist** est un pastebin moderne écrit en Go, avec gestion multi-utilisateur, snippets Git-like, organisation par dossiers et support des gist privés/publics.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Métadonnée | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | https://opengist.io |
|
||||
| **GitHub** | https://github.com/thomiceli/opengist |
|
||||
| **License** | AGPL-3.0 |
|
||||
| **Langage principal** | Go |
|
||||
| **Étoiles GitHub** | 3 198 |
|
||||
| **Dernière MAJ** | 2026-06-07 |
|
||||
| **Catégorie** | [[cat-pastebin]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
Opengist s'inspire de **GitHub Gist** et de **GitLab Snippets** pour proposer une alternative auto-hébergée, avec une gestion fine des utilisateurs et des permissions. Chaque snippet est en fait un mini-dépôt Git, ce qui permet de versionner l'historique, de cloner localement, et de forker comme sur un vrai forge.
|
||||
|
||||
L'interface web est en Go (template HTML), ce qui la rend rapide et légère. L'application supporte les **multi-fichiers** dans un même snippet (un dossier de plusieurs fichiers), les syntaxes colorées pour 100+ langages via highlight.js, l'organisation par dossiers et tags, et un système de likes/fork. L'authentification peut être locale (email/password) ou branchée sur **OAuth2** (GitHub, GitLab, Google, OpenID Connect).
|
||||
|
||||
L'écosystème est riche : API REST, webhooks, exports Git, intégration Continue (VS Code, JetBrains) via l'extension officielle. C'est un excellent choix pour des **équipes de développement** qui veulent partager du code en interne, commenter des snippets, et garder un historique des révisions sans dépendre de GitHub Gist.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Docker Compose (recommandé)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
opengist:
|
||||
image: ghcr.io/thomiceli/opengist:latest
|
||||
container_name: opengist
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- web
|
||||
- internal
|
||||
environment:
|
||||
- OG_LISTEN_IP=0.0.0.0
|
||||
- OG_LISTEN_PORT=6157
|
||||
- OG_SECRET_KEY=*** - OG_DOMAIN=snippet.example.com
|
||||
- OG_PROTO=https
|
||||
- DB_TYPE=postgres
|
||||
- DB_CONNECTION=postgresql://opengist:***@db:5432/opengist?sslmode=disable
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.opengist.rule=Host(`snippet.example.com`)"
|
||||
- "traefik.http.routers.opengist.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.opengist.loadbalancer.server.port=6157"
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- internal
|
||||
environment:
|
||||
- POSTGRES_USER=opengist
|
||||
- POSTGRES_PASSWORD=*** - POSTGRES_DB=opengist
|
||||
volumes:
|
||||
- opengist-db:/var/lib/postgresql/data
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
internal:
|
||||
|
||||
volumes:
|
||||
opengist-db:
|
||||
```
|
||||
|
||||
### Installation manuelle
|
||||
|
||||
1. `git clone https://github.com/thomiceli/opengist.git`
|
||||
2. Prérequis : Go 1.22+, PostgreSQL 13+ (ou SQLite par défaut).
|
||||
3. Compiler : `go build -o opengist .`
|
||||
4. Configurer `config.yml` et lancer `./opengist`.
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
- `OG_SECRET_KEY` : chaîne aléatoire pour les sessions.
|
||||
- `OG_DOMAIN` : le FQDN public.
|
||||
- Configurer OAuth2 (GitHub/GitLab/Google) si besoin d'auth externe.
|
||||
- Activer les **webhooks** pour notifier les channels Slack/Discord/Teams.
|
||||
- Brancher un reverse proxy (Traefik/Caddy) avec TLS en frontal.
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
- [[app-pastefy]] — Java, multi-user, organisation, plus jeune.
|
||||
- [[app-privatebin]] — PHP, E2E, pastebin simple, sans versioning.
|
||||
- [[app-wastebin]] — Go, minimaliste, sans multi-user.
|
||||
- [[app-paaster]] — TypeScript, E2E, moderne.
|
||||
- [[app-chiyogami]] — Go + E2E, interface moderne.
|
||||
|
||||
### Propriétaires (ce que cette app remplace)
|
||||
- **gist.github.com** — snippets GitHub, privé si compte GH, public sinon.
|
||||
- **gitlab.com/snippets** — snippets GitLab, intégré au forge.
|
||||
- **pastebin.com** — fermé en 2024 puis repris, pas de versioning.
|
||||
- **hastebin.com** — minimaliste, pas de versioning.
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **OG_SECRET_KEY** : chaîne aléatoire longue, à protéger.
|
||||
- **OAuth2** : configurer au moins un provider, ne pas laisser l'inscription ouverte.
|
||||
- **HTTPS strict** : service exposé, ne jamais servir en HTTP.
|
||||
- **Backups Postgres + Git repos** : sauvegarder à la fois la DB et le dossier `repos/`.
|
||||
- **CSP headers** : Opengist applique un CSP strict, à conserver.
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- Site officiel : https://opengist.io
|
||||
- Code source : https://github.com/thomiceli/opengist
|
||||
- Documentation : https://opengist.io/docs
|
||||
- Démo : https://opengist.io
|
||||
- API : https://opengist.io/docs/api
|
||||
- Communauté : https://github.com/thomiceli/opengist/discussions
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-pastebin|Pastebin]] — Catégorie complète
|
||||
- [[app-pastefy]] — Voisin multi-user
|
||||
- [[app-privatebin]] — Voisin simple E2E
|
||||
- [[recettes-docker-compose]] — Templates Docker
|
||||
Reference in New Issue
Block a user