82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
|
Matrix synapse service with IRC and Telegram gateways
|
||
|
=====================================================
|
||
|
|
||
|
A collection of systemd services that run synapse, matrix-appservice-irc
|
||
|
and mautrix-telegram in a read-only alpine squashfs image.
|
||
|
|
||
|
Building the squashfs image
|
||
|
---------------------------
|
||
|
|
||
|
Run:
|
||
|
|
||
|
``` {.sourceCode .shell}
|
||
|
$ sh build.sh
|
||
|
```
|
||
|
|
||
|
It will create a rootfs/ folder with an alpine filesystem, install
|
||
|
synapse, matrix-appservice-irc and mautrix-telegram and compress it into
|
||
|
a squashfs image that will be used as a root filesystem for the
|
||
|
container.
|
||
|
|
||
|
If the script finished successfully, you should get an \~50M matrix.raw
|
||
|
image.
|
||
|
|
||
|
Running the portable services
|
||
|
-----------------------------
|
||
|
|
||
|
Attach the container with `sudo portablectl attach ./matrix.raw`.
|
||
|
|
||
|
The output should look something like this:
|
||
|
|
||
|
``` {.sourceCode .shell}
|
||
|
$ sudo portablectl attach ./matrix.raw
|
||
|
|
||
|
Created directory /etc/systemd/system.attached.
|
||
|
Created directory /etc/systemd/system.attached/matrix.service.d.
|
||
|
Written /etc/systemd/system.attached/matrix.service.d/20-portable.conf.
|
||
|
Created symlink /etc/systemd/system.attached/matrix.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
|
||
|
Copied /etc/systemd/system.attached/matrix.service.
|
||
|
Created directory /etc/systemd/system.attached/matrix-telegram.service.d.
|
||
|
Written /etc/systemd/system.attached/matrix-telegram.service.d/20-portable.conf.
|
||
|
Created symlink /etc/systemd/system.attached/matrix-telegram.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
|
||
|
Copied /etc/systemd/system.attached/matrix-telegram.service.
|
||
|
Created directory /etc/systemd/system.attached/matrix-appservice-irc.service.d.
|
||
|
Written /etc/systemd/system.attached/matrix-appservice-irc.service.d/20-portable.conf.
|
||
|
Created symlink /etc/systemd/system.attached/matrix-appservice-irc.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
|
||
|
Copied /etc/systemd/system.attached/matrix-appservice-irc.service.
|
||
|
Created symlink /etc/portables/matrix.raw → /home/vladan/dev/portabled/alpine-matrix/matrix.raw.
|
||
|
```
|
||
|
|
||
|
Start/Stop as any other systemd service, e.g:
|
||
|
|
||
|
``` {.sourceCode .shell}
|
||
|
sudo systemctl start matrix-appservice-irc.service matrix-telegram.service
|
||
|
sudo systemctl stop matrix.service
|
||
|
```
|
||
|
|
||
|
Existing matrix installations
|
||
|
-----------------------------
|
||
|
|
||
|
1. Stop your current services.
|
||
|
2. Copy all configuration files to `/etc/matrix`.
|
||
|
3. Run all portable services, so that they create all directories in
|
||
|
`/var/lib`.
|
||
|
4. Copy all data files, e.g. homeserver.db if you\'re using sqlite,
|
||
|
media and upload folders for synapse, rooms.db for the irc gateway,
|
||
|
etc. to `/var/lib/matrix-{synapse,telegram,appservice-irc}`.
|
||
|
|
||
|
Warning
|
||
|
-------
|
||
|
|
||
|
You\'ll need to modify the configuration if the services are configured
|
||
|
to log to disk, i.e. modify any filesystem except
|
||
|
`/var/lib/matrix-{synapse,telegram,appservice-irc}`.
|
||
|
|
||
|
TODO
|
||
|
----
|
||
|
|
||
|
- Use a Makefile to build the image. Add attach, detach and clean
|
||
|
targets.
|
||
|
- Rename matrix.service to matrix-synapse.service and add
|
||
|
matrix.target that starts matrix.service
|