diff --git a/machine/catacomb/default.nix b/machine/catacomb/default.nix index 8f2a29b..a24f9cf 100644 --- a/machine/catacomb/default.nix +++ b/machine/catacomb/default.nix @@ -3,7 +3,6 @@ { imports = [ ./hardware-configuration.nix - ./fileserver.nix ]; beatific.hostName = "catacomb"; diff --git a/machine/catacomb/fileserver.nix b/machine/catacomb/fileserver.nix deleted file mode 100644 index 19ab2e3..0000000 --- a/machine/catacomb/fileserver.nix +++ /dev/null @@ -1,157 +0,0 @@ -# nas indexer server module -{ pkgs, ... }: - -let - # Build the catacomb server package - catacombServerSource = builtins.fetchGit { - url = "https://git.alogoulogoi.com/Jaculabilis/catacomb-server.git"; - ref = "develop-nix"; - rev = "3d6fb16948c377f94d030648849f120c8ada3884"; - }; - catacombServer = pkgs.callPackage catacombServerSource {}; - - catacombUser = "tvb"; - - # Define the service directory, which pretty much only stores tokens - catacombServerDir = "/var/lib/nas-indexer/"; - - # The address to bind to - bindAddr = "10.22.20.2"; - - # Create a setup script to ensure the token directory exists - catacombSetup = pkgs.writeShellScriptBin "catacomb-setup.sh" '' - ${pkgs.coreutils}/bin/mkdir -p ${catacombServerDir}tokens - chown -R ${catacombUser} ${catacombServerDir} - ''; - - # Host-mode server run script - hostRun = pkgs.writeShellScriptBin "catacomb-run-host.sh" '' - cd ${catacombServerDir} - ${catacombServer}/bin/gunicorn \ - --bind=localhost:5000 \ - --workers=3 \ - --log-level=debug \ - --env CATACOMB_ROOT=/nas \ - --env CATACOMB_TOKENS=${catacombServerDir}tokens \ - --env CATACOMB_MODE=host \ - --env CATACOMB_GUEST_HOST=catacomb.alogoulogoi.com \ - "catacomb.server:wsgi()" - ''; - - # Guest-mode server run script - guestRun = pkgs.writeShellScriptBin "catacomb-run-guest.sh" '' - cd ${catacombServerDir} - ${catacombServer}/bin/gunicorn \ - --bind=localhost:5001 \ - --workers=3 \ - --log-level=debug \ - --env CATACOMB_ROOT=/nas \ - --env CATACOMB_TOKENS=${catacombServerDir}tokens \ - --env CATACOMB_MODE=guest \ - "catacomb.server:wsgi()" - ''; - - # Guest-mode auth server for direct nginx file serving - accessRun = pkgs.writeShellScriptBin "catacomb-run-access.sh" '' - cd ${catacombServerDir} - ${catacombServer}/bin/gunicorn \ - --bind=localhost:5002 \ - --workers=3 \ - --log-level=debug \ - --env CATACOMB_TOKENS=${catacombServerDir}tokens \ - "catacomb.access.nginx:wsgi()" - ''; - -in -{ - # Run the setup script on activation - system.activationScripts.catacombSetup = "${catacombSetup}/bin/catacomb-setup.sh"; - - # Set up the host mode service - systemd.services."catacomb-host" = { - enable = true; - description = "catapool host-mode index server"; - script = "${hostRun}/bin/catacomb-run-host.sh"; - serviceConfig = { - Type = "simple"; - WorkingDirectory = "${catacombServerDir}"; - }; - requires = [ "zfs.target" ]; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - }; - - # Set up the guest mode service - systemd.services."catacomb-guest" = { - enable = true; - description = "catapool guest-mode index server"; - script = "${guestRun}/bin/catacomb-run-guest.sh"; - serviceConfig = { - Type = "simple"; - User = "${catacombUser}"; - WorkingDirectory = "${catacombServerDir}"; - }; - requires = [ "zfs.target" ]; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - }; - - # Set up the access server service - systemd.services."catacomb-access" = { - enable = true; - description = "catapool access token authenticator"; - script = "${accessRun}/bin/catacomb-run-access.sh"; - serviceConfig = { - Type = "simple"; - User = "${catacombUser}"; - WorkingDirectory = "${catacombServerDir}"; - }; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - }; - - networking.firewall.allowedTCPPorts = [ 80 7470 7471 7472 ]; - - # Set up nginx to reverse proxy to these services - services.nginx = { - enable = true; - - # Serve the host server over the internal ip at the default port - virtualHosts."catacomb-host-server" = { - listen = [ { addr = bindAddr; } ]; - root = "/nas"; - locations."/".tryFiles = "\$uri @indexer"; - locations."@indexer".proxyPass = "http://localhost:5000"; - }; - - # Serve the guest server over the internal ip at a custom port - virtualHosts."catacomb-guest-server" = { - listen = [ { addr = bindAddr; port = 7472; } ]; - extraConfig = '' - access_log /var/log/nginx/access.guest-server.log; - ''; - locations."/".proxyPass = "http://localhost:5001"; - }; - - # Serve the auth server at a custom port internally - virtualHosts."catacomb-auth" = { - listen = [ { addr = bindAddr; port = 7471; } ]; - extraConfig = '' - access_log /var/log/nginx/access.guest-auth.log; - ''; - locations."/".proxyPass = "http://localhost:5002"; - }; - - # Serve files at a custom port internally - virtualHosts."catacomb-guest-files" = { - listen = [ { addr = bindAddr; port = 7470; } ]; - extraConfig = '' - access_log /var/log/nginx/access.guest-files.log; - ''; - locations."/".root = "/nas"; - }; - }; - - # Allow nginx to read catapool files - users.users.nginx.extraGroups = ["nas"]; -}