diff --git a/public/v4/apps/matrix-synapse.yml b/public/v4/apps/matrix-synapse.yml new file mode 100644 index 0000000..e07d75c --- /dev/null +++ b/public/v4/apps/matrix-synapse.yml @@ -0,0 +1,118 @@ +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 diff --git a/public/v4/logos/matrix-synapse.png b/public/v4/logos/matrix-synapse.png new file mode 100644 index 0000000..fe0c1a9 Binary files /dev/null and b/public/v4/logos/matrix-synapse.png differ