phantom: add forgejo server
This commit is contained in:
		
							parent
							
								
									8de573b35c
								
							
						
					
					
						commit
						9aaa304d2a
					
				
					 7 changed files with 70 additions and 2 deletions
				
			
		| 
						 | 
					@ -12,6 +12,7 @@
 | 
				
			||||||
    ./writefreely.nix
 | 
					    ./writefreely.nix
 | 
				
			||||||
    ./renawiki.nix
 | 
					    ./renawiki.nix
 | 
				
			||||||
    ./email.nix
 | 
					    ./email.nix
 | 
				
			||||||
 | 
					    ./forgejo.nix
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # # Enable networking
 | 
					  # # Enable networking
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,13 +9,21 @@
 | 
				
			||||||
  mailserver = {
 | 
					  mailserver = {
 | 
				
			||||||
    enable = true;
 | 
					    enable = true;
 | 
				
			||||||
    fqdn = "mail.lelgenio.xyz";
 | 
					    fqdn = "mail.lelgenio.xyz";
 | 
				
			||||||
    domains = [ "lelgenio.xyz" ];
 | 
					    domains = [
 | 
				
			||||||
 | 
					      "lelgenio.xyz"
 | 
				
			||||||
 | 
					      "git.lelgenio.xyz"
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
    certificateScheme = "acme-nginx";
 | 
					    certificateScheme = "acme-nginx";
 | 
				
			||||||
 | 
					    # Create passwords with
 | 
				
			||||||
 | 
					    # nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
 | 
				
			||||||
    loginAccounts = {
 | 
					    loginAccounts = {
 | 
				
			||||||
      "lelgenio@lelgenio.xyz" = {
 | 
					      "lelgenio@lelgenio.xyz" = {
 | 
				
			||||||
        hashedPassword = "$2y$05$z5s7QCXcs5uTFsfyYpwNJeWzb3RmzgWxNgcPCr0zjSytkLFF/qZmS";
 | 
					        hashedPassword = "$2y$05$z5s7QCXcs5uTFsfyYpwNJeWzb3RmzgWxNgcPCr0zjSytkLFF/qZmS";
 | 
				
			||||||
        aliases = [ "postmaster@lelgenio.xyz" ];
 | 
					        aliases = [ "postmaster@lelgenio.xyz" ];
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					      "noreply@git.lelgenio.xyz" = {
 | 
				
			||||||
 | 
					        hashedPassword = "$2b$05$TmR1R7ZwXfec7yrOfeBL7u3ZtyXf0up5dEO6uMWSvb/O7LPEm.j0.";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										56
									
								
								hosts/phantom/forgejo.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								hosts/phantom/forgejo.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					{ lib, pkgs, config, ... }:
 | 
				
			||||||
 | 
					let
 | 
				
			||||||
 | 
					  cfg = config.services.forgejo;
 | 
				
			||||||
 | 
					  srv = cfg.settings.server;
 | 
				
			||||||
 | 
					in
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  services.nginx = {
 | 
				
			||||||
 | 
					    virtualHosts.${cfg.settings.server.DOMAIN} = {
 | 
				
			||||||
 | 
					      forceSSL = true;
 | 
				
			||||||
 | 
					      enableACME = true;
 | 
				
			||||||
 | 
					      extraConfig = ''
 | 
				
			||||||
 | 
					        client_max_body_size 512M;
 | 
				
			||||||
 | 
					      '';
 | 
				
			||||||
 | 
					      locations."/".proxyPass = "http://localhost:${toString srv.HTTP_PORT}";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  services.openssh = {
 | 
				
			||||||
 | 
					    authorizedKeysFiles = [
 | 
				
			||||||
 | 
					      "${config.services.forgejo.stateDir}/.ssh/authorized_keys"
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    # Recommended by forgejo: https://forgejo.org/docs/latest/admin/recommendations/#git-over-ssh
 | 
				
			||||||
 | 
					    settings.AcceptEnv = "GIT_PROTOCOL";
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  services.forgejo = {
 | 
				
			||||||
 | 
					    enable = true;
 | 
				
			||||||
 | 
					    database.type = "postgres";
 | 
				
			||||||
 | 
					    lfs.enable = true;
 | 
				
			||||||
 | 
					    settings = {
 | 
				
			||||||
 | 
					      service.DISABLE_REGISTRATION = true;
 | 
				
			||||||
 | 
					      actions = {
 | 
				
			||||||
 | 
					        ENABLED = true;
 | 
				
			||||||
 | 
					        DEFAULT_ACTIONS_URL = "github";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      server = {
 | 
				
			||||||
 | 
					        DOMAIN = "git.lelgenio.xyz";
 | 
				
			||||||
 | 
					        HTTP_PORT = 3000;
 | 
				
			||||||
 | 
					        ROOT_URL = "https://${srv.DOMAIN}/";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      mailer = {
 | 
				
			||||||
 | 
					        ENABLED = true;
 | 
				
			||||||
 | 
					        SMTP_ADDR = "mail.lelgenio.xyz";
 | 
				
			||||||
 | 
					        FROM = "noreply@git.lelgenio.xyz";
 | 
				
			||||||
 | 
					        USER = "noreply@git.lelgenio.xyz";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    mailerPasswordFile = config.age.secrets.phantom-forgejo-mailer-password.path;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  age.secrets.phantom-forgejo-mailer-password = {
 | 
				
			||||||
 | 
					    file = ../../secrets/phantom-forgejo-mailer-password.age;
 | 
				
			||||||
 | 
					    mode = "400";
 | 
				
			||||||
 | 
					    owner = "forgejo";
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
  security.rtkit.enable = true;
 | 
					  security.rtkit.enable = true;
 | 
				
			||||||
  services.openssh = {
 | 
					  services.openssh = {
 | 
				
			||||||
    enable = true;
 | 
					    enable = true;
 | 
				
			||||||
    ports = [ 9022 ];
 | 
					    ports = [ 9022 22 ];
 | 
				
			||||||
    settings = {
 | 
					    settings = {
 | 
				
			||||||
      PasswordAuthentication = false;
 | 
					      PasswordAuthentication = false;
 | 
				
			||||||
      KbdInteractiveAuthentication = false;
 | 
					      KbdInteractiveAuthentication = false;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								secrets/phantom-forgejo-mailer-password.age
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								secrets/phantom-forgejo-mailer-password.age
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -10,4 +10,5 @@ in
 | 
				
			||||||
  "phantom-nextcloud.age".publicKeys = [ main_ssh_public_key ];
 | 
					  "phantom-nextcloud.age".publicKeys = [ main_ssh_public_key ];
 | 
				
			||||||
  "phantom-writefreely.age".publicKeys = [ main_ssh_public_key ];
 | 
					  "phantom-writefreely.age".publicKeys = [ main_ssh_public_key ];
 | 
				
			||||||
  "phantom-renawiki.age".publicKeys = [ main_ssh_public_key ];
 | 
					  "phantom-renawiki.age".publicKeys = [ main_ssh_public_key ];
 | 
				
			||||||
 | 
					  "phantom-forgejo-mailer-password.age".publicKeys = [ main_ssh_public_key ];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,5 +10,7 @@
 | 
				
			||||||
      ../secrets/rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
 | 
					      ../secrets/rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
 | 
				
			||||||
    secrets.monolith-nix-serve-privkey.file =
 | 
					    secrets.monolith-nix-serve-privkey.file =
 | 
				
			||||||
      ../secrets/monolith-nix-serve-privkey.age;
 | 
					      ../secrets/monolith-nix-serve-privkey.age;
 | 
				
			||||||
 | 
					    secrets.phantom-forgejo-mailer-password.file =
 | 
				
			||||||
 | 
					      ../secrets/phantom-forgejo-mailer-password.age;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue