infra/hosts/matrix/synapse.nix
2026-02-13 17:33:12 +01:00

74 lines
2 KiB
Nix

{ config, ... }:
{
networking.firewall.extraInputRules = ''
ip saddr 195.160.173.14 tcp dport 9009 accept
ip6 saddr 2001:678:760:cccb::14 tcp dport 9009 accept
'';
services = {
matrix-synapse = {
enable = true;
settings = {
server_name = config.networking.domain;
public_baseurl = "https://${config.networking.hostName}.${config.networking.domain}:443/";
# Creates "/var/lib/matrix-synapse/homeserver.signing.key" on first launch
signing_key_path = config.age.secrets.matrix_signing_key.path;
registration_shared_secret_path = config.age.secrets.matrix_registration_shared_secret.path;
database = {
name = "psycopg2";
args = {
user = "matrix-synapse";
database = "matrix-synapse";
};
};
listeners = [
{
type = "http";
tls = false;
x_forwarded = true;
port = 8008;
bind_addresses = [ "::1" ];
#request_id_header = "X-Request-ID";
resources = [
{
compress = false;
names = [
"client"
"federation"
];
}
];
}
{
type = "metrics";
tls = false;
port = 9009;
bind_addresses = ["::" "0.0.0.0"];
resources = [
{
compress = false;
names = [ "metrics" ];
}
];
}
];
enable_metrics = true;
dynamic_thumbnails = true;
max_upload_size = "128M";
max_image_pixels = "64M";
retention = {
enabled = true;
default_policy = {
min_lifetime = "1d";
max_lifetime = "1y";
};
allowed_lifetime_min = "1d";
allowed_lifetime_max = "1y";
};
};
enableRegistrationScript = true;
};
};
}