Commit c1569599b9ef

Vincent Demeester <vincent@sbr.pm>
2025-12-15 15:44:54
feat(homelab): Deploy Calibre server for ebook library management
- Enable web access to ebook library via calibre.sbr.pm and books.sbr.pm - Provide OPDS feed support for mobile readers (KOReader, Moon+, etc.) - Establish self-hosted ebook infrastructure alongside media services Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent d7c29cf
Changed files (2)
systems/rhea/extra.nix
@@ -177,6 +177,10 @@ in
               port = 13378;
               altHosts = [ "podcasts.sbr.pm" ];
             };
+            calibre = {
+              port = 8083;
+              altHosts = [ "books.sbr.pm" ];
+            };
             homepage.port = 3001;
           };
 
@@ -501,6 +505,21 @@ in
     $PSQL immich -tAc "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO vincent"
   '';
 
+  # Calibre Content Server for ebook library
+  systemd.services.calibre-server = {
+    description = "Calibre Content Server";
+    after = [ "network.target" ];
+    wantedBy = [ "multi-user.target" ];
+
+    serviceConfig = {
+      Type = "simple";
+      ExecStart = "${pkgs.calibre}/bin/calibre-server --port=8083 /neo/ebooks";
+      Restart = "on-failure";
+      User = "vincent";
+      Group = "users";
+    };
+  };
+
   networking.useDHCP = lib.mkDefault true;
 
   # Open firewall for Traefik and NFS
globals.nix
@@ -537,6 +537,9 @@ _: {
     # Podcast and audiobook management on aion (routed through rhea/traefik)
     audiobookshelf.host = "rhea";
     podcasts.host = "rhea";
+    # Ebook library management on rhea
+    calibre.host = "rhea";
+    books.host = "rhea";
     # WebDAV on athena (routed through rhea/traefik)
     dav.host = "rhea";
     # MQTT on demeter (routed through rhea/traefik)