summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/matrix-synapse.yml
blob: b1d3abc1e19e71f62ecb2ebef57b60cd35447236 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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