123 lines
5.8 KiB
Markdown
123 lines
5.8 KiB
Markdown
---
|
|
title: OpenChangelog
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, development, changelog, docs, product]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Development, https://github.com/jpmcb/openchangelog]
|
|
---
|
|
|
|
# 💻 OpenChangelog
|
|
|
|
> **Plateforme de changelogs publics** — publiez vos release notes depuis GitHub/GitLab avec un site statique élégant, un widget embed, des flux RSS/Atom et des notifications email, sans dépendance SaaS.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [openchangelog.io](https://www.openchangelog.io/) |
|
|
| **GitHub** | [jpmcb/openchangelog](https://github.com/jpmcb/openchangelog) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go |
|
|
| **Étoiles GitHub** | 317 ⭐ |
|
|
| **Catégorie** | Development, Changelog & Release |
|
|
| **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=Development) |
|
|
|
|
## 📝 Description
|
|
|
|
**OpenChangelog** est une **plateforme de changelogs publics self-hosted** qui transforme vos release notes GitHub en un **site web dédié, esthétique et fonctionnel** (un peu comme Canny, Beamer ou Productboard's changelog, mais open source et chez vous).
|
|
|
|
L'idée : les changelogs stockés dans les fichiers `CHANGELOG.md` ou les **GitHub Releases** sont parfaits pour les devs, mais **invisibles pour les utilisateurs finaux**. OpenChangelog agrège automatiquement vos releases (GitHub, GitLab, Bitbucket), les **parse, catégorise** (Features, Bug Fixes, Breaking Changes, Security) et expose une **page publique** où vos clients peuvent s'abonner par email, recevoir des **notifications RSS/Atom**, et filtrer par tag/label.
|
|
|
|
C'est typiquement le genre d'outil qu'on branche **une fois** sur son repo GitHub et qu'on oublie : à chaque nouvelle release taggée, OpenChangelog la détecte (via webhook ou polling), la parse depuis le `CHANGELOG.md` ou le corps de la release, la **catégorise automatiquement** selon les labels GitHub, et la publie. Les visiteurs peuvent s'abonner et recevoir un **email de notification** à chaque nouvelle entrée.
|
|
|
|
**Cas d'usage** : SaaS self-hosted qui veut un changelog public sans passer par Canny/Beamer (payants), projets open source qui veulent une page `/changelog` propre, équipes produit qui veulent **garder le contrôle de leurs release notes** sans SaaS tiers.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
openchangelog:
|
|
image: ghcr.io/jpmcb/openchangelog:latest
|
|
container_name: openchangelog
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
OC_BASE_URL: "https://changelog.example.com"
|
|
OC_GITHUB_TOKEN: "ghp_***" # pour augmenter le rate-limit API
|
|
OC_GITHUB_REPO: "mon-org/mon-projet"
|
|
OC_DB_PATH: "/data/changelog.db"
|
|
OC_RSS_ENABLED: "true"
|
|
OC_SUBSCRIBE_ENABLED: "true"
|
|
OC_SMTP_HOST: "smtp.example.com"
|
|
OC_SMTP_PORT: 587
|
|
OC_SMTP_USER: "noreply@example.com"
|
|
OC_SMTP_PASS: "***"
|
|
OC_SMTP_FROM: "noreply@example.com"
|
|
volumes:
|
|
- oc_data:/data
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.oc.rule=Host(`changelog.example.com`)"
|
|
- "traefik.http.routers.oc.entrypoints=websecure"
|
|
- "traefik.http.routers.oc.tls.certresolver=letsencrypt"
|
|
|
|
volumes:
|
|
oc_data:
|
|
```
|
|
|
|
### Installation manuelle
|
|
|
|
```bash
|
|
# Binaire Go statique
|
|
go install github.com/jpmcb/openchangelog@latest
|
|
openchangelog serve --config config.yaml
|
|
```
|
|
|
|
## ⚙️ Configuration
|
|
|
|
1. **GitHub token** : créer un PAT avec scope `repo` (lecture seule) pour passer de 60 à 5000 requêtes/h.
|
|
2. **Repo cible** : `OC_GITHUB_REPO=mon-org/mon-projet` — OpenChangelog va chercher les Releases et tags.
|
|
3. **Webhook GitHub** (optionnel) : configurer pour notifier OpenChangelog à chaque nouvelle release (au lieu de polling).
|
|
4. **SMTP** : obligatoire pour l'envoi des **notifications d'abonnement** — utiliser un service transactionnel comme [[app-hyvor-relay]].
|
|
5. **Custom domain** : servir sur `changelog.example.com` derrière [[app-traefik]].
|
|
|
|
## 🔗 Alternatives
|
|
|
|
- **Canny** — SaaS de feedback + changelog, propriétaire, plan gratuit limité.
|
|
- **Beamer** — Widget de notification in-app, très utilisé par les SaaS, payant.
|
|
- **Productboard Changelog** — Intégré à Productboard, orienté product managers.
|
|
- **GitHub Releases + page custom** — Solution minimale (un script Hugo + le repo), mais sans notifications email natives.
|
|
- **Keep A Changelog** — Convention de format, pas un outil.
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- 🔐 **HTTPS obligatoire** via [[app-traefik]] : les visiteurs s'abonnent par email, les tokens SMTP transitent.
|
|
- 🔒 **GitHub token en read-only** : scope `public_repo` minimum, jamais un PAT admin.
|
|
- 🛡️ **Rate limiting GitHub** : sans token, l'API GitHub limite à 60 req/h — toujours configurer un PAT.
|
|
- 🛡️ **Validation des inputs** : si vous customisez les templates, échapper les contenus des release notes (XSS).
|
|
- 🛡️ **Backups SQLite** : `OC_DB_PATH` contient les abonnements email — sauvegarder régulièrement.
|
|
- 🛡️ **Conformité email** : double opt-in recommandé pour les abonnements, lien de désabonnement dans chaque mail (RGPD/CAN-SPAM).
|
|
|
|
## 📚 Ressources
|
|
|
|
- [Site officiel](https://www.openchangelog.io/)
|
|
- [Documentation](https://www.openchangelog.io/docs)
|
|
- [GitHub jpmcb/openchangelog](https://github.com/jpmcb/openchangelog)
|
|
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-development]] — Catégorie Development
|
|
- [[app-hyvor-relay]] — Service de mailing transactionnel pour les notifications d'abonnement
|
|
- [[app-traefik]] — Reverse proxy HTTPS
|
|
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
|
|
- [[recettes-docker-compose]] — Templates Docker Compose
|