From 493569ddd5b52caffcfe8af4b547b4784842a5db Mon Sep 17 00:00:00 2001 From: zleyyij Date: Fri, 13 Jan 2023 18:17:36 -0700 Subject: [PATCH] ts --- .obsidian/workspace.json | 44 +++++- Deploying TechSupportBot.md | 134 ++++++++++++++++++ Nand game.md | 3 + ...ic-gates-with-symbols-and-truth-tables.png | Bin 0 -> 30722 bytes 4 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 Deploying TechSupportBot.md create mode 100644 Nand game.md create mode 100644 Summary-of-the-common-Boolean-logic-gates-with-symbols-and-truth-tables.png diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index ef8e7a0..22f9f9d 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,11 +11,40 @@ "id": "36ba594a14318b0c", "type": "leaf", "state": { - "type": "empty", - "state": {} + "type": "markdown", + "state": { + "file": "Homelabbity.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "77db69b73e314736", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Nand game.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "20806f74fc1cc561", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Deploying TechSupportBot.md", + "mode": "source", + "source": false + } } } - ] + ], + "currentTab": 2 } ], "direction": "vertical" @@ -73,6 +102,7 @@ "state": { "type": "backlink", "state": { + "file": "Deploying TechSupportBot.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -110,17 +140,17 @@ "markdown-importer:Open format converter": false } }, - "active": "36ba594a14318b0c", + "active": "20806f74fc1cc561", "lastOpenFiles": [ - "Deploying pihole-docker to a brand new Debian instance.md", + "Nand game.md", "Homelabbity.md", + "Deploying pihole-docker to a brand new Debian instance.md", "Ohm's Law.md", "Deploying PiVPN to a debian instance.md", "Migrating PiVPN configs to another server.md", "Setting up SSH keys.md", "Installing Arch.md", "Specify Server.md", - "Writing a completely functional shell in Rust.md", - "wlan0 disabled after restart or wake from hibernate.md" + "Writing a completely functional shell in Rust.md" ] } \ No newline at end of file diff --git a/Deploying TechSupportBot.md b/Deploying TechSupportBot.md new file mode 100644 index 0000000..7b5ad0b --- /dev/null +++ b/Deploying TechSupportBot.md @@ -0,0 +1,134 @@ +## 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](https://docs.docker.com/engine/install/debian/) 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](https://discord.com/channels/749314018837135390/1058882783713444020/1059268094045999114) + +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](https://discord.com/channels/749314018837135390/1058882783713444020/1059269471140843560) +### 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](https://discord.com/developers), 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) diff --git a/Nand game.md b/Nand game.md new file mode 100644 index 0000000..0fb3df4 --- /dev/null +++ b/Nand game.md @@ -0,0 +1,3 @@ +![[Summary-of-the-common-Boolean-logic-gates-with-symbols-and-truth-tables.png]] +Switching for ALU: +- (inv values you want to be 0, leave untouched for 1) -> nand -> inv -> sel (use D1 for DAT, leave D0 empty) \ No newline at end of file diff --git a/Summary-of-the-common-Boolean-logic-gates-with-symbols-and-truth-tables.png b/Summary-of-the-common-Boolean-logic-gates-with-symbols-and-truth-tables.png new file mode 100644 index 0000000000000000000000000000000000000000..5a042d3153afc65cfaa98cb44c2bcc58903c8235 GIT binary patch literal 30722 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