FreshRSS: co to jest i jak zainstalować go na VPS

6 min czytania
Tropic
FreshRSS: co to jest i jak zainstalować go na VPS

FreshRSS: własny kanał wiadomości bez algorytmów

Sieci społecznościowe decydują, które wpisy pokażą najpierw. W rezultacie ważna aktualizacja projektu może łatwo zniknąć wśród dziesiątek rekomendacji. FreshRSS działa inaczej: wybierasz źródła, a nowe treści pojawiają się w jednym chronologicznym kanale.

FreshRSS można zainstalować na własnym serwerze i używać jako jednej skrzynki odbiorczej dla blogów, serwisów informacyjnych, aktualizacji oprogramowania, forów, podcastów i innych źródeł udostępniających kanały RSS lub Atom. Ten poradnik opisuje funkcje aplikacji, wymagania serwera oraz instalację na VPS z Dockerem i HTTPS.

FreshRSS w pięciu krokach

  1. Utwórz Linux VPS i skieruj do niego subdomenę, na przykład rss.example.com.
  2. Zainstaluj Docker i Docker Compose.
  3. Uruchom FreshRSS razem z Caddy, aby automatycznie uzyskać HTTPS.
  4. Otwórz subdomenę, wybierz SQLite i utwórz konto.
  5. Zaimportuj subskrypcje z OPML albo dodaj witryny ręcznie.

Po wykonaniu tych czynności VPS będzie sprawdzać źródła zgodnie z harmonogramem, nawet gdy komputer użytkownika jest wyłączony.

Czym jest FreshRSS?

FreshRSS to darmowy, samodzielnie hostowany agregator RSS i Atom. Samodzielne hostowanie oznacza, że aplikacja i baza danych działają na kontrolowanym przez Ciebie serwerze, a nie w infrastrukturze usługi chmurowej.

Kanał RSS to specjalny plik, który witryna aktualizuje za każdym razem, gdy publikuje nową treść. FreshRSS regularnie pobiera takie pliki z wybranych źródeł i łączy ich wpisy w jednym interfejsie. Nieprzeczytane artykuły, ulubione pozycje i historia czytania są synchronizowane między urządzeniami.

Główna idea jest prosta: użytkownik sam decyduje, kogo obserwować i w jakiej kolejności przeglądać publikacje. FreshRSS nie szereguje wpisów według zaangażowania i nie wstawia rekomendowanych treści między subskrypcje.

Funkcje FreshRSS

FunkcjaDo czego służy
Kategorie, statusy i ulubioneOddzielanie źródeł służbowych, technicznych i prywatnych
Wyszukiwanie, filtry i zapisane zapytaniaWyświetlanie tylko publikacji na wybrany temat
Import i eksport OPMLSzybkie przenoszenie listy subskrypcji
Google Reader API i Fever APIŁączenie kompatybilnych aplikacji mobilnych i komputerowych
WebSubOtrzymywanie wpisów zaraz po publikacji z obsługiwanych źródeł
Wielu użytkownikówTworzenie osobnych kont dla rodziny lub zespołu
Motywy i rozszerzeniaZmiana interfejsu i dodawanie funkcji
XPath i JSON FeedSubskrybowanie niektórych źródeł bez standardowego kanału RSS lub Atom

Zapisane zapytanie może stać się osobnym kanałem tematycznym, na przykład zawierającym tylko publikacje dotyczące bezpieczeństwa albo aktualizacje konkretnego produktu. Wynik można otworzyć w FreshRSS lub opublikować jako HTML albo RSS; dla list kanałów dostępny jest również OPML.

WebSub pozwala kompatybilnej witrynie powiadomić FreshRSS o nowym wpisie zamiast czekać na kolejne zaplanowane sprawdzenie. Aby to działało, instancja FreshRSS musi być dostępna z internetu pod prawidłowym publicznym adresem.

FreshRSS jest szczególnie przydatny dla programistów i administratorów systemów: blogi projektów, wydania, raporty o awariach i publikacje dotyczące bezpieczeństwa można zbierać w jednym kanale. W codziennym czytaniu zastępuje dziesiątki otwartych kart i utrzymuje dokładny status przeczytania na wszystkich urządzeniach.

Wymagania systemowe FreshRSS

FreshRSS potrzebuje niewielu zasobów. Obsługuje SQLite, PostgreSQL, MariaDB i MySQL, a instalacja ręczna wymaga serwera WWW oraz PHP 8.1 lub nowszego. W oficjalnym opisie znajduje się nawet test na Raspberry Pi 1 z 150 kanałami i 22 000 artykułów.

