V předešlém článku jsme mimo psali o instalaci Tiny Tiny RSS na Debian 10 server v LAN síti. V tomto textu je popsána aktualizace stěžejních balíčků lokálního serveru na najnovější verze, nad verze které obsahuje standradní apt. Původní zámer byl zrychlit načítání lokálního webu povolením HTTP/2 v konfiguraci. S upravenou konfigurací ale Nginx server nefungoval.
Test konfigurace proběhl v pořádku. Aktualizovali jsme postupně všechny balíčky. Server s povoleným HTTP/2 v konfigurace virtuálního serveru nefungoval ani pak. Vyšel až poslední pokus – aktivace šifrování a změna portu na 443 společne s HTTP verze 2. Konfigurace na portu 80 nefunguje (verze 1.18 ani 1.20).
Obsah
Nginx Tiny Tiny RSS
Upgrade Tiny Tiny RSS na poslední git verzi. Instalace beží na lokální doméně tiny.local git naklonujeme do složky tt-rss
git clone https://git.tt-rss.org/fox/tt-rss.git tt-rss mv tiny.local/ tiny.local_backup mv tt-rss tiny.local cp tiny.local_backup/classes/config.php /var/www/tiny.local/classes/config.php cd tiny.local chmod -R 777 cache/images chmod -R 777 cache/upload chmod -R 777 cache/export chmod -R 777 feed-icons chown -R www-data:www-data tiny.local/ systemctl stop nginx.service systemctl start nginx.service sudo -u www-data php /var/www/tiny.local/update.php --feeds --force
Restart serveru na vyřešení chyby 255 po další aktualizace feedu po upgrade, nestačí. Je potřeba server zastavit a pak znovu spustit. Pozor! Každá aktualizace má konfigurační soubor s číslem
const SCHEMA_VERSION = 146;
Konfigurační soubor lze používat i z původní (před aktualizační) instalace, od čísla ovšem závisí i aktualizace databáze :)
PostgreSQL
Na serveru s Debian 10 Linux běžela kvůly Tiny Tiny RSS databáze PosgreSQL 11. RSS čtečku lze používat i s MySQL / MariaDB. Ovšem bez podpory af_psql_trgm plugin. Ten po přídání funkce pg_trgm do datbáze umí v čtečce označit podobné články jako přečtené. Aktivace rozšíření
sudo -u postgres -i psql \c ttrss CREATE EXTENSION pg_trgm;
PostgreSQL databáze tedy byla verze 11. Pokusili jsme se ji povýšit na verzi 14. Podstatné je vědět, že upgrade PostgreSQL databáze probíjá jinak než u MariaDB a data je třeba zálohovat zvlášť. V případě jedné instalace Tiny Tiny RSS lze zvolit export nastavení z webového rozhraní do souboru .opml. U většího objemu dat asi bude lepší použít profi způsob
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - apt -y update
apt install postgresql-14
pg_upgrade --old-datadir=/var/lib/pgsql/11/data --new-datadir=/var/lib/pgsql/14/data --old-bindir=/usr/pgsql-11/bin --new-bindir=/usr/pgsql-14/bin --old-options '-c config_file=/var/lib/pgsql/11/data/postgresql.conf' --new-options '-c config_file=/var/lib/pgsql/14/data/postgresql.conf'
pg_upgradecluster 14 main pg_ctlcluster 11 main stop pg_dropcluster 11 main apt autoremove postgresql-11
Je možné, že přídaný cluster v PostgreSQL změní konfigiraci databáte a ta bude běžet na jiném portu.

Nginx HTTP
apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
apt remove nginx apt update apt install nginx -y systemctl status nginx systemctl start nginx systemctl status nginx systemctl enable nginx
SSL/TLS
Vygenerujeme si vlastní certifikát, do souboru ssl.conf
nano ssl_tiny.conf
vložíme
[req] default_bits = 2048 default_keyfile = localhost.key distinguished_name = req_distinguished_name req_extensions = req_ext x509_extensions = v3_ca [req_distinguished_name] countryName = Country Name (2 letter code) countryName_default = CZ stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Prague localityName = Locality Name (eg, city) localityName_default = New Town organizationName = Organization Name (eg, company) organizationName_default = localhost organizationalUnitName = organizationalunit organizationalUnitName_default = Development commonName = Common Name (e.g. server FQDN or YOUR name) commonName_default = tiny.local commonName_max = 64 [req_ext] subjectAltName = @alt_names [v3_ca] subjectAltName = @alt_names [alt_names] DNS.1 = localhost DNS.2 = 127.0.0.1
Vygenerujeme klíč potvrzením definovaných nastavením pomocí Enter
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl_tiny.key -out ssl_tiny.crt -config ssl_tiny.conf
HTTP/2
Upravíme konfiguraci serveru ve složce /sites-available/
nano /etc/nginx/sites-available/tiny.local.conf
server { listen 80; ## listen for ipv4; this line is default and implied listen 443 ssl http2; root /var/www/html/tiny.local; index index.php index.html index.htm; access_log /var/log/nginx/ttrss_access.log; error_log /var/log/nginx/ttrss_error.log info; server_name tiny.local; ssl_certificate /etc/ssl/certs/localhost.crt; ssl_certificate_key /etc/ssl/private/localhost.key; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; location / { index index.php; }
Restartujeme server
systemctl restart nginx.service
Otestujeme spojení
curl -I -L tiny.local HTTP/1.1 200 OK Server: nginx/1.20.2 Date: Thu, 14 Apr 2022 15:33:26 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive
Užitečné
Instalace Tiny Tiny RSS mimo Docker.
Nginx server download.
Web git repo Tiny Tiny RSS