feat(vesuvio): add roundcube

This commit is contained in:
uku 2025-01-08 10:20:49 +01:00
parent 92f3f0e0ca
commit e3a513794a
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o
6 changed files with 59 additions and 0 deletions

View file

@ -44,4 +44,5 @@ in
"vesuvio/maddyEnv.age".publicKeys = main ++ [ vesuvio ]; "vesuvio/maddyEnv.age".publicKeys = main ++ [ vesuvio ];
"vesuvio/rspamdPassword.age".publicKeys = main ++ [ vesuvio ]; "vesuvio/rspamdPassword.age".publicKeys = main ++ [ vesuvio ];
"vesuvio/roundcubeDbPass.age".publicKeys = main ++ [ vesuvio ];
} }

View file

@ -0,0 +1,14 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWT25OSmIrTXhwUHdETkUx
OHRmMWZ1Mk16N1g5U0RRaENLWlcvOW9rd3drCm9xUDlCVDJIeFVhQ2hydHZORTV1
QzgxK29XL2huWkxTWFE1R0JINjVyUGsKLT4gWDI1NTE5IHM4d29FbVlkeDAxd1hR
c01kTFA3VXM5eXB2NDV1bFlDOGF3M2tBM0lyMzAKZjVicDdqK0xSckpPa1NYZ0pJ
R2lIOWlhdWVMVXcwQnJaYjFCYVFRNkFoSQotPiBYMjU1MTkgbFRIWjBFUEtENnRv
OHRZS0kyR1R4MDBzMnV1SnVQWUp3Y1pFQmdhRjgyQQpZbjgrSFdyMytZblFEa0pQ
Z0s1OHpqZWJ2V1d6am1TSjZsTHNzSFQ1QlU0Ci0+IFgyNTUxOSAwVGpXendsWXRQ
OCtTUHR6U21oM0hnM2NrKzJVS0U0b25FMkNQREtYQ2dzClJuaXRwbGNiNXpGSDFv
TnpLcEhTa0k3Nk9sYnlpQk1TeEEyYVljNTB1Y2cKLS0tIHgvSmEwVzhEVk5wODhG
bllxRStVNmYvcGJQb2QwWDlTa0JjQW1kaFlGRWMKM12Lg3igLg34PJDFDUPFwC09
nlJTd91zRU7OO7Kvso+PbYL6sxughQpcEW9ZFYcgty4Hlgs5nQsBUxLQmAQ2kLu9
hWLNgwC5oGR2IpnBDglcZ5BE5VhuJush46IcCaWfiRK1TN4=
-----END AGE ENCRYPTED FILE-----

View file

@ -10,10 +10,12 @@
ensureDatabases = [ ensureDatabases = [
"maddy" "maddy"
"roundcube"
]; ];
authentication = '' authentication = ''
host maddy maddy vesuvio.fossa-macaroni.ts.net scram-sha-256 host maddy maddy vesuvio.fossa-macaroni.ts.net scram-sha-256
host roundcube roundcube vesuvio.fossa-macaroni.ts.net scram-sha-256
''; '';
}; };

View file

@ -19,6 +19,9 @@
ports = [ 4269 ]; ports = [ 4269 ];
openFirewall = true; openFirewall = true;
}; };
# despite not having postgres here, we match with etna for safety
postgresql.package = pkgs.postgresql_16;
}; };
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [

View file

@ -2,6 +2,7 @@
imports = [ imports = [
./maddy.nix ./maddy.nix
./mta-sts.nix ./mta-sts.nix
./roundcube.nix
./rspamd.nix ./rspamd.nix
]; ];
} }

View file

@ -0,0 +1,38 @@
{
pkgs,
config,
_utils,
...
}:
let
dbPass = _utils.setupSingleSecret config "roundcubeDbPass" {
owner = "nginx";
};
in
{
imports = [ dbPass.generate ];
services = {
roundcube = {
enable = true;
hostName = "mail.uku3lig.net";
dicts = with pkgs.aspellDicts; [
en
fr
];
# nginx is automatically configured, ssl and acme are enabled
database = {
host = "etna";
dbname = "roundcube";
username = "roundcube";
passwordFile = dbPass.path;
};
extraConfig = ''
$config['imap_host'] = 'ssl://mx1.uku3lig.net:993';
'';
};
};
}