Praktyczne konfiguracje początkowe:

ScenariuszCPURAMPamięć masowaBaza danych
Osobisty kanał1 vCPU1 GB10–20 GB SSDSQLite
Rodzina lub mały zespół1–2 vCPU2 GB20–40 GB SSDSQLite lub zewnętrzna baza
Wielu użytkowników i duże archiwumOd 2 vCPUOd 4 GBOd 40 GB SSDPostgreSQL lub MariaDB

To wskazówki, a nie ścisłe wartości minimalne. Zużycie pamięci masowej zależy od liczby źródeł, częstotliwości publikacji i czasu przechowywania historii. VPS jest wygodniejszy niż domowy komputer, gdy potrzebujesz aktualizacji przez całą dobę, dostępu z zewnątrz, synchronizacji mobilnej i WebSub.

Jak zainstalować FreshRSS na VPS z Dockerem

W poniższej konfiguracji FreshRSS działa za Caddy. Caddy przyjmuje żądania zewnętrzne i automatycznie uzyskuje certyfikat TLS.

Potrzebujesz Linux VPS, Dockera zainstalowanego razem z poleceniem docker compose, subdomeny z rekordem A wskazującym na adres IP serwera oraz otwartych portów 80 i 443.

Krok 1. Utwórz katalog

sudo mkdir -p /opt/freshrss
sudo chown "$USER":"$USER" /opt/freshrss
cd /opt/freshrss

Krok 2. Utwórz compose.yaml

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    logging:
      options:
        max-size: 10m
    environment:
      TZ: Etc/UTC
      CRON_MIN: '3,33'
      FRESHRSS_ENV: production
      TRUSTED_PROXY: 172.16.0.0/12
    volumes:
      - freshrss_data:/var/www/FreshRSS/data
      - freshrss_extensions:/var/www/FreshRSS/extensions

  caddy:
    image: caddy:2
    container_name: freshrss-caddy
    restart: unless-stopped
    depends_on:
      - freshrss
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config

volumes:
  freshrss_data:
  freshrss_extensions:
  caddy_data:
  caddy_config:

CRON_MIN: '3,33' uruchamia sprawdzanie kanałów w 3. i 33. minucie każdej godziny. FreshRSS nie aktualizuje pojedynczego kanału częściej niż mniej więcej raz na 20 minut, więc częstsze uruchamianie zadania zwykle nie jest potrzebne.

Krok 3. Utwórz Caddyfile

rss.example.com {
    reverse_proxy freshrss:80
}

Zastąp domenę własną. Gdy rekord DNS zostanie rozpropagowany, a porty będą dostępne, Caddy automatycznie uzyska i odnowi certyfikat.

Krok 4. Uruchom FreshRSS

docker compose up -d
docker compose ps

Logi możesz przejrzeć tym poleceniem:

docker compose logs -f --tail=100

Otwórz https://rss.example.com. Kreator instalacji sprawdzi środowisko, poprosi o wybór bazy danych i utworzy pierwszego użytkownika. SQLite jest najprostszym wyborem dla osobistego serwera, ponieważ nie wymaga osobnego kontenera bazy danych.

Konfiguracja początkowa

FreshRSS często potrafi znaleźć kanał RSS lub Atom na podstawie zwykłego adresu witryny. Jeśli automatyczne wykrywanie nie zadziała, wpisz bezpośredni adres kanału. Subskrypcje z Feedly, Inoreader i innych czytników można wygodnie przenieść przez OPML.

Od razu uporządkuj źródła w kategorie, takie jak „najważniejsze”, „praca”, „bezpieczeństwo”, „dłuższe teksty” i „do przeczytania w tle”. Serwisy publikujące dużo materiałów nie powinny wypychać naprawdę ważnych aktualizacji z głównego kanału.

Aby połączyć aplikację, włącz API w ustawieniach uwierzytelniania i ustaw osobne hasło API w profilu. Adres Google Reader API wygląda tak:

https://rss.example.com/api/greader.php

Lepiej nie używać tego samego hasła do głównego konta i API.

Jak nie utonąć w nieprzeczytanych artykułach

