Railway

Deploy Miniflux | Open Source Feedly Alternative

Self Host Miniflux on Railway. RSS + Atom + JSON feeds.

Deploy Miniflux | Open Source Feedly Alternative

/var/lib/postgresql/data

Just deployed

Deploy and Host Miniflux on Railway

Miniflux is a minimalist, open-source RSS and Atom feed reader written in Go that lets you self-host a clean, privacy-respecting alternative to Feedly, Inoreader, or NewsBlur. Self-hosting Miniflux on Railway gives you full ownership of your reading list — no trackers, no ads, no algorithm — backed by a single Go binary and a PostgreSQL database.

This Railway template deploys the official miniflux/miniflux Docker image alongside a managed PostgreSQL database, automatically runs schema migrations, bootstraps the first admin user, and exposes the web UI on a Railway-generated HTTPS domain.

Miniflux Railway architecture

Getting Started with Miniflux on Railway

After the deploy completes, open your Railway-generated public URL in a browser. You will land on the Miniflux sign-in screen. Log in with the username and password you set as ADMIN_USERNAME and ADMIN_PASSWORD during deploy — these were read once at first boot to create the initial admin account.

Once signed in, click Add a subscription in the top navigation to paste a feed URL or import an OPML file exported from another reader. After your first poll cycle (default every 60 minutes), new entries appear in the Unread view. Configure keyboard shortcuts, integrations (Pocket, Wallabag, Telegram, etc.), and API tokens from Settings. As a one-time security cleanup, delete the CREATE_ADMIN, ADMIN_USERNAME, and ADMIN_PASSWORD environment variables from the Railway service — Miniflux only reads them on the very first boot and they are not needed afterward.

Miniflux dashboard screenshot

About Hosting Miniflux

Miniflux is a self-contained Go server with no external runtime dependencies beyond PostgreSQL. It fetches RSS/Atom/JSON feeds on a configurable schedule, dedupes entries, optionally scrapes full article content, strips tracking pixels, and serves a fast keyboard-driven web UI plus a REST API and Fever-compatible API.

Key features:

  • Reads RSS, Atom, RDF, and JSON feeds
  • Built-in integrations: Pocket, Wallabag, Instapaper, Pinboard, Telegram, Matrix, Apprise, and 15+ more
  • Mobile and PWA-friendly with offline reading
  • Full-text article scraping and reader-mode rendering
  • REST API plus Fever API compatibility for third-party clients (Reeder, FeedMe, etc.)
  • OAuth2 / OpenID Connect single sign-on (Google, Generic OIDC)
  • Per-feed rules for blocking, keeping, rewriting, and content filtering

The architecture is intentionally simple: a single stateless Miniflux container talks to a single PostgreSQL database. No Redis, no message broker, no background worker pool to babysit.

Why Deploy Miniflux on Railway

Self-hosting Miniflux on Railway pairs the simplest possible RSS stack with zero-DevOps infrastructure:

  • One-click managed PostgreSQL — no manual DB provisioning
  • Automatic HTTPS on a generated *.up.railway.app domain
  • Built-in migrations run on every deploy with RUN_MIGRATIONS=1
  • Vertical scaling without container rebuilds
  • Persistent volumes are managed by Railway on the Postgres service

Common Use Cases

  • A personal, ad-free RSS reader replacing Feedly or Inoreader
  • A team news aggregator with shared admin-managed feeds and per-user accounts
  • A privacy-first reading hub that strips trackers and exposes a clean API for mobile clients
  • A research archive that scrapes full article content and integrates with Wallabag/Pocket for permanent storage

Dependencies for Miniflux on Railway

This template provisions two services:

  • Minifluxminiflux/miniflux:2.2.19 (the Go web server)
  • Postgres — Railway-managed PostgreSQL (the only state store)

Environment Variables Reference

VariablePurpose
DATABASE_URLConnection string to the Postgres service with ?sslmode=disable appended
RUN_MIGRATIONS1 runs SQL migrations idempotently on every boot
PORTForces Miniflux to bind to 0.0.0.0:$PORT instead of loopback
BASE_URLPublic-facing HTTPS URL used for absolute links and OAuth redirects
HTTPS1 enables secure cookies and HSTS behind Railway's TLS proxy
CREATE_ADMIN1 triggers one-time admin user creation on first boot
ADMIN_USERNAMEUsername for the bootstrap admin account
ADMIN_PASSWORDPassword for the bootstrap admin account (static value, not ${{secret}})
LOG_FORMATjson produces structured logs for Railway log ingestion

Deployment Dependencies

Hardware Requirements for Self-Hosting Miniflux

Miniflux is one of the lightest self-hosted apps in its category — a few hundred lines of Go talking to Postgres.

