Implement easy sliding sync setup
Co-authored-by: h7x4 <h7x4@nani.wtf>
This commit is contained in:
parent
bedede1e6d
commit
50ae1b6e57
16
README.MD
16
README.MD
|
@ -36,3 +36,19 @@ With matrix.YOURDOMAIN pointing at the server:
|
||||||
```
|
```
|
||||||
|
|
||||||
is ~enough to get a functional matrix-server running with some workers
|
is ~enough to get a functional matrix-server running with some workers
|
||||||
|
|
||||||
|
## Sliding Sync (Element X)
|
||||||
|
|
||||||
|
Just add the following to your config and point `slidingsync.YOURDOMAIN` at the server
|
||||||
|
|
||||||
|
```
|
||||||
|
services.matrix-synapse-next = {
|
||||||
|
enableSlidingSync = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
matrix-synapse.sliding-sync.environmentFile = "/some/file/containing/SYNCV3_SECRET=<some secret>";
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
If using well-known delagation make sure `YOURDOMAIN/.well-known/matrix/client` matches
|
||||||
|
what's in `matrix.YOURDOMAIN/.well-known/matrix/client`
|
||||||
|
|
|
@ -15,6 +15,13 @@ in
|
||||||
description = "What package to use for the sliding-sync proxy.";
|
description = "What package to use for the sliding-sync proxy.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enableNginx = lib.mkEnableOption (lib.mdDoc "autogenerated nginx config");
|
||||||
|
publicBaseUrl = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "The domain where clients connect, only has an effect with enableNginx";
|
||||||
|
example = "slidingsync.matrix.org";
|
||||||
|
};
|
||||||
|
|
||||||
settings = lib.mkOption {
|
settings = lib.mkOption {
|
||||||
type = lib.types.submodule {
|
type = lib.types.submodule {
|
||||||
freeformType = with lib.types; attrsOf str;
|
freeformType = with lib.types; attrsOf str;
|
||||||
|
@ -98,5 +105,13 @@ in
|
||||||
WorkingDirectory = "%S/matrix-sliding-sync";
|
WorkingDirectory = "%S/matrix-sliding-sync";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${cfg.publicBaseUrl} = lib.mkIf cfg.enableNginx {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = lib.replaceStrings [ "0.0.0.0" "::" ] [ "127.0.0.1" "::1" ] "http://${cfg.settings.SYNCV3_BINDADDR}";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,8 @@ in
|
||||||
description = "A yaml python logging config file";
|
description = "A yaml python logging config file";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enableSlidingSync = mkEnableOption (lib.mdDoc "automatic Sliding Sync setup at `slidingsync.<domain>`");
|
||||||
|
|
||||||
settings = mkOption {
|
settings = mkOption {
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
freeformType = format.type;
|
freeformType = format.type;
|
||||||
|
@ -394,5 +396,19 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.matrix-synapse-next.settings.extra_well_known_client_content."org.matrix.msc3575.proxy" = mkIf cfg.enableSlidingSync {
|
||||||
|
url = "https://${config.services.matrix-synapse.sliding-sync.publicBaseUrl}";
|
||||||
|
};
|
||||||
|
services.matrix-synapse.sliding-sync = mkIf cfg.enableSlidingSync {
|
||||||
|
enable = true;
|
||||||
|
enableNginx = lib.mkDefault cfg.enableNginx;
|
||||||
|
publicBaseUrl = lib.mkDefault "slidingsync.${cfg.settings.server_name}";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
SYNCV3_SERVER = lib.mkDefault "https://${cfg.public_baseurl}";
|
||||||
|
SYNCV3_PROM = lib.mkIf cfg.settings.enable_metrics (lib.mkDefault "127.0.0.1:9001");
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,6 +230,9 @@ in
|
||||||
locations."/_synapse/client" = {
|
locations."/_synapse/client" = {
|
||||||
proxyPass = "http://$synapse_backend";
|
proxyPass = "http://$synapse_backend";
|
||||||
};
|
};
|
||||||
|
locations."/.well-known/matrix" = {
|
||||||
|
proxyPass = "http://$synapse_backend";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue