one-click-apps/public/v4/apps/matrix-synapse.yml

119 lines
5.0 KiB
YAML

captainVersion: 4
services:
$$cap_appname-db:
image: postgres:$$cap_postgres_version
restart: unless-stopped
environment:
POSTGRES_DB: synapse_db
POSTGRES_PASSWORD: $$cap_db_password
POSTGRES_USER: synapse_user
POSTGRES_INITDB_ARGS: --encoding='UTF8' --lc-collate='C' --lc-ctype='C'
volumes:
- $$cap_appname-db:/var/lib/postgresql/data
caproverExtra:
notExposeAsWebApp: true
$$cap_appname:
restart: unless-stopped
environment:
TZ: $$cap_time_zone
volumes:
- $$cap_appname-data:/data
caproverExtra:
containerHttpPort: '8008'
dockerfileLines:
- FROM matrixdotorg/synapse:$$cap_synapse_version
- RUN mkdir /data/
- ENV SYNAPSE_SERVER_NAME=$$cap_appname.$$cap_root_domain
- ENV SYNAPSE_REPORT_STATS=$$cap_synapse_stats
- RUN /start.py generate
- RUN echo '\nserve_server_wellknown\072 true' >> /data/homeserver.yaml
- RUN echo "\nenable_registration\072 $$cap_enable_registration \nenable_registration_without_verification\072 true" >> /data/homeserver.yaml
- RUN echo "\nmax_upload_size\072 $$cap_max_upload_sizeM" >> /data/homeserver.yaml
- RUN sed -i '/^server_name.*/a public_baseurl\o072 "https://$$cap_appname.$$cap_root_domain"' /data/homeserver.yaml
- RUN sed -i 's/name\o072 sqlite3/name\o072 psycopg2/g' /data/homeserver.yaml
- RUN sed -i 's/database\o072 .*homeserver\.db/database\o072 synapse_db\n user\o072 synapse_user\n password\o072 $$cap_db_password\n host\o072 srv-captain--$$cap_appname-db\n port\o072 5432\n/g' /data/homeserver.yaml
caproverOneClickApp:
variables:
- id: '$$cap_synapse_version'
label: Synapse Version
defaultValue: 'v1.63.1'
description: Check out their Docker page for the valid tags https://hub.docker.com/r/matrixdotorg/synapse/tags
validRegex: '/^v[0-9]{1,}|latest$/'
- id: '$$cap_time_zone'
label: Time zone
defaultValue: Europe/Berlin
description: The time zone of your server https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
validRegex: '/.{1,}/'
- id: '$$cap_synapse_stats'
label: Report stats
defaultValue: 'no'
description: 'Report stats'
validRegex: '/^(yes|no)$/i'
- id: '$$cap_enable_registration'
label: Enable public registration
defaultValue: 'false'
description: >-
Set this to true if you want EVERYONE to be able to register.
It's recommended to set this to false and create users manually.
validRegex: '/^(true|false)$/i'
- id: '$$cap_max_upload_size'
label: Max upload size
defaultValue: '300'
description: >-
The maximum size of a file that can be uploaded, in megabytes.
If you set this higher than 500, you will will also need to increase the nginx "client_max_body_size".
validRegex: '/^[0-9]{1,}$/'
- id: '$$cap_postgres_version'
label: Postgres version
defaultValue: '14'
description: >-
The version of postgres that you want to use.
You can find the valid versions here: https://hub.docker.com/r/postgres/postgres/tags
validRegex: '/^[0-9]{1,}|latest$/'
- id: '$$cap_db_password'
label: Database password
defaultValue: $$cap_gen_random_hex(20)
description: >-
The password for the Synapse database.
validRegex: '/^[0-9a-zA-Z]{1,}$/'
instructions:
start: >-
Synapse is a server implementation of the matrix protocol that allows you to host your own messaging server.
Matrix is build to federate with other servers, so you can communicate with people from other servers.
More information about matrix can be found here: https://matrix.org/
end: >-
Almost done.
Enable and force https in the web interface
Wait 30 seconds, go to https://$$cap_appname.$$cap_root_domain and should be able to see "It works! Synapse is running"
$$cap_appname.$$cap_root_domain is the domain you enter in the custom homeserver field of your client
Remember this is just the server, you also need a client like https://app.element.io/ to use this app.
If you set public registration to false, you can create new users with the following command:
sudo docker exec -it $(sudo docker ps | grep -o srv-captain--$$cap_appname.*) register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml
You can always change the config file located in /var/lib/docker/volumes/srv-captain--$$cap_appname-data/_data/homeserver.yaml
link to the the configuration manual: https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html
after a change restart the container by clicking "Save & Update"
displayName: Matrix Synapse
isOfficial: true
description: Server for the matrix protocol
documentation: https://github.com/matrix-org/synapse/tree/develop/docker