====== Container 'matrix-synapse' ====== ===== Ressourcen ===== * 4 GB RAM * 4 Cores * 5 GB HDD (root-fs) * 25 GB HDD (/var/www) ===== System ===== * interne IPs * 10.2.0.16, fd00:10:2:0::16 * 10.3.0.16, fd00:10:3:0::16 ===== Dienste ===== * matrix-synapse ===== Installation ===== * Standard-Template mit Benutzern ==== Matrix Synapse ==== - Matrix-Synapse Repository hinzufügen * **sudo apt-get install -y lsb-release wget apt-transport-https** * **sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg** * **echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list** * **sudo apt-get update** - Matrix-Synapse installieren * **sudo apt-get install matrix-synapse-py3** - Konfigurationen erstellen FIXME - Dienst aktivieren und neustarten * **sudo systemctl enable matrix-synapse.service** * **sudo systemctl restart matrix-synapse.service** ==== Cronjobs zur Bereinigung von Matrix Synapse ==== === Media Cleanup === Der Media Cleanup bereinigt Mediendateien, die über Matrix geteilt wurden und ein bestimmtes Alter erreicht haben. Die aktuelle Schwelle liegt bei **2 Jahren**. Mediendateien, die älter sind, werden entfernt. - Access Token für Matrix Administrator lokal erzeugen * **curl -XPOST -d '{"type":"m.login.password", "user":"USERNAME", "password":"PASSWORD"}' "http://127.0.0.1:8008/_matrix/client/r0/login"** - Skript hinzufügen und generierten Token verwenden #!/bin/bash TOKEN="XXXX" PROTOCOL="http" SERVER="127.0.0.1" PORT=8008 # Calculate date TIMESTAMP=$(date +%s000 --date "2 years ago") # Build API URLs API_URL_MEDIA_LOCAL="$PROTOCOL://$SERVER:$PORT/_synapse/admin/v1/media/delete?before_ts=$TIMESTAMP" API_URL_MEDIA_CACHE="$PROTOCOL://$SERVER:$PORT/_synapse/admin/v1/purge_media_cache?before_ts=$TIMESTAMP" # Check requiirements if ! which jq > /dev/null; then echo "jq not found. Please install required package!" exit 1 fi # Log log(){ >&2 echo "${@:2}" echo "${@:2}" | logger -i -t synapse_media_cleanup -p local0.$1 } # Log error message logError(){ log err "$@" } # Log info message logInfo(){ log info "$@" } # Clean up local media echo "Clean up local media ..." RESPONSE=$(curl --silent --fail-with-body --header "Authorization: Bearer $TOKEN" -X POST $API_URL_MEDIA_LOCAL) if [[ $? -ne 0 ]]; then # Curl error logError "Request to API failed: ${RESPONSE}" else logInfo "Removed $(echo $RESPONSE | jq '.total') entries from local media" fi # Clean up media cache echo "Clean up media cache ..." RESPONSE=$(curl --silent --fail-with-body --header "Authorization: Bearer $TOKEN" -X POST $API_URL_MEDIA_CACHE) if [[ $? -ne 0 ]]; then # Curl error logError "Request to API failed: ${RESPONSE}" else logInfo "Removed $(echo $RESPONSE | jq '.deleted') entries from media cache" fi - Berechtigungen für Skript anpassen * **chmod 700 /usr/local/bin/synapse_media_cleanup.sh** - Cronjob erstellen * **crontab -e**0 2 * * * /usr/local/bin/synapse_media_cleanup.sh > /var/log/synapse_media_cleanup.log 2>&1 === State Compressor === Der [[https://github.com/matrix-org/rust-synapse-compress-state|State Compressor]] reduziert die Einträge in der Tabelle state_groups_state in PostgreSQL und hält so die Datenbank kompakt. - Build des State Compressors auf einer externen VM mit gleichem OS wie der Server matrix-synapse nach [[https://github.com/matrix-org/rust-synapse-compress-state#building|Anleitung]] - Ordner erstellen * **mkdir /usr/local/bin/compressor** - Dateien **synapse_auto_compressor/target/debug/synapse_auto_compressor** und **synapse_auto_compressor/target/debug/synapse_compress_state** in den **Ordner /usr/local/bin/compressor** übertragen - Skript erstellen #!/bin/bash # Run compressor with CHUNK_SIZE=1000 and CHUNKS_TO_COMPRESS=10000000 /usr/local/bin/compressor/synapse_auto_compressor -p postgresql://PGSQL-USER:"PGSQL-PASS"@@10.3.0.102/synapse -c 1000 -n 1000000 - Berechtigungen für Skript anpassen * **chmod 700 /usr/local/bin/compressor/synapse_auto_compressor.sh** - Cronjob erstellen * **crontab -e**0 4 * * * /usr/local/bin/compressor/synapse_auto_compressor.sh > /var/log/synapse_auto_compressor.log 2>&1 ==== Backup mit Borgmatic ==== - Installation siehe [[mariadb]] - Konfiguration ... location: # List of source directories to backup (required). Globs and # tildes are expanded. source_directories: - /etc - /home - /root - /var/log - /var/lib/matrix-synapse ...