diff --git a/flake.in.nix b/flake.in.nix
index d68d737..5b786ed 100644
--- a/flake.in.nix
+++ b/flake.in.nix
@@ -77,6 +77,14 @@
 
     ### Source code
     cisco-packettracer8 = source "file:///home/myned/SYNC/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb";
+    freshrss-autorefresh = source "github:Eisa01/FreshRSS---Auto-Refresh-Extension";
+    freshrss-cntools = source "github:cn-tools/cntools_FreshRssExtensions";
+    freshrss-comicsinfeed = source "github:giventofly/freshrss-comicsinfeed";
+    freshrss-dateformat = source "github:aledeg/xExtension-DateFormat";
+    freshrss-extensions = source "github:FreshRSS/Extensions";
+    freshrss-kagisummarizer = source "git+https://code.sitosis.com/rudism/freshrss-kagi-summarizer";
+    freshrss-kapdap = source "github:kapdap/freshrss-extensions";
+    freshrss-markpreviousasread = source "github:kalvn/freshrss-mark-previous-as-read";
     lifx-cli = source "github:Rawa/lifx-cli";
     steamtinkerlaunch = source "github:sonic2kk/steamtinkerlaunch";
     thunderbird-gnome-theme = source "github:rafaelmardojai/thunderbird-gnome-theme";
diff --git a/flake.nix b/flake.nix
index ee5c4f0..dc3cd5b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -47,6 +47,38 @@
       url = "github:nix-community/disko";
     };
     flakegen.url = "github:jorsn/flakegen";
+    freshrss-autorefresh = {
+      flake = false;
+      url = "github:Eisa01/FreshRSS---Auto-Refresh-Extension";
+    };
+    freshrss-cntools = {
+      flake = false;
+      url = "github:cn-tools/cntools_FreshRssExtensions";
+    };
+    freshrss-comicsinfeed = {
+      flake = false;
+      url = "github:giventofly/freshrss-comicsinfeed";
+    };
+    freshrss-dateformat = {
+      flake = false;
+      url = "github:aledeg/xExtension-DateFormat";
+    };
+    freshrss-extensions = {
+      flake = false;
+      url = "github:FreshRSS/Extensions";
+    };
+    freshrss-kagisummarizer = {
+      flake = false;
+      url = "git+https://code.sitosis.com/rudism/freshrss-kagi-summarizer";
+    };
+    freshrss-kapdap = {
+      flake = false;
+      url = "github:kapdap/freshrss-extensions";
+    };
+    freshrss-markpreviousasread = {
+      flake = false;
+      url = "github:kalvn/freshrss-mark-previous-as-read";
+    };
     fw-fanctrl = {
       inputs.nixpkgs.follows = "nixpkgs-unstable";
       url = "github:TamtamHero/fw-fanctrl/packaging/nix";
diff --git a/options/custom/containers/freshrss.nix b/options/custom/containers/freshrss.nix
new file mode 100644
index 0000000..488861a
--- /dev/null
+++ b/options/custom/containers/freshrss.nix
@@ -0,0 +1,56 @@
+{
+  config,
+  inputs,
+  lib,
+  ...
+}:
+with lib; let
+  cfg = config.custom.containers.freshrss;
+in {
+  options.custom.containers.freshrss = {
+    enable = mkOption {default = false;};
+  };
+
+  config = mkIf cfg.enable {
+    #?? arion-freshrss pull
+    environment.shellAliases.arion-freshrss = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.freshrss.settings.out.dockerComposeYaml}";
+
+    virtualisation.arion.projects.freshrss.settings.services = {
+      # https://github.com/FreshRSS/FreshRSS
+      # https://github.com/FreshRSS/FreshRSS/tree/edge/Docker
+      freshrss.service = {
+        container_name = "freshrss";
+        image = "freshrss/freshrss:1";
+        ports = ["127.0.0.1:8088:80"];
+        restart = "unless-stopped";
+
+        environment = {
+          TRUSTED_PROXY = "172.16.0.0/12";
+        };
+
+        volumes = let
+          #?? (extension "NAME" SOURCE)
+          extension = name: source: "${source}:/var/www/FreshRSS/extensions/${name}";
+        in [
+          "${config.custom.containers.directory}/freshrss/data:/var/www/FreshRSS/data"
+
+          # Extensions
+          # https://github.com/FreshRSS/Extensions
+          #!! Causes docker permission changes to fail on container start due to immutable source
+          (extension "autorefresh" "${inputs.freshrss-autorefresh}/xExtension-AutoRefresh") # https://github.com/Eisa01/FreshRSS---Auto-Refresh-Extension
+          (extension "clickablelinks" "${inputs.freshrss-kapdap}/xExtension-ClickableLinks") # https://github.com/kapdap/freshrss-extensions/tree/master/xExtension-ClickableLinks
+          (extension "colorfullist" "${inputs.freshrss-extensions}/xExtension-ColorfulList") # https://github.com/FreshRSS/Extensions/tree/master/xExtension-ColorfulList
+          (extension "comicsinfeed" inputs.freshrss-comicsinfeed) # https://github.com/giventofly/freshrss-comicsinfeed
+          (extension "dateformat" inputs.freshrss-dateformat) # https://github.com/aledeg/xExtension-DateFormat
+          (extension "filtertitle" "${inputs.freshrss-cntools}/xExtension-FilterTitle") # https://github.com/cn-tools/cntools_FreshRssExtensions/tree/master/xExtension-FilterTitle
+          (extension "kagisummarizer" inputs.freshrss-kagisummarizer) # https://code.sitosis.com/rudism/freshrss-kagi-summarizer
+          (extension "markpreviousasread" inputs.freshrss-markpreviousasread) # https://github.com/kalvn/freshrss-mark-previous-as-read
+          (extension "quickcollapse" "${inputs.freshrss-extensions}/xExtension-QuickCollapse") # https://github.com/FreshRSS/Extensions/tree/master/xExtension-QuickCollapse
+          (extension "readingtime" "${inputs.freshrss-extensions}/xExtension-ReadingTime") # https://github.com/FreshRSS/Extensions/tree/master/xExtension-ReadingTime
+          (extension "removeemojis" "${inputs.freshrss-cntools}/xExtension-RemoveEmojis") # https://github.com/cn-tools/cntools_FreshRssExtensions/tree/master/xExtension-RemoveEmojis
+          (extension "youtube" "${inputs.freshrss-extensions}/xExtension-YouTube") # https://github.com/FreshRSS/Extensions/tree/master/xExtension-YouTube
+        ];
+      };
+    };
+  };
+}
diff --git a/profiles/server/default.nix b/profiles/server/default.nix
index b582afa..980cd64 100644
--- a/profiles/server/default.nix
+++ b/profiles/server/default.nix
@@ -16,6 +16,7 @@
       coturn.enable = true;
       forgejo.enable = true;
       foundryvtt.enable = true;
+      freshrss.enable = true;
       #// headscale.enable = true;
       mastodon.enable = true;
       netbox.enable = true;
diff --git a/secrets/server/caddy/Caddyfile b/secrets/server/caddy/Caddyfile
index 47e7128..84c219d 100644
Binary files a/secrets/server/caddy/Caddyfile and b/secrets/server/caddy/Caddyfile differ