nyx-bot/SETUP.md

165 lines
3.9 KiB
Markdown
Raw Normal View History

2022-09-06 10:50:14 +02:00
# Setup
2022-09-06 11:16:36 +02:00
_(This requires changing.)_
2022-09-06 10:50:14 +02:00
## Install the dependencies
There are two paths to installing the dependencies for development.
### Using `docker-compose`
2022-09-13 00:23:14 +02:00
You can use Docker Compose to run the bot while
2022-09-06 10:50:14 +02:00
developing, as all necessary dependencies are handled for you. After
installation and ensuring the `docker-compose` command works, you need to:
1. Create a data directory and config file by following the
[docker setup instructions](docker#setup).
2. Create a docker volume pointing to that directory:
```
docker volume create \
--opt type=none \
--opt o=bind \
--opt device="/path/to/data/dir" data_volume
```
Run `docker/start-dev.sh` to start the bot.
**Note:** If you are trying to connect to a Synapse instance running on the
host, you need to allow the IP address of the docker container to connect. This
is controlled by `bind_addresses` in the `listeners` section of Synapse's
config. If present, either add the docker internal IP address to the list, or
remove the option altogether to allow all addresses.
### Running natively
If you would rather not or are unable to run docker, the following will
instruct you on how to install the dependencies natively:
2022-09-13 00:23:14 +02:00
#### Install libolm (optional)
2022-09-06 10:50:14 +02:00
You can install [libolm](https://gitlab.matrix.org/matrix-org/olm) from source,
or alternatively, check your system's package manager. Version `3.0.0` or
greater is required.
**(Optional) postgres development headers**
By default, the bot uses SQLite as its storage backend. This is fine for a few
hundred users, but if you plan to support a much higher volume of requests, you
may consider using Postgres as a database backend instead.
If you want to use postgres as a database backend, you'll need to install
postgres development headers:
Debian/Ubuntu:
```
sudo apt install libpq-dev libpq5
```
Arch:
```
sudo pacman -S postgresql-libs
```
#### Install Python dependencies
Create and activate a Python 3 virtual environment:
```
virtualenv -p python3 env
source env/bin/activate
```
Install python dependencies:
```
pip install -e .
```
2022-09-13 00:23:14 +02:00
This projects uses [Wand](https://docs.wand-py.org) and requires you to install ImageMagick library.
Debian/Ubuntu:
```
sudo apt install libmagickwand-dev
```
Arch:
```
sudo pacman -S imagemagick
```
2022-09-06 10:50:14 +02:00
(Optional) If you want to use postgres as a database backend, use the following
command to install postgres dependencies alongside those that are necessary:
```
pip install -e ".[postgres]"
```
## Configuration
Copy the sample configuration file to a new `config.yaml` file.
```
cp sample.config.yaml config.yaml
```
Edit the config file. The `matrix` section must be modified at least.
#### (Optional) Set up a Postgres database
Create a postgres user and database for matrix-reminder-bot:
```
sudo -u postgresql psql createuser nio-template -W # prompts for a password
sudo -u postgresql psql createdb -O nio-template nio-template
```
Edit the `storage.database` config option, replacing the `sqlite://...` string with `postgres://...`. The syntax is:
```
database: "postgres://username:password@localhost/dbname?sslmode=disable"
```
See also the comments in `sample.config.yaml`.
## Running
### Docker
Refer to the docker [run instructions](docker/README.md#running).
### Native installation
Make sure to source your python environment if you haven't already:
```
source env/bin/activate
```
Then simply run the bot with:
```
2022-09-13 00:23:14 +02:00
nyx-bot
2022-09-06 10:50:14 +02:00
```
2022-09-13 00:23:14 +02:00
You'll notice that "nyx-bot" is scattered throughout the codebase. When
2022-09-06 10:50:14 +02:00
it comes time to modifying the code for your own purposes, you are expected to
2022-09-13 00:23:14 +02:00
replace every instance of "nyx-bot" and its variances with your own
2022-09-06 10:50:14 +02:00
project's name.
By default, the bot will run with the config file at `./config.yaml`. However, an
alternative relative or absolute filepath can be specified after the command:
```
2022-09-13 00:23:14 +02:00
nyx-bot other-config.yaml
2022-09-06 10:50:14 +02:00
```
2022-09-13 00:23:14 +02:00
## Final steps
2022-09-06 10:50:14 +02:00
Invite the bot to a room and it should accept the invite and join.