FreshRSS staje się najbardziej użyteczny po krótkiej konfiguracji:

  • zostaw w głównym kanale tylko ważne źródła;
  • użyj filtrów, aby automatycznie oznaczać niepotrzebne sekcje jako przeczytane;
  • zapisuj zapytania dotyczące produktów, autorów i tematów;
  • okresowo przeglądaj statystyki i usuwaj źródła, które tworzą tylko szum.

Rozszerzenia mogą dodawać szacowany czas czytania, wyróżnianie słów, proxy obrazów, osadzanie YouTube, powiadomienia webhook oraz klasyfikację artykułów przez kompatybilne API LLM. Dodatki firm trzecich instaluj tylko z zaufanych źródeł.

Aktualizacje, bezpieczeństwo i kopie zapasowe

Aby zaktualizować kontenery, uruchom:

cd /opt/freshrss
docker compose pull
docker compose up -d

Przed dużą aktualizacją utwórz kopię zapasową. Wolumen freshrss_data zawiera ustawienia użytkowników oraz, przy użyciu SQLite, bazę artykułów. Zachowaj również freshrss_extensions, jeśli korzystasz z dodatków. PostgreSQL, MariaDB i MySQL wymagają osobnego zrzutu bazy danych.

Podstawowe środki bezpieczeństwa:

  • używaj HTTPS;
  • po utworzeniu potrzebnych kont wyłącz otwartą rejestrację;
  • nie włączaj dostępu anonimowego, jeśli nie jest konieczny;
  • używaj osobnego hasła API;
  • regularnie aktualizuj FreshRSS i jego rozszerzenia;
  • przechowuj kopię zapasową poza VPS.

Eksport OPML nie zastępuje pełnej kopii zapasowej, ale pozwala szybko odtworzyć listę subskrypcji w dowolnym kompatybilnym czytniku RSS.

FreshRSS na VPS od tropic.host

FreshRSS jest dobrym pierwszym samodzielnie hostowanym serwisem: wymaga niewielu zasobów, działa w Dockerze i staje się użyteczny od razu po zaimportowaniu subskrypcji. Publiczny VPS zapewnia aktualizowanie kanałów przez całą dobę, dostęp z telefonu i prawidłowe działanie WebSub.

Do osobistej instalacji zwykle wystarcza niewielka konfiguracja Linux. W tropic.host możesz przypisać FreshRSS własną subdomenę, zacząć od podstawowego VPS i uniezależnić usługę od domowego komputera. Przy wyborze planu ważniejsze od dużej rezerwy mocy obliczeniowej są stabilność, miejsce na archiwum i kopie zapasowe.

Podsumowanie

FreshRSS zamienia dziesiątki witryn w uporządkowany osobisty kanał bez algorytmicznego sortowania. Obsługuje klientów mobilnych, filtry, zapisane zapytania, wielu użytkowników, WebSub i rozszerzenia, a jednocześnie pozostaje na tyle lekki, aby działać na małym VPS.

Do rozpoczęcia potrzebujesz Dockera, domeny i SQLite. Po instalacji skonfiguruj kategorie, automatyczne aktualizacje, HTTPS i kopie zapasowe. FreshRSS będzie wtedy pokazywać tylko wybrane źródła, pozostawiając użytkownikowi kontrolę nad czytaniem.

FAQ

Czy FreshRSS jest darmowy?

Tak. FreshRSS jest rozpowszechniany na licencji AGPL-3.0. Płacisz tylko za infrastrukturę, jeśli aplikacja działa na wynajętym VPS.

Czy można używać FreshRSS bez domeny?

Tak, wystawiając port kontenera. Przy stałym użytkowaniu lepiej skonfigurować domenę i HTTPS, ponieważ ułatwia to bezpieczny dostęp, synchronizację mobilną i WebSub.

Ile pamięci RAM potrzebuje FreshRSS?

Dla osobistego kanału rozsądnym początkiem jest 1 GB RAM i SQLite. Duże archiwum, wielu użytkowników lub dodatkowe usługi będą wymagać więcej pamięci.

Czy można dodać witrynę bez RSS?

Czasami. FreshRSS obsługuje pobieranie danych przez XPath, ale reguły trzeba skonfigurować ręcznie. Jeśli układ witryny się zmieni, to źródło może wymagać poprawki.

Co trzeba uwzględnić w kopii zapasowej?

Przede wszystkim wykonaj kopię wolumenu freshrss_data: przy użyciu SQLite zawiera on bazę artykułów. Zachowaj również freshrss_extensions i twórz zrzuty każdej zewnętrznej bazy danych.