Miniflux — a minimalist, fast, opinionated self-hosted RSS/Atom feed reader with a clean UI and REST API. Deployed all-in-one with its PostgreSQL database in a single host-networked Nomad job; runs migrations and creates the admin on first start.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "miniflux"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Miniflux container image. Pin a tag in production.
image = "miniflux/miniflux:latest"
# Host port for the Miniflux web UI / API.
port = 8100
# Admin username, created on first boot.
admin_user = "admin"
# Admin password, created on first boot. CHANGE THIS (Miniflux requires at least 6 characters).
admin_password = "changeme"
# Public base URL Miniflux is served at (e.g. https://reader.example.com/). Empty = leave unset.
base_url = ""
# PostgreSQL image backing Miniflux.
postgres_image = "postgres:16-alpine"
# Host port PostgreSQL listens on. Miniflux connects on 127.0.0.1.
db_port = 5432
# Password for the Miniflux Postgres user. CHANGE THIS. (DB name and user are both "miniflux".)
db_password = "miniflux"
# Docker named volume for the Postgres data dir (feeds, entries, users). Back it up.
db_data_volume = "miniflux_db_data"
# Resources for the Miniflux task.
miniflux_resources = {
cpu = 300
memory = 256
}
# Resources for the PostgreSQL task.
postgres_resources = {
cpu = 500
memory = 512
}
# Placement constraints — pin the job to one node so the Postgres local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "miniflux" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "miniflux/miniflux:latest" | The Miniflux container image. Pin a tag in production. |
| port | number | 8100 | Host port for the Miniflux web UI / API. |
| admin_user | string | "admin" | Admin username, created on first boot. |
| admin_password set me | string | "changeme" | Admin password, created on first boot. CHANGE THIS (Miniflux requires at least 6 characters). |
| base_url | string | "" | Public base URL Miniflux is served at (e.g. https://reader.example.com/). Empty = leave unset. |
| postgres_image | string | "postgres:16-alpine" | PostgreSQL image backing Miniflux. |
| db_port | number | 5432 | Host port PostgreSQL listens on. Miniflux connects on 127.0.0.1. |
| db_password key | string | "miniflux" | Password for the Miniflux Postgres user. CHANGE THIS. (DB name and user are both "miniflux".) |
| db_data_volume | string | "miniflux_db_data" | Docker named volume for the Postgres data dir (feeds, entries, users). Back it up. |
| miniflux_resources | object | {
cpu = 300
memory = 256
} | Resources for the Miniflux task. |
| postgres_resources | object | {
cpu = 500
memory = 512
} | Resources for the PostgreSQL task. |
| constraints | list | [] | Placement constraints — pin the job to one node so the Postgres local volume stays put. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
No variables match.
Miniflux — a minimalist, fast, self-hosted RSS/Atom feed reader with a clean reading UI, keyboard shortcuts, and a REST API. All-in-one: Miniflux plus its PostgreSQL database in a single host-networked Nomad job. It runs migrations and creates the admin on first start.
nomad-pack registry add nomploy github.com/Nomploy/nomad-packs
nomad-pack run miniflux --registry nomploy --var admin_password=<secret>
In nomploy: create a Compose service, type Nomad Pack, pack miniflux, set
admin_password, then Deploy. Open http://<node-ip>:8100 and log in as admin.
| Variable | Default | Notes |
|---|---|---|
image |
miniflux/miniflux:latest |
Pin a tag in production. |
port |
8100 |
Web UI / API (LISTEN_ADDR). |
admin_user / admin_password |
admin / changeme |
Created on first boot. Change the password (min 6 chars). |
base_url |
"" |
Public URL when behind a domain. |
db_password |
miniflux |
Postgres password. Change this. |
db_data_volume |
miniflux_db_data |
Feeds/entries/users. Back it up. |
db_port |
5432 |
Bundled Postgres host port. |
constraints |
[] |
Pin to a node so the volume stays put. |
Per-task resources: miniflux_resources, postgres_resources.
count is fixed to 1 (local Postgres volume). Pin with constraints.db_data_volume.base_url to the HTTPS URL.