summary refs log tree commit diff
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-12-08 17:52:07 +0100
committerMel <einebeere@gmail.com>2024-12-08 17:52:07 +0100
commit7bef5043b9da0ff257d46a6851389330dbdf7da5 (patch)
treec41e6af100c229da109bd710dd6b14a1768a6469
parent53208759dbfafc2909c93ccaace32b5b8951abad (diff)
downloadnetwork-7bef5043b9da0ff257d46a6851389330dbdf7da5.tar.zst
network-7bef5043b9da0ff257d46a6851389330dbdf7da5.zip
Add miniflux feed aggregator and replace FreshRSS
Signed-off-by: Mel <einebeere@gmail.com>
-rw-r--r--machines/renard/default.nix2
-rw-r--r--pkgs/common.nix16
-rw-r--r--services/miniflux.nix64
3 files changed, 81 insertions, 1 deletions
diff --git a/machines/renard/default.nix b/machines/renard/default.nix
index ebb06c1..a1d90fe 100644
--- a/machines/renard/default.nix
+++ b/machines/renard/default.nix
@@ -13,7 +13,7 @@
 
     ../../services/cgit.nix
     ../../services/minecraft.nix
-    ../../services/freshrss.nix
+    ../../services/miniflux.nix
     ../../services/irc
   ];
 
diff --git a/pkgs/common.nix b/pkgs/common.nix
index 7493f41..cf99b77 100644
--- a/pkgs/common.nix
+++ b/pkgs/common.nix
@@ -75,6 +75,22 @@ let
       x86.sha256 = "0cfmp4v1a4b2m21ljsc3f3kn23rl9nki6z37ks9jclzxh9hy629n";
       arm.sha256 = "0wydmscp4znjdflycvjqwjfry9crizhav0wc2hnajbyvk4ql32h8";
     };
+
+    postgres16 = mkImage {
+      name = "postgres";
+      tag = "16-alpine";
+      digest = "sha256:52bba373df3c13594014b5e9ccc9f3c2cdb2221d50db1a91ec64570819f18aba";
+      x86.sha256 = "18gfc7k9gkdd45vmwgrngf10yw5cmbnvxanp3nrs5d02jz602ibm";
+      arm.sha256 = "08i3n6kykhp0wd255xvkrpgv1n6izjm9gc57dg6nz4yz3yjnybzh";
+    };
+
+    postgres17 = mkImage {
+      name = "postgres";
+      tag = "17-alpine";
+      digest = "sha256:e7897baa70dae1968d23d785adb4aeb699175e0bcaae44f98a7083ecb9668b93";
+      x86.sha256 = "128hxalk74wll1i34j6rrmdssmf2rlm67kd302xcqmrp8v60n6i7";
+      arm.sha256 = "1lz03jcrrky94h79spgxxamihbll2y7vphmpv54pg47506mikba0";
+    };
   };
 
   soloOrDuoPort =
diff --git a/services/miniflux.nix b/services/miniflux.nix
new file mode 100644
index 0000000..9b4f972
--- /dev/null
+++ b/services/miniflux.nix
@@ -0,0 +1,64 @@
+{ me, pkgs, auxiliaryPkgs, ... }:
+
+let
+  inherit (pkgs) miniflux dockerTools;
+  inherit (auxiliaryPkgs) common;
+
+  minifluxDir = "/srv/miniflux";
+  minifluxLocalPort = 9149;
+
+  minifluxImage = dockerTools.streamLayeredImage {
+    name = "miniflux";
+    tag = miniflux.version;
+    fromImage = common.alpine.base;
+
+    contents = [ miniflux ];
+  };
+
+in
+{
+  foundation.service.miniflux = {
+    miniflux = {
+      image = minifluxImage;
+      ports = [ minifluxLocalPort ];
+
+      environment = {
+        PORT = toString minifluxLocalPort;
+        BASE_URL = "https://${me.tailscale.domain}/miniflux/";
+
+        CREATE_ADMIN = "1";
+        ADMIN_USERNAME = "mel";
+        ADMIN_PASSWORD = "X98ji!9aoJNfCB";
+
+        DATABASE_URL = "postgres://miniflux:miniflux@db/miniflux?sslmode=disable";
+        RUN_MIGRATIONS = "1";
+      };
+
+      entrypoint = "${miniflux}/bin/miniflux";
+      workdir = "/etc/miniflux";
+    };
+
+    db = {
+      fullImage = common.postgres17;
+
+      volumes = [ [ "${minifluxDir}/pgdata" "/var/lib/postgresql/data" ] ];
+
+      environment = {
+        "POSTGRES_DATABASE" = "miniflux";
+        "POSTGRES_USER" = "miniflux";
+        "POSTGRES_PASSWORD" = "miniflux";
+      };
+    };
+  };
+
+  services.nginx.virtualHosts.renard.locations = {
+    "/miniflux" = {
+      return = "301 $scheme://$host$request_uri/";
+    };
+
+    "/miniflux/" = {
+      proxyPass = "http://127.0.0.1:${toString minifluxLocalPort}/miniflux/";
+      recommendedProxySettings = true;
+    };
+  };
+}