If you're proficient it's 30minutes
Something like this for server.
generate config
docker run -it --rm \
-v <your-data-path>:/data \
-e SYNAPSE_SERVER_NAME=<your-public-address-subdomain> \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:v1.136.0 generate
run
docker run -d \
--restart=always \
--name synapse \
-e SYNAPSE_REPORT_STATS=no \
-v <your-data-path>:/data \
-p 8008:8008 matrixdotorg/synapse:v1.136.0
register user
docker exec -ti synapse register_new_matrix_user http://localhost:8008/ -c /data/homeserver.yaml -u <username> -p <password> --exists-ok
Proxy it using ex. openresty / nginx
location / {
proxy_pass http://127.0.0.1:8008/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_connect_timeout 600;
proxy_read_timeout 86400;
}
For UI if you want element on your domain, download and unpack tar.gz from.
https://github.com/element-hq/element-web/releases
Point this location to your proxy server ex. openresty / nginx
location / {
root /opt/element-v1.11.109;
index index.html;
}
Modify config.json inside /opt/element-v1.11.109 to point location to <your-public-address-subdomain>
By default it's using sqlite if you want postgres or other database then modify homeserver.yaml to use postgres