5.2 KiB
Pre-read
- Any instructions specific for
wsl
will be marked with a bolded WSL:. These are not needed for a standard Linux environment, and are also generally imperfect. - Anything that you need to replace with the appropriate value will be marked as
[value]
, where the text inside the brackets is what you need to put. EG:ls [home_dir]
would bels /
- The folder that all work is done in will be further referenced as
~/ts
, if you picked a different location, remember to replace it with the appropriate directory - A few distinctions to be made. There are two
docker-compose.yml
and.env
file locations. They will be clarified as environment, (~/ts/
, the location where the docker file and files for each of the docker containers (the bot, mongodb, postgres, and rabbitmq) are stored, and bot (~/ts/discordBot/
).
Preparation
- In the Linux environment, install
docker
(if you do not use Docker's repository, you may also need to installdocker-compose
). See their documentation for more details on installation - Add your user to the docker group with
sudo usermod -aG docker [user]
or run alldocker
commands withsudo
- WSL: WSL does not have
systemd
support, so you need to manually startdockerd
. I found it simplest to runsudo dockerd
then open a new terminal window. This is fairly jank and it's recommended to find a better method. You can also attempt to start it and hide all output (be sure that sudo does not ask for a password prompt when doing this):sudo dockerd & 1>/dev/null 2>/dev/null
- WSL: I experienced issues storing the project on Windows-side storage, and found it worked best when storing the project on the Linux volume. (YMMV)
Deployment
Deploying the environment
1: Create a directory to be used as a working environment. This will be referred to as ~/ts
mkdir ~/ts
2: Enter the environment:
cd ~/ts
3: Clone the TechSupportBot
repository into ~/ts
:
git clone https://github.com/r-Techsupport/TechSupportBot
(If you plan to contribute changes, it's recommended to fork the repository and make changes to the fork)
4: The environment docker-compose.yml
file (to be created later) assumes the bot directory is named discordBot
, so rename it or change the config file:
mv TechSupportBot discordBot
5: Set up the environment.env
file for (~/ts
) to look like below (these options can be configured, they should be if you plan to use this as a production environment):
RABBITMQ_DEFAULT_USER=root
RABBITMQ_DEFAULT_PASS=root
POSTGRES_DB_USER=root
POSTGRES_DB_PASSWORD=root
POSTGRES_DB_NAME=TechSupport
MONGO_DB_USER=root
MONGO_DB_PASSWORD=root
6: Put the environment docker-compose.yml
into ~/ts
:
wget -O docker-compose.yml https://cdn.discordapp.com/attachments/1058882783713444020/1059269470822072360/docker.compose1.yml
(If you download the file manually, remember it must be named docker-compose.yml
)
source
Deploying the bot
7: Enter the discordBot
directory:
cd discordBot
8: Copy config.default.yml
to config.yml
:
cp config.default.yml config.yml
9: Populate the config options using the values from the environment .env
file, and Discord.
9a: It's assumed that you already made a Discord bot and added it to a server, so from the Discord Developer Dashboard, select the application you created, and get the Token
(found under the Bot submenu).
9b: Take the token located in 9a
and fill in the auth_token
field of config.yml
.
9c: Populate the ids
field as shown below with your user ID (right click profile -> Copy ID
with developer mode enabled)
Shown below is the minimum config.yml
needed to start the bot, the rest of the fields can be populated as you see fit.
main:
auth_token: "He3YtherE7HiS-isMy3xAmpLeaUtHtOkEN"
admins:
ids: ["1234576890945"]
roles: []
postgres:
user: root
password: root
name: "tsbot"
host: postgres
port: 5432
mongodb:
user: root
password: root
name: "tsbot"
host: mongodb
port: 27017
rabbitmq:
user: root
password: root
host: "rabbitmq"
vhost: "/"
port: 5672
... (continued)
Remember to use the correct values if you modified the environment .env
file.
10: Create/remake a Docker image of the bot (this needs to be done after all changes to the bot's code):
make prod
This must be run from discordBot
, ensure the operation completes without any fatal errors
Start the bot
11: Enter the environment directory:
cd ~/ts
12: Start all containers:
docker-compose up -d
13: Ensure the bot is running correctly:
docker logs discordBot
(You may also get spammed by Discord PMs)
Post deployment steps
Update your guild config:
.config patch
(by default all extensions are disabled, you may need to fill this out fully or borrow someone's)