notes/software/Deploying TechSupportBot.md
2023-08-26 11:33:11 -06:00

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 be ls /
  • 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 install docker-compose). See their documentation for more details on installation
  • Add your user to the docker group with sudo usermod -aG docker [user] or run all docker commands with sudo
  • WSL: WSL does not have systemd support, so you need to manually start dockerd. I found it simplest to run sudo 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

source

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)