186 lines
4.5 KiB
Markdown
186 lines
4.5 KiB
Markdown
# Setup
|
|
|
|
_(This requires changing.)_
|
|
|
|
## Install the dependencies
|
|
|
|
There are two paths to installing the dependencies for development.
|
|
|
|
### Using `docker-compose`
|
|
|
|
You can use Docker Compose to run the bot while
|
|
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:
|
|
|
|
#### Install libolm (optional)
|
|
|
|
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 .
|
|
# Using requirements.txt
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
This project uses [Wand](https://docs.wand-py.org) and the `pango-view` CLI command, requiring you to install ImageMagick library and Pango CLI tools.
|
|
|
|
Debian/Ubuntu:
|
|
|
|
```
|
|
sudo apt install libmagickwand-dev pango1.0-tools
|
|
```
|
|
|
|
Arch:
|
|
|
|
```
|
|
sudo pacman -S imagemagick pango
|
|
```
|
|
|
|
(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]"
|
|
# Using requirements.txt
|
|
pip install -r requirements-postgres.txt
|
|
```
|
|
|
|
## Install fonts
|
|
|
|
[Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic) should be installed for best quote image results. It is also recommanded to install the Noto Color Emoji font on the machine running the bot.
|
|
|
|
## Build word segmenter
|
|
|
|
Use Rust to build the segmenter:
|
|
|
|
```
|
|
cd cutword
|
|
cargo build --release
|
|
```
|
|
|
|
Copy the `target/release/nyx_bot-cutword` to a `PATH` avaliable to the bot.
|
|
|
|
You can also use the Python one located in `cutword/nyx_bot-cutword.py`.
|
|
|
|
## Configuration
|
|
|
|
Copy the sample configuration file to a new `nyx_bot.toml` file.
|
|
|
|
```
|
|
cp sample.config.toml nyx_bot.toml
|
|
```
|
|
|
|
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 it:
|
|
|
|
```
|
|
sudo -u postgresql psql createuser nyx_bot -W # prompts for a password
|
|
sudo -u postgresql psql createdb -O nyx_bot nyx_bot
|
|
```
|
|
|
|
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.toml`.
|
|
|
|
## 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:
|
|
|
|
```
|
|
nyx-bot
|
|
```
|
|
|
|
You'll notice that "nyx-bot" is scattered throughout the codebase. When
|
|
it comes time to modifying the code for your own purposes, you are expected to
|
|
replace every instance of "nyx-bot" and its variances with your own
|
|
project's name.
|
|
|
|
By default, the bot will run with the config file at `./nyx_bot.toml`. However, an
|
|
alternative relative or absolute filepath can be specified after the command:
|
|
|
|
```
|
|
nyx-bot other-config.toml
|
|
```
|
|
|
|
## Final steps
|
|
|
|
Invite the bot to a room and it should accept the invite and join.
|