DATETIME of last agent review: 25 Feb 2026 16:41 (Europe/London)
Self-hosted Miniflux RSS reader behind Apache/Virtualmin at https://rss.pinescore.com, backed by PostgreSQL and managed as a systemd service.
- OS: Debian 12 (bookworm)
- Go: use
/usr/local/go/bin/go(currently go1.25.4);/usr/bin/gois go1.19.x and must not be used - DB: PostgreSQL 15 (Debian packages)
- Process manager: systemd (
miniflux.service) - Reverse proxy: Apache 2 (Virtualmin vhost)
- Build:
PATH=/usr/local/go/bin:$PATH make miniflux - Run (requires a PostgreSQL DB):
PATH=/usr/local/go/bin:$PATH DATABASE_URL=postgres://miniflux:<password>@localhost/miniflux?sslmode=disable RUN_MIGRATIONS=1 go run main.go - Tests:
PATH=/usr/local/go/bin:$PATH make test
- PostgreSQL
- Create role + DB (example):
sudo -u postgres createuser -P minifluxsudo -u postgres createdb -O miniflux -E UTF8 miniflux
- Create role + DB (example):
- Config file
- Create
/etc/miniflux.conf(mode600, owned byroot) with the minimum:DATABASE_URL=postgres://miniflux:<password>@localhost/miniflux?sslmode=disableRUN_MIGRATIONS=1LISTEN_ADDR=127.0.0.1:8180BASE_URL=https://rss.pinescore.com
- Optional one-time admin bootstrap: set
CREATE_ADMIN=1andADMIN_*, then removeADMIN_PASSWORDand setCREATE_ADMIN=0after first login.
- Create
- Build and install the binary
cd /home/loopnova/domains/rss.pinescore.com/public_htmlgit pullPATH=/usr/local/go/bin:$PATH make minifluxsudo install -o root -g root -m 0755 miniflux /usr/local/bin/miniflux
- systemd service
- Ensure the service user exists (required by the unit
User=miniflux):id -u miniflux >/dev/null 2>&1 || sudo useradd --system --home /var/lib/miniflux --shell /usr/sbin/nologin miniflux - Unit file lives at
/etc/systemd/system/miniflux.service(based onpackaging/systemd/miniflux.service, adjusted for/usr/local/bin/miniflux). - Enable and start:
sudo systemctl daemon-reloadsudo systemctl enable --now miniflux
- Ensure the service user exists (required by the unit
- Apache reverse proxy (Virtualmin)
- Vhost:
/etc/apache2/sites-available/rss.pinescore.com.conf - Required modules:
proxy,proxy_http,headers - Validate and reload:
sudo apachectl configtestsudo systemctl reload apache2
- Vhost:
LISTEN_ADDRdefaults to127.0.0.1:8080in code; this host uses127.0.0.1:8180behind Apache.- Feed polling is intentionally aggressive on this instance. See
ops/POLLING.mdfor the exact knobs and the error backoff behavior.
- Rebuild and restart:
PATH=/usr/local/go/bin:$PATH make miniflux && sudo install -m 0755 miniflux /usr/local/bin/miniflux && sudo systemctl restart miniflux - Logs:
sudo journalctl -u miniflux -n 200 --no-pager - Service status:
sudo systemctl status miniflux
- Wrong Go version used (go1.19.x) -> ensure
PATH=/usr/local/go/bin:$PATHfor allmake/gocommands. - Apache shows 502/504 -> confirm Miniflux is listening on
127.0.0.1:8180and the vhost proxies to the same address/port. - Auth/database errors -> confirm
/etc/miniflux.confDATABASE_URLpoints to an existing role/DB and credentials are correct. - Admin password keeps resetting -> ensure
CREATE_ADMIN=0and removeADMIN_PASSWORDafter bootstrap.
- Site:
https://rss.pinescore.com - Ops docs:
ops/(agent awareness) - Upstream docs:
https://miniflux.app/docs/