---
title: "Deploy Miniflux | Open Source Feedly Alternative"
description: "Self Host Miniflux on Railway. RSS + Atom + JSON feeds."
category: "CMS"
url: https://railway.com/deploy/miniflux
---

# Deploy Miniflux | Open Source Feedly Alternative

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

**[Deploy Miniflux | Open Source Feedly Alternative on Railway](https://railway.com/template/miniflux)**

- **Creator:** Heimdall
- **Category:** CMS
- **Total deploys:** 3

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### Miniflux https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/miniflux-light.svg

- **Image:** miniflux/miniflux:2.2.19
- **Public domain:** Yes

## Documentation

# 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](https://res.cloudinary.com/asset-cloudinary/image/upload/v1778608837/374ddac3-6e9c-428b-a25f-126db81f59f4.png)

## 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](https://res.cloudinary.com/asset-cloudinary/image/upload/v1778608684/1730a143-df81-43b5-8fcc-87b615d321f3.png)

## 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:

- **Miniflux** — `miniflux/miniflux:2.2.19` (the Go web server)
- **Postgres** — Railway-managed PostgreSQL (the only state store)

### Environment Variables Reference

| Variable | Purpose |
|---|---|
| `DATABASE_URL` | Connection string to the Postgres service with `?sslmode=disable` appended |
| `RUN_MIGRATIONS` | `1` runs SQL migrations idempotently on every boot |
| `PORT` | Forces Miniflux to bind to `0.0.0.0:$PORT` instead of loopback |
| `BASE_URL` | Public-facing HTTPS URL used for absolute links and OAuth redirects |
| `HTTPS` | `1` enables secure cookies and HSTS behind Railway's TLS proxy |
| `CREATE_ADMIN` | `1` triggers one-time admin user creation on first boot |
| `ADMIN_USERNAME` | Username for the bootstrap admin account |
| `ADMIN_PASSWORD` | Password for the bootstrap admin account (static value, not `${{secret}}`) |
| `LOG_FORMAT` | `json` produces structured logs for Railway log ingestion |

### Deployment Dependencies

- Runtime: Go (compiled binary, distributed via Docker)
- Docker Hub: [miniflux/miniflux](https://hub.docker.com/r/miniflux/miniflux)
- GitHub: [miniflux/v2](https://github.com/miniflux/v2)
- Docs: [miniflux.app/docs](https://miniflux.app/docs/)
- Configuration reference: [miniflux.app/docs/configuration.html](https://miniflux.app/docs/configuration.html)

## 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.

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 0.25 vCPU | 0.5 vCPU |
| RAM | 128 MB | 256–512 MB |
| Storage | 1 GB Postgres volume | 5–10 GB Postgres volume |
| Runtime | Docker (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

| Feature | Miniflux (self-hosted) | Feedly | Inoreader |
|---|---|---|---|
| License | Apache 2.0 OSS | Proprietary SaaS | Proprietary SaaS |
| Hosting | Self-host on Railway | SaaS only | SaaS only |
| Ads / trackers | None | Yes on free tier | Yes on free tier |
| Full-text scraping | Built-in | Paid tier | Paid tier |
| API access | REST + Fever API | Paid tier | Paid tier |
| Cost | Infra 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.


## Similar templates

- [Libredesk - Complete Setup](https://railway.com/deploy/libredesk-complete-setup) — Complete self-hosted omnichannel customer support desk.
- [Paperless-ngx](https://railway.com/deploy/paperless-ngx-3) — Paperless-ngx — document management with OCR and full-text search
- [Instatic CMS - Postgres](https://railway.com/deploy/instatic-cms-postgres) — Design, build and manage powerful static sites from state-of-the-art CMS

Open this page in a browser: https://railway.com/deploy/miniflux
