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 | Особенности |
|---|---|---|---|
| Miniflux | Go | ~50 МБ | Быстрый, лёгкий, Fever API, один бинарник |
| FreshRSS | PHP | ~150 МБ | Много настроек, сложнее развернуть |
| tt-rss | PHP | ~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— пароль для входа в Minifluxrss.example.com— ваш домен (или IP сервера если домена нет)
POLLING_FREQUENCY: 60 — Miniflux будет проверять каждый фид раз в час. Можно уменьшить до 30 (раз в 30 минут) или увеличить до 120. Слишком частые проверки могут привести к блокировке со стороны некоторых сайтов.
Запускаем:
docker compose up -dDocker скачает образы, запустит 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.comCertbot сам обновит конфиг Nginx под HTTPS и настроит автообновление сертификата. После этого Miniflux будет доступен по адресу https://rss.example.com — входите с логином admin и паролем, который указали в ADMIN_PASSWORD.
Шаг 4. Добавляем подписки
Интерфейс Miniflux на английском, но интуитивно понятен. Слева — боковое меню с категориями, вверху — кнопка добавления фида.
Добавить один фид
- 1
Нажмите кнопку «+ Add Feed» в боковом меню.
- 2
Вставьте URL сайта или прямую ссылку на RSS-фид. Miniflux сам найдёт фид, если вставить просто адрес сайта — например,
https://habr.com. - 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
В Miniflux откройте Settings → Integrations.
- 2
В разделе Fever API поставьте галочку «Activate the Fever API», введите имя пользователя и пароль (можно те же, что при входе, или создайте отдельные).
- 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 сервисы: