137 lines
4.6 KiB
Markdown
137 lines
4.6 KiB
Markdown
# compose-matrix
|
|
|
|
Matrix Stack bestehend aus Matrix Server "Synapse" sowie dem Frontend "Element".
|
|
|
|
## Inital setup
|
|
1. Copy env file: `cp env.sample .env`
|
|
2. Edit env file: `nano .env`
|
|
1. Basedir: Full path to dir with compose file (important for swarm shares)
|
|
2. Versionnumbers
|
|
3. DB settings
|
|
4. Domain! (no default)
|
|
2. Genreate inital config for synapse:
|
|
1. `source .env`
|
|
2. `docker run -it --rm --env-file .env -v ${BASEDIR:-.}/files/synapse:/data -e SYNAPSE_SERVER_NAME=$DOMAIN -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate`
|
|
- This generate certs and basic inital config (homeserver.yml) for $DOMAIN only for first setup needed
|
|
|
|
Postgress by default not in use!
|
|
Default DB is SQLite.
|
|
|
|
3. (optional) Set db in config: `nano ${BASEDIR:-.}/files/synapse/homeserver.yaml`
|
|
4. Edit element config: `nano ${BASEDIR:-.}/files/element-config.json`
|
|
1. set "default_server_name" to your domain for Synapse
|
|
- must be manually add in first indention from json, was removed from newer versions (?)
|
|
```json
|
|
{
|
|
"default_server_name": "ao-it.net",
|
|
"default_server_config": {
|
|
"m.homeserver": {
|
|
"base_url": "https://ao-it.net",
|
|
"server_name": "matrix.org"
|
|
},
|
|
...
|
|
```
|
|
- is need for correct display by registration (else it will display "matrix.org" even if the correct server is addressed in the backend)
|
|
2. set "m.homeserver" => "base_url" to your domain for Element ($DOMAIN variable)
|
|
- the backend server for synapse
|
|
3. Hint: by default connection to main servers of matrix.org is enabled
|
|
4. Hint: by default jitsi (cloud!) is uses for **group** videocalls
|
|
- > [^jitsi]: 1:1 calls, or calls between you and one other person, do not use Jitsi. Instead, those calls work directly between clients or via TURN servers configured on the respective homeservers.
|
|
- Hint: Jisi can be selfhost (no templace exist atm)
|
|
|
|
5. Run stack `docker compose up`
|
|
|
|
## howto
|
|
|
|
### enable registration
|
|
1. edit `homeserver.yaml`
|
|
1. set "enable_registration" to "True"
|
|
2. set "enable_registration_without_verification" to "True" # note: maybe not comming soon..
|
|
|
|
For disable ... well you know, set "enable_registration" to "False"
|
|
|
|
### create user via cli
|
|
1. Import .env or set $DOMAIN manually
|
|
2. Set env $USERNAME and $USERPASS oder replace it directly
|
|
```
|
|
source .env
|
|
docker exec -it matrix_app_1 register_new_matrix_user -u $USERNAME -p $USERPASS -a -c /data/homeserver.yaml $DOMAIN
|
|
```
|
|
|
|
### replace sqlite3 with postgress
|
|
1. Edit `nano ${BASEDIR:-.}/files/synapse/homeserver.yaml`
|
|
2. Remove:
|
|
```yaml
|
|
database:
|
|
name: sqlite3
|
|
args:
|
|
database: /data/homeserver.db
|
|
```
|
|
3. Add:
|
|
```yaml
|
|
database:
|
|
name: psycopg2
|
|
args:
|
|
user: synapse
|
|
password: STRONGPASSWORD
|
|
database: synapse
|
|
host: synapsedb
|
|
cp_min: 5
|
|
cp_max: 10
|
|
```
|
|
|
|
|
|
### caddy config
|
|
#### synapse
|
|
```
|
|
synapse.example.com {
|
|
reverse_proxy /_matrix/* $IPOFDOCKERHOST:8008
|
|
reverse_proxy /_synapse/client/* $IPOFDOCKERHOST:8008
|
|
|
|
header {
|
|
X-Content-Type-Options nosniff
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
Strict-Transport-Security "max-age=63072000; includeSubDomains;"
|
|
Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=(), interest-cohort=()"
|
|
X-Frame-Options SAMEORIGIN
|
|
X-XSS-Protection 1
|
|
X-Robots-Tag none
|
|
-server
|
|
}
|
|
}
|
|
```
|
|
|
|
#### element
|
|
```
|
|
element.example.com {
|
|
encode zstd gzip
|
|
reverse_proxy $IPOFDOCKERHOST:8080
|
|
|
|
header {
|
|
X-Content-Type-Options nosniff
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
Strict-Transport-Security "max-age=63072000; includeSubDomains;"
|
|
Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=(), interest-cohort=()"
|
|
X-Frame-Options SAMEORIGIN
|
|
X-XSS-Protection 1
|
|
X-Robots-Tag none
|
|
-server
|
|
}
|
|
}
|
|
```
|
|
|
|
## todo
|
|
- setup script to auto edits
|
|
- db in homeserver.yml
|
|
- domain in config.json (element)
|
|
|
|
## sources
|
|
- https://docs.docker.com/reference/cli/docker/container/run/
|
|
- https://adfinis.com/en/blog/how-to-set-up-your-own-matrix-org-homeserver-with-federation/
|
|
- https://zerowidthjoiner.net/2020/03/20/setting-up-matrix-and-riot-with-docker
|
|
- https://linuxhandbook.com/install-matrix-synapse-docker/
|
|
- https://cyberhost.uk/element-matrix-setup/
|
|
- https://raw.githubusercontent.com/vector-im/element-web/v1.5.13/config.sample.json
|
|
- https://github.com/element-hq/element-web/blob/develop/docs/jitsi.md
|
|
|
|
[^jitsi]: https://github.com/element-hq/element-web/blob/develop/docs/jitsi.md |