Docker compose setup
This commit is contained in:
58
README.md
58
README.md
@@ -1,52 +1,78 @@
|
||||
# reminder-rs
|
||||
|
||||
Reminder Bot for Discord.
|
||||
|
||||
## How do I use it?
|
||||
I offer a hosted version of the bot. You can invite it with: **https://invite.reminder-bot.com**. The catch is that repeating
|
||||
|
||||
I offer a hosted version of the bot. You can invite it with: **https://invite.reminder-bot.com**.
|
||||
The catch is that repeating
|
||||
reminders are paid on the hosted version of the bot. Keep reading if you want to host it yourself.
|
||||
|
||||
You'll need rustc and cargo for compilation. To run, you'll need Python 3 still (due to no suitable replacement for dateparser in Rust)
|
||||
You'll need rustc and cargo for compilation. To run, you'll need Python 3 still (due to no suitable
|
||||
replacement for dateparser in Rust)
|
||||
|
||||
### Build APT package
|
||||
|
||||
Recommended method.
|
||||
|
||||
By default, this builds targeting Ubuntu 20.04. Modify the Containerfile if you wish to target a different platform. These instructions are written using `podman`, but `docker` should work too.
|
||||
By default, this builds targeting Ubuntu 20.04. Modify the Containerfile if you wish to target a
|
||||
different platform. These instructions are written using `podman`, but `docker` should work too.
|
||||
|
||||
1. Install container software: `sudo apt install podman`.
|
||||
2. Install database server: `sudo apt install mysql-server-8.0`. Create a database called `reminders`
|
||||
2. Install database server: `sudo apt install mysql-server-8.0`. Create a database called
|
||||
`reminders`
|
||||
3. Install SQLx CLI: `cargo install sqlx-cli`
|
||||
4. From the source code directory, execute `sqlx migrate run`
|
||||
5. Build container image: `podman build -t reminder-rs .`
|
||||
6. Build with podman: `podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=mysql://user@localhost/reminders" reminder-rs cargo deb`
|
||||
|
||||
6. Build with podman:
|
||||
`podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=mysql://user@localhost/reminders" reminder-rs cargo deb`
|
||||
|
||||
### Compiling for other target
|
||||
|
||||
1. Install requirements:
|
||||
`sudo apt install gcc gcc-multilib cmake libssl-dev build-essential python3-dateparser`
|
||||
1. Install requirements:
|
||||
`sudo apt install gcc gcc-multilib cmake libssl-dev build-essential python3-dateparser`
|
||||
2. Install rustup from https://rustup.rs
|
||||
3. Install the nightly toolchain: `rustup toolchain default nightly`
|
||||
4. Install database server: `sudo apt install mysql-server-8.0`. Create a database called `reminders`.
|
||||
4. Install database server: `sudo apt install mysql-server-8.0`. Create a database called
|
||||
`reminders`.
|
||||
5. Install `sqlx-cli`: `cargo install sqlx-cli`.
|
||||
6. Run migrations: `sqlx migrate run`.
|
||||
7. Set environment variables:
|
||||
* `DATABASE_URL` - the URL of your MySQL database (`mysql://user[:password]@domain/database`)
|
||||
* `DATABASE_URL` - the URL of your MySQL database (`mysql://user[:password]@domain/database`)
|
||||
8. Build: `cargo build --release`
|
||||
|
||||
|
||||
### Configuring
|
||||
|
||||
Reminder Bot reads a number of environment variables. Some are essential, and others have hardcoded fallbacks. Environment variables can be loaded from a .env file in the working directory.
|
||||
Reminder Bot reads a number of environment variables. Some are essential, and others have hardcoded
|
||||
fallbacks. Environment variables can be loaded from a .env file in the working directory.
|
||||
|
||||
__Required Variables__
|
||||
|
||||
* `DATABASE_URL` - the URL of your MySQL database (`mysql://user[:password]@domain/database`)
|
||||
* `DISCORD_TOKEN` - your application's bot user's authorization token
|
||||
|
||||
__Other Variables__
|
||||
|
||||
* `MIN_INTERVAL` - default `600`, defines the shortest interval the bot should accept
|
||||
* `LOCAL_TIMEZONE` - default `UTC`, necessary for calculations in the natural language processor
|
||||
* `SUBSCRIPTION_ROLES` - default `None`, accepts a list of Discord role IDs that are given to subscribed users
|
||||
* `CNC_GUILD` - default `None`, accepts a single Discord guild ID for the server that the subscription roles belong to
|
||||
* `PYTHON_LOCATION` - default `/usr/bin/python3`. Can be changed if your Python executable is located somewhere else
|
||||
* `THEME_COLOR` - default `8fb677`. Specifies the hex value of the color to use on info message embeds
|
||||
* `SUBSCRIPTION_ROLES` - default `None`, accepts a list of Discord role IDs that are given to
|
||||
subscribed users
|
||||
* `CNC_GUILD` - default `None`, accepts a single Discord guild ID for the server that the
|
||||
subscription roles belong to
|
||||
* `PYTHON_LOCATION` - default `/usr/bin/python3`. Can be changed if your Python executable is
|
||||
located somewhere else
|
||||
* `THEME_COLOR` - default `8fb677`. Specifies the hex value of the color to use on info message
|
||||
embeds
|
||||
|
||||
## Running with Docker
|
||||
|
||||
A `compose.yml` file is provided to aid in running the bot agnostically using docker.
|
||||
|
||||
* Populate a `.env` file as in `conf/default.env`
|
||||
* Add the additional variable `ROCKET_SECRET_KEY` with a key generated from
|
||||
`head -c64 /dev/urandom | base64`
|
||||
* Run `docker compose up`
|
||||
|
||||
Please note that this is _not_ production-ready when run via compose. We do not offer a way for
|
||||
backing up of your data, or a way to run the dashboard securely via HTTPS, which is required for
|
||||
OAuth.
|
||||
|
||||
Reference in New Issue
Block a user