Self Hosting
Openchangelog can be run on your own infrastructure with just a single yaml config file. No database required!
Copy this minimal openchangelog.yml config file.
addr: 0.0.0.0:6001local: filesPath: /release-notespage: title: Changelog subtitle: The latest product updates colorScheme: light hidePoweredBy: false logo: src: https://openchangelog.com/logo-full.webp link: https://www.openchangelog.comNote that we have configured Openchangelog to load our release notes from the /release-notes folder. When using Docker make sure to mount this folder.
Openchangelog can be started with docker run:
docker run -v ./openchangelog.yml:/etc/openchangelog.yml:ro -v ./release-notes:/release-notes -p 6001:6001 ghcr.io/jonashiltl/openchangelog:0.6.2Or with this basic docker-compose.yml:
services: openchangelog: image: "ghcr.io/jonashiltl/openchangelog:0.6.2" ports: - "6001:6001" volumes: - ./release-notes:/release-notes - type: bind source: openchangelog.yml target: /etc/openchangelog.ymlOnce deployed, your changelog will be available at http://localhost:6001.
Configuration
The following sections describe how to configure all features of Openchangelog.
The configuration file is read from /etc/openchangelog.yml
Page
The page section groups customizations of your changelog’s appearance.
Title
page: title: ChangelogSubtitle
page: subtitle: Here is a rundown of the latest updates and improvements to ...Color Scheme
The color scheme can be set to dark, light or system.
page: colorScheme: lightLogo
Customize your logo with these attributes:
page: logo: src: https://openchangelog.com/logo-full.webp # required to display a logo alt: our logo # optional width: 70px # optional height: 30px # optional link: https://openchangelog.com # optionalAuth
The auth section can be used to enable password protection of the changelog.
Set passwordHash with the bcrypt hash of your password. Do not use the actual password!
page: auth: enabled: true # passwordHash: bcrypt hash of passwordYou can specify the authorize URL parameter with your password to bypass the password screen.
Sources
Configure where your changelog articles are loaded from. Visit the Using Sources guide for detailed setup instructions for each supported source.
Cache
You can configure a cache to improve latency and avoid hitting rate limits from e.g. Github.
Internally httpcache is used to cache the requests to Github. You can choose between a memory, disk and s3 based cache.
cache: type: disk disk: location: /data/cache maxSize: 1073741824 # 1 GB in bytes # s3: # bucket: the bucket url, env AWS_ACCESS_KEY_ID and AWS_SECRET_KEY are used as credentialsSearch
You can enable full text indexing of your changelog to make it easier to find relevant release notes.
This feature relies on the cache configuration to ensure the search index updates only when the release notes change. Without caching, the index would update on every request, leading to inefficiencies.
You can choose between memory or disk for the search index. It’s recommended to use the same storage type as your cache for consistency.
search: type: disk # or memory disk: path: /data/searchAnalytics
Analytics enables tracking of each request to a changelog, capturing details like time, city, country, continent, lat, lng, and whether access was denied if the changelog is protected.
Location data is available only when running behind Cloudflare with Visitor Location Headers enabled.
Tinybird
To send analytics events to Tinybird, simply configure your access token as follows:
analytics: provider: tinybird tinybird: accessToken: ...Then, set up the datasource analytics_events.