Marisa:added vault
This commit is contained in:
		
							
								
								
									
										29
									
								
								cert.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								cert.pem
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
-----BEGIN CERTIFICATE-----
 | 
			
		||||
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
 | 
			
		||||
waMVK3m6w1uNBKvuEVz1
 | 
			
		||||
-----END CERTIFICATE-----
 | 
			
		||||
@@ -70,6 +70,7 @@
 | 
			
		||||
      Marisa = nixpkgs.lib.nixosSystem {
 | 
			
		||||
        system = "aarch64-linux";
 | 
			
		||||
        modules = [ 
 | 
			
		||||
          ./modules/vault-agent.nix
 | 
			
		||||
          ./hosts/servers/marisa.nix
 | 
			
		||||
          inputs.mailserver.nixosModules.mailserver
 | 
			
		||||
          {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
  networking = {
 | 
			
		||||
    hostName = "Marisa";
 | 
			
		||||
    firewall = {
 | 
			
		||||
      allowedTCPPorts = [ 22 80 8000 6060 5001 ];
 | 
			
		||||
      allowedTCPPorts = [ 22 80 6060 5001 8800 ];
 | 
			
		||||
      allowedUDPPorts = [ 17840 ];
 | 
			
		||||
    };
 | 
			
		||||
    wireless = {
 | 
			
		||||
@@ -20,17 +20,15 @@
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    wireguard.interfaces.wg0 = {
 | 
			
		||||
      ips = [ "100.0.0.2/24" ];
 | 
			
		||||
      ips = [ "10.55.0.2/24" ];
 | 
			
		||||
      listenPort = 17840;
 | 
			
		||||
#       postSetup = "${pkgs.iproute}/bin/ip route add weirdnatto.in via 192.168.0.1";
 | 
			
		||||
#       postShutdown = "${pkgs.iproute}/bin/ip route del weirdnatto.in via 192.168.0.1";
 | 
			
		||||
      privateKeyFile = "/var/secrets/wg";
 | 
			
		||||
      privateKeyFile = "/var/secrets/wg.key";
 | 
			
		||||
      peers = [
 | 
			
		||||
        {
 | 
			
		||||
          #Oracle VM1
 | 
			
		||||
          publicKey = "z0Y2VNEWcyVQVSqRHiwmiJ5/0MgSPM+HZfEcwIccSxM=";
 | 
			
		||||
          allowedIPs = [ "100.0.0.0/24" ];
 | 
			
		||||
          endpoint = "140.238.230.155:17840";
 | 
			
		||||
          allowedIPs = [ "10.55.0.0/24" ];
 | 
			
		||||
          endpoint = "weirdnatto.in:17840";
 | 
			
		||||
          persistentKeepalive = 25;
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
 
 | 
			
		||||
@@ -9,17 +9,59 @@
 | 
			
		||||
      enable = true;
 | 
			
		||||
      enableImap = true;
 | 
			
		||||
    };
 | 
			
		||||
 /*   vault = {
 | 
			
		||||
    vault = {
 | 
			
		||||
      package = pkgs.vault-bin;
 | 
			
		||||
      enable = true;
 | 
			
		||||
      address = "127.0.0.1:8000";
 | 
			
		||||
      tlsCertFile = "/var/certs/cert.pem";
 | 
			
		||||
      tlsKeyFile = "/var/certs/key.pem";
 | 
			
		||||
      address = "0.0.0.0:8800";
 | 
			
		||||
      extraSettingsPaths = [ /var/vault/vault.hcl ];
 | 
			
		||||
      storageBackend = "postgresql";
 | 
			
		||||
    };*/
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        api_addr = "https://127.0.0.1:8800"
 | 
			
		||||
        ui = true
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    vault-agent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        vault = {
 | 
			
		||||
          address = "https://10.55.0.2:8800";
 | 
			
		||||
          client_cert = "/var/vault/cert.pem";
 | 
			
		||||
          client_key = "/var/vault/key.pem";
 | 
			
		||||
        };
 | 
			
		||||
        auto_auth = {
 | 
			
		||||
          method = [
 | 
			
		||||
            {
 | 
			
		||||
              "cert" = {
 | 
			
		||||
                name = "Marisa";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        };
 | 
			
		||||
        template = [
 | 
			
		||||
          {
 | 
			
		||||
            source = pkgs.writeText "gitea.tpl" ''
 | 
			
		||||
              {{ with secret "kv/systems/Marisa" }}{{ .Data.data.gitea }}{{ end }}
 | 
			
		||||
            '';
 | 
			
		||||
            destination = "/var/secrets/gitea.key";
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            source = pkgs.writeText "wg.tpl" ''
 | 
			
		||||
              {{ with secret "kv/systems/Marisa/wg" }}{{ .Data.data.private }}{{ end }}
 | 
			
		||||
            '';
 | 
			
		||||
            destination = "/var/secrets/wg.key";
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    postgresql = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      port = 6060;
 | 
			
		||||
      enableTCPIP = true;
 | 
			
		||||
      authentication = ''
 | 
			
		||||
        local gitea all ident map=gitea-map
 | 
			
		||||
        host vault all 10.55.0.2/32 md5
 | 
			
		||||
        host all all 192.168.0.110/32 md5
 | 
			
		||||
        '';
 | 
			
		||||
      identMap = ''
 | 
			
		||||
@@ -37,7 +79,7 @@
 | 
			
		||||
        port = 6060;
 | 
			
		||||
        name = "gitea";
 | 
			
		||||
        user = name;
 | 
			
		||||
        passwordFile = "/var/secrets/gitea";
 | 
			
		||||
        passwordFile = "/var/secrets/gitea.key";
 | 
			
		||||
        type = "postgres";
 | 
			
		||||
      };
 | 
			
		||||
      settings = {
 | 
			
		||||
@@ -57,5 +99,7 @@
 | 
			
		||||
  users.users.root.openssh.authorizedKeys.keys = [
 | 
			
		||||
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHingN2Aho+KGgEvBMjtoez+W1svl9uVoa4vG0d646j"
 | 
			
		||||
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPX1HDzWpoaOcU8GDEGuDzXgxkCpyeqxRR6gLs/8JgHw"
 | 
			
		||||
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK06ZUa9BKmZ6m+xapBjOAm10OCLzxIm8ais20wQC47m"
 | 
			
		||||
  ];
 | 
			
		||||
  security.pki.certificateFiles = [ ../../../cert.pem ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										106
									
								
								modules/vault-agent.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								modules/vault-agent.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
#Taken from https://github.com/MagicRB/dotfiles/blob/master/nix/nixos-modules/vault-agent.nix
 | 
			
		||||
{ config, lib, pkgs, ... }:
 | 
			
		||||
with lib;
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.services.vault-agent;
 | 
			
		||||
  json = pkgs.formats.json {};
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options = {
 | 
			
		||||
    services.vault-agent = {
 | 
			
		||||
      enable = mkEnableOption "Vault Agent";
 | 
			
		||||
 | 
			
		||||
      package = mkOption {
 | 
			
		||||
        type = types.package;
 | 
			
		||||
        default = pkgs.vault;
 | 
			
		||||
        description = ''
 | 
			
		||||
          The package used for the vault agent
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
      
 | 
			
		||||
      settings = mkOption {
 | 
			
		||||
        type = json.type;
 | 
			
		||||
        default = {};
 | 
			
		||||
        description = ''
 | 
			
		||||
          Settings for the agent
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      secretsDir = mkOption {
 | 
			
		||||
        type = types.nullOr types.path;
 | 
			
		||||
        default = "/var/secrets";
 | 
			
		||||
        description = ''
 | 
			
		||||
          Vault secrets directory;
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      userName = mkOption {
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        default = "vault-agent";
 | 
			
		||||
        description = "Username for the service";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      groupName = mkOption {
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        default = "vault-agent";
 | 
			
		||||
        description = "Vault-Agent Group Name";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      uid = mkOption {
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        default = 1985;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      gid = mkOption {
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        default = 1985;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable
 | 
			
		||||
    ({
 | 
			
		||||
      users = {
 | 
			
		||||
        users = {
 | 
			
		||||
          "${cfg.userName}" = {
 | 
			
		||||
            group = cfg.groupName;
 | 
			
		||||
            uid = cfg.uid;
 | 
			
		||||
            isSystemUser = true;
 | 
			
		||||
            description = "Vault-Agent User";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
        groups = {
 | 
			
		||||
          "${cfg.groupName}" = {
 | 
			
		||||
            gid = cfg.gid;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      systemd.tmpfiles.rules = mkIf (cfg.secretsDir != null) [
 | 
			
		||||
        "d ${cfg.secretsDir} 6755 vault-agent ${cfg.groupName} 0"
 | 
			
		||||
      ];
 | 
			
		||||
      systemd.services.vault-agent = {
 | 
			
		||||
        description = "Vault Agent";
 | 
			
		||||
        wantedBy = [ "multi-user.target" ];
 | 
			
		||||
        wants = [ "network-online.target" ];
 | 
			
		||||
        after = [ "network-online.target" ];
 | 
			
		||||
        path = (with pkgs; [
 | 
			
		||||
          glibc
 | 
			
		||||
        ]);
 | 
			
		||||
        serviceConfig = {
 | 
			
		||||
          User = cfg.userName;
 | 
			
		||||
          Group = cfg.groupName;
 | 
			
		||||
          ExecReload = "${pkgs.busybox}/bin/kill -HUP $MAINPID";
 | 
			
		||||
          ExecStart = "${cfg.package}/bin/vault agent -config=${json.generate "vault.json" cfg.settings}";
 | 
			
		||||
          KillMode = "process";
 | 
			
		||||
          KillSignal = "SIGINT";
 | 
			
		||||
          Restart = "on-failure";
 | 
			
		||||
          TimeoutStopSec = "30s";
 | 
			
		||||
          RestartSec = 2;
 | 
			
		||||
          ConfigurationDirectory = "vault-agent";
 | 
			
		||||
          ConfigurationDirectoryMode = "0600";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user