ResourceMinimumRecommended
CPU0.25 vCPU0.5 vCPU
RAM128 MB256–512 MB
Storage1 GB Postgres volume5–10 GB Postgres volume
RuntimeDocker (Go binary)Docker (Go binary)

For a single user with a few hundred feeds, the recommended row is comfortable. Storage scales mostly with retained entries and cached article content — bump the Postgres volume if you keep entries longer than the default CLEANUP_ARCHIVE_READ_DAYS=60.

Self-Hosting Miniflux

The fastest way to run Miniflux locally with Docker:

docker run -d --name miniflux \
  -p 8080:8080 \
  -e DATABASE_URL="postgres://miniflux:secret@db/miniflux?sslmode=disable" \
  -e RUN_MIGRATIONS=1 \
  -e CREATE_ADMIN=1 \
  -e ADMIN_USERNAME=admin \
  -e ADMIN_PASSWORD=changeme \
  miniflux/miniflux:2.2.19

A minimal docker-compose.yml for production-like local development:

services:
  miniflux:
    image: miniflux/miniflux:2.2.19
    ports: ["8080:8080"]
    environment:
      DATABASE_URL: postgres://miniflux:secret@db/miniflux?sslmode=disable
      RUN_MIGRATIONS: "1"
      CREATE_ADMIN: "1"
      ADMIN_USERNAME: admin
      ADMIN_PASSWORD: changeme
    depends_on: { db: { condition: service_healthy } }
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: miniflux
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: miniflux
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "miniflux"]
      interval: 10s
    volumes: ["db:/var/lib/postgresql/data"]
volumes:
  db:

Source builds from github.com/miniflux/v2 work via go build if you prefer not to use Docker.

How Much Does Miniflux Cost to Self-Host?

Miniflux is 100% free and open source under the Apache 2.0 license. There is no paid tier and no upsell — the entire feature set ships in the single Docker image. On Railway you pay only for the underlying compute and PostgreSQL usage. A typical single-user deployment with a few hundred feeds fits comfortably inside Railway's Hobby plan free monthly credit.

Miniflux vs Feedly vs Inoreader

FeatureMiniflux (self-hosted)FeedlyInoreader
LicenseApache 2.0 OSSProprietary SaaSProprietary SaaS
HostingSelf-host on RailwaySaaS onlySaaS only
Ads / trackersNoneYes on free tierYes on free tier
Full-text scrapingBuilt-inPaid tierPaid tier
API accessREST + Fever APIPaid tierPaid tier
CostInfra only$8–18/mo$10–20/mo

Miniflux trades polished mobile apps for full data ownership, no algorithmic ranking, and a complete API on every feature.

FAQ

What is Miniflux and why self-host it? Miniflux is a minimalist open-source RSS/Atom/JSON feed reader written in Go. Self-hosting it on Railway gives you a privacy-first, ad-free reading hub that you fully own — no third-party tracks what you read.

What does this Railway template deploy? Two services: the official miniflux/miniflux Docker image and a Railway-managed PostgreSQL database. Migrations run automatically and a first admin user is bootstrapped from the ADMIN_USERNAME/ADMIN_PASSWORD env vars on first boot.

Why does Miniflux need PostgreSQL on Railway? PostgreSQL is Miniflux's only persistent state — users, feeds, entries, sessions, integrations, and cached icons all live in the database. There is no SQLite or filesystem-based storage mode.

How do I import my feeds from another RSS reader into self-hosted Miniflux? Export an OPML file from your current reader (Feedly, Inoreader, NewsBlur, NetNewsWire all support OPML export), then go to Settings → Import in Miniflux and upload the file. All feeds and categories are recreated on import.

Can I use mobile RSS apps like Reeder with self-hosted Miniflux? Yes — Miniflux implements both its own REST API and the Fever API, which is supported by Reeder, FeedMe, Fiery Feeds, Unread, and most third-party RSS clients.

How do I enable Google or generic OIDC SSO in self-hosted Miniflux on Railway? Set OAUTH2_PROVIDER=google (or oidc), OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, and OAUTH2_REDIRECT_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}/oauth2/google/callback. Then create new users via the Settings panel — they will be auto-linked on first SSO sign-in.

Why should I delete CREATE_ADMIN after the first deploy? CREATE_ADMIN, ADMIN_USERNAME, and ADMIN_PASSWORD are only read during the first boot to seed the admin row in PostgreSQL. After that they are ignored, so leaving them in the env panel just keeps a plaintext password visible.


Template Content

More templates in this category

View Template
Strapi
A popular self-hosted CMS

Milo
7.6K
Deploy
View Template
WordPress with Redis
Deploy WordPress with MariaDB and Redis

Noor Adn
View Template
Docmost
Self-hosted Notion alternative with real-time collaborative editing.

Tasha