<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flowerhouse.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tropaion</id>
	<title>FlowerHouseWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flowerhouse.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tropaion"/>
	<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php/Special:Contributions/Tropaion"/>
	<updated>2026-04-08T01:18:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1038</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1038"/>
		<updated>2024-03-16T15:22:31Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Install Bridge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-signal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/signal/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-signal-amd64 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register mautrix-signal add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade heisenbridge[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1037</id>
		<title>Heater</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1037"/>
		<updated>2024-02-24T21:52:41Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* libwebsockets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Froeling.jpg&lt;br /&gt;
|Domain = [https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.11&lt;br /&gt;
|MAC = DA:62:17:83:4E:8F&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Heater-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.11&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://heater.flowerhouse.at heater.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Serial-IP-Konverter is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;de_DE.UTF-8&amp;lt;/syntaxhighlight&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libwebsockets ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pkg-config cmake git build-essential libssl-dev liblua5.3-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Clone &#039;&#039;libwebsockets&#039;&#039; repo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
git clone https://libwebsockets.org/repo/libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create build directory:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd libwebsockets&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Run make to build &#039;&#039;libwebsockets&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cmake ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the necessary links and cache:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ldconfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete unnecessary files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== p4d daemon ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadb-dev-compat uuid-dev python3-dev libcap-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download latest version:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz&lt;br /&gt;
tar -xvf 0.8.8.tar.gz&lt;br /&gt;
rm 0.8.8.tar.gz&lt;br /&gt;
mv linux-p4d-0.8.8 linux-p4d&lt;br /&gt;
cd linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Build it:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1&lt;br /&gt;
make install NO_RASPBERRY_PI=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete build files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database at [[DataBase]] and add credentials to &#039;&#039;daemon.conf&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/p4d/daemon.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-IP-Converter ===&lt;br /&gt;
&amp;lt;p&amp;gt;Access the Serial-IP-Converter-UI under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; with &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;user: admin&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;pw: admin&amp;lt;/syntaxhighlight&amp;gt; and set the UART-settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Serial settings.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install socat:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Connect to Serial-IP-Converter with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For it to connect at boot we have create an service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/socat.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SOCAT Listen Service&lt;br /&gt;
After=network.target redis.service&lt;br /&gt;
Wants=redis.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
StandardError=journal&lt;br /&gt;
SyslogIdentifier=socat-serial-log&lt;br /&gt;
User=root&lt;br /&gt;
ExecStart=/bin/bash -c &#039;/usr/bin/socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&#039;&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check if service is running:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start socat&lt;br /&gt;
systemctl status socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable service to start at boot:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Interface Setup ===&lt;br /&gt;
&amp;lt;p&amp;gt;The default port of the web interface is 1111, the default username is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt; and the password is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Fist steps to enable data logging:&amp;lt;/p&amp;gt;&lt;br /&gt;
# Log in to the web interface&lt;br /&gt;
# Click &#039;&#039;Init Messwerte&#039;&#039;&lt;br /&gt;
# Go to &#039;&#039;Aufzeichnung&#039;&#039; and select the values you like to record and store your selection and save&lt;br /&gt;
# Go to &#039;&#039;Setup&#039;&#039; and click &#039;Init Service Menü&#039;&lt;br /&gt;
&lt;br /&gt;
== Update Script ==&lt;br /&gt;
&amp;lt;p&amp;gt;Bash script to update p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Variables&lt;br /&gt;
name=&amp;quot;P4D&amp;quot;&lt;br /&gt;
repo=&amp;quot;horchi/linux-p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
binary_path=&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
binary_name=&amp;quot;p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ===== VERSION CHECKING, CUSTOMIZE VARIBLES FOR IT =====&lt;br /&gt;
# Get current version&lt;br /&gt;
current=$($binary_path/$binary_name -v)&lt;br /&gt;
&lt;br /&gt;
# Retain everything after last space&lt;br /&gt;
current=${current//[!0-9.]/}&lt;br /&gt;
&lt;br /&gt;
# Get latest release tag&lt;br /&gt;
latest=$(curl -sL https://api.github.com/repos/$repo/tags | jq -r &#039;.[0].name&#039;)&lt;br /&gt;
&lt;br /&gt;
# Check if new version available&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; == &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is up to date&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Check if repo is deprecated&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; &amp;gt; &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is newer than available version, repository deprecated?&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Write information&lt;br /&gt;
echo -e &amp;quot;--------------------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update ${name} ${current} to ${latest}?&amp;quot;&lt;br /&gt;
echo -e &amp;quot;--------------------------------------------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo -e -n &amp;quot;Continue? [y/N]&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
read -n 1 c&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${c}&amp;quot; != &amp;quot;y&amp;quot; ]; then&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# ===== INSTALLATION PART, CUSTOMIZE FOR EACH SOFTWARE =====&lt;br /&gt;
# Go to folder&lt;br /&gt;
cd /usr/src&lt;br /&gt;
&lt;br /&gt;
# Download files&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Untar files&lt;br /&gt;
tar -xvf ${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Enter folder&lt;br /&gt;
cd linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# Start compiling&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
make install NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
&lt;br /&gt;
# Exit folder&lt;br /&gt;
cd .. || exit 1&lt;br /&gt;
&lt;br /&gt;
# Restart p4d&lt;br /&gt;
systemctl restart p4d || exit 1&lt;br /&gt;
&lt;br /&gt;
# Remove old files&lt;br /&gt;
rm ${latest}.tar.gz || exit 1&lt;br /&gt;
rm -r linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# ===== FINISH INSTALLATION SCRIPT ====&lt;br /&gt;
echo -e &amp;quot;-----------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update to ${latest} completed!&amp;quot;&lt;br /&gt;
echo -e &amp;quot;-----------------------------------&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Configuration ==&lt;br /&gt;
=== Mail Notification ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install msmtp-mta bsd-mailx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the msmspt configuration file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/msmtprc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And paste following entry:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; line&amp;gt;&lt;br /&gt;
# Set default values for all following accounts.&lt;br /&gt;
defaults&lt;br /&gt;
port 587&lt;br /&gt;
tls on&lt;br /&gt;
tls_trust_file /etc/ssl/certs/ca-certificates.crt&lt;br /&gt;
&lt;br /&gt;
account flowerhouse&lt;br /&gt;
host smtp.world4you.com&lt;br /&gt;
from heater@flowerhouse.at&lt;br /&gt;
auth on&lt;br /&gt;
user heater@flowerhouse.at&lt;br /&gt;
password XXXXXXX&lt;br /&gt;
&lt;br /&gt;
# Set a default account&lt;br /&gt;
account default : flowerhouse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The setup can be tested with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
mail -s &amp;quot;test&amp;quot; address@email.com &amp;lt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If the setup is working, go to the webinterface and configure the mail notifications in the setup page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/horchi/linux-p4d p4d]&lt;br /&gt;
* [https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp SoCat]&lt;br /&gt;
* [https://forum.iobroker.net/topic/24792/gel%C3%B6st-adapter-smartmeter-per-ser2net-und-socat/3 SoCat-Service]&lt;br /&gt;
* [https://wiki.debian.org/msmtp Mail-Service]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1036</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1036"/>
		<updated>2024-02-17T00:19:01Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-signal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-signal-amd64 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register mautrix-signal add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade heisenbridge[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1035</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1035"/>
		<updated>2024-02-17T00:14:07Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Install Bridge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-signal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-signal-amd64 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade heisenbridge[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1034</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1034"/>
		<updated>2024-02-17T00:12:33Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Signal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-signal-amd64 mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade heisenbridge[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1033</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1033"/>
		<updated>2024-01-27T22:03:16Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update Caddy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add content:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# caddy.service&lt;br /&gt;
#&lt;br /&gt;
# For using Caddy with a config file.&lt;br /&gt;
#&lt;br /&gt;
# Make sure the ExecStart and ExecReload commands are correct&lt;br /&gt;
# for your installation.&lt;br /&gt;
#&lt;br /&gt;
# See https://caddyserver.com/docs/install for instructions.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This service does not use the --resume flag, so if you&lt;br /&gt;
# use the API to make changes, they will be overwritten by the&lt;br /&gt;
# Caddyfile next time the service is restarted. If you intend to&lt;br /&gt;
# use Caddy&#039;s API to configure it, add the --resume flag to the&lt;br /&gt;
# `caddy run` command or use the caddy-api.service file instead.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Caddy&lt;br /&gt;
Documentation=https://caddyserver.com/docs/&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=notify&lt;br /&gt;
User=caddy&lt;br /&gt;
Group=caddy&lt;br /&gt;
ExecStart=/usr/bin/caddy run --environ --config /home/caddy/Caddyfile&lt;br /&gt;
ExecReload=/usr/bin/caddy reload --config /home/caddy/Caddyfile --force&lt;br /&gt;
TimeoutStopSec=5s&lt;br /&gt;
LimitNOFILE=1048576&lt;br /&gt;
LimitNPROC=512&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
ProtectSystem=full&lt;br /&gt;
AmbientCapabilities=CAP_NET_BIND_SERVICE&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Reload daemon and start&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable start at boot&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable root-ssh:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change following line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
#PermitRootLogin prohibit-password -&amp;gt; PermitRootLogin yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart ssh-service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Move binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart Caddy&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl restart caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1032</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1032"/>
		<updated>2024-01-27T22:02:55Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update Caddy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add content:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# caddy.service&lt;br /&gt;
#&lt;br /&gt;
# For using Caddy with a config file.&lt;br /&gt;
#&lt;br /&gt;
# Make sure the ExecStart and ExecReload commands are correct&lt;br /&gt;
# for your installation.&lt;br /&gt;
#&lt;br /&gt;
# See https://caddyserver.com/docs/install for instructions.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This service does not use the --resume flag, so if you&lt;br /&gt;
# use the API to make changes, they will be overwritten by the&lt;br /&gt;
# Caddyfile next time the service is restarted. If you intend to&lt;br /&gt;
# use Caddy&#039;s API to configure it, add the --resume flag to the&lt;br /&gt;
# `caddy run` command or use the caddy-api.service file instead.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Caddy&lt;br /&gt;
Documentation=https://caddyserver.com/docs/&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=notify&lt;br /&gt;
User=caddy&lt;br /&gt;
Group=caddy&lt;br /&gt;
ExecStart=/usr/bin/caddy run --environ --config /home/caddy/Caddyfile&lt;br /&gt;
ExecReload=/usr/bin/caddy reload --config /home/caddy/Caddyfile --force&lt;br /&gt;
TimeoutStopSec=5s&lt;br /&gt;
LimitNOFILE=1048576&lt;br /&gt;
LimitNPROC=512&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
ProtectSystem=full&lt;br /&gt;
AmbientCapabilities=CAP_NET_BIND_SERVICE&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Reload daemon and start&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable start at boot&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Move binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart Caddy&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl restart caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable root-ssh:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change following line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
#PermitRootLogin prohibit-password -&amp;gt; PermitRootLogin yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart ssh-service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=BitWarden&amp;diff=1031</id>
		<title>BitWarden</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=BitWarden&amp;diff=1031"/>
		<updated>2023-12-04T22:31:43Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: Tropaion moved page BitWarden to VaultWarden&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[VaultWarden]]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=VaultWarden&amp;diff=1030</id>
		<title>VaultWarden</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=VaultWarden&amp;diff=1030"/>
		<updated>2023-12-04T22:31:43Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: Tropaion moved page BitWarden to VaultWarden&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Bitwarden.png&lt;br /&gt;
|Domain = [https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.15&lt;br /&gt;
|MAC = B6:04:55:14:93:89&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = [[Bitwarden.env]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The BitWarden-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.15&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://vault.flowerhouse.at vault.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Building ==&lt;br /&gt;
&amp;lt;p&amp;gt;The original BitWarden-Server is only available with docker, this an alternative software programmed with rust.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the required packages for building:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install git curl wget htop pkg-config openssl libssl-dev build-essential libmariadb-dev-compat libmariadb-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rust ===&lt;br /&gt;
&amp;lt;p&amp;gt;Download script and follow installer:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
curl --proto &#039;=https&#039; --tlsv1.2 -sSf https://sh.rustup.rs | sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create environment variable:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
echo &#039;export PATH=~/.cargo/bin:$PATH&#039; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
export PATH=~/.cargo/bin:$PATH &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;After running following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
which rustc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;It should show the path:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/root/.cargo/bin/rustc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== vaultwarden ===&lt;br /&gt;
&amp;lt;p&amp;gt;To build bitwarden_rs at least 1GB RAM is needed for it to work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Clone the bitwarden_rs repository and use cargo to build it:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt&lt;br /&gt;
wget https://github.com/dani-garcia/vaultwarden/archive/refs/tags/1.23.1.tar.gz&lt;br /&gt;
tar -xvf 1.23.1.tar.gz&lt;br /&gt;
pushd vaultwarden-1.23.1&lt;br /&gt;
cargo clean &amp;amp;&amp;amp; cargo build --features mysql --release&lt;br /&gt;
file target/release/vaultwarden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now the build bitwarden_rs binary is located at:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/vaultwarden/target/release/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable root-ssh:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change following line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
#PermitRootLogin prohibit-password -&amp;gt; PermitRootLogin yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart ssh-service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Only vaultwarden is needed for deployment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deploying ==&lt;br /&gt;
&amp;lt;p&amp;gt;Required packages for deployment:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install openssl libmariadb-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== vaultwarden ===&lt;br /&gt;
&amp;lt;p&amp;gt;Create folders for deployment and move the vaultwarden binary to the folder &amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; inline&amp;gt;/opt/bitwarden/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
mkdir /opt/vaultwarden&lt;br /&gt;
mkdir /opt/vaultwarden/data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 775 vaultwarden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create .env file and paste [[Bitwarden.env]]:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /opt/vaultwarden/.env&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install WebVault ===&lt;br /&gt;
&amp;lt;p&amp;gt;It is not needed to build WebVault, you can use one of the [https://github.com/dani-garcia/bw_web_builds prepatched branches]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Move to the vaultwarden_rs release folder and download WebVault:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2.18.1d/bw_web_v2.18.1d.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Unpack and delete:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf bw_web_v2.18.1d.tar.gz&lt;br /&gt;
rm bw_web_v2.18.1d.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== systemd service ===&lt;br /&gt;
&amp;lt;p&amp;gt;Create a service file for vaultwarden:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/vaultwarden.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And paste following:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Vaultwarden Server (Rust Edition)&lt;br /&gt;
Documentation=https://github.com/dani-garcia/vaultwarden&lt;br /&gt;
&lt;br /&gt;
# Only sqlite&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
# The user/group vaultwarden_rs is run under. the working directory (see below) should allow write and read access to this user/group&lt;br /&gt;
User=root&lt;br /&gt;
Group=root&lt;br /&gt;
# The location of the .env file for configuration&lt;br /&gt;
EnvironmentFile=/opt/vaultwarden/.env&lt;br /&gt;
# The location of the compiled binary&lt;br /&gt;
ExecStart=/opt/vaultwarden/vaultwarden&lt;br /&gt;
# Set reasonable connection and process limits&lt;br /&gt;
LimitNOFILE=1048576&lt;br /&gt;
# Isolate bitwarden_rs from the rest of the system&lt;br /&gt;
# PrivateTmp=true&lt;br /&gt;
# PrivateDevices=true&lt;br /&gt;
# ProtectHome=true&lt;br /&gt;
# ProtectSystem=strict&lt;br /&gt;
# Only allow writes to the following directory and set it to the working directory (user and password data are stored here)&lt;br /&gt;
WorkingDirectory=/opt/vaultwarden/&lt;br /&gt;
ReadWriteDirectories=/opt/vaultwarden/&lt;br /&gt;
# Allow bitwarden_rs to bind ports in the range of 0-1024&lt;br /&gt;
AmbientCapabilities=CAP_NET_BIND_SERVICE&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check if service is running:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start vaultwarden&lt;br /&gt;
systemctl status vaultwarden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable service to start at boot:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable vaultwarden&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://gist.github.com/tavinus/59c314f4ccd70879db7f11074eacb6cc Bitwarden RS Debian 10 Install]&lt;br /&gt;
* [https://nodejs.org/dist/latest/ Latest NodeJS]&lt;br /&gt;
* [https://github.com/dani-garcia/bw_web_builds WebVault]&lt;br /&gt;
* [https://github.com/dani-garcia/bitwarden_rs/wiki/Setup-as-a-systemd-service bitwarden.service]&lt;br /&gt;
* [https://github.com/dani-garcia/bitwarden_rs/blob/master/.env.template template configuration]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1029</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1029"/>
		<updated>2023-12-04T22:31:05Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[VaultWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1028</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1028"/>
		<updated>2023-11-25T22:25:08Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1027</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1027"/>
		<updated>2023-11-25T22:24:58Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1026</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1026"/>
		<updated>2023-11-25T22:24:04Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Address&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1025</id>
		<title>PartDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1025"/>
		<updated>2023-08-24T08:28:51Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|Domain = [https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.16&lt;br /&gt;
|MAC = 32:22:DA:F2:39:1B&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The PartDB-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.16&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://parts.flowerhouse.at parts.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Installation ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation%20guide-debian.html Installation Guide]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation_guide-debian.html#update-part-db Update Guide]&lt;br /&gt;
&lt;br /&gt;
Move into Part-DB folder&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/partdb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checkout master branch&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pull latest Part-DB version from GitHub&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checkout the latest version (or use a specific version, like described above) &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
git checkout $(git describe --tags $(git rev-list --tags --max-count=1))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apply correct permission&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R www-data:www-data .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install new composer dependencies&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data composer install --no-dev -o&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install yarn dependencies and build new frontend&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
sudo yarn install&lt;br /&gt;
sudo yarn build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apply new database schemas (you should do a backup of your database file /var/www/partdb/var/app.db before)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data php bin/console doctrine:migrations:migrate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clear Part-DB cache&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u www-data php bin/console cache:clear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Requirements Requirements]&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Installation Install PartDB]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1024</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=1024"/>
		<updated>2023-08-01T09:15:44Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade heisenbridge[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1023</id>
		<title>PartDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1023"/>
		<updated>2023-05-27T19:44:03Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|Domain = [https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.16&lt;br /&gt;
|MAC = 32:22:DA:F2:39:1B&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The PartDB-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.16&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://parts.flowerhouse.at parts.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Installation ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation%20guide-debian.html Installation Guide]&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation_guide-debian.html#update-part-db Update Guide]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Requirements Requirements]&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Installation Install PartDB]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1022</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1022"/>
		<updated>2023-02-11T23:21:54Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update Caddy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add content:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# caddy.service&lt;br /&gt;
#&lt;br /&gt;
# For using Caddy with a config file.&lt;br /&gt;
#&lt;br /&gt;
# Make sure the ExecStart and ExecReload commands are correct&lt;br /&gt;
# for your installation.&lt;br /&gt;
#&lt;br /&gt;
# See https://caddyserver.com/docs/install for instructions.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This service does not use the --resume flag, so if you&lt;br /&gt;
# use the API to make changes, they will be overwritten by the&lt;br /&gt;
# Caddyfile next time the service is restarted. If you intend to&lt;br /&gt;
# use Caddy&#039;s API to configure it, add the --resume flag to the&lt;br /&gt;
# `caddy run` command or use the caddy-api.service file instead.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Caddy&lt;br /&gt;
Documentation=https://caddyserver.com/docs/&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=notify&lt;br /&gt;
User=caddy&lt;br /&gt;
Group=caddy&lt;br /&gt;
ExecStart=/usr/bin/caddy run --environ --config /home/caddy/Caddyfile&lt;br /&gt;
ExecReload=/usr/bin/caddy reload --config /home/caddy/Caddyfile --force&lt;br /&gt;
TimeoutStopSec=5s&lt;br /&gt;
LimitNOFILE=1048576&lt;br /&gt;
LimitNPROC=512&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
ProtectSystem=full&lt;br /&gt;
AmbientCapabilities=CAP_NET_BIND_SERVICE&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Reload daemon and start&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable start at boot&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Move binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart Caddy&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl restart caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1021</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1021"/>
		<updated>2023-02-11T23:19:55Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add content:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
# caddy.service&lt;br /&gt;
#&lt;br /&gt;
# For using Caddy with a config file.&lt;br /&gt;
#&lt;br /&gt;
# Make sure the ExecStart and ExecReload commands are correct&lt;br /&gt;
# for your installation.&lt;br /&gt;
#&lt;br /&gt;
# See https://caddyserver.com/docs/install for instructions.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This service does not use the --resume flag, so if you&lt;br /&gt;
# use the API to make changes, they will be overwritten by the&lt;br /&gt;
# Caddyfile next time the service is restarted. If you intend to&lt;br /&gt;
# use Caddy&#039;s API to configure it, add the --resume flag to the&lt;br /&gt;
# `caddy run` command or use the caddy-api.service file instead.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Caddy&lt;br /&gt;
Documentation=https://caddyserver.com/docs/&lt;br /&gt;
After=network.target network-online.target&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=notify&lt;br /&gt;
User=caddy&lt;br /&gt;
Group=caddy&lt;br /&gt;
ExecStart=/usr/bin/caddy run --environ --config /home/caddy/Caddyfile&lt;br /&gt;
ExecReload=/usr/bin/caddy reload --config /home/caddy/Caddyfile --force&lt;br /&gt;
TimeoutStopSec=5s&lt;br /&gt;
LimitNOFILE=1048576&lt;br /&gt;
LimitNPROC=512&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
ProtectSystem=full&lt;br /&gt;
AmbientCapabilities=CAP_NET_BIND_SERVICE&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Reload daemon and start&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start caddy&lt;br /&gt;
systemctl status caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable start at boot&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1020</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1020"/>
		<updated>2023-02-11T23:17:33Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1019</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1019"/>
		<updated>2023-02-11T23:17:16Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1018</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1018"/>
		<updated>2023-02-11T23:16:43Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for config files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R caddy:caddy /home/caddy&lt;br /&gt;
chmod -R 770 /home/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Caddy ==&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/caddy.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1017</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1017"/>
		<updated>2023-02-11T23:14:30Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration, for example general security configuraton which can be individually imported&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# ============ SECURITY HEADER SNIPPET ============&lt;br /&gt;
(security_header) {&lt;br /&gt;
        header {&lt;br /&gt;
                Permissions-Policy interest-cohort=()&lt;br /&gt;
                Strict-Transport-Security max-age=31536000&lt;br /&gt;
                X-Content-Type-Options nosniff&lt;br /&gt;
                Referrer-Policy no-referrer-when-downgrade&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Strict content policy&lt;br /&gt;
(content_policy) {&lt;br /&gt;
        header {&lt;br /&gt;
                # For older browser, newer ones use frame ancestors&lt;br /&gt;
                # SAMEORIGIN = self, DENY = none&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
            default-src &#039;none&#039;;&lt;br /&gt;
            style-src &#039;self&#039;;&lt;br /&gt;
            script-src &#039;self&#039;;&lt;br /&gt;
            font-src &#039;self&#039;;&lt;br /&gt;
            img-src &#039;self&#039;;&lt;br /&gt;
            form-action &#039;self&#039;;&lt;br /&gt;
            connect-src &#039;self&#039;;&lt;br /&gt;
            frame-ancestors &#039;none&#039;;&lt;br /&gt;
            object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Content policy - allow inline&lt;br /&gt;
(content_policy_inline) {&lt;br /&gt;
        header {&lt;br /&gt;
                X-Frame-Options DENY&lt;br /&gt;
                Content-Security-Policy &amp;quot;&lt;br /&gt;
                    default-src &#039;none&#039;;&lt;br /&gt;
                    style-src &#039;unsafe-inline&#039; &#039;self&#039;;&lt;br /&gt;
                    script-src &#039;self&#039;;&lt;br /&gt;
                    font-src &#039;self&#039;;&lt;br /&gt;
                    img-src &#039;self&#039;;&lt;br /&gt;
                    form-action &#039;self&#039;;&lt;br /&gt;
                    connect-src &#039;self&#039;;&lt;br /&gt;
                    frame-ancestors &#039;none&#039;;&lt;br /&gt;
                    object-src &#039;none&#039;;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ============ IMPORT CADDY FILES ============&lt;br /&gt;
# Settings for authentication portal&lt;br /&gt;
import ./security&lt;br /&gt;
&lt;br /&gt;
# Network (ProxMox, Router,...)&lt;br /&gt;
import ./network&lt;br /&gt;
&lt;br /&gt;
# LXCs&lt;br /&gt;
import ./lxc/101_adguard&lt;br /&gt;
import ./lxc/102_reverse_proxy&lt;br /&gt;
import ./lxc/103_dashboard&lt;br /&gt;
import ./lxc/104_database&lt;br /&gt;
import ./lxc/105_chat_matrix&lt;br /&gt;
import ./lxc/106_vaultwarden&lt;br /&gt;
import ./lxc/107_mediawiki&lt;br /&gt;
import ./lxc/108_nextcloud&lt;br /&gt;
import ./lxc/109_jellyfin&lt;br /&gt;
import ./lxc/110_jupyter&lt;br /&gt;
import ./lxc/111_heater&lt;br /&gt;
import ./lxc/112_partdb&lt;br /&gt;
import ./lxc/113_vikunja&lt;br /&gt;
import ./lxc/114_unifi&lt;br /&gt;
&lt;br /&gt;
# VMs&lt;br /&gt;
import ./vm/200_truenas&lt;br /&gt;
import ./vm/201_home_assistant&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1016</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1016"/>
		<updated>2023-02-11T23:12:55Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Caddy Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1015</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1015"/>
		<updated>2023-02-11T23:12:33Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Caddyfile&amp;quot; containts general caddy configuration&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;users.json&amp;quot; is created by the security plugin an contains the [https://authp.github.io/docs/authenticate/local/local local users]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;security&amp;quot; contains configuration for the auth portal (security plugin)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# =========== AUTH-PORTAL SETTINGS ===========&lt;br /&gt;
{&lt;br /&gt;
        # Global security setting&lt;br /&gt;
        order authenticate before respond&lt;br /&gt;
        order authorize before reverse_proxy&lt;br /&gt;
&lt;br /&gt;
        # Configure how to handle login credentials&lt;br /&gt;
        # With this config they are stored locally in users.json&lt;br /&gt;
        security {&lt;br /&gt;
                local identity store localdb {&lt;br /&gt;
                        realm local&lt;br /&gt;
                        path /home/caddy/auth/local/users.json&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Configure the authentication portal&lt;br /&gt;
                authentication portal myportal {&lt;br /&gt;
                        # Key handling settings&lt;br /&gt;
                        # Stay logged in for 12h&lt;br /&gt;
                        crypto default token lifetime 43200&lt;br /&gt;
                        crypto key sign-verify {env.JWT_SHARED_KEY}&lt;br /&gt;
&lt;br /&gt;
                        # Identity providers&lt;br /&gt;
                        enable identity store localdb&lt;br /&gt;
&lt;br /&gt;
                        # Cooke settigs&lt;br /&gt;
                        cookie domain flowerhouse.at&lt;br /&gt;
&lt;br /&gt;
                        # Links shown in authentication portal&lt;br /&gt;
                        ui {&lt;br /&gt;
                                links {&lt;br /&gt;
                                        # ICONS: https://icons8.com/line-awesome&lt;br /&gt;
                                        &amp;quot;My Identity&amp;quot; &amp;quot;/whoami&amp;quot; icon &amp;quot;las la-user&amp;quot;&lt;br /&gt;
                                        &amp;quot;Portal Settings&amp;quot; &amp;quot;/settings&amp;quot; icon &amp;quot;las la-c&amp;gt;&lt;br /&gt;
                                }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        # Configure how to handle local user&lt;br /&gt;
                        transform user {&lt;br /&gt;
                                # Check with identity provider &amp;quot;local&amp;quot;&lt;br /&gt;
                                match origin local&lt;br /&gt;
&lt;br /&gt;
                                # Add user role&lt;br /&gt;
                                action add role authp/user&lt;br /&gt;
&lt;br /&gt;
                                # Force Multi-Factor Authentication&lt;br /&gt;
                                require mfa&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                # Create admin policy&lt;br /&gt;
                authorization policy admins_policy {&lt;br /&gt;
                        set auth url https://auth.flowerhouse.at&lt;br /&gt;
                        allow roles authp/admin authp/user&lt;br /&gt;
                        crypto key verify {env.JWT_SHARED_KEY}&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;lxc/&amp;quot; contains proxy config for every ProxMox LXC, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== LXC 101 - AdGuard ===========&lt;br /&gt;
dns.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        reverse_proxy http://192.168.88.4:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;vm/&amp;quot; contains proxy config for every ProxMox VM, for example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
# =========== VM 200 - TrueNAS ===========&lt;br /&gt;
nas.flowerhouse.at {&lt;br /&gt;
        # Import security and privacy headers&lt;br /&gt;
        import security_header&lt;br /&gt;
        import content_policy&lt;br /&gt;
&lt;br /&gt;
        # Additional content policy&lt;br /&gt;
        header Access-Control-Allow-Origin: https://nas.flowerhouse.at https://nas.f&amp;gt;&lt;br /&gt;
        header Access-Control-Allow-Methods: GET&lt;br /&gt;
        #header Access-Control-Allow-Credentials: true    &lt;br /&gt;
&lt;br /&gt;
        # Use auth portal for security&lt;br /&gt;
        authorize with admins_policy&lt;br /&gt;
&lt;br /&gt;
        # WebUI&lt;br /&gt;
        reverse_proxy http://192.168.88.5:80&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1014</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1014"/>
		<updated>2023-02-11T23:01:03Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ network&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1013</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1013"/>
		<updated>2023-02-11T23:00:23Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview&amp;lt;/p&amp;gt;&lt;br /&gt;
/home/caddy/&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ Caddyfile&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ auth/&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ local/&amp;lt;br /&amp;gt;&lt;br /&gt;
│  │  ├─ users.json&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ lxc/&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ 101_adguard&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ 102_reverse_proxy&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ ...&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ network&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ security&amp;lt;br /&amp;gt;&lt;br /&gt;
├─ vm/&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ 200_truenas&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ 201_home_assitant&amp;lt;br /&amp;gt;&lt;br /&gt;
│  ├─ ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1012</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1012"/>
		<updated>2023-02-11T22:59:47Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Caddy Installation ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://caddyserver.com/download Download] Caddy2 with Security Plugin&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Copy binary to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv ./caddy_linux_amd64_custom /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user and group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; lines&amp;gt;&lt;br /&gt;
addgroup caddy&lt;br /&gt;
adduser --system caddy&lt;br /&gt;
adduser caddy caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions for binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
chown caddy:caddy /usr/bin/caddy&lt;br /&gt;
chmod 770 /usr/bin/caddy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create caddy file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /home/caddy/Caddyfile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In my installation I separated many config files for better overview&amp;lt;/p&amp;gt;&lt;br /&gt;
/home/caddy/&lt;br /&gt;
├─ Caddyfile&lt;br /&gt;
├─ auth/&lt;br /&gt;
│  ├─ local/&lt;br /&gt;
│  │  ├─ users.json&lt;br /&gt;
├─ lxc/&lt;br /&gt;
│  ├─ 101_adguard&lt;br /&gt;
│  ├─ 102_reverse_proxy&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
├─ network&lt;br /&gt;
├─ security&lt;br /&gt;
├─ vm/&lt;br /&gt;
│  ├─ 200_truenas&lt;br /&gt;
│  ├─ 201_home_assitant&lt;br /&gt;
│  ├─ ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1011</id>
		<title>PartDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1011"/>
		<updated>2023-02-11T20:54:54Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Old version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|Domain = [https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.16&lt;br /&gt;
|MAC = 32:22:DA:F2:39:1B&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The PartDB-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.16&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://parts.flowerhouse.at parts.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Old version ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install the required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install git zip apache2 php php-mysql php-curl libapache2-mod-php php-opcache php-gettext&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure locales:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure Apache ===&lt;br /&gt;
&amp;lt;p&amp;gt;Open the following file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/apache2.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And change this part:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
        Options Indexes FollowSymLinks&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;to this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
        Options -Indexes&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart the apache service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure PHP ===&lt;br /&gt;
&amp;lt;p&amp;gt;Edit &#039;&#039;php.ini&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/php/7.3/apache2/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change the following settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
upload_max_filesize = 100M&lt;br /&gt;
post_max_size = 100M&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PartDB ===&lt;br /&gt;
&amp;lt;p&amp;gt;Download and unpack:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O part-db.tar.gz https://github.com/jbtronics/Part-DB/archive/master.tar.gz&lt;br /&gt;
tar -xzf part-db.tar.gz -C /var/www&lt;br /&gt;
rm part-db.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change folder name to root directory:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
rm -r html&lt;br /&gt;
mv Part-DB-master html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set ownership:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R www-data:www-data html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate composer files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
php composer.phar install -o --no-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New version ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation%20guide-debian.html Installation Guide]&lt;br /&gt;
&lt;br /&gt;
[https://docs.part-db.de/installation/installation_guide-debian.html#update-part-db Update Guide]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Requirements Requirements]&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Installation Install PartDB]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1010</id>
		<title>PartDB</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=PartDB&amp;diff=1010"/>
		<updated>2023-02-11T20:54:42Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* New version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|Domain = [https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.16&lt;br /&gt;
|MAC = 32:22:DA:F2:39:1B&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The PartDB-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.16&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://parts.flowerhouse.at parts.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Old version ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install the required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install git zip apache2 php php-mysql php-curl libapache2-mod-php php-opcache php-gettext&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure locales:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure Apache ===&lt;br /&gt;
&amp;lt;p&amp;gt;Open the following file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/apache2.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And change this part:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
        Options Indexes FollowSymLinks&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;to this:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
        Options -Indexes&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart the apache service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure PHP ===&lt;br /&gt;
&amp;lt;p&amp;gt;Edit &#039;&#039;php.ini&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/php/7.3/apache2/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change the following settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
upload_max_filesize = 100M&lt;br /&gt;
post_max_size = 100M&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PartDB ===&lt;br /&gt;
&amp;lt;p&amp;gt;Download and unpack:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O part-db.tar.gz https://github.com/jbtronics/Part-DB/archive/master.tar.gz&lt;br /&gt;
tar -xzf part-db.tar.gz -C /var/www&lt;br /&gt;
rm part-db.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change folder name to root directory:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
rm -r html&lt;br /&gt;
mv Part-DB-master html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set ownership:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R www-data:www-data html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate composer files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
php composer.phar install -o --no-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
e]smoFA14yF1!.6A&lt;br /&gt;
&lt;br /&gt;
== New version ==&lt;br /&gt;
[https://docs.part-db.de/installation/installation%20guide-debian.html Installation Guide]&lt;br /&gt;
&lt;br /&gt;
[https://docs.part-db.de/installation/installation_guide-debian.html#update-part-db Update Guide]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Requirements Requirements]&lt;br /&gt;
* [https://github.com/Part-DB/Part-DB/wiki/EN%3A-Installation Install PartDB]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1009</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1009"/>
		<updated>2023-02-11T20:51:20Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = x&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1008</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1008"/>
		<updated>2023-02-11T20:50:39Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = [[configuration.yml]]&amp;lt;br&amp;gt;[[users_database.yml]]&amp;lt;br&amp;gt;[[authelia_portal.conf]]&amp;lt;br&amp;gt;[[protected_endpoint.conf]]&amp;lt;br&amp;gt;[[UpdateAuthelia.sh]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [[Reverse-Proxy (old version)|Guide]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1007</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1007"/>
		<updated>2023-02-11T20:50:05Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: Removed redirect to Reverse-Proxy (old version)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = [[configuration.yml]]&amp;lt;br&amp;gt;[[users_database.yml]]&amp;lt;br&amp;gt;[[authelia_portal.conf]]&amp;lt;br&amp;gt;[[protected_endpoint.conf]]&amp;lt;br&amp;gt;[[UpdateAuthelia.sh]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Previously Nginx Proxy Manager and Authelia was used for ReverseProxy: [Guide https://wiki.flowerhouse.at/index.php/Reverse-Proxy_(old_version)]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now Caddy2 is used for the ReverseProxy, because it&#039;s more stable and integrated&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1006</id>
		<title>Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy&amp;diff=1006"/>
		<updated>2023-02-11T20:47:26Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: Tropaion moved page Reverse-Proxy to Reverse-Proxy (old version)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Reverse-Proxy (old version)]]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy_(old_version)&amp;diff=1005</id>
		<title>Reverse-Proxy (old version)</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Reverse-Proxy_(old_version)&amp;diff=1005"/>
		<updated>2023-02-11T20:47:26Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: Tropaion moved page Reverse-Proxy to Reverse-Proxy (old version)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|title = Reverse-Proxy-LXC&lt;br /&gt;
|image = Reverse proxy.png&lt;br /&gt;
|MAC = 56:59:71:B1:85:BC&lt;br /&gt;
|IP = 192.168.88.3&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 1024MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
|Files = [[configuration.yml]]&amp;lt;br&amp;gt;[[users_database.yml]]&amp;lt;br&amp;gt;[[authelia_portal.conf]]&amp;lt;br&amp;gt;[[protected_endpoint.conf]]&amp;lt;br&amp;gt;[[UpdateAuthelia.sh]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.3&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every incoming packages from outside are forwarded to this IP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ReverseProxy also forces outside connections to use HTTPS/SSL and will provide a SSL-Certificate.&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
=== Nginx Proxy Manager ===&lt;br /&gt;
&amp;lt;p&amp;gt;Download installation script and run it&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget --no-cache -qO - https://raw.githubusercontent.com/ej52/proxmox/main/lxc/nginx-proxy-manager/setup.sh | sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After installation, the webinterface should be reachable, standard login is&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Email:    admin@example.com&lt;br /&gt;
Password: changeme&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
&amp;lt;p&amp;gt;Update NPM with following command&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget --no-cache -qO - https://raw.githubusercontent.com/ej52/proxmox/main/lxc/nginx-proxy-manager/setup.sh | sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authelia ==&lt;br /&gt;
For security reasons and convenience, the login portal Authelia will be installed.&lt;br /&gt;
&lt;br /&gt;
==== Redis-Server ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install Redis with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;apt install redis-server&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;After installing Redis, start redis service and enable it to start after system reboot with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start redis-server&lt;br /&gt;
systemctl enable redis-server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Verify the status of the redis server:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status redis-server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;By default, Redis listening on the localhost on port 6379. You can check it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ps -ef | grep redis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Redis Config and set passphrase for redis server, which is needed in the authelia configuration file. Find &amp;lt;code&amp;gt;# requirepass&amp;lt;/code&amp;gt; in line 790 and change it &amp;lt;code&amp;gt;requirepass &amp;quot;my_redis_password&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
nano /etc/redis/redis.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart redis to apply config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl restart redis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Test if passphrase is working correctly and exit&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
redis-cli&lt;br /&gt;
AUTH yourpassword&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Download and install package file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget https://github.com/authelia/authelia/releases/download/v4.36.3/authelia_v4.36.3_amd64.deb&lt;br /&gt;
apt install ./authelia_v4.36.3_amd64.deb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== configuration.yml ====&lt;br /&gt;
&amp;lt;p&amp;gt;Edit onfiguration file, modify and paste [[configuration.yml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/authelia/configuration.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restrict permissions for the configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 0600 /etc/authelia/configuration.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== users_database.yml ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create users_database, modify and paste [[users_database.yml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/authelia/users_database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Password hash can be generated with following command&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
/usr/bin/authelia hash-password &#039;yourpassword&#039; -i1 -k32 -l16 -m256 -p8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restrict permissions for the users_database&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 0600 /etc/authelia/users_database.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start authelia and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start authelia&lt;br /&gt;
systemctl status authelia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable authelia at boot&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable authelia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
To update authelia, I made an bash script: [[UpdateAuthelia.sh]]&lt;br /&gt;
&lt;br /&gt;
== Configure Nginx Proxy Manager ==&lt;br /&gt;
&amp;lt;p&amp;gt;Create Proxy-Host for Authelia:&amp;lt;/p&amp;gt;&lt;br /&gt;
* auth.flowerhouse.at -&amp;gt; Scheme: http, Forward IP: 192.168.88.3, Port: 9091&lt;br /&gt;
* Chache Assests: On, Block Common Exploits: On&lt;br /&gt;
* At the advanced tab add content of file [[authelia_portal.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To enable the login portal for a host, go to the advanced tab and add the contenct of [[protected_endpoint.conf]]&amp;lt;/p&amp;gt;&lt;br /&gt;
* Line 3, 33 and 34 needs to be edited&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://nginxproxymanager.com/ Nginx Proxy Manager] (ReverseProxy)&lt;br /&gt;
* [https://github.com/ej52/proxmox-scripts/tree/main/lxc/nginx-proxy-manager Nginx Proxy Manager Install Script]&lt;br /&gt;
* [https://github.com/authelia/authelia/releases/ Authelia GitHub] (Login-Portal)&lt;br /&gt;
* [https://github.com/ibracorp/authelia#authelia Set up Authelia with Nginx Proxy Manager]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1004</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1004"/>
		<updated>2023-02-11T20:45:46Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Address&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|192.168.88.4&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|192.168.88.3&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|192.168.88.5&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|192.168.88.9&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|192.168.88.10&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|192.168.88.11&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|192.168.88.13&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|192.168.88.14&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|192.168.88.15&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|192.168.88.16&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|192.168.88.18&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|192.168.88.19&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1003</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1003"/>
		<updated>2023-02-11T20:45:23Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Address&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|[https://ldap.flowerhouse.at ldap.flowerhouse.at]&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|192.168.88.4&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|192.168.88.3&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|192.168.88.5&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|192.168.88.9&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|192.168.88.10&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|192.168.88.11&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|192.168.88.13&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|192.168.88.14&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|192.168.88.15&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|192.168.88.16&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|192.168.88.18&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|192.168.88.19&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1002</id>
		<title>ProxMox</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ProxMox&amp;diff=1002"/>
		<updated>2023-02-11T20:45:04Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Proxmox.png&lt;br /&gt;
|Domain = [https://ve.flowerhouse.at ve.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.6&amp;lt;br&amp;gt;192.168.88.7&lt;br /&gt;
|MAC = 20:47:47:82:E0:BA&amp;lt;br&amp;gt;20:47:47:82:E0:BC&lt;br /&gt;
|OS = ProxMox&lt;br /&gt;
|RAM = 96GB&lt;br /&gt;
|Cores = 10/20&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ProxMox is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.6:8006&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://ve.flowerhouse.at ve.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;List of servers running on ProxMox:&amp;lt;/p&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!|Name&lt;br /&gt;
!|Domain&lt;br /&gt;
!|Address&lt;br /&gt;
!|Type&lt;br /&gt;
|-&lt;br /&gt;
|[[LDAP]]&lt;br /&gt;
|[https://ldap.flowerhouse.at ldap.flowerhouse.at]&lt;br /&gt;
|x&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[AdGuard]]&lt;br /&gt;
|[https://dns.flowerhouse.at dns.flowerhouse.at]&lt;br /&gt;
|192.168.88.4&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Reverse-Proxy]]&lt;br /&gt;
|[https://proxy.flowerhouse.at proxy.flowerhouse.at]&lt;br /&gt;
|192.168.88.3&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[TrueNAS]]&lt;br /&gt;
|[https://nas.flowerhouse.at nas.flowerhouse.at]&lt;br /&gt;
|192.168.88.5&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[NextCloud]]&lt;br /&gt;
|[https://cloud.flowerhouse.at cloud.flowerhouse.at]&lt;br /&gt;
|192.168.88.9&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|[https://home.flowerhouse.at home.flowerhouse.at]&lt;br /&gt;
|192.168.88.10&lt;br /&gt;
|VM&lt;br /&gt;
|-&lt;br /&gt;
|[[Heater]]&lt;br /&gt;
|[https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|192.168.88.11&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[DataBase]]&lt;br /&gt;
|[https://db.flowerhouse.at db.flowerhouse.at]&lt;br /&gt;
|192.168.88.13&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[MediaWiki]]&lt;br /&gt;
|[https://wiki.flowerhouse.at wiki.flowerhouse.at]&lt;br /&gt;
|192.168.88.14&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[BitWarden]]&lt;br /&gt;
|[https://vault.flowerhouse.at vault.flowerhouse.at]&lt;br /&gt;
|192.168.88.15&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[PartDB]]&lt;br /&gt;
|[https://parts.flowerhouse.at parts.flowerhouse.at]&lt;br /&gt;
|192.168.88.16&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jellyfin]]&lt;br /&gt;
|[https://media.flowerhouse.at media.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[KavitaReader]]&lt;br /&gt;
|[https://reader.flowerhouse.at reader.flowerhouse.at]&lt;br /&gt;
|192.168.88.17&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Jupyter]]&lt;br /&gt;
|[https://jupyter.flowerhouse.at jupyter.flowerhouse.at]&lt;br /&gt;
|192.168.88.18&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[ChatMatrix]]&lt;br /&gt;
|[https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|192.168.88.19&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|[[Koel]]&lt;br /&gt;
|inactive&lt;br /&gt;
|inactive&lt;br /&gt;
|LXC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&amp;lt;p&amp;gt;The server base is a [https://www.dell.com/support/home/de-at/product-support/product/poweredge-t320/overview Dell PowerEdge T320] bought on ebay.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:Dell t320.jpg|130px|thumb|right|Dell T320]]&lt;br /&gt;
* 2x400GB Intel SSD DC-S3700&lt;br /&gt;
* 4x3TB HDD&lt;br /&gt;
* 96GB ECC-RAM&lt;br /&gt;
* [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB]&lt;br /&gt;
* 1xH310 Perc Card (HBA modded)&lt;br /&gt;
* 2x495W PSU&lt;br /&gt;
=== SSD (Raid1) ===&lt;br /&gt;
[[File:Intel ssd.jpg|130px|thumb|right|Intel DC-S3700]]&lt;br /&gt;
&amp;lt;p&amp;gt;Two &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Intel DC-S3700 (400GB)&amp;lt;/syntaxhighlight&amp;gt; Enterprise-SSDs where bought and installed internal running in Raid1 for ProxMox and the VMs/LXCs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since there weren&#039;t any other SATA-Ports except for the ones on the RAID-Controller available, an adapter had to be installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mainboard there was one unused [https://de.wikipedia.org/wiki/Serial_Attached_SCSI SFF-8087]-Port, so an &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;SFF-8087 (male) to 4xSATA (female) adapter cable&amp;lt;/syntaxhighlight&amp;gt; got installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAID-Controller ===&lt;br /&gt;
&amp;lt;p&amp;gt;The RAID-Controller &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is installed, but I wanted an HBA-Controller, because I am using an software raid (zfs) and not an hardware raid.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;Perc H310&amp;lt;/syntaxhighlight&amp;gt; is identically constructed as its counter part HBA-Controller it is possible to overwrite the firmware according to [https://www.taste-of-it.de/flash-dell-perc-h310-mit-lsi-9211-8i-it-mode/ this instructions].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&amp;lt;p&amp;gt;Originally the CPU Intel [https://ark.intel.com/content/www/us/en/ark/products/64614/intel-xeon-processor-e52407-10m-cache-2-20-ghz-6-40-gts-intel-qpi.html E5-2407] was installed but since the hardware is already a bit old it is possible to buy it cheap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I decided to install the best availaible CPU for the Socket FCLGA1356 which is the [https://ark.intel.com/content/www/de/de/ark/products/75266/intel-xeon-processor-e5-2470-v2-25m-cache-2-40-ghz.html Intel Xeon E5-2470V2 2.40GHz 10-Core 25MB].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fan ===&lt;br /&gt;
&amp;lt;p&amp;gt;At the beginning the original fan was used because it was quiet enough, but after installing the HHDs it got really loud.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It seems the mainboard adjust the fan according to the amount of PCIE-devices installed and it is not possible to change much of the fans behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The only solution was to replace the fan with an more quiet one, so the [https://noctua.at/de/nf-a12x25-pwm Noctua NF-A12x25] got installed.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1001</id>
		<title>Heater</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1001"/>
		<updated>2023-02-11T19:33:44Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Froeling.jpg&lt;br /&gt;
|Domain = [https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.11&lt;br /&gt;
|MAC = DA:62:17:83:4E:8F&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Heater-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.11&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://heater.flowerhouse.at heater.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Serial-IP-Konverter is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;de_DE.UTF-8&amp;lt;/syntaxhighlight&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libwebsockets ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pkg-config cmake git build-essential libssl-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Clone &#039;&#039;libwebsockets&#039;&#039; repo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
git clone https://libwebsockets.org/repo/libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create build directory:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd libwebsockets&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Run make to build &#039;&#039;libwebsockets&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cmake ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the necessary links and cache:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ldconfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete unnecessary files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== p4d daemon ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadb-dev-compat uuid-dev python3-dev libcap-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download latest version:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz&lt;br /&gt;
tar -xvf 0.8.8.tar.gz&lt;br /&gt;
rm 0.8.8.tar.gz&lt;br /&gt;
mv linux-p4d-0.8.8 linux-p4d&lt;br /&gt;
cd linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Build it:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1&lt;br /&gt;
make install NO_RASPBERRY_PI=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete build files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database at [[DataBase]] and add credentials to &#039;&#039;daemon.conf&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/p4d/daemon.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-IP-Converter ===&lt;br /&gt;
&amp;lt;p&amp;gt;Access the Serial-IP-Converter-UI under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; with &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;user: admin&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;pw: admin&amp;lt;/syntaxhighlight&amp;gt; and set the UART-settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Serial settings.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install socat:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Connect to Serial-IP-Converter with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For it to connect at boot we have create an service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/socat.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SOCAT Listen Service&lt;br /&gt;
After=network.target redis.service&lt;br /&gt;
Wants=redis.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
StandardError=journal&lt;br /&gt;
SyslogIdentifier=socat-serial-log&lt;br /&gt;
User=root&lt;br /&gt;
ExecStart=/bin/bash -c &#039;/usr/bin/socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&#039;&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check if service is running:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start socat&lt;br /&gt;
systemctl status socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable service to start at boot:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Interface Setup ===&lt;br /&gt;
&amp;lt;p&amp;gt;The default port of the web interface is 1111, the default username is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt; and the password is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Fist steps to enable data logging:&amp;lt;/p&amp;gt;&lt;br /&gt;
# Log in to the web interface&lt;br /&gt;
# Click &#039;&#039;Init Messwerte&#039;&#039;&lt;br /&gt;
# Go to &#039;&#039;Aufzeichnung&#039;&#039; and select the values you like to record and store your selection and save&lt;br /&gt;
# Go to &#039;&#039;Setup&#039;&#039; and click &#039;Init Service Menü&#039;&lt;br /&gt;
&lt;br /&gt;
== Update Script ==&lt;br /&gt;
&amp;lt;p&amp;gt;Bash script to update p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Variables&lt;br /&gt;
name=&amp;quot;P4D&amp;quot;&lt;br /&gt;
repo=&amp;quot;horchi/linux-p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
binary_path=&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
binary_name=&amp;quot;p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ===== VERSION CHECKING, CUSTOMIZE VARIBLES FOR IT =====&lt;br /&gt;
# Get current version&lt;br /&gt;
current=$($binary_path/$binary_name -v)&lt;br /&gt;
&lt;br /&gt;
# Retain everything after last space&lt;br /&gt;
current=${current//[!0-9.]/}&lt;br /&gt;
&lt;br /&gt;
# Get latest release tag&lt;br /&gt;
latest=$(curl -sL https://api.github.com/repos/$repo/tags | jq -r &#039;.[0].name&#039;)&lt;br /&gt;
&lt;br /&gt;
# Check if new version available&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; == &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is up to date&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Check if repo is deprecated&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; &amp;gt; &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is newer than available version, repository deprecated?&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;--------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Write information&lt;br /&gt;
echo -e &amp;quot;--------------------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update ${name} ${current} to ${latest}?&amp;quot;&lt;br /&gt;
echo -e &amp;quot;--------------------------------------------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo -e -n &amp;quot;Continue? [y/N]&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
read -n 1 c&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${c}&amp;quot; != &amp;quot;y&amp;quot; ]; then&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# ===== INSTALLATION PART, CUSTOMIZE FOR EACH SOFTWARE =====&lt;br /&gt;
# Go to folder&lt;br /&gt;
cd /usr/src&lt;br /&gt;
&lt;br /&gt;
# Download files&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Untar files&lt;br /&gt;
tar -xvf ${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Enter folder&lt;br /&gt;
cd linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# Start compiling&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
make install NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
&lt;br /&gt;
# Exit folder&lt;br /&gt;
cd .. || exit 1&lt;br /&gt;
&lt;br /&gt;
# Restart p4d&lt;br /&gt;
systemctl restart p4d || exit 1&lt;br /&gt;
&lt;br /&gt;
# Remove old files&lt;br /&gt;
rm ${latest}.tar.gz || exit 1&lt;br /&gt;
rm -r linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# ===== FINISH INSTALLATION SCRIPT ====&lt;br /&gt;
echo -e &amp;quot;-----------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update to ${latest} completed!&amp;quot;&lt;br /&gt;
echo -e &amp;quot;-----------------------------------&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Configuration ==&lt;br /&gt;
=== Mail Notification ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install msmtp-mta bsd-mailx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the msmspt configuration file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/msmtprc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And paste following entry:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; line&amp;gt;&lt;br /&gt;
# Set default values for all following accounts.&lt;br /&gt;
defaults&lt;br /&gt;
port 587&lt;br /&gt;
tls on&lt;br /&gt;
tls_trust_file /etc/ssl/certs/ca-certificates.crt&lt;br /&gt;
&lt;br /&gt;
account flowerhouse&lt;br /&gt;
host smtp.world4you.com&lt;br /&gt;
from heater@flowerhouse.at&lt;br /&gt;
auth on&lt;br /&gt;
user heater@flowerhouse.at&lt;br /&gt;
password XXXXXXX&lt;br /&gt;
&lt;br /&gt;
# Set a default account&lt;br /&gt;
account default : flowerhouse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The setup can be tested with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
mail -s &amp;quot;test&amp;quot; address@email.com &amp;lt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If the setup is working, go to the webinterface and configure the mail notifications in the setup page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/horchi/linux-p4d p4d]&lt;br /&gt;
* [https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp SoCat]&lt;br /&gt;
* [https://forum.iobroker.net/topic/24792/gel%C3%B6st-adapter-smartmeter-per-ser2net-und-socat/3 SoCat-Service]&lt;br /&gt;
* [https://wiki.debian.org/msmtp Mail-Service]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1000</id>
		<title>Heater</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=Heater&amp;diff=1000"/>
		<updated>2023-02-11T19:30:59Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Update Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Froeling.jpg&lt;br /&gt;
|Domain = [https://heater.flowerhouse.at heater.flowerhouse.at]&lt;br /&gt;
|IP = 192.168.88.11&lt;br /&gt;
|MAC = DA:62:17:83:4E:8F&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 512MB&lt;br /&gt;
|Cores = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Heater-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.11&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://heater.flowerhouse.at heater.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Serial-IP-Konverter is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;de_DE.UTF-8&amp;lt;/syntaxhighlight&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libwebsockets ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pkg-config cmake git build-essential libssl-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Clone &#039;&#039;libwebsockets&#039;&#039; repo:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
git clone https://libwebsockets.org/repo/libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create build directory:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd libwebsockets&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Run make to build &#039;&#039;libwebsockets&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cmake ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the necessary links and cache:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ldconfig&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete unnecessary files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r libwebsockets&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== p4d daemon ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadb-dev-compat uuid-dev python3-dev libcap-dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download latest version:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz&lt;br /&gt;
tar -xvf 0.8.8.tar.gz&lt;br /&gt;
rm 0.8.8.tar.gz&lt;br /&gt;
mv linux-p4d-0.8.8 linux-p4d&lt;br /&gt;
cd linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Build it:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1&lt;br /&gt;
make install NO_RASPBERRY_PI=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Delete build files:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /usr/src&lt;br /&gt;
rm -r linux-p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database at [[DataBase]] and add credentials to &#039;&#039;daemon.conf&#039;&#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/p4d/daemon.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start p4d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial-IP-Converter ===&lt;br /&gt;
&amp;lt;p&amp;gt;Access the Serial-IP-Converter-UI under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.12&amp;lt;/syntaxhighlight&amp;gt; with &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;user: admin&amp;lt;/syntaxhighlight&amp;gt; and &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;pw: admin&amp;lt;/syntaxhighlight&amp;gt; and set the UART-settings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Serial settings.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install socat:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Connect to Serial-IP-Converter with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For it to connect at boot we have create an service:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/socat.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SOCAT Listen Service&lt;br /&gt;
After=network.target redis.service&lt;br /&gt;
Wants=redis.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
StandardError=journal&lt;br /&gt;
SyslogIdentifier=socat-serial-log&lt;br /&gt;
User=root&lt;br /&gt;
ExecStart=/bin/bash -c &#039;/usr/bin/socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&#039;&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check if service is running:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start socat&lt;br /&gt;
systemctl status socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable service to start at boot:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable socat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Interface Setup ===&lt;br /&gt;
&amp;lt;p&amp;gt;The default port of the web interface is 1111, the default username is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt; and the password is &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;p4&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Fist steps to enable data logging:&amp;lt;/p&amp;gt;&lt;br /&gt;
# Log in to the web interface&lt;br /&gt;
# Click &#039;&#039;Init Messwerte&#039;&#039;&lt;br /&gt;
# Go to &#039;&#039;Aufzeichnung&#039;&#039; and select the values you like to record and store your selection and save&lt;br /&gt;
# Go to &#039;&#039;Setup&#039;&#039; and click &#039;Init Service Menü&#039;&lt;br /&gt;
&lt;br /&gt;
== Update Script ==&lt;br /&gt;
&amp;lt;p&amp;gt;Bash script to update p4d:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Variables&lt;br /&gt;
name=&amp;quot;P4D&amp;quot;&lt;br /&gt;
repo=&amp;quot;horchi/linux-p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
binary_path=&amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
binary_name=&amp;quot;p4d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ===== VERSION CHECKING, CUSTOMIZE VARIBLES FOR IT =====&lt;br /&gt;
# Get current version&lt;br /&gt;
current=$($binary_path/$binary_name -v)&lt;br /&gt;
&lt;br /&gt;
# Retain everything after last space&lt;br /&gt;
current=${current//[!0-9.]/}&lt;br /&gt;
&lt;br /&gt;
# Get latest release tag&lt;br /&gt;
latest=$(curl -sL https://api.github.com/repos/$repo/tags | jq -r &#039;.[0].name&#039;)&lt;br /&gt;
&lt;br /&gt;
# Check if new version available&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; == &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is up to date&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Check if repo is deprecated&lt;br /&gt;
if ((&amp;quot;$(expr ${current//[!0-9]/} + 0)&amp;quot; &amp;gt; &amp;quot;$(expr ${latest//[!0-9]/} + 0)&amp;quot;)); then&lt;br /&gt;
        echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;- Installed ${current} is newer than available version, repository deprecated?&amp;quot;&lt;br /&gt;
        echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Write information&lt;br /&gt;
echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update ${name} ${current} to ${latest}?&amp;quot;&lt;br /&gt;
echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo -e -n &amp;quot;Continue? [y/N]&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
read -n 1 c&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${c}&amp;quot; != &amp;quot;y&amp;quot; ]; then&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# ===== INSTALLATION PART, CUSTOMIZE FOR EACH SOFTWARE =====&lt;br /&gt;
# Go to folder&lt;br /&gt;
cd /usr/src&lt;br /&gt;
&lt;br /&gt;
# Download files&lt;br /&gt;
wget https://github.com/horchi/linux-p4d/archive/refs/tags/${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Untar files&lt;br /&gt;
tar -xvf ${latest}.tar.gz || exit 1&lt;br /&gt;
&lt;br /&gt;
# Enter folder&lt;br /&gt;
cd linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# Start compiling&lt;br /&gt;
make clean all NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
make install NO_RASPBERRY_PI=1 || exit 1&lt;br /&gt;
&lt;br /&gt;
# Exit folder&lt;br /&gt;
cd .. || exit 1&lt;br /&gt;
&lt;br /&gt;
# Restart p4d&lt;br /&gt;
systemctl restart p4d || exit 1&lt;br /&gt;
&lt;br /&gt;
# Remove old files&lt;br /&gt;
rm ${latest}.tar.gz || exit 1&lt;br /&gt;
rm -r linux-p4d-${latest} || exit 1&lt;br /&gt;
&lt;br /&gt;
# ===== FINISH INSTALLATION SCRIPT ====&lt;br /&gt;
echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
echo -e &amp;quot;- Update to ${latest} completed!&amp;quot;&lt;br /&gt;
echo -e &amp;quot;-------------------------------------------------------------------------------------------&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Configuration ==&lt;br /&gt;
=== Mail Notification ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install msmtp-mta bsd-mailx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create the msmspt configuration file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/msmtprc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;And paste following entry:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; line&amp;gt;&lt;br /&gt;
# Set default values for all following accounts.&lt;br /&gt;
defaults&lt;br /&gt;
port 587&lt;br /&gt;
tls on&lt;br /&gt;
tls_trust_file /etc/ssl/certs/ca-certificates.crt&lt;br /&gt;
&lt;br /&gt;
account flowerhouse&lt;br /&gt;
host smtp.world4you.com&lt;br /&gt;
from heater@flowerhouse.at&lt;br /&gt;
auth on&lt;br /&gt;
user heater@flowerhouse.at&lt;br /&gt;
password XXXXXXX&lt;br /&gt;
&lt;br /&gt;
# Set a default account&lt;br /&gt;
account default : flowerhouse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The setup can be tested with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
mail -s &amp;quot;test&amp;quot; address@email.com &amp;lt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If the setup is working, go to the webinterface and configure the mail notifications in the setup page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* [https://github.com/horchi/linux-p4d p4d]&lt;br /&gt;
* [https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp SoCat]&lt;br /&gt;
* [https://forum.iobroker.net/topic/24792/gel%C3%B6st-adapter-smartmeter-per-ser2net-und-socat/3 SoCat-Service]&lt;br /&gt;
* [https://wiki.debian.org/msmtp Mail-Service]&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=999</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=999"/>
		<updated>2022-08-30T15:32:43Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Basic Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change locales to de_AT.UTF-8 for special characters&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=998</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=998"/>
		<updated>2022-08-23T16:38:05Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL https://matrix.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=997</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=997"/>
		<updated>2022-08-19T21:10:32Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Install Element WebClient */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;br /&gt;
&amp;lt;p&amp;gt;Install webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from: https://github.com/vector-im/element-web/releases/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Untar and rename&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
tar -xvf element-v1.11.1.tar.gz&lt;br /&gt;
mv element-v1.11.1 element&lt;br /&gt;
rm element-v1.11.1.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure host&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add to file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    DocumentRoot /var/www/element&lt;br /&gt;
    &amp;lt;Directory /var/www/element&amp;gt;&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Order Allow,Deny&lt;br /&gt;
        Allow from All&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ErrorLog /var/log/apache2/element_error.log&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate new site&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /etc/apache2/sites-available/element.conf /etc/apache2/sites-enabled/element.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To access via the IP-Address of the server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
rm /etc/apache2/sites-enabled/000-default.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Configure apache to show pretty URL pathes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart webserver&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd element&lt;br /&gt;
cp config.sample.json config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit config file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=996</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=996"/>
		<updated>2022-08-19T20:59:19Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Install Bridges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Element WebClient ==&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=995</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=995"/>
		<updated>2022-08-19T14:08:00Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=994</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=994"/>
		<updated>2022-08-19T14:07:19Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/latest/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=993</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=993"/>
		<updated>2022-08-19T14:03:42Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* .well-known */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=992</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=992"/>
		<updated>2022-08-19T14:03:35Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Setting up reverse proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse/client)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api change location&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=991</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=991"/>
		<updated>2022-08-19T14:02:46Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Setting up reverse proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
Details:&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 80&lt;br /&gt;
Custom Locations:&lt;br /&gt;
  location: ~ ^(/_matrix|/_synapse)&lt;br /&gt;
  Scheme: http&lt;br /&gt;
  Forward Hostname / IP: 192.168.88.19&lt;br /&gt;
  Port: 8008&lt;br /&gt;
Advanced:&lt;br /&gt;
  listen 8448 ssl http2 default_server;&lt;br /&gt;
  listen [::]:8448 ssl http2 default_server;&lt;br /&gt;
&lt;br /&gt;
  server_name matrix.flowerhouse.at;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api, change custom location to&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=990</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=990"/>
		<updated>2022-08-19T13:55:55Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Setting up reverse proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;id&amp;quot;: 3,&lt;br /&gt;
  &amp;quot;created_on&amp;quot;: &amp;quot;2022-07-28 21:08:35&amp;quot;,&lt;br /&gt;
  &amp;quot;modified_on&amp;quot;: &amp;quot;2022-08-19 01:23:10&amp;quot;,&lt;br /&gt;
  &amp;quot;owner_user_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;domain_names&amp;quot;: [&lt;br /&gt;
    &amp;quot;matrix.flowerhouse.at&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;forward_host&amp;quot;: &amp;quot;192.168.88.19&amp;quot;,&lt;br /&gt;
  &amp;quot;forward_port&amp;quot;: 80,&lt;br /&gt;
  &amp;quot;access_list_id&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;certificate_id&amp;quot;: 25,&lt;br /&gt;
  &amp;quot;ssl_forced&amp;quot;: true,&lt;br /&gt;
  &amp;quot;caching_enabled&amp;quot;: true,&lt;br /&gt;
  &amp;quot;block_exploits&amp;quot;: true,&lt;br /&gt;
  &amp;quot;advanced_config&amp;quot;: &amp;quot;listen 8448 ssl http2 default_server;\r\nlisten [::]:8448 ssl http2 default_server;\r\n\r\nserver_name matrix.flowerhouse.at;&amp;quot;,&lt;br /&gt;
  &amp;quot;meta&amp;quot;: {&lt;br /&gt;
    &amp;quot;letsencrypt_agree&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dns_challenge&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;allow_websocket_upgrade&amp;quot;: true,&lt;br /&gt;
  &amp;quot;http2_support&amp;quot;: true,&lt;br /&gt;
  &amp;quot;forward_scheme&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
  &amp;quot;enabled&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;locations&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;path&amp;quot;: &amp;quot;~ ^(/_matrix|/_synapse/client)&amp;quot;,&lt;br /&gt;
      &amp;quot;advanced_config&amp;quot;: &amp;quot;proxy_set_header X-Forwarded-For $remote_addr;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header Host $host;\n\n# Nginx by default only allows file uploads up to 1M in size\nclient_max_body_size 50M;&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_scheme&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_host&amp;quot;: &amp;quot;192.168.88.19&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_port&amp;quot;: 8008&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;hsts_enabled&amp;quot;: true,&lt;br /&gt;
  &amp;quot;hsts_subdomains&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api, change custom location to&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .well-known ===&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
	<entry>
		<id>https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=989</id>
		<title>ChatMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flowerhouse.at/index.php?title=ChatMatrix&amp;diff=989"/>
		<updated>2022-08-19T13:55:04Z</updated>

		<summary type="html">&lt;p&gt;Tropaion: /* Setting up reverse proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ContainerInfo&lt;br /&gt;
|image = Matrix-logo.png&lt;br /&gt;
|Domain = [https://chat.flowerhouse.at chat.flowerhouse.at]&lt;br /&gt;
|MAC = BE:B1:89:38:28:44&lt;br /&gt;
|IP = 192.168.88.19&lt;br /&gt;
|Privileged = No&lt;br /&gt;
|OS = Debian Bullseye&lt;br /&gt;
|RAM = 4096MB&lt;br /&gt;
|Cores = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The ChatMatrix-LXC is reachable under &amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; inline&amp;gt;192.168.88.19&amp;lt;/syntaxhighlight&amp;gt; which is located in the ServerVLAN.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The subdomain is [https://chat.flowerhouse.at chat.flowerhouse.at] which is handled by the [[ReverseProxy]].&amp;lt;/p&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Basic Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Be up to date&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Change timezone&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
timedatectl set-timezone Europe/Berlin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install -y lsb-release wget apt-transport-https&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&amp;quot; | tee /etc/apt/sources.list.d/matrix-org.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install matrix-synapse-py3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Postgres database ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install libpq5 postgresql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt synapse_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit the database entry&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
database:&lt;br /&gt;
  name: psycopg2&lt;br /&gt;
  args:&lt;br /&gt;
    user: synapse_user&lt;br /&gt;
    password: &amp;lt;pass&amp;gt;&lt;br /&gt;
    database: synapse&lt;br /&gt;
    host: localhost&lt;br /&gt;
    cp_min: 5&lt;br /&gt;
    cp_max: 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
systemctl status matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up reverse proxy ===&lt;br /&gt;
&amp;lt;p&amp;gt;NGINX Proxy Manager configuration without exposing admin API&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;id&amp;quot;: 3,&lt;br /&gt;
  &amp;quot;created_on&amp;quot;: &amp;quot;2022-07-28 21:08:35&amp;quot;,&lt;br /&gt;
  &amp;quot;modified_on&amp;quot;: &amp;quot;2022-08-19 01:23:10&amp;quot;,&lt;br /&gt;
  &amp;quot;owner_user_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;domain_names&amp;quot;: [&lt;br /&gt;
    &amp;quot;matrix.flowerhouse.at&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;forward_host&amp;quot;: &amp;quot;192.168.88.19&amp;quot;,&lt;br /&gt;
  &amp;quot;forward_port&amp;quot;: 80,&lt;br /&gt;
  &amp;quot;access_list_id&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;certificate_id&amp;quot;: 25,&lt;br /&gt;
  &amp;quot;ssl_forced&amp;quot;: true,&lt;br /&gt;
  &amp;quot;caching_enabled&amp;quot;: true,&lt;br /&gt;
  &amp;quot;block_exploits&amp;quot;: true,&lt;br /&gt;
  &amp;quot;advanced_config&amp;quot;: &amp;quot;listen 8448 ssl http2 default_server;\r\nlisten [::]:8448 ssl http2 default_server;\r\n\r\nserver_name matrix.flowerhouse.at;&amp;quot;,&lt;br /&gt;
  &amp;quot;meta&amp;quot;: {&lt;br /&gt;
    &amp;quot;letsencrypt_agree&amp;quot;: false,&lt;br /&gt;
    &amp;quot;dns_challenge&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;allow_websocket_upgrade&amp;quot;: true,&lt;br /&gt;
  &amp;quot;http2_support&amp;quot;: true,&lt;br /&gt;
  &amp;quot;forward_scheme&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
  &amp;quot;enabled&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;locations&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;path&amp;quot;: &amp;quot;~ ^(/_matrix|/_synapse/client)&amp;quot;,&lt;br /&gt;
      &amp;quot;advanced_config&amp;quot;: &amp;quot;proxy_set_header X-Forwarded-For $remote_addr;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header Host $host;\n\n# Nginx by default only allows file uploads up to 1M in size\nclient_max_body_size 50M;&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_scheme&amp;quot;: &amp;quot;http&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_host&amp;quot;: &amp;quot;192.168.88.19&amp;quot;,&lt;br /&gt;
      &amp;quot;forward_port&amp;quot;: 8008&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;hsts_enabled&amp;quot;: true,&lt;br /&gt;
  &amp;quot;hsts_subdomains&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to expose admin api, change custom location to&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
~ ^(/_matrix|/_synapse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if federation configuration is correct: https://federationtester.matrix.org/&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add User ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional ===&lt;br /&gt;
==== Configure puppeting ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install required packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install pip git pwgen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate synapse virtual enviroment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/venvs/matrix-synapse&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install packages&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
pip install git+https://github.com/devture/matrix-synapse-shared-secret-auth&lt;br /&gt;
deactivate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate shared secret&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pwgen -s 128 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit configuration and add [https://github.com/devture/matrix-synapse-shared-secret-auth#configuring configuration]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;General information about [https://docs.mau.fi/bridges/general/double-puppeting.html puppeting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administration ===&lt;br /&gt;
Administration-Tools:&lt;br /&gt;
* https://github.com/Awesome-Technologies/synapse-admin (WebUI)&lt;br /&gt;
* https://github.com/JOJ0/synadm (Console)&lt;br /&gt;
Or make API-Request with curl&lt;br /&gt;
&lt;br /&gt;
== Install Bridges ==&lt;br /&gt;
&amp;lt;p&amp;gt;ffmpeg is needed to support media files&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install ffmpeg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WhatsApp ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-whatsapp --home /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enter user folder&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
cd /opt/mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Download binary from https://github.com/mautrix/whatsapp/releases&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
wget https://github.com/mautrix/whatsapp/releases/download/v0.5.0/mautrix-whatsapp-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rename binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
mv mautrix-whatsapp-amd64 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt whatsapp_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=whatsapp_user whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create and paste config file: [[mautrix-whatsapp-config.yaml]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 755 mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate the appservice registration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Modify permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chmod 555 registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-whatsapp/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
./mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/go/setup.html?bridge=whatsapp#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-whatsapp.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-whatsapp&lt;br /&gt;
systemctl status mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-whatsapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal ===&lt;br /&gt;
==== Install Signald ====&lt;br /&gt;
&amp;lt;p&amp;gt;Add repository&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
wget -O /usr/share/keyrings/signald-org-archive-keyring.asc https://updates.signald.org/apt-signing-key.asc&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/signald-org-archive-keyring.asc] https://updates.signald.org unstable main&amp;quot; | tee /etc/apt/sources.list.d/signald.list&lt;br /&gt;
apt update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signald&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
apt install signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if it works correctly&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start signald&lt;br /&gt;
systemctl status signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable signald&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Install Bridge ====&lt;br /&gt;
&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
apt install python pip libolm-dev&lt;br /&gt;
pip install virtualenv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge and join signald group&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-signal --home /opt/mautrix-signal&lt;br /&gt;
usermod -aG signald mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-signal[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt signal_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=signal_user signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-signal:root ../mautrix-signal/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-signal/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=signal service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-signal.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-signal&lt;br /&gt;
systemctl status mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-signal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Telegram ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-telegram --home /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install signal bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install --upgrade mautrix-telegram[all]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Create database ====&lt;br /&gt;
&amp;lt;p&amp;gt;Open Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
su - postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createuser --pwprompt telegram_user&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create database for mautrix-whatsapp&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
createdb --encoding=UTF8 --locale=C --template=template0 --owner=telegram_user telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Exit Postgres console&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;Copy configuration file and edit...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cp example-config.yaml config.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram -g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-telegram:root ../mautrix-telegram/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-telegram/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m mautrix_telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [https://docs.mau.fi/bridges/python/setup.html?bridge=telegram#systemd-service service]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-telegram.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-telegram&lt;br /&gt;
systemctl status mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-telegram&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create user for bridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
adduser --system mautrix-irc --home /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Go to directory&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Create virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
virtualenv -p /usr/bin/python3 .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Activate virtual environment&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
source ./bin/activate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Install heisenbridge&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
pip install heisenbridge&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Generate access file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --generate&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Set permissions&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
chown -R mautrix-irc:root ../mautrix-irc/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Edit matrix-synapse configuration file&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/matrix-synapse/homeserver.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To register WhatsApp add following lines&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
app_service_config_files:&lt;br /&gt;
- /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Restart matrix-synapse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart matrix-synapse&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Check if bridge works&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
python -m heisenbridge -c /opt/mautrix-irc/registration.yaml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If no .well-known file is configured, startup may take a few minutes&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== systemd service ====&lt;br /&gt;
&amp;lt;p&amp;gt;Create systemd service file and copy from [[mautrix-irc.service]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/systemd/system/mautrix-irc.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Apply changes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Start and check status&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot; line&amp;gt;&lt;br /&gt;
systemctl start mautrix-irc&lt;br /&gt;
systemctl status mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Enable autostart&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable mautrix-irc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&amp;lt;p&amp;gt;This bridge is not configured with an config file but via the bot chat.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first person chatting with the bot will automatically be set as the admin.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Set mediaurl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
MEDIAURL chat.flowerhouse.at&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tropaion</name></author>
	</entry>
</feed>