Matrix is een gedecentraliseerd communicatieprotocol. Elke Matrix-server werkt onafhankelijk, beheert zijn eigen gebruikersbestand en bepaalt zijn eigen regels en beleid.
Uw eigen Matrix-server hosten
Je kunt je eigen Matrix-server rechtstreeks op een RouterOS-apparaat hosten met behulp van Containers. Hiermee behoud je volledige controle over je communicatie-infrastructuur.
Federation
Matrix-servers kunnen via federatie verbinding maken om een verenigd communicatienetwerk te vormen. Hierdoor kunnen gebruikers op verschillende Matrix-servers veilig met elkaar communiceren, zonder dat een centrale autoriteit nodig is.
Bridging naar andere platformen
Matrix ondersteunt bridging om berichten van andere chatplatforms door te geven, waaronder:
- Discord
- Signal
- Telegram
- En veel andere platformen
Met Matrix-bridges kunt u communicatie van meerdere platformen samenbrengen in één applicatie, zoals Element. Zo kunt u via één uniforme interface communiceren met gebruikers op verschillende platformen.
Een Synapse Matrix Server opzetten op RouterOS
Deze gids legt uit hoe u Synapse, een van de beschikbare Matrix-servers, met behulp van containers op uw MikroTik RouterOS-apparaat opzet.
Info
Zorg ervoor dat u een Container-netwerk hebt aangemaakt voordat u verdergaat. Raadpleeg voor instructies de documentatie over Container-netwerken.
Prerequisites
- Een RouterOS-apparaat met containerondersteuning
- Een bestaand containernetwerk geconfigureerd
- Voldoende opslagruimte voor de database en de Synapse-gegevens
Stap 1: Maak de omgevingsvariabelen voor de PostgreSQL-container aan
Configureer de lijst met omgevingsvariabelen voor de PostgreSQL-container:
/container/envs/add list=postgres_synapse_envs key=POSTGRES_DB value="synapse"
/container/envs/add list=postgres_synapse_envs key=POSTGRES_PASSWORD value="<POSTGRES_PASSWORD_HERE>"
/container/envs/add list=postgres_synapse_envs key=POSTGRES_USER value="synapse_user"
/container/envs/add list=postgres_synapse_envs key=PGDATA value="/var/lib/postgresql/data/pgdata"
/container/envs/add list=postgres_synapse_envs key=POSTGRES_INITDB_ARGS value="--encoding='UTF8' --lc-collate='C' --lc-ctype='C'"
/container/envs/add list=postgres_synapse_envs key=PGPORT value=5433
Note
Vervang <POSTGRES_PASSWORD_HERE> door het gewenste PostgreSQL-wachtwoord.
Stap 2: Maak de mount voor de PostgreSQL-container aan
Maak een mount point om de PostgreSQL-data permanent op te slaan op uw RouterOS-apparaat:
/container/mounts/add list=synapse_postgres_data src=disk1/synapse-postgres-data dst=/var/lib/postgresql/data
Stap 3: Maak de PostgreSQL-container aan
Start de PostgreSQL-container met de configuratie uit de vorige stappen:
/container/add remote-image=postgres:17.2-alpine interface=veth1 root-dir=disk1/postgres-17.2-synapse mountlists=synapse_postgres_data envlists=postgres_synapse_envs name=postgresql_synapse
Stap 4: Omgevingsvariabelen voor de Synapse-container aanmaken
Configureer de omgevingsvariabelen voor de Synapse-container:
/container/envs/add list=synapse_envs key=SYNAPSE_CONFIG_DIR value="/data"
/container/envs/add list=synapse_envs key=SYNAPSE_CONFIG_PATH value="/data/homeserver.yaml"
/container/envs/add list=synapse_envs key=SYNAPSE_SERVER_NAME value="test.mt.lv"
/container/envs/add list=synapse_envs key=SYNAPSE_REPORT_STATS value="yes"
Note
Vervang test.mt.lv door de werkelijke domeinnaam van uw server.
Stap 5: Synapse-container mount aanmaken
Maak een mount point om Synapse-data permanent op te slaan op uw RouterOS-apparaat:
/container/mounts/add list=synapse_data src=disk1/synapse-data dst=/data
Stap 6: Initiële Synapse-configuratie genereren
Maak een Synapse-container aan en start deze om de vereiste configuratiebestanden te genereren. De container draait met het commando generate om de initiële configuratie aan te maken:
/container/add remote-image=matrixdotorg/synapse:latest interface=veth1 cmd="generate" root-dir=disk1/synapse mountlists=synapse_data envlists=synapse_envs name=synapse
Stap 7: Configuratiebestanden initialiseren
Start de Synapse-container en stop hem daarna, zodat hij de benodigde configuratiebestanden kan genereren:
/container/start [find where name=synapse]
/container/stop [find where name=synapse]
Stap 8: Het Generate-commando verwijderen
Wis de parameter command uit de Synapse-container zodat deze in normale modus draait:
/container/set [find where name=synapse] cmd=""
Stap 9: Databaseverbinding configureren
Maak verbinding met uw RouterOS-apparaat via een SFTP-client (zoals WinSCP op Windows) en bewerk het gegenereerde configuratiebestand op disk1/synapse-data/homeserver.yaml. Werk de databasesectie bij met de volgende instellingen:
database:
name: psycopg2
args:
user: synapse_user
password: <POSTGRES_PASSWORD_HERE>
dbname: synapse
host: 172.17.0.2
port: 5433
cp_min: 5
cp_max: 10
keepalives_idle: 10 # optional
keepalives_interval: 10 # optional
keepalives_count: 3 # optional
Info
Vervang <POSTGRES_PASSWORD_HERE> door het wachtwoord dat u in stap 1 hebt ingesteld.
Stap 10: Start de PostgreSQL-container
Start de PostgreSQL-container om de database voor te bereiden:
/container/start [find where name=postgresql_synapse]
Stap 11: Start de Synapse-container
Start de Synapse-container om uw Matrix-server te draaien:
/container/start [find where name=synapse]
Stap 12: Registreer een Matrix-gebruiker
Ga naar de shell van de Synapse-container en registreer een nieuwe gebruiker:
/container/shell [find where name=synapse]
Voer, eenmaal in de container, het volgende uit:
register_new_matrix_user -c /data/homeserver.yaml
Volg de aanwijzingen om uw admin-gebruikersaccount aan te maken.
Stap 13: Toegang tot uw Matrix-server
Je Synapse Matrix-server draait nu. Benader deze via het IP-adres of de domeinnaam van je RouterOS-apparaat.
Warning
Raadpleeg altijd de officiële Synapse-documentatie voor de meest recente configuratieopties en best practices, aangezien configuratieprocedures met nieuwere versies kunnen veranderen.
Discord-bridge
Tip
Het onderstaande voorbeeld is voor het configureren van een Discord-bridge, maar de procedure voor andere soorten bridges is zeer vergelijkbaar. Raadpleeg de officiële documentatie van de gewenste bridge voor meer informatie.
-
Maak omgevingsvariabelen aan voor de PostgreSQL Discord bridge-Container:
/container/envs/add list=postgres_discord_envs key=POSTGRES_DB value="synapse-discord" /container/envs/add list=postgres_discord_envs key=POSTGRES_PASSWORD value="<POSTGRE_BRIDGE_PASSWORD_HERE>" /container/envs/add list=postgres_discord_envs key=POSTGRES_USER value="synapse_discord" /container/envs/add list=postgres_discord_envs key=PGDATA value="/var/lib/postgresql/data/pgdata" /container/envs/add list=postgres_discord_envs key=POSTGRES_INITDB_ARGS value="--encoding='UTF8' --lc-collate='C' --lc-ctype='C'" /container/envs/add list=postgres_discord_envs key=PGPORT value=5434 -
Maak mounts aan voor de PostgreSQL Discord bridge-Container:
/container/mounts/add list=discord_postgres_data src=disk1/discord-postgres-data dst=/var/lib/postgresql/data -
Maak een PostgreSQL-Container aan voor de Discord bridge:
/container/add remote-image=postgres:17.2-alpine interface=veth1 root-dir=disk1/postgres-17.2-discord mountlists=discord_postgres_data envlists=postgres_discord_envs name=postgresql_discord -
Volg de handleiding voor de HAProxy-container en stel een reverse proxy in voor poort
8080 -
Maak mountpunten aan voor de Discord bridge-Container:
/container/mounts/add list=synapse_discord_data src=disk1/synapse-discord-data dst=/data -
Maak een Discord Bridge-Container aan:
/container/add remote-image=litetex/mau.mautrix.discord:latest interface=veth1 root-dir=disk1/synapse-discord mountlists=synapse_discord_data name=synapse_discord -
Start en stop de Discord-bridge-container om bestanden te genereren:
/container/start [find where name=synapse_discord] /container/stop [find where name=synapse_discord] -
Maak verbinding met uw RouterOS-apparaat via een SFTP-client (bijvoorbeeld WinSCP wanneer u Microsoft Windows gebruikt) en pas het bestand
disk1/synapse-discord/config.yamlaan:homeserver address: http://172.17.0.2:8008 domain: test.mt.lv software: standard async_media: true appservice address: leave default hostname: leave default port: leave default database: type: postgres uri: postgres://synapse_discord:<POSTGRE_DISCORD_PASSWORD_HERE>@172.17.0.2:5434/synapse-discord?sslmode=disable bridge: encryption: allow: true permissions: "*": relay "@your_admin_user1:test.mt.lv": admin "@your_admin_user2:test.mt.lv": admin -
Start en stop de Discord-bridge-container opnieuw:
/container/start [find where name=synapse_discord] /container/stop [find where name=synapse_discord] -
Download het bestand
disk1/synapse-discord/registration.yamlen upload het als bestanddisk1/synapse-data/mautrix-discord-registration.yaml -
Maak verbinding met uw RouterOS-apparaat via een SFTP-client (bijvoorbeeld WinSCP wanneer u Microsoft Windows gebruikt) en voeg de volgende regels toe aan
disk1/synapse-data/homeserver.yaml:... app_service_config_files: - /data/mautrix-discord-registration.yaml -
Start de Synapse- en Discord-bridge-containers:
/container/start [find where name=postgresql_discord] /container/start [find where name=synapse_discord] /container/start [find where name=postgresql_synapse] /container/start [find where name=synapse] -
Je Matrix-server zou nu een nieuwe gebruiker met de naam "Discord bridge bot" moeten hebben. Volg de officiële documentatie om gekoppelde ruimtes aan te maken.