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

5.0 KiB


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é)

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

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

Pages Liées