Relibre
Music release one-page generator
Relibre is a simple, free, and open-source landing-page generator—an alternative to HyperFollow—that produces a single self-contained HTML file you can host anywhere.
Try the generator → https://
What you get
- A clean, responsive, single-file HTML page for a release
- No trackers, no analytics, no lock-in
- Host it anywhere (object storage, GitHub/Gitea Pages, your own server, IPFS, etc.)
- Optional native desktop app (Go + WebKit webview) that can save directly to your Downloads folder
Quick start (static site)
This repo already contains index.html and the generator under /ui.
Open locally:
# simple Python server
python3 -m http.server 8080
# → http://localhost:8080
Launch / self-host with Docker or Podman
Relibre ships multiple compose variants so you can choose your reverse proxy. All of them:
- build an internal
webcontainer that serves the static files - expose a
proxyon localhost:8080 (HAProxy, Caddy, Apache httpd, or Nginx)
Files:
docker-compose.yml.haproxydocker-compose.yml.caddydocker-compose.yml.apachedocker-compose.yml.nginxproxy/(proxy configs)Dockerfile(optional static Nginx serve; not required when using the variants above)
Docker
# HAProxy
docker compose -f docker-compose.yml.haproxy up -d --build
# Caddy
docker compose -f docker-compose.yml.caddy up -d --build
# Apache
docker compose -f docker-compose.yml.apache up -d --build
# Nginx
docker compose -f docker-compose.yml.nginx up -d --build
Open: http://localhost:8080
Podman
# If you have podman-compose:
podman-compose -f docker-compose.yml.nginx up -d --build
# Or via podman directly (example for Nginx)
podman build -t relibre-web -f Dockerfile.web .
podman run --name relibre-web -d --rm -p 8081:80 relibre-web
Production note: put a TLS-terminating proxy (Caddy/Traefik/HAProxy/Nginx) in front, or your existing edge/load balancer. These examples run HTTP only.
Native desktop build (Go webview app)
Builds a single executable that opens Relibre inside the OS webview (WebKitGTK on Linux, WebView2 on Windows, WKWebView on macOS). The app runs a tiny localhost server and can save the generated HTML directly to your Downloads folder.
Prereqs
- Arch:
sudo pacman -S --needed base-devel go webkit2gtk gtk3 pkgconf - Debian/Ubuntu:
sudo apt update sudo apt install -y build-essential golang pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libsoup-3.0-dev - macOS: Install Go (Homebrew is fine). WebKit is built-in.
- Windows: Install Go and the WebView2 runtime (Win11 has it by default).
If your distro provides only
webkit2gtk-4.1.pcand the module looks for4.0, you can locally add a compat symlink:
- Arch:
sudo ln -s /usr/lib/pkgconfig/webkit2gtk-4.1.pc /usr/lib/pkgconfig/webkit2gtk-4.0.pc- Debian/Ubuntu:
sudo ln -s /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.1.pc /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.0.pc
Build
At the repo root (next to index.html, ui/, images/), add these files if they aren’t already present:
go.mod
module relibre
go 1.22
Makefile
APP=relibre-app
.PHONY: deps run build clean
deps:
go get github.com/webview/webview_go@latest
go mod tidy
run:
go run .
build:
go build -trimpath -ldflags "-s -w" -o $(APP)
clean:
rm -f $(APP)
main.go (excerpt – already in repo if you followed earlier steps)
//go:embed index.html ui/* images/*
var content embed.FS
// POST /save writes to ~/Downloads when running the native app
// (see main.go in the repo for full implementation)
Build & run:
make deps
make build
./relibre-app
Arch Linux (AUR) packaging
You can publish two AUR packages:
relibre– builds from sourcerelibre-bin– installs a prebuilt binary from your Releases
From source (local PKGBUILD)
Create PKGBUILD:
pkgname=relibre
pkgver=0.1.0
pkgrel=1
pkgdesc="Native webview app to generate single-file landing pages for music releases"
arch=('x86_64')
url="https://git.circlewithadot.net/incentive/relibre"
license=('MIT')
depends=('gtk3' 'webkit2gtk' 'libsoup3')
makedepends=('go' 'git')
provides=('relibre')
source=("${pkgname}::git+${url}.git#tag=v${pkgver}")
sha256sums=('SKIP')
prepare() {
cd "${srcdir}/${pkgname}"
export GOPATH="${srcdir}/gopath"
export GOMODCACHE="${GOPATH}/pkg/mod"
go mod download
}
build() {
cd "${srcdir}/${pkgname}"
export CGO_ENABLED=1
go build -trimpath -ldflags "-s -w" -o relibre
}
package() {
cd "${srcdir}/${pkgname}"
install -Dm755 relibre "${pkgdir}/usr/bin/relibre"
install -Dm644 dist/com.circlewithadot.Relibre.desktop "${pkgdir}/usr/share/applications/com.circlewithadot.Relibre.desktop"
install -Dm644 dist/com.circlewithadot.Relibre.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/com.circlewithadot.Relibre.png"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Build locally:
makepkg -si
Publish to AUR (once your AUR repo is created):
makepkg --printsrcinfo > .SRCINFO
git add PKGBUILD .SRCINFO
git commit -m "relibre ${pkgver}"
git push # to your AUR remote
Flatpak / Flathub
Relibre works well as a Flatpak using the GNOME runtime (WebKitGTK included).
Create com.circlewithadot.Relibre.yml at repo root:
app-id: com.circlewithadot.Relibre
runtime: org.gnome.Platform
runtime-version: '46'
sdk: org.gnome.Sdk
command: relibre
finish-args:
- --share=network
- --socket=wayland
- --socket=fallback-x11
- --filesystem=xdg-download
modules:
- name: relibre
buildsystem: simple
build-commands:
- go env -w CGO_ENABLED=1
- go mod download
- go build -trimpath -ldflags "-s -w" -o /app/bin/relibre
- install -Dm644 dist/com.circlewithadot.Relibre.desktop /app/share/applications/com.circlewithadot.Relibre.desktop
- install -Dm644 dist/com.circlewithadot.Relibre.png /app/share/icons/hicolor/512x512/apps/com.circlewithadot.Relibre.png
sources:
- type: dir
path: .
Also add:
dist/com.circlewithadot.Relibre.desktop[Desktop Entry] Type=Application Name=Relibre Comment=Generate single-file landing pages for music releases Exec=relibre Icon=com.circlewithadot.Relibre Categories=AudioVideo;Utility; Terminal=falsedist/com.circlewithadot.Relibre.png(512×512 icon – you can copyimages/relibre_logo.png)
Build & run locally:
flatpak install -y org.gnome.Platform//46 org.gnome.Sdk//46
flatpak-builder --user --install --force-clean build-dir com.circlewithadot.Relibre.yml
flatpak run com.circlewithadot.Relibre
Submit to Flathub (outline)
- Ensure the app uses an appstream file:
dist/com.circlewithadot.Relibre.metainfo.xml. - Host a signed source archive or tag (Git).
- Fork the Flathub repo, add your manifest under
com.circlewithadot.Relibre, open a PR. - CI will build and review; address any sandboxing requests (portals, permissions).
License
MIT — see LICENSE.
Contributing
PRs welcome!
- Features: templates, themes, icon sets, translations
- Packaging: help maintain Flatpak & AUR recipes
- Docs: quickstart guides for common hosts (Netlify, Pages, S3, IPFS)