matrix-alertbot/docker/README.md

103 lines
2.7 KiB
Markdown
Raw Normal View History

2020-08-12 02:37:23 +02:00
# Docker
2022-06-13 20:55:01 +02:00
The docker image will run matrix-alertbot with a SQLite database and
2020-08-12 02:37:23 +02:00
end-to-end encryption dependencies included. For larger deployments, a
connection to a Postgres database backend is recommended.
## Setup
### The `/data` volume
The docker container expects the `config.yaml` file to exist at
2022-08-13 13:48:49 +02:00
`/data/config.yaml` . To easily configure this, it is recommended to create a
2020-08-12 02:37:23 +02:00
directory on your filesystem, and mount it as `/data` inside the container:
```
mkdir data
```
We'll later mount this directory into the container so that its contents
persist across container restarts.
### Creating a config file
2022-08-13 13:33:14 +02:00
Copy `config.sample.yaml` to a file named `config.yaml` inside of your newly
2020-08-12 02:37:23 +02:00
created `data` directory. Fill it out as you normally would, with a few minor
differences:
* The bot store directory should reside inside of the data directory so that it
2020-08-16 16:22:23 +02:00
is not wiped on container restart. Change it from the default to
2022-08-13 13:48:49 +02:00
`/data/store` . There is no need to create this directory yourself, it will be
2020-08-16 16:22:23 +02:00
created on startup if it does not exist.
2020-08-12 02:37:23 +02:00
2022-08-13 13:33:14 +02:00
* The bot cache directory should reside inside of the data directory as well,
so that alerts and silences related informations are not wiped on container
2022-08-13 13:48:49 +02:00
restart. Change it from the default to `/data/cache` .
2022-08-13 13:33:14 +02:00
There is no need to create this directory yourself, it will be created on
startup if it does not exist.
2020-08-12 02:37:23 +02:00
Change any other config values as necessary. For instance, you may also want to
store log files in the `/data` directory.
## Running
First, create a volume for the data directory created in the above section:
```
docker volume create \
--opt type=none \
--opt o=bind \
2022-06-13 20:55:01 +02:00
--opt device="/path/to/data/dir" matrix-alertbot
2020-08-12 02:37:23 +02:00
```
Start the bot with:
```
2022-08-13 13:33:14 +02:00
docker-compose up --build
2020-08-12 02:37:23 +02:00
```
This will run the bot and log the output to the terminal. You can instead run
the container detached with the `-d` flag:
```
2022-08-13 13:33:14 +02:00
docker-compose up -d --build
2020-08-12 02:37:23 +02:00
```
2022-08-13 13:33:14 +02:00
(Logs can later be accessed with the `docker-compose logs` command).
2020-08-12 02:37:23 +02:00
2022-08-13 13:33:14 +02:00
This will build an optimized, production-ready container.
2020-08-12 02:37:23 +02:00
## Systemd
A systemd service file is provided for your convenience at
2022-06-13 20:55:01 +02:00
[matrix-alertbot.service](matrix-alertbot.service). The service uses
2020-08-12 02:37:23 +02:00
`docker-compose` to start and stop the bot.
2022-06-13 20:55:01 +02:00
Copy the file to `/etc/systemd/system/matrix-alertbot.service` and edit to
2020-08-12 02:37:23 +02:00
match your setup. You can then start the bot with:
```
2022-06-13 20:55:01 +02:00
systemctl start matrix-alertbot
2020-08-12 02:37:23 +02:00
```
and stop it with:
```
2022-06-13 20:55:01 +02:00
systemctl stop matrix-alertbot
2020-08-12 02:37:23 +02:00
```
To run the bot on system startup:
```
2022-06-13 20:55:01 +02:00
systemctl enable matrix-alertbot
2020-08-12 02:37:23 +02:00
```
## Building the image
To build a production image from source, use the following `docker build` command
from the repo's root:
```
2022-06-13 20:55:01 +02:00
docker build -t neutrinet/matrix-alertbot:latest -f docker/Dockerfile .
2020-08-12 02:37:23 +02:00
```