2023-11-23 08:40:32 +00:00
|
|
|
{ pkgs, ... }: {
|
|
|
|
imports = [ ./caddy.nix ];
|
2023-11-17 07:30:18 +00:00
|
|
|
services.postgresql.enable = true;
|
|
|
|
services.postgresql.initialScript = pkgs.writeText "synapse-init.sql" ''
|
|
|
|
CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse';
|
|
|
|
CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse"
|
|
|
|
TEMPLATE template0
|
|
|
|
LC_COLLATE = "C"
|
|
|
|
LC_CTYPE = "C";
|
|
|
|
'';
|
|
|
|
|
2023-11-19 06:02:12 +00:00
|
|
|
services = {
|
|
|
|
matrix-synapse = {
|
|
|
|
enable = true;
|
2023-11-23 08:40:32 +00:00
|
|
|
settings.server_name = "xenia.me.uk";
|
2023-11-19 06:02:12 +00:00
|
|
|
settings.listeners = [{
|
2023-11-19 10:02:23 +00:00
|
|
|
bind_addresses = [ "127.0.0.1" ];
|
|
|
|
port = 8008;
|
2023-11-19 06:02:12 +00:00
|
|
|
type = "http";
|
|
|
|
tls = false;
|
|
|
|
x_forwarded = true;
|
|
|
|
resources = [{
|
|
|
|
names = [ "client" "federation" ];
|
|
|
|
compress = true;
|
|
|
|
}];
|
2023-11-17 07:30:18 +00:00
|
|
|
}];
|
2023-11-23 09:18:49 +00:00
|
|
|
extraConfigFiles = [ "/run/secrets/matrix-shared-secret" ];
|
2023-11-19 06:02:12 +00:00
|
|
|
};
|
2023-11-23 08:40:32 +00:00
|
|
|
caddy.virtualHosts."xenia.me.uk".extraConfig = ''
|
|
|
|
header /.well-known/matrix/* Content-Type application/json
|
|
|
|
header /.well-known/matrix/* Access-Control-Allow-Origin *
|
|
|
|
respond /.well-known/matrix/server `{"m.server": "matrix.xenia.me.uk:443"}`
|
|
|
|
respond /.well-known/matrix/client `{"m.homeserver":{"base_url":"https://matrix.xenia.me.uk"},"m.identity_server":{"base_url":"https://identity.xenia.me.uk"}}`
|
|
|
|
'';
|
|
|
|
caddy.virtualHosts."matrix.xenia.me.uk".extraConfig = ''
|
|
|
|
reverse_proxy /_matrix/* localhost:8008
|
|
|
|
reverse_proxy /_synapse/client/* localhost:8008
|
|
|
|
'';
|
2023-11-17 07:30:18 +00:00
|
|
|
};
|
|
|
|
}
|