VPSРейтинг
Продуктивность7 марта 2026 · 11 мин

Miniflux на VPS: RSS-ридер без алгоритмов и рекламы

Следить за новостями, блогами и YouTube-каналами — в хронологическом порядке, без алгоритмов, без рекламы и без слежки. Miniflux работает на 256 МБ RAM, разворачивается за 10 минут и живёт на VPS 24/7.

Что такое RSS и зачем он нужен в 2026 году

RSS (Really Simple Syndication) — это стандарт, с помощью которого сайты публикуют список своих новых материалов в машиночитаемом виде. Вы подписываетесь на фиды нужных ресурсов, и RSS-ридер сам забирает новые статьи.

Звучит как что-то из 2005 года — но в этом и суть. RSS работает так же, как почта: вы видите всё, что вышло, в хронологическом порядке. Никакой алгоритм не решает за вас, что важно. Никакой рекламы. Никаких «рекомендованных» постов от незнакомцев.

RSS-фид есть почти у всего: блоги, новостные сайты, подкасты, YouTube-каналы, GitHub Releases, Reddit, Hacker News, Telegram-каналы (через сторонние конвертеры). Если сайт публикует контент — у него почти наверняка есть RSS.

Проблема облачных RSS-сервисов — они либо платные (Feedly от $8/месяц), либо продают данные о ваших интересах. Self-hosted Miniflux решает обе проблемы.

Почему именно Miniflux

Среди self-hosted RSS-ридеров есть несколько вариантов. Вот почему Miniflux выигрывает:

РидерЯзыкRAMОсобенности
MinifluxGo~50 МББыстрый, лёгкий, Fever API, один бинарник
FreshRSSPHP~150 МБМного настроек, сложнее развернуть
tt-rssPHP~200 МБУстаревший стек, сложная настройка

Miniflux написан на Go: компилируется в один бинарник, нет зависимостей, нет тяжёлого PHP-стека. Хранит данные в PostgreSQL — надёжно и с полнотекстовым поиском. Обновляет фиды в фоне каждый час (настраивается). Имеет Fever API — стандартный протокол, который поддерживают лучшие мобильные RSS-клиенты.

Что понадобится

  • VPS с Ubuntu 22.04 или 24.04 — хватит тарифа с 512 МБ RAM и 1 vCPU. Miniflux сам занимает ~50 МБ, PostgreSQL — ~100 МБ.
  • Docker и Docker Compose — установим ниже если не установлены
  • Домен для HTTPS (опционально — можно и по IP)
  • Nginx и certbot — для SSL (устанавливаем по ходу)

Шаг 1. Устанавливаем Docker

Если Docker уже установлен — пропустите этот шаг.

# Устанавливаем Docker одной командой
curl -fsSL https://get.docker.com | sh

# Добавляем текущего пользователя в группу docker
# чтобы не писать sudo перед каждой командой
sudo usermod -aG docker $USER

# Применяем изменения группы без перелогина
newgrp docker

Проверяем: docker run hello-world — должны увидеть «Hello from Docker!».

Шаг 2. Запускаем Miniflux с PostgreSQL

Miniflux требует PostgreSQL для хранения статей и подписок. Запустим оба сервиса через Docker Compose — они будут жить в изолированной сети и перезапускаться автоматически.

Создаём рабочую директорию:

mkdir -p ~/miniflux && cd ~/miniflux

Создаём файл docker-compose.yml:

services:
  miniflux:
    image: miniflux/miniflux:latest
    container_name: miniflux
    ports:
      - 127.0.0.1:8080:8080
    environment:
      DATABASE_URL: postgres://miniflux:DbPass123@db/miniflux?sslmode=disable
      RUN_MIGRATIONS: 1
      CREATE_ADMIN: 1
      ADMIN_USERNAME: admin
      ADMIN_PASSWORD: AdminPass456
      BASE_URL: https://rss.example.com
      POLLING_FREQUENCY: 60
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:16
    container_name: miniflux-db
    environment:
      POSTGRES_USER: miniflux
      POSTGRES_PASSWORD: DbPass123
      POSTGRES_DB: miniflux
    volumes:
      - miniflux-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "miniflux"]
      interval: 10s
      retries: 5
    restart: unless-stopped

