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