ChatMatrix

From FlowerHouseWiki
Revision as of 22:28, 20 July 2022 by Tropaion (talk | contribs)
Matrix-logo.png

Network


IP: 192.168.88.19
MAC: BE:B1:89:38:28:44
Domain: chat.flowerhouse.at

System


OS: Debian Bullseye
RAM: 4096MB
Cores: 2
Privileged: No

The ChatMatrix-LXC is reachable under 192.168.88.19 which is located in the ServerVLAN.

The subdomain is chat.flowerhouse.at which is handled by the ReverseProxy.

Basic Setup

Installation

Install required packages

apt install -y lsb-release wget apt-transport-https

Add repository

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" | tee /etc/apt/sources.list.d/matrix-org.list
apt update

Install matrix-synapse

apt install matrix-synapse-py3

Check status

systemctl status matrix-synapse

Postgres database

Install required packages

apt install libpq5 postgresql

Open Postgres console

su - postgres

Create user for matrix-synapse

createuser --pwprompt synapse_user

Create database for matrix-synapse

createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse

Exit Postgres console

exit

Edit matrix-synapse configuration file

nano /etc/matrix-synapse/homeserver.yaml

Edit the database entry

database:
  name: psycopg2
  args:
    user: synapse_user
    password: <pass>
    database: synapse
    host: localhost
    cp_min: 5
    cp_max: 10

Check if it works

systemctl restart matrix-synapse
systemctl status matrix-synapse

Configuration

Create random key and save it

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Edit matrix-synapse configuration file

nano /etc/matrix-synapse/homeserver.yaml

Add following lines

suppress_key_server_warning: true
registration_shared_secret: <SECRET-KEY>
# For backfilling (beta)
experimental_features:
    msc2716_enabled: true

Comment following line to make it accessible from outside localhost

# bind_addresses: ...

Restart matrix-synapse

systemctl restart matrix-synapse

Setting up reverse proxy

Check federation configuration: https://federationtester.matrix.org/

Add User

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Optional

Configure puppeting

Install required packages

apt install pip git pwgen

Activate synapse virtual enviroment

cd /opt/venvs/matrix-synapse
source ./bin/activate

Install packages

pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth
exit

Generate shared secret

pwgen -s 128 1

Edit configuration and add configuration

nano /etc/matrix-synapse/homeserver.yaml

General information about puppeting

Install Bridges

ffmpeg is needed to support media files

apt install ffmpeg

WhatsApp

Installation

Create user for mautrix-whatsapp

adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp

Enter user folder

cd /opt/mautrix-whatsapp

Download binary from https://github.com/mautrix/whatsapp/releases

wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64

Rename binary

mv mautrix-whatsapp-amd64 mautrix-whatsapp

Create database

Open Postgres console

su - postgres

Create user for mautrix-whatsapp

createuser --pwprompt whatsapp_user

Create database for mautrix-whatsapp

createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp

Exit Postgres console

exit

Configuration

Create and paste config file: mautrix-whatsapp-config.yaml

nano config.yaml

Modify permissions

chmod 755 mautrix-whatsapp

Generate the appservice registration file

./mautrix-whatsapp -g

Modify permissions

chmod 555 registration.yaml

Edit matrix-synapse configuration file

nano /etc/matrix-synapse/homeserver.yaml

To register WhatsApp add following lines

app_service_config_files:
- /opt/mautrix-whatsapp/registration.yaml

Restart matrix-synapse

systemctl restart matrix-synapse

Check if bridge works

./mautrix-whatsapp

systemd service

Create systemd service file and copy from service

nano /etc/systemd/system/mautrix-whatsapp.service

Apply changes

systemctl daemon-reload

Start and check status

systemctl start mautrix-whatsapp
systemctl status mautrix-whatsapp

Enable autostart

systemctl enable mautrix-whatsapp

Signal

Install Signald

Add repository

wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc
echo "deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main" | tee /etc/apt/sources.list.d/signald.list
apt update

Install signald

apt install signald

Check if it works correctly

systemctl start signald
systemctl status signald

Enable autostart

systemctl enable signald

Install Bridge

Install prerequisites

apt install python pip libolm-dev
pip install virtualenv

Create user for bridge and join signald group

adduser --system mautrix-signal --home /opt/mautrix-signal
usermod -aG signald mautrix-signal

Go to directory

cd /opt/mautrix-signal

Create virtual environment

virtualenv -p /usr/bin/python3 .

Activate virtual environment

source ./bin/activate

Install signal bridge

pip install --upgrade mautrix-signal[all]

Create database

Open Postgres console

su - postgres

Create user for mautrix-whatsapp

createuser --pwprompt signal_user

Create database for mautrix-whatsapp

createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal

Exit Postgres console

exit

Configuration

Copy configuration file and edit...

cp example-config.yaml config.yaml

Generate access file

python -m mautrix_signal -g

Set permissions

chown -R mautrix-signal:root ../mautrix-signal/

Edit matrix-synapse configuration file

nano /etc/matrix-synapse/homeserver.yaml

To register WhatsApp add following lines

app_service_config_files:
- /opt/mautrix-signal/registration.yaml

Restart matrix-synapse

systemctl restart matrix-synapse

Check if bridge works

python -m mautrix_signal

systemd service

Create systemd service file and copy from service

nano /etc/systemd/system/mautrix-signal.service

Apply changes

systemctl daemon-reload

Start and check status

systemctl start mautrix-signal
systemctl status mautrix-signal

Enable autostart

systemctl enable mautrix-signal

Telegram

Installation

Create user for bridge

adduser --system mautrix-telegram --home /opt/mautrix-telegram

Go to directory

cd /opt/mautrix-telegram

Create virtual environment

virtualenv -p /usr/bin/python3 .

Activate virtual environment

source ./bin/activate

Install signal bridge

pip install --upgrade mautrix-telegram[all]

Create database

Open Postgres console

su - postgres

Create user for mautrix-whatsapp

createuser --pwprompt telegram_user

Create database for mautrix-whatsapp

createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram

Exit Postgres console

exit

Configuration

Copy configuration file and edit...

cp example-config.yaml config.yaml

Generate access file

python -m mautrix_telegram -g

Set permissions

chown -R mautrix-telegram:root ../mautrix-telegram/

Edit matrix-synapse configuration file

nano /etc/matrix-synapse/homeserver.yaml

To register WhatsApp add following lines

app_service_config_files:
- /opt/mautrix-telegram/registration.yaml

Restart matrix-synapse

systemctl restart matrix-synapse

Check if bridge works

python -m mautrix_telegram

systemd service

Create systemd service file and copy from service

nano /etc/systemd/system/mautrix-telegram.service

Apply changes

systemctl daemon-reload

Start and check status

systemctl start mautrix-telegram
systemctl status mautrix-telegram

Enable autostart

systemctl enable mautrix-telegram