volumes:
  miniflux-db:

Что изменить перед запуском:

  • DbPass123 — придумайте надёжный пароль для базы данных (замените в обоих местах)
  • AdminPass456 — пароль для входа в Miniflux
  • rss.example.com — ваш домен (или IP сервера если домена нет)

POLLING_FREQUENCY: 60 — Miniflux будет проверять каждый фид раз в час. Можно уменьшить до 30 (раз в 30 минут) или увеличить до 120. Слишком частые проверки могут привести к блокировке со стороны некоторых сайтов.

Запускаем:

docker compose up -d

Docker скачает образы, запустит PostgreSQL, применит миграции базы данных и создаст учётную запись администратора. Посмотреть процесс:

docker compose logs -f miniflux

Когда увидите Starting HTTP server... — всё готово. Нажмите Ctrl+C для выхода из лога.

Шаг 3. Nginx + SSL

Miniflux слушает на 127.0.0.1:8080 — то есть снаружи недоступен. Чтобы открывать его из браузера и мобильных приложений, настроим Nginx как прокси с SSL-сертификатом.

Устанавливаем Nginx и certbot:

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y

Создаём конфиг /etc/nginx/sites-available/miniflux:

server {
    listen 80;
    server_name rss.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Активируем конфиг и получаем SSL:

sudo ln -s /etc/nginx/sites-available/miniflux /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

# Открываем порты 80 и 443 в UFW (нужно для получения сертификата)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Получаем SSL-сертификат (замените rss.example.com на свой домен)
sudo certbot --nginx -d rss.example.com

Certbot сам обновит конфиг Nginx под HTTPS и настроит автообновление сертификата. После этого Miniflux будет доступен по адресу https://rss.example.com — входите с логином admin и паролем, который указали в ADMIN_PASSWORD.

Шаг 4. Добавляем подписки

Интерфейс Miniflux на английском, но интуитивно понятен. Слева — боковое меню с категориями, вверху — кнопка добавления фида.

Добавить один фид

  1. 1

    Нажмите кнопку «+ Add Feed» в боковом меню.

  2. 2

    Вставьте URL сайта или прямую ссылку на RSS-фид. Miniflux сам найдёт фид, если вставить просто адрес сайта — например, https://habr.com.

  3. 3

    Выберите категорию (можно создать свои: Tech, Новости, YouTube) и нажмите «Subscribe».

Импорт из другого ридера (OPML)

Если вы переходите с Feedly, FreshRSS или любого другого ридера — экспортируйте оттуда файл OPML и импортируйте в Miniflux:

Settings → Import/Export → Import OPML — выберите файл. Все подписки добавятся за секунды.

Полезные RSS-фиды для старта

  • Habr: https://habr.com/ru/rss/articles/
  • Hacker News (топ): https://news.ycombinator.com/rss
  • GitHub Releases: https://github.com/miniflux/v2/releases.atom
  • YouTube-канал: https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
  • Reddit (любой саб): https://www.reddit.com/r/selfhosted/.rss

Шаг 5. Читаем с телефона через Fever API

Веб-интерфейс Miniflux адаптирован под мобильные экраны и работает прямо в браузере. Но если хотите нативное приложение с офлайн-чтением и push-уведомлениями — используйте Fever API.

Fever API — протокол, который понимают многие популярные RSS-клиенты. Включаем его в Miniflux:

  1. 1

    В Miniflux откройте Settings → Integrations.

  2. 2

    В разделе Fever API поставьте галочку «Activate the Fever API», введите имя пользователя и пароль (можно те же, что при входе, или создайте отдельные).

  3. 3

    Нажмите «Save». URL для подключения будет: https://rss.example.com/fever/

Какие приложения использовать

Android

  • FeedMe — лучший выбор, поддерживает Fever API, бесплатный
  • FocusReader — чистый интерфейс, тоже Fever API

iOS / macOS

  • Reeder Classic — платный, но лучший RSS-клиент для Apple
  • Unread — читабельный интерфейс, поддерживает Fever

В приложении при добавлении аккаунта выберите тип «Fever» и введите URL https://rss.example.com/fever/ и учётные данные из настроек Miniflux.

Полезные настройки

Тёмная тема

Settings → Preferences → Theme → выберите «Dark» или «System». Работает без перезагрузки.

Scraper — загружать полный текст

Многие фиды отдают только анонс, а не полный текст статьи. Включите скрапер для конкретного фида: зайдите в его настройки (Feeds → Edit) и поставьте галочку «Fetch original content». Miniflux сам зайдёт на страницу и вытащит текст.

Правила фильтрации

Не хотите видеть определённые материалы? В настройках фида есть поля «Block List Rules» и «Keep List Rules» — туда вписываются регулярные выражения. Например, реклама|спонсор скроет статьи с этими словами в заголовке.

Сочетания клавиш

Miniflux — клавиатурно-ориентированный ридер. Самые важные:

j / kследующая / предыдущая статья
o или Enterоткрыть оригинал в новой вкладке
mотметить прочитанным / непрочитанным
sдобавить в избранное
g uперейти к непрочитанным
?показать все горячие клавиши

Бэкап подписок

Все данные лежат в PostgreSQL внутри Docker volume. Делаем дамп базы:

# Дамп базы данных
docker exec miniflux-db pg_dump -U miniflux miniflux > ~/miniflux/backup.sql

# Восстановление из дампа
docker exec -i miniflux-db psql -U miniflux miniflux < ~/miniflux/backup.sql

Список подписок также экспортируется в OPML-файл через интерфейс: Settings → Export OPML. Этот файл можно открыть в любом RSS-ридере, если когда-нибудь решите переехать.

Обновление Miniflux

Miniflux активно развивается — новые версии выходят каждые 1–2 недели. Обновление занимает несколько секунд:

cd ~/miniflux
docker compose pull
docker compose up -d

Флаг RUN_MIGRATIONS=1 автоматически применит новые миграции базы данных при каждом старте.

Частые проблемы

Miniflux не запускается, ошибка в логах: pq: password authentication failed

Пароль в DATABASE_URL и в POSTGRES_PASSWORD не совпадает. Проверьте оба значения в docker-compose.yml — они должны быть одинаковыми. После исправления: docker compose down -v && docker compose up -d (флаг -v удалит том с базой, чтобы пересоздать с новым паролем).

Фид добавился, но статьи не появляются

Miniflux обновляет фиды по расписанию (раз в час по умолчанию). Чтобы не ждать — зайдите в список фидов (Feeds), нажмите три точки рядом с нужным и выберите «Refresh».

Если фид обновляется, но статей нет — откройте URL фида в браузере. Если он возвращает пустой результат, значит у источника нет новых материалов или фид сломан на стороне сайта.

Мобильное приложение не подключается по Fever API

Проверьте три вещи: (1) API включён в Settings → Integrations; (2) URL заканчивается на /fever/ — слеш в конце обязателен; (3) в приложении нужно выбрать тип подключения «Fever», а не «Miniflux» или «Google Reader». Учётные данные — те, что указали при настройке Fever API, не обязательно те же, что для входа на сайт.

Готово: ваш RSS-ридер работает 24/7

Miniflux запущен, подписки добавлены, мобильное приложение подключено. Теперь вы читаете только то, на что сами подписались — без алгоритмов, без рекламы, в порядке публикации.

Потребление ресурсов: ~50 МБ RAM для Miniflux + ~100 МБ для PostgreSQL. Даже на самом дешёвом VPS с 512 МБ остаётся место для других сервисов.

Другие self-hosted сервисы: