Remilia: updates

services: add znc and some random changes
networking: random changes
mailserver: add masti@weirdnatto.in
and some other misc changes
This commit is contained in:
2022-03-09 10:53:07 +05:30
parent c27c8c3c56
commit 53b18802dd
5 changed files with 141 additions and 26 deletions

View File

@@ -8,5 +8,6 @@
./services.nix ./services.nix
./mailserver.nix ./mailserver.nix
]; ];
system.stateVersion = "21.11"; system.stateVersion = "21.11";
} }

View File

@@ -1,14 +1,21 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
{ {
mailserver = { mailserver = with lib; rec {
enable = true; enable = true;
fqdn = "mail.weirdnatto.in"; fqdn = "mail.weirdnatto.in";
domains = [ "weirdnatto.in" ]; sendingFqdn = fqdn;
domains = singleton "weirdnatto.in";
certificateDomains = singleton "mail.weirdnatto.in";
certificateScheme = 2;
loginAccounts = { loginAccounts = {
"natto@weirdnatto.in" = { "natto@weirdnatto.in" = {
hashedPasswordFile = "/var/secrets/natto@weirdnatto.in.key"; hashedPasswordFile = "/var/secrets/natto@weirdnatto.in.key";
aliases = [ "@weirdnatto.in" ]; aliases = [ "@weirdnatto.in" ];
}; };
"masti@weirdnatto.in" = {
hashedPasswordFile = "/var/secrets/masti@weirdnatto.in.key";
aliases = [ "@weirdnatto.in" ];
};
}; };
enablePop3 = false; enablePop3 = false;
enablePop3Ssl = false; enablePop3Ssl = false;

View File

@@ -1,20 +1,40 @@
{config, pkgs, ...}: { lib, config, pkgs, ... }:
{ {
networking = { networking = {
useDHCP = false; useDHCP = false;
hostName = "Remilia"; hostName = "Remilia";
firewall = { firewall =
{
interfaces = { interfaces = {
ens3 = { ens3 = {
allowedTCPPorts = [ allowedTCPPorts = [
22 22
80 81 80
443 444 81
993 465 143 25 443
444
993
465
143
25
22001
22002
6600
9898
8999
]; ];
allowedUDPPorts = [ 17840 ]; allowedUDPPorts = [ 17840 ];
}; };
}; };
extraCommands = lib.concatMapStringsSep "\n"
(x:
let
t = lib.splitString ":" x.destination;
in
with builtins;
"iptables -t nat -A POSTROUTING -d ${head t} -p tcp -m tcp --dport ${head (tail t)} -j MASQUERADE"
)
config.networking.nat.forwardPorts;
}; };
interfaces = { interfaces = {
ens3 = { ens3 = {
@@ -25,6 +45,16 @@
enable = true; enable = true;
externalInterface = "ens3"; externalInterface = "ens3";
internalInterfaces = [ "wg0" ]; internalInterfaces = [ "wg0" ];
forwardPorts = [
{
destination = "10.55.0.2:222";
sourcePort = 22;
}
{
destination = "10.55.0.3:6600";
sourcePort = 6600;
}
];
}; };
wireguard.interfaces = { wireguard.interfaces = {
wg0 = { wg0 = {
@@ -38,7 +68,7 @@
${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT
${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.55.0.0/24 -o ${config.networking.nat.externalInterface} -j MASQUERADE ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.55.0.0/24 -o ${config.networking.nat.externalInterface} -j MASQUERADE
''; '';
privateKeyFile = "/var/secrets/wg.key"; privateKeyFile = "/var/wg";
peers = [ peers = [
{ {
publicKey = "m9SSpkj+r2QY4YEUMEoTkbOI/L7C39Kh6m45QZ5mkw4="; publicKey = "m9SSpkj+r2QY4YEUMEoTkbOI/L7C39Kh6m45QZ5mkw4=";

View File

@@ -1,8 +1,15 @@
{config, pkgs, ...}: { config, pkgs, lib, ... }:
{ {
services = { services = {
openssh = { enable = true; openssh = {
enable = true;
permitRootLogin = "yes"; permitRootLogin = "yes";
ports = [ 22001 22002 ];
};
znc = {
enable = true;
mutable = true;
useLegacyConfig = false;
}; };
nginx = { nginx = {
enable = true; enable = true;
@@ -20,13 +27,75 @@
addSSL = true; addSSL = true;
enableACME = true; enableACME = true;
locations."/" = { locations."/" = {
proxyPass = "http://10.55.0.2:5001"; proxyPass = "http://10.55.0.2:5000";
extraConfig = ''
client_max_body_size 64M;
proxy_set_header Host $host;
'';
};
};
"vault.weirdnatto.in" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "https://10.55.0.2:8800";
extraConfig = ''
proxy_set_header Host $host;
'';
};
};
"consul.weirdnatto.in" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://10.55.0.2:8500";
extraConfig = ''
proxy_set_header Host $host;
'';
};
};
"nomad.weirdnatto.in" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://10.55.0.2:4646";
extraConfig = ''
proxy_set_header Host $host;
proxy_buffering off;
proxy_read_timeout 310s;
'';
};
};
"radio.weirdnatto.in" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://10.55.0.3:8000";
extraConfig = ''
proxy_set_header Host $host;
'';
};
};
"ci.weirdnatto.in" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://10.55.0.2:6666";
extraConfig = '' extraConfig = ''
proxy_set_header Host $host; proxy_set_header Host $host;
''; '';
}; };
}; };
}; };
/*streamConfig = ''
upstream gitea {
server 10.55.0.2:222;
}
server {
listen 22001;
proxy_pass gitea;
}
'';*/
}; };
vault-agent = { vault-agent = {
enable = true; enable = true;
@@ -54,10 +123,16 @@
} }
{ {
source = pkgs.writeText "natto@weirdnatto.in.tpl" '' source = pkgs.writeText "natto@weirdnatto.in.tpl" ''
{{ with secret "kv/systems/Remilia" }}{{ .Data.data.nattomail }}{{ end }} {{ with secret "kv/systems/Remilia/mail" }}{{ .Data.data.nattomail }}{{ end }}
''; '';
destination = "/var/secrets/natto@weirdnatto.in.key"; destination = "/var/secrets/natto@weirdnatto.in.key";
} }
{
source = pkgs.writeText "masti@weirdnatto.in.tpl" ''
{{ with secret "kv/systems/Remilia/mail" }}{{ .Data.data.mastimail }}{{ end }}
'';
destination = "/var/secrets/masti@weirdnatto.in.key";
}
]; ];
}; };
}; };
@@ -67,13 +142,15 @@
users.users.root.openssh.authorizedKeys.keys = [ users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHingN2Aho+KGgEvBMjtoez+W1svl9uVoa4vG0d646j" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHingN2Aho+KGgEvBMjtoez+W1svl9uVoa4vG0d646j"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCH975XCps+VCzo8Fpp5BkbtiFmj9y3//FBVYlQ7/yo" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCH975XCps+VCzo8Fpp5BkbtiFmj9y3//FBVYlQ7/yo"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK0jyHWuWBKzucnARINqQ/A0AFPghxayh0DDthbpOhaz"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKFyKi0HYfkgvEDvjzmDRGwAq2z2KOkfv7scTVSnonBh"
]; ];
security.acme = { security.acme = {
acceptTerms = true; acceptTerms = true;
certs = { certs = {
"weirdnatto.in".email = "natto+acme@weirdnatto.in"; "weirdnatto.in".extraDomainNames = lib.singleton "www.weirdnatto.in";
"git.weirdnatto.in".email = "git+acme@weirdnatto.in"; } //
}; lib.mapAttrs' (n: _: lib.nameValuePair n ({ email = "natto@weirdnatto.in"; })) config.services.nginx.virtualHosts;
}; };
security.pki.certificateFiles = [ ../../cert.pem ]; security.pki.certificateFiles = [ ../../cert.pem ];
} }

View File

@@ -35,7 +35,7 @@
nix = { nix = {
package = pkgs.nixUnstable; package = pkgs.nixUnstable;
extraOptions = '' extraOptions = ''
experimental-features = nix-command ca-references flakes experimental-features = nix-command flakes
''; '';
trustedUsers = [ "root" ]; trustedUsers = [ "root" ];
}; };