diff --git a/config/firefox/bookmarks.nix b/config/firefox/bookmarks.nix index 4ffca47..a1401be 100644 --- a/config/firefox/bookmarks.nix +++ b/config/firefox/bookmarks.nix @@ -99,6 +99,10 @@ { name = "Media"; bookmarks = [ + { + name = "RSS"; + url = "https://rss.yanlincs.com"; + } { name = "Plex"; url = "https://plex.yanlincs.com"; diff --git a/hosts/nixos/hs/containers.nix b/hosts/nixos/hs/containers.nix index 2369423..266a9ca 100644 --- a/hosts/nixos/hs/containers.nix +++ b/hosts/nixos/hs/containers.nix @@ -389,5 +389,56 @@ in autoStart = true; }; + + # RSS reader (Miniflux) + rss = { + image = "docker.io/miniflux/miniflux:latest"; + + environment = { + RUN_MIGRATIONS = "1"; + CREATE_ADMIN = "1"; + ADMIN_USERNAME = "admin"; + ADMIN_PASSWORD = "admin"; + DATABASE_URL = "postgres://miniflux:miniflux@rss-db/miniflux?sslmode=disable"; + BASE_URL = "https://rss.yanlincs.com"; + HTTP_CLIENT_TIMEOUT = "50000"; + POLLING_FREQUENCY = "60"; + CLEANUP_FREQUENCY_HOURS = "24"; + CLEANUP_ARCHIVE_READ_DAYS = "60"; + CLEANUP_REMOVE_SESSIONS_DAYS = "30"; + }; + + ports = [ + "5006:8080" + ]; + + extraOptions = [ + "--network=podman" + ]; + + dependsOn = [ "rss-db" ]; + autoStart = true; + }; + + # PostgreSQL database for RSS (Miniflux) + rss-db = { + image = "docker.io/postgres:17-alpine"; + + volumes = [ + "/var/lib/containers/config/rss-db:/var/lib/postgresql/data" + ]; + + environment = { + POSTGRES_USER = "miniflux"; + POSTGRES_PASSWORD = "miniflux"; + POSTGRES_DB = "miniflux"; + }; + + extraOptions = [ + "--network=podman" + ]; + + autoStart = true; + }; }; } diff --git a/hosts/nixos/vps/proxy.nix b/hosts/nixos/vps/proxy.nix index 9ad07a0..8480da1 100644 --- a/hosts/nixos/vps/proxy.nix +++ b/hosts/nixos/vps/proxy.nix @@ -85,6 +85,19 @@ }; }; + # RSS reader (Miniflux) + rss = { + rule = "Host(`rss.yanlincs.com`)"; + entrypoints = "websecure"; + service = "rss"; + tls = { + certResolver = "cloudflare"; + domains = [{ + main = "*.yanlincs.com"; + }]; + }; + }; + # Jellyfin Media Server jellyfin = { rule = "Host(`jellyfin.yanlincs.com`)"; @@ -205,6 +218,15 @@ }; }; + # RSS reader backend (via WireGuard) + rss = { + loadBalancer = { + servers = [{ + url = "http://10.2.2.20:5006"; + }]; + }; + }; + # Jellyfin backend (via WireGuard) jellyfin = { loadBalancer = {