From fbf15057e0d4ed169e1b09b7979b56353f9d0a99 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 14 Sep 2024 21:26:19 +0100 Subject: [PATCH 01/69] feat: some small changes relating to making it look better Relates to #23 --- .gitattributes | 1 + .githooks/post-checkout | 3 +++ .githooks/post-commit | 3 +++ .githooks/post-merge | 3 +++ .githooks/pre-commit | 4 ++++ .githooks/pre-push | 3 +++ README.md | 10 ++++++++++ _git.tar.gz | 3 +++ flake.nix | 4 +++- mkdocs.yml | 27 +++++++++++++++++++++++++++ 10 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 .githooks/post-checkout create mode 100755 .githooks/post-commit create mode 100755 .githooks/post-merge create mode 100755 .githooks/pre-commit create mode 100755 .githooks/pre-push create mode 100644 _git.tar.gz diff --git a/.gitattributes b/.gitattributes index ec60e32..8a32be0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -39,6 +39,7 @@ eol=lf # Misc *.zip filter=lfs diff=lfs merge=lfs -text +*.tar.gz filter=lfs diff=lfs merge=lfs -text # ET4011 diff --git a/.githooks/post-checkout b/.githooks/post-checkout new file mode 100755 index 0000000..ca7fcb4 --- /dev/null +++ b/.githooks/post-checkout @@ -0,0 +1,3 @@ +#!/bin/sh +command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-checkout' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } +git lfs post-checkout "$@" diff --git a/.githooks/post-commit b/.githooks/post-commit new file mode 100755 index 0000000..52b339c --- /dev/null +++ b/.githooks/post-commit @@ -0,0 +1,3 @@ +#!/bin/sh +command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } +git lfs post-commit "$@" diff --git a/.githooks/post-merge b/.githooks/post-merge new file mode 100755 index 0000000..a912e66 --- /dev/null +++ b/.githooks/post-merge @@ -0,0 +1,3 @@ +#!/bin/sh +command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-merge' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } +git lfs post-merge "$@" diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..99c93f8 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +tar czf _git.tar.gz --exclude .git/lfs .git +git add _git.tar.gz diff --git a/.githooks/pre-push b/.githooks/pre-push new file mode 100755 index 0000000..0f0089b --- /dev/null +++ b/.githooks/pre-push @@ -0,0 +1,3 @@ +#!/bin/sh +command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'pre-push' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } +git lfs pre-push "$@" diff --git a/README.md b/README.md index b729878..fe60d4f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,17 @@ # Skynet Wiki [Wiki for Skynet][1] + Uses [mkdocs][2] to generate the site. [1]: https://wiki.skynet.ie [2]: https://www.mkdocs.org + + + +## Hooks +Run this command to set up the hooks properly so teh git information can be stored within the repo + +```bash +git config --local core.hooksPath .githooks/ +``` \ No newline at end of file diff --git a/_git.tar.gz b/_git.tar.gz new file mode 100644 index 0000000..21d4b7c --- /dev/null +++ b/_git.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ccdcbd37e91e19e57bf24c88be97f2ef5fcca928303ff37bc0765589ff7c810 +size 311941 diff --git a/flake.nix b/flake.nix index b6401ae..31415bf 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,8 @@ packages = with pkgs.python3Packages; [ mkdocs mkdocs-material + mkdocs-git-authors-plugin + mkdocs-git-revision-date-localized-plugin ]; in { formatter = alejandra.defaultPackage.${system}; @@ -26,7 +28,7 @@ name = "skynet-wiki"; src = self; buildInputs = packages; - buildPhase = "mkdocs build"; + buildPhase = "tar -zxf _git.tar.gz && mkdocs build"; installPhase = "mkdir -p $out; cp -R site/* $out;"; }; diff --git a/mkdocs.yml b/mkdocs.yml index 59ca5c3..a198ca1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,33 @@ site_name: Skynet Wiki site_url: https://wiki.skynet.ie repo_url: https://forgejo.skynet.ie/Skynet/wiki +edit_uri: src/branch/main/src docs_dir: ./src/ theme: name: material + palette: + # Palette toggle for light mode + - scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + # Palette toggle for dark mode + - scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode + features: + - search.suggest + - search.highlight + - navigation.expand + - content.action.view + icon: + view: material/eye +plugins: + - search + - git-authors: + show_email_address: false + - git-revision-date-localized: + enable_creation_date: true +markdown_extensions: + - tables \ No newline at end of file From 92ea4b1319cc533dc0d381ae026abfdcc99fe4c3 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 15 Sep 2024 01:02:09 +0100 Subject: [PATCH 02/69] feat: added some documentation on verifying on Discord --- _git.tar.gz | 4 ++-- src/tutorials/skynet/verify_discord.md | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/tutorials/skynet/verify_discord.md diff --git a/_git.tar.gz b/_git.tar.gz index 21d4b7c..9892fdc 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ccdcbd37e91e19e57bf24c88be97f2ef5fcca928303ff37bc0765589ff7c810 -size 311941 +oid sha256:57b24e92a18153ebb202f61c2b1dddebbfb203c3dc558063af298618961c3744 +size 314819 diff --git a/src/tutorials/skynet/verify_discord.md b/src/tutorials/skynet/verify_discord.md new file mode 100644 index 0000000..9aed543 --- /dev/null +++ b/src/tutorials/skynet/verify_discord.md @@ -0,0 +1,26 @@ +# Verify Membership on Discord + +In order to get the ``Member`` role on [Discord][0] you have to link your Wolves account. +This is only done once and works for any server that the Skynet Bot is on. + +This process ensures that personal information does not get exposed. + +## Commands +### Linking +In any channel use ``/link_wolves`` and enter the email you use for Wolves. +This is the ``Peferred Contact Email`` on the [profile][1] page. + +An email will be sent to this address in order to prove that it is yours. +You may need to check the Spam folder. + +### Verify +Once you have gotten the email you will now submit the verification code. +It is in the form of ``/verify code: ABCDEFG`` and is tied to your account. +Enter this in Discord and you will be verified. + +## Troubleshooting + + + +[0]: https://discord.skynet.ie +[1]: https://ulwolves.ie/memberships/profile \ No newline at end of file From d272a03ee05e28ba1d91f8bb10f90321be5e675f Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 18 Sep 2024 16:45:47 +0100 Subject: [PATCH 03/69] fix: update wiki with teh image of teh command --- _git.tar.gz | 4 ++-- src/tutorials/skynet/verify_discord.md | 4 ++++ src/tutorials/skynet/verify_discord/linking.png | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 src/tutorials/skynet/verify_discord/linking.png diff --git a/_git.tar.gz b/_git.tar.gz index 9892fdc..389a9e0 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57b24e92a18153ebb202f61c2b1dddebbfb203c3dc558063af298618961c3744 -size 314819 +oid sha256:2ace80bc7cf3a42a561617a2296f742f72daf8e291f93046f6723bcbf37ebdd5 +size 319560 diff --git a/src/tutorials/skynet/verify_discord.md b/src/tutorials/skynet/verify_discord.md index 9aed543..735c6a4 100644 --- a/src/tutorials/skynet/verify_discord.md +++ b/src/tutorials/skynet/verify_discord.md @@ -13,11 +13,15 @@ This is the ``Peferred Contact Email`` on the [profile][1] page. An email will be sent to this address in order to prove that it is yours. You may need to check the Spam folder. +![Linking.png](verify_discord/linking.png) + ### Verify Once you have gotten the email you will now submit the verification code. It is in the form of ``/verify code: ABCDEFG`` and is tied to your account. Enter this in Discord and you will be verified. + + ## Troubleshooting diff --git a/src/tutorials/skynet/verify_discord/linking.png b/src/tutorials/skynet/verify_discord/linking.png new file mode 100644 index 0000000..68a7817 --- /dev/null +++ b/src/tutorials/skynet/verify_discord/linking.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2199a52bcd7a5266542635a8c46ad7818456a3fa2b24d15c7e669b75ed5c33d1 +size 21297 From 20d3a3c6834e3205bd1d131d26862cb0f3acb62f Mon Sep 17 00:00:00 2001 From: esy Date: Fri, 20 Sep 2024 14:15:37 +0000 Subject: [PATCH 04/69] docs: remove extra word --- src/skynet/services/skynet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skynet/services/skynet.md b/src/skynet/services/skynet.md index 739ab3e..2cd4a28 100644 --- a/src/skynet/services/skynet.md +++ b/src/skynet/services/skynet.md @@ -1,6 +1,6 @@ # Skynet -We provide a linux webserver webserver for member use. +We provide a linux webserver for member use. It could be considered akin to the [Tildeverse](https://tildeverse.org/), named as such for the way each member's site was displayed (``https://skynet.ie/~username``). Now that will redirect to ``https://username.users.skynet.ie`` we home to have preserved the same vibe. From 52b8dd70da37d6c67ae5917caf6b90951f9a7bb1 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 22 Sep 2024 18:05:42 +0100 Subject: [PATCH 05/69] docs: added a create account page Using the presentation as a base --- _git.tar.gz | 4 +-- src/tutorials/skynet/create_account.md | 39 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/tutorials/skynet/create_account.md diff --git a/_git.tar.gz b/_git.tar.gz index 389a9e0..d1d674a 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ace80bc7cf3a42a561617a2296f742f72daf8e291f93046f6723bcbf37ebdd5 -size 319560 +oid sha256:d6013f556d117a22f35c71d78b6cc54ba3d367508d0896d7714eed909228cefe +size 324454 diff --git a/src/tutorials/skynet/create_account.md b/src/tutorials/skynet/create_account.md new file mode 100644 index 0000000..16e7b02 --- /dev/null +++ b/src/tutorials/skynet/create_account.md @@ -0,0 +1,39 @@ +# Create Skynet Account + +## New Members + +1. Be a fully paid up member of UL Computer Society. + * [Signup at UL Wolves][wolves]. +2. Go to [our Skynet signup page][signup]. +3. Enter the same email used for UL Wolves. + * This is the ``Preferred Contact Email`` on your [profile page][profile]. +4. You will get an email to verify your address, follow the link in the email. + * You may need to check teh spam folder. + * It may also take up to 15 min to be delivered. +5. Choose a ``username`` and ``password``. + +Congrats! You are in! +_heist music_ + +## Returning Members + +1. Please go to [the profile modification page][modify]. +2. Enter the same email used for UL Wolves. + * This is the ``Preferred Contact Email`` on your [profile page][profile]. + +### If you have forgotten your ``username``. +Use [recover username][recover_username]. + +### If you have forgotten your ``password``. +Use [reset password][recover_password]. + +### If the above doesn't work +Contact the nearest Skynet person, either in person or at ``contact[at]skynet.ie``. + + +[wolves]: https://ulwolves.ie/society/computer +[signup]: https://account.skynet.ie/signup +[profile]: https://ulwolves.ie/memberships/profile +[modify]: https://account.skynet.ie/modify +[recover_username]: https://account.skynet.ie/recover/username +[recover_password]: https://account.skynet.ie/recover/password \ No newline at end of file From 60207b612ea41dce30184a3a8de10336fa3b68df Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 22 Sep 2024 19:09:29 +0100 Subject: [PATCH 06/69] docs: moved the ssh creation to its own page --- _git.tar.gz | 4 +- src/skynet/services/skynet.md | 60 +------------------- src/tutorials/skynet/create_ssh.md | 88 ++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 60 deletions(-) create mode 100644 src/tutorials/skynet/create_ssh.md diff --git a/_git.tar.gz b/_git.tar.gz index d1d674a..0f2b8ea 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6013f556d117a22f35c71d78b6cc54ba3d367508d0896d7714eed909228cefe -size 324454 +oid sha256:157aa28fbd798300534d65efd3d50063973749039a1722a9816b479327599e9e +size 328924 diff --git a/src/skynet/services/skynet.md b/src/skynet/services/skynet.md index 2cd4a28..eda05b7 100644 --- a/src/skynet/services/skynet.md +++ b/src/skynet/services/skynet.md @@ -11,64 +11,8 @@ You can find more of the history here: ## Login Login is done via ssh and ssh keys. -### Create SSH key -First we set up the ssh folder and create a skynet folder within it for neatness -```bash -mkdir -f -p ~/.ssh/skynet -cd ~/.ssh/skynet -``` -Now we will create the ssh key itself. -Location: ``username``, your skynet username. -Password: Press Enter twice for no password on the key. -```bash -ssh-keygen -t ed25519 -C "" -``` -It will create two files: ``username`` and ``username.pub`` - -### SSH Key -Head over to [adding ssh keys](./account.md#ssh-keys) to find information on adding ssh keys to your skynet account. - -it is the ``username.pub`` that you will be adding to your account. -To get the contents of the file do this. -```bash -cat username.pub -``` - -### SSH Config -Back up to the ``.ssh`` folder. -```bash -cd ../ -``` - -Now we have to create the config file. -Notice how it has no extension. -#### Windows -```powershell -"" > config -``` -Open it up in any text editor available to you. - -#### Linux -```bash -touch config -``` -You can edit it from command line using nano - -```bash -nano config -``` -Or open up in a text editor. - - --------------------------------------- - -Windows and Linux pop this into the file and save it -``` -Host *.skynet.ie - User %r - IdentityFile ~/.ssh/skynet/%r - IdentitiesOnly yes -``` +## SSH Keys +[See the tutorial on SSH keys for more info](../../tutorials/skynet/create_ssh) ### Logging in In any terminal do this: diff --git a/src/tutorials/skynet/create_ssh.md b/src/tutorials/skynet/create_ssh.md new file mode 100644 index 0000000..4c144d9 --- /dev/null +++ b/src/tutorials/skynet/create_ssh.md @@ -0,0 +1,88 @@ +# Setup SSH Keys + +To be able to gain remote access to the Skynet. + +``$USERNAME`` Refers to your Skynet username, for example I would replace ``$USERNAME`` with ``silver`` + +## Create Key +First we set up the ssh folder and create a skynet folder within it for neatness + +```bash +mkdir -f -p ~/.ssh/skynet +cd ~/.ssh/skynet +``` + +Now we will create the ssh key itself. +Location: ``$USERNAME``, your skynet username. +Password: Press Enter twice for no password on the key. + +```bash +ssh-keygen -t ed25519 -C "" +``` +It will create two files: ``$USERNAME`` and ``$USERNAME.pub`` inside ``~/.ssh/skynet`` + +### Linux Only +Openssh will complain if the keys permissions are too permissive. +To fix this use + +```bash +chmod 600 $USERNAME +# or +chmod 600 ~/.ssh/skynet/$USERNAME +``` + + +## Create Config +Above we created a folder for Skynet keys. +Ye can do the same with Gitlab/Github/... in the future. +The only downside is that we now have to tell ssh what key to use in what situation. + + +Back up to the ``.ssh`` folder. +```bash +cd ../ +# or +cd ~/.ssh +``` + +Now we have to create the config file. +Notice how it has no extension. + + +### Windows +```powershell +"" > config +``` +Open it up in any text editor available to you. + +### Linux +```bash +touch config +``` +You can edit it from command line using nano + +```bash +nano config +``` +Or open up in a text editor. + +### Windows/Linux +This is what we want to have in teh file. +``` +Host *.skynet.ie + User $USERNAME + IdentityFile ~/.ssh/skynet/$USERNAME + IdentitiesOnly yes +``` + + + + +## Add key to account +Go to [the modify SSH page](https://account.skynet.ie/modify_ssh) and paste in teh contents of ``$USERNAME.pub``. + +You will now be able to SSH into Skynet like so: + +```bash +ssh $USERNAME@skynet.skynet.ie +``` \ No newline at end of file From cf3853c2dbe3ed201b934a682c1dd5050470284c Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 22 Sep 2024 19:45:34 +0100 Subject: [PATCH 07/69] docs: split out teh documentation on how to create a website --- _git.tar.gz | 4 ++-- src/skynet/services/skynet.md | 16 ++-------------- src/tutorials/skynet/create_website.md | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 src/tutorials/skynet/create_website.md diff --git a/_git.tar.gz b/_git.tar.gz index 0f2b8ea..db39c25 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:157aa28fbd798300534d65efd3d50063973749039a1722a9816b479327599e9e -size 328924 +oid sha256:adbe687c5f5f0512ea64680ad16a63879e8be0827a40e9b23d9a573853cb9a9c +size 331908 diff --git a/src/skynet/services/skynet.md b/src/skynet/services/skynet.md index eda05b7..919ce90 100644 --- a/src/skynet/services/skynet.md +++ b/src/skynet/services/skynet.md @@ -12,7 +12,7 @@ You can find more of the history here: Login is done via ssh and ssh keys. ## SSH Keys -[See the tutorial on SSH keys for more info](../../tutorials/skynet/create_ssh) +[See the tutorial on SSH keys for more info](../../tutorials/skynet/create_ssh.md) ### Logging in In any terminal do this: @@ -23,16 +23,4 @@ ssh username@skynet.skynet.ie And you will be in! ## Website -In your home folder follow these commands to create the folder that can be used to host a website - -```bash -mkdir ~/public_html -chmod 711 ~ -chmod -R 755 ~/public_html -cd ~/public_html -``` - -See below for an easy way to upload files to this folder. - -## More info -There is a slideshow that might be of use to you: \ No newline at end of file +[See the tutorial on the website for more info](../../tutorials/skynet/create_website.md) \ No newline at end of file diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md new file mode 100644 index 0000000..f18f128 --- /dev/null +++ b/src/tutorials/skynet/create_website.md @@ -0,0 +1,26 @@ +# Create your own website on Skynet + +## Login +Once ye have [logged in](./create_ssh.md) you will be able to create a website on Skynet. + +## Website +### Manually + +In your home folder follow these commands to create the folder that can be used to host a website + +```bash +mkdir ~/public_html +chmod 711 ~ +chmod -R 755 ~/public_html +cd ~/public_html +``` + +To transfer files graphically you can use these programs: +* WinSCP +* FileZilla + +Anything put there will be accessible under ``https://$USERNAME.users.skynet.ie``. +For backwards compatability ``https://skynet.ie/~$USERNAME`` will redirect to ``https://$USERNAME.users.skynet.ie``. + +## More info +There is a slideshow that might be of use to you: \ No newline at end of file From af4536e9243b2afb772c9b0d066023e1886a2fc0 Mon Sep 17 00:00:00 2001 From: esy Date: Mon, 23 Sep 2024 20:07:44 +0000 Subject: [PATCH 08/69] feat: add license --- LICENSE | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3283b25 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2024 Skynet + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file From ab0add44756d4992fc2b2da4eba163016ccb3d1c Mon Sep 17 00:00:00 2001 From: eoghanconlon73 Date: Tue, 24 Sep 2024 18:21:24 +0000 Subject: [PATCH 09/69] Adding X's to the end of the bic in the banking info BIC worked for most things, though some services require the three X's at the end Signed-off-by: eoghanconlon73 --- src/support/renew.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/support/renew.md b/src/support/renew.md index 3f6648b..cab8cb3 100644 --- a/src/support/renew.md +++ b/src/support/renew.md @@ -53,7 +53,7 @@ If you are paying online you can only pay for one year's membership. Note it will say it will expire in one year but upon transfer of the money to our account it will be accepted as a 5 year membership. ![PAY BY CASH][6] 10. Transfer €40 to our bank account: - * BIC: ``BOFIIE2D`` + * BIC: ``BOFIIE2DXXX`` * IBAN: ``IE31BOFI90595047627767`` Please put your name in the reference. If you are having trouble with this or want to arrange another payment method, get in touch. From e74e31752a622370a7f32919424cc75f1d75c217 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 7 Oct 2024 09:21:11 +0100 Subject: [PATCH 10/69] prep: shell of the documentation to be filled out --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index db39c25..b1bf13f 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adbe687c5f5f0512ea64680ad16a63879e8be0827a40e9b23d9a573853cb9a9c -size 331908 +oid sha256:3df8f69e441454833dabe16025b924632137959cb60aad501a1900e27ce6b555 +size 337666 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 71fb71a..17fa865 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -1,3 +1,30 @@ # Nix/NixOS -{add warnign that git and git-lfs should also need to be in teh path} \ No newline at end of file +## What it is +### Nix + +### Flakes + +### Nixos + +### Lix + +## Why we use it +{Details of how the config was ascattered and hard to find} +{Also embracing devops and reduced manpower} + +## How we use it +### Requirements +{add warnign that git and git-lfs should also need to be in teh path} + +### Download + +### Colmena +#### Local +##### Building + +##### Repl + +#### Deployment + + From d98c090fb7ba9a5ddc1da4df77acd49d46f5fdbe Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 14 Oct 2024 00:21:51 +0100 Subject: [PATCH 11/69] assignment: saving current progress for this evening --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 27 ++++++++++++++++++++++++++ src/skynet/nix/firefox_co-existing.png | 3 +++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/skynet/nix/firefox_co-existing.png diff --git a/_git.tar.gz b/_git.tar.gz index b1bf13f..bfb994e 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3df8f69e441454833dabe16025b924632137959cb60aad501a1900e27ce6b555 -size 337666 +oid sha256:26358636ab2431f4688f5a3a8e2c47fd59ad842d840488b4d9577791d192ba64 +size 341053 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 17fa865..f8d2305 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -1,7 +1,30 @@ # Nix/NixOS +The [Skynet Cluster][nixos_skynet] is (for the most part) running on a Linux variant called NixOS. +This article aims to introduce you to Nix and Nixos in order to get you up to speed to administer the cluster. ## What it is ### Nix +#### Package Manager +The word Nix refers to two things: a language and a package manager. +These are deeply interlinked together with the language being how the package manager is able to do its job. +Nix grew out of a [PhD by Eelco Dolstra][nix_paper] wherein he proposes a slightly different way to manage dependencies on a system. + +For most Linux systems programs make use of other software installed on the computer, for the most part this works fine. +Where issue may arise is if one program needs to update one of these dependencies, specially a minor or major patch where backwards compatibility is not guaranteed. +If another program is using this (system wide) dependency then it may run into interface issues when using it. +In a sense updating one program can break another on the system. + +The route the Nix package manager takes is it treats each program as a function. +Using teh Nix language a function for that package is created which states what inputs are required, what is needed to turn those inputs into teh program as well as the name for the output. +The output is then saved in a read only location in the format of ``/nix/store/$hash-program-name-version``. +This output can eitehr be used as the input of another program or be used as is by the system/user. +Using this format means that any change in the inputs or the program itself will result in a different output. +This means that multiple versions of the program (some even the same version but different commit) can co-exist on the one system. +An example using different versions of Firefox: +![img.png](nix/firefox_co-existing.png) + +#### Language + ### Flakes @@ -28,3 +51,7 @@ #### Deployment + + +[nixos_skynet]: https://forgejo.skynet.ie/Skynet/nixos +[nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf \ No newline at end of file diff --git a/src/skynet/nix/firefox_co-existing.png b/src/skynet/nix/firefox_co-existing.png new file mode 100644 index 0000000..f2699d9 --- /dev/null +++ b/src/skynet/nix/firefox_co-existing.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3223a97f158347125132e42050ef77f293bb650d45bb49d8956107368b2a8b14 +size 77103 From 550748da7717ca82d33fc62eabda818139babcd2 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 16 Oct 2024 01:53:45 +0100 Subject: [PATCH 12/69] assignment: added section on the nix programming language --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 59 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index bfb994e..27b759b 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26358636ab2431f4688f5a3a8e2c47fd59ad842d840488b4d9577791d192ba64 -size 341053 +oid sha256:d68d0b80a4c4150a73887f196b992c2ce1a75dcddae7d6b80705d241cd5e69d0 +size 344824 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index f8d2305..094cdd9 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -17,14 +17,67 @@ In a sense updating one program can break another on the system. The route the Nix package manager takes is it treats each program as a function. Using teh Nix language a function for that package is created which states what inputs are required, what is needed to turn those inputs into teh program as well as the name for the output. The output is then saved in a read only location in the format of ``/nix/store/$hash-program-name-version``. -This output can eitehr be used as the input of another program or be used as is by the system/user. +This output can either be used as the input of another program or be used as is by the system/user. Using this format means that any change in the inputs or the program itself will result in a different output. This means that multiple versions of the program (some even the same version but different commit) can co-exist on the one system. An example using different versions of Firefox: ![img.png](nix/firefox_co-existing.png) #### Language +There are two partially difficult problems in computer science: +1. Off by one errors +2. Caching +3. Naming things +Nix falls into this last pitfall. +The programming language used by teh Nix package manager is called Nix, not Nixlang (as like Erlang) but rather the same name as primary tool that uses it. +For clarity for teh remainder of this subsection we are only talking about Nix the language. + +Nix is a lazily evaluated functional language which al has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. +As a whole it takes strong influences from OCaml and other ML derived languages. + +##### Types +It has most of the normal types that you would expect of a programming language, along with a few extra to deal with the filesystem: +```nix +a = 1 # int +b = 1.001 # float +c = /path/to/thing # path +d = "42" # string +e = true # boolean +``` +Of these the ``path`` type will be new to most people. +This can take either an absolute or relative path. + +##### Functions +If you look at the section below it will seem that these are another type of assignment to a variable. +That is half right, these are akin to function pointers that you would see in C or C++. +Functions in Nix do not have types for either parameters or return. +This is due to it being lazily evaluated, like Python or Javascript. +As such the ``double`` function will accept any numeric value +```nix +double = x: x*2 +mul = a: b: a*b + +double 2 +double 4.2 +mul 7 6 +``` + +##### Attribute Sets +In most languages the way to group data would be either an Object or a Struct. +Nix has a similar datastructure: +```nix +s = { foo = "bar"; biz = "baz"; } +s.foo # bar +s.biz # baz +``` + +##### More data +This is a rough quickstart introduction to Nix. +For more detailed information I recommend these resources. + +* [Official Guide][nix_guide_official] +* [Nix Pills][nix_guide_pills] ### Flakes @@ -54,4 +107,6 @@ An example using different versions of Firefox: [nixos_skynet]: https://forgejo.skynet.ie/Skynet/nixos -[nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf \ No newline at end of file +[nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf +[nix_guide_official]: https://nix.dev/tutorials/first-steps/ +[nix_guide_pills]: https://nixos.org/guides/nix-pills/# \ No newline at end of file From a0c503896aca652db2c4e3d4ac90e4b3a757d3d5 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 16 Oct 2024 11:37:26 +0100 Subject: [PATCH 13/69] assignment: added an example package --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index 27b759b..c3eabc5 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d68d0b80a4c4150a73887f196b992c2ce1a75dcddae7d6b80705d241cd5e69d0 -size 344824 +oid sha256:35f765ba7020634d0dd962b1e0cec26d12cb746cd2580928eeb12eb18fa2a46d +size 349027 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 094cdd9..2b6143c 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -23,6 +23,18 @@ This means that multiple versions of the program (some even the same version but An example using different versions of Firefox: ![img.png](nix/firefox_co-existing.png) +##### Example +An example of packaging an application can be found here: +[Sieve Editor GUI on Nixpkgs][nix_pkgs_sieve] + +This is packaging up a GUI node.js application. +The application itself allows the user to edit sieve scripts. +Once you have [downloaded and installed](#download) Nix you will be able to install and run it like so: +```shell +nix-shell -p sieve-editor-gui +sieve-editor-gui . +``` + #### Language There are two partially difficult problems in computer science: 1. Off by one errors @@ -80,6 +92,7 @@ For more detailed information I recommend these resources. * [Nix Pills][nix_guide_pills] ### Flakes + ### Nixos @@ -109,4 +122,5 @@ For more detailed information I recommend these resources. [nixos_skynet]: https://forgejo.skynet.ie/Skynet/nixos [nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf [nix_guide_official]: https://nix.dev/tutorials/first-steps/ -[nix_guide_pills]: https://nixos.org/guides/nix-pills/# \ No newline at end of file +[nix_guide_pills]: https://nixos.org/guides/nix-pills/# +[nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix \ No newline at end of file From e749191a47478c4672e0cb1cd3be355fd34d2592 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 16 Oct 2024 11:45:41 +0100 Subject: [PATCH 14/69] assignment: added section on flakes --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index c3eabc5..c5be389 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35f765ba7020634d0dd962b1e0cec26d12cb746cd2580928eeb12eb18fa2a46d -size 349027 +oid sha256:4c3be06c72432a2bcd9d057a97c7506e8b1f4065460fee1283ec5142531749ff +size 353210 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 2b6143c..72c13ef 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -92,7 +92,11 @@ For more detailed information I recommend these resources. * [Nix Pills][nix_guide_pills] ### Flakes - +A Flake is one of teh best ways of interacting with nix. +Despite it having some issues and still being marked as experimental it has become a de-facto standard. +This is also the format that we use in Skynet. + +The [Official Wiki Page][nix_flake] will be more informative than what can be shoved into this article. ### Nixos @@ -123,4 +127,5 @@ For more detailed information I recommend these resources. [nix_paper]: https://edolstra.github.io/pubs/nspfssd-lisa2004-final.pdf [nix_guide_official]: https://nix.dev/tutorials/first-steps/ [nix_guide_pills]: https://nixos.org/guides/nix-pills/# -[nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix \ No newline at end of file +[nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix +[nix_flake]: https://wiki.nixos.org/wiki/Flakes \ No newline at end of file From 741bd1d948f7465454186a0a39acf53b1050035c Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 16 Oct 2024 20:04:42 +0100 Subject: [PATCH 15/69] assignment: added section (roughly) on nixos --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index c5be389..eaf503f 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c3be06c72432a2bcd9d057a97c7506e8b1f4065460fee1283ec5142531749ff -size 353210 +oid sha256:38d0593fccaba86da9f3c2cdfbdccc261e70e9194b3951772dd63932309f9bac +size 357908 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 72c13ef..67e2771 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -99,6 +99,23 @@ This is also the format that we use in Skynet. The [Official Wiki Page][nix_flake] will be more informative than what can be shoved into this article. ### Nixos +With teh package manager we are able to create packages in a deterministic manner and store them in a way that does not suffer path conflicts. + +Some (possibly crazy) folks saw this and decided to apply this to an entire operating system. +The advantages are clear, the required programs are added to teh path for teh current iteration of the system. +If any error arises the system can be rolled back to a previous config. + +Configuration is done via ``*.nix`` files, which are then converted into teh native config for the application in question. + +For example [this file][nix_dns] turns a list of attributes. +```nix +{ + record = "forgejo"; + r_type = "CNAME"; + value = "glados.skynet.ie"; +} +``` +Into a config usable by the BIND DNS server. ### Lix @@ -128,4 +145,5 @@ The [Official Wiki Page][nix_flake] will be more informative than what can be sh [nix_guide_official]: https://nix.dev/tutorials/first-steps/ [nix_guide_pills]: https://nixos.org/guides/nix-pills/# [nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix -[nix_flake]: https://wiki.nixos.org/wiki/Flakes \ No newline at end of file +[nix_flake]: https://wiki.nixos.org/wiki/Flakes +[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix \ No newline at end of file From 4389f2a3fa12279faf393322462a05b3d0eb72a8 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 00:00:23 +0100 Subject: [PATCH 16/69] assignment: added section on Lix --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index eaf503f..f1e0d7b 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38d0593fccaba86da9f3c2cdfbdccc261e70e9194b3951772dd63932309f9bac -size 357908 +oid sha256:8fb0159b7b034f4ef4096ba21efd5ac101a00b739f593fadd1c79f7911480602 +size 363383 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 67e2771..23ae6a2 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -43,7 +43,8 @@ There are two partially difficult problems in computer science: Nix falls into this last pitfall. The programming language used by teh Nix package manager is called Nix, not Nixlang (as like Erlang) but rather the same name as primary tool that uses it. -For clarity for teh remainder of this subsection we are only talking about Nix the language. +For clarity for teh remainder of this subsection we are only talking about Nix the language. +The Nix Package manager is sometimes known as CppNix for reasons we will get into later. Nix is a lazily evaluated functional language which al has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. As a whole it takes strong influences from OCaml and other ML derived languages. @@ -118,6 +119,22 @@ For example [this file][nix_dns] turns a list of attributes. Into a config usable by the BIND DNS server. ### Lix +Nix is an old enough project now, and as such has accumulated crust over the years. +This is a combination of technical and societal/governance. + +On the technical side nix is built using c++ and a max of build systems that make it hard to expand it. +For a good long time the nix binary used in the package manager was locked at v2.18 due to issues. +It took most of a year for a higher version to be used on an official basis. + +Regarding governance there has been several attempts to make it better for folks to contribute and to decouple everything from requiring Eelco to have an input. +Those attempts did not succeed. +The final straw for some of the more technical core contributors was Eelco's forming a company, hiding it from the community and trying to get military sponsorship. +This did not vibe well with folks. + +Due to all of this many core maintainers forked Nix at 2.18 and started working to apply fixes for both code and organisational. +The result of their efforts is [Lix][nix_lix]. +For a full explanation of its key features I would like to point you to the [Lix About page][nix_lix_about]. +We use Lix instead of CppNix as the goals of Lix align with the viewpoints and ideologies that our members hold and what we want to represent as a (computer) society. ## Why we use it {Details of how the config was ascattered and hard to find} @@ -146,4 +163,6 @@ Into a config usable by the BIND DNS server. [nix_guide_pills]: https://nixos.org/guides/nix-pills/# [nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix [nix_flake]: https://wiki.nixos.org/wiki/Flakes -[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix \ No newline at end of file +[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix +[nix_lix]: https://lix.systems/ +[nix_lix_about]: https://lix.systems/about/ \ No newline at end of file From eef7877d25371d47fb815bdb6ea42c9a85d8bb6f Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 01:36:52 +0100 Subject: [PATCH 17/69] assignment: added section on Why we use it. Also added strikethrough support --- _git.tar.gz | 4 ++-- mkdocs.yml | 5 ++++- src/skynet/nix.md | 30 ++++++++++++++++++++++++------ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index f1e0d7b..8a81847 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fb0159b7b034f4ef4096ba21efd5ac101a00b739f593fadd1c79f7911480602 -size 363383 +oid sha256:6d132d72e9f11832b7b7ec8a4394df7ebaa50765c9da822b1be35eec1f4196d8 +size 370321 diff --git a/mkdocs.yml b/mkdocs.yml index a198ca1..0fd35f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -30,4 +30,7 @@ plugins: - git-revision-date-localized: enable_creation_date: true markdown_extensions: - - tables \ No newline at end of file + - tables + - pymdownx.caret + - pymdownx.mark + - pymdownx.tilde \ No newline at end of file diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 23ae6a2..80613c4 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -38,8 +38,8 @@ sieve-editor-gui . #### Language There are two partially difficult problems in computer science: 1. Off by one errors -2. Caching -3. Naming things + 2. Caching + 3. Naming things Nix falls into this last pitfall. The programming language used by teh Nix package manager is called Nix, not Nixlang (as like Erlang) but rather the same name as primary tool that uses it. @@ -90,7 +90,7 @@ This is a rough quickstart introduction to Nix. For more detailed information I recommend these resources. * [Official Guide][nix_guide_official] -* [Nix Pills][nix_guide_pills] + * [Nix Pills][nix_guide_pills] ### Flakes A Flake is one of teh best ways of interacting with nix. @@ -137,8 +137,24 @@ For a full explanation of its key features I would like to point you to the [Lix We use Lix instead of CppNix as the goals of Lix align with the viewpoints and ideologies that our members hold and what we want to represent as a (computer) society. ## Why we use it -{Details of how the config was ascattered and hard to find} -{Also embracing devops and reduced manpower} +Back in [January 2023 we got disconnected from teh internet][skynet_disconnect]. +For the purposes of this document the root cause is not of importance. +What *is* the mad Indian Jones ~~treasure~~ config hunt that it triggered. +![Brendan delving for configs][skynet_disconnect_reenactment] +Additionally ITD require us to update our systems regularly (as they should be). +Technically this config delving is an ongoing effort, the old hard drives are occasionally connected up and raided. + +As you would imagine this is not ideal, a exasperating factor was that many programs had changed both the location and format of their configuration over the decades that Skynet has been using them. + +This is where teh strengths of NixOS lie. +The config for the entire cluster is located in a singular location. +Using modules which work as a translation layer if the requirements for the programs change this dont impact us. +Not to mention we can fearlessly (and regularly) update our systems it is a match made is heaven. + +Currently the Skynet cluster is comprised of 15 servers which have NixOS on them. +A combination of LXC's (Linux Containers) and physical bare metal servers. +Since these systems share a base config (with tehir individual applications layered on top) we are able to efficiently build them, building a package for one will also built it for other servers. +Combine that with teh ability to deploy them via our own selfhosted CI/CD we have a strong foundation to work off of. ## How we use it ### Requirements @@ -165,4 +181,6 @@ We use Lix instead of CppNix as the goals of Lix align with the viewpoints and i [nix_flake]: https://wiki.nixos.org/wiki/Flakes [nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix [nix_lix]: https://lix.systems/ -[nix_lix_about]: https://lix.systems/about/ \ No newline at end of file +[nix_lix_about]: https://lix.systems/about/ +[skynet_disconnect]: https://public.skynet.ie/postmortem/2023-01-12_Loss-of-network-access.html +[skynet_disconnect_reenactment]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/media/branch/main/src/slides/skynet/0_intro_img1.png \ No newline at end of file From 029a181e7e1c58fd6ff3e768515948df073b6412 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 02:49:26 +0100 Subject: [PATCH 18/69] assignment: added section on basic use cases including devshell. --- _git.tar.gz | 4 +-- src/skynet/nix.md | 72 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 66 insertions(+), 10 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index 8a81847..e77017d 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d132d72e9f11832b7b7ec8a4394df7ebaa50765c9da822b1be35eec1f4196d8 -size 370321 +oid sha256:d9b374501f6d61ccc6c223e50623dbf3735912c8ec28a1629184b0f213efb9ab +size 377633 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 80613c4..7ca0654 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -157,19 +157,66 @@ Since these systems share a base config (with tehir individual applications laye Combine that with teh ability to deploy them via our own selfhosted CI/CD we have a strong foundation to work off of. ## How we use it -### Requirements -{add warnign that git and git-lfs should also need to be in teh path} +Nix cannot run on Windows, though it cna be installed into WSL. +Please refer to the below downloads to get a base system up and running -### Download +* [Git][git_git] + * As we are using a git repo this is a hard requirement. +* [Git LFS][git_lfs] + * For storing non text files such as images. +* [Nix][nix_install] + * Cant really use nix without thi installed. + +### Dev Shell +After cloning the repo use ``nix develop`` to set up a terminal shell with the environment for working with Skynet NixOS. +It (currently) adds [Colmena][dev_colmena], [Agenix][dev_agenix] and [Attic][dev_attic]. + +Another example of a dev shell can be [our discord bot][dev_discord-bot]. +This one sets up a rust enviroment. + +Of course you can also look at the dev shell for this [wiki][dev_wiki]. +For the wiki we need to ensure that the dependencies for building it are present for all users so tehy dont have to figure out how to manually install them. ### Colmena -#### Local -##### Building +[Colmena][dev_colmena] is our build and deployment tool. -##### Repl +Building is pretty easy, just run ``colmena build``. +Downside of that command is it will try to build everything all at once which is a *lot*. +A more practical approach is to build a single server or a group of servers. +```shell +# build the Skynet server, names cna be found in teh flake.nix +colmena build --on skynet -#### Deployment +# build a group of servers, in this case any one with teh tag of active-core +colmena build --on @active-core +``` +To be able to deploy to Skynet two things are required. +* Be on teh UL network + * This can also be accomplished by being on the VPN. +* Have an ssh key configured that can access the servers + * TLDR be an admin. + +### Agenix +[Agenix][dev_agenix] is our secrets manager. +To be able to use this tool your pub ssh key must be in ``secrets/secrets.nix``. +As you would expect this is an admin only tool. +This file also defines the names and permissions for each secret. + +```shell +# have to be in teh secrets folder for all these commands. +cd secrets + +# edit the secret +agenix -e path/to/secret.age + +# re-key all secrets, this is done when a new key is added or removed. +agenix -r +``` + +### Attic +[Attic][dev_attic] is teh tool that we use for our nix cache (hosted at ). +It is not often it is used by the dev and its own [documentation][dev_attic_docs] covers it best. @@ -183,4 +230,13 @@ Combine that with teh ability to deploy them via our own selfhosted CI/CD we hav [nix_lix]: https://lix.systems/ [nix_lix_about]: https://lix.systems/about/ [skynet_disconnect]: https://public.skynet.ie/postmortem/2023-01-12_Loss-of-network-access.html -[skynet_disconnect_reenactment]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/media/branch/main/src/slides/skynet/0_intro_img1.png \ No newline at end of file +[skynet_disconnect_reenactment]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/media/branch/main/src/slides/skynet/0_intro_img1.png +[git_git]: https://git-scm.com/downloads +[git_lfs]: https://git-lfs.com/ +[nix_install]: https://nixos.org/download/ +[dev_colmena]: https://colmena.cli.rs/unstable/ +[dev_agenix]: https://github.com/ryantm/agenix +[dev_attic]: https://github.com/zhaofengli/attic +[dev_attic_docs]: https://docs.attic.rs/introduction.html +[dev_discord-bot]: https://forgejo.skynet.ie/Skynet/discord-bot/src/commit/80c9191eeec29ba20ef4084713eca7fe0cab7412/flake.nix#L65 +[dev_wiki]: https://forgejo.skynet.ie/Skynet/wiki/src/commit/ab0add44756d4992fc2b2da4eba163016ccb3d1c/flake.nix#L35 From fcac8c2448da3bc3542346eb25dea299ae142673 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 02:57:29 +0100 Subject: [PATCH 19/69] assignment: formatting and typos --- _git.tar.gz | 4 +-- src/skynet/nix.md | 74 ++++++++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index e77017d..606b096 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9b374501f6d61ccc6c223e50623dbf3735912c8ec28a1629184b0f213efb9ab -size 377633 +oid sha256:c309ee38fc47772caa79d06f06ce8789c4872af0b35fbc30e589fbd2e7112751 +size 384902 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 7ca0654..e29f33a 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -11,11 +11,11 @@ Nix grew out of a [PhD by Eelco Dolstra][nix_paper] wherein he proposes a slight For most Linux systems programs make use of other software installed on the computer, for the most part this works fine. Where issue may arise is if one program needs to update one of these dependencies, specially a minor or major patch where backwards compatibility is not guaranteed. -If another program is using this (system wide) dependency then it may run into interface issues when using it. +If another program is using this (system-wide) dependency then it may run into interface issues when using it. In a sense updating one program can break another on the system. The route the Nix package manager takes is it treats each program as a function. -Using teh Nix language a function for that package is created which states what inputs are required, what is needed to turn those inputs into teh program as well as the name for the output. +Using the Nix language a function for that package is created which states what inputs are required, what is needed to turn those inputs into the program as well as the name for the output. The output is then saved in a read only location in the format of ``/nix/store/$hash-program-name-version``. This output can either be used as the input of another program or be used as is by the system/user. Using this format means that any change in the inputs or the program itself will result in a different output. @@ -29,7 +29,7 @@ An example of packaging an application can be found here: This is packaging up a GUI node.js application. The application itself allows the user to edit sieve scripts. -Once you have [downloaded and installed](#download) Nix you will be able to install and run it like so: +Once you have [downloaded and installed](#how-we-use-it) Nix you will be able to install and run it like so: ```shell nix-shell -p sieve-editor-gui sieve-editor-gui . @@ -37,13 +37,14 @@ sieve-editor-gui . #### Language There are two partially difficult problems in computer science: -1. Off by one errors - 2. Caching - 3. Naming things + +1. Off-by-one errors +2. Caching +3. Naming things Nix falls into this last pitfall. -The programming language used by teh Nix package manager is called Nix, not Nixlang (as like Erlang) but rather the same name as primary tool that uses it. -For clarity for teh remainder of this subsection we are only talking about Nix the language. +The programming language used by the Nix package manager is called Nix, not NixLang (as like Erlang) but rather the same name as primary tool that uses it. +For clarity for the remainder of this subsection we are only talking about Nix the language. The Nix Package manager is sometimes known as CppNix for reasons we will get into later. Nix is a lazily evaluated functional language which al has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. @@ -78,7 +79,7 @@ mul 7 6 ##### Attribute Sets In most languages the way to group data would be either an Object or a Struct. -Nix has a similar datastructure: +Nix has a similar data structure: ```nix s = { foo = "bar"; biz = "baz"; } s.foo # bar @@ -90,23 +91,23 @@ This is a rough quickstart introduction to Nix. For more detailed information I recommend these resources. * [Official Guide][nix_guide_official] - * [Nix Pills][nix_guide_pills] +* [Nix Pills][nix_guide_pills] ### Flakes -A Flake is one of teh best ways of interacting with nix. +A Flake is one of the best ways of interacting with nix. Despite it having some issues and still being marked as experimental it has become a de-facto standard. This is also the format that we use in Skynet. The [Official Wiki Page][nix_flake] will be more informative than what can be shoved into this article. ### Nixos -With teh package manager we are able to create packages in a deterministic manner and store them in a way that does not suffer path conflicts. +With the package manager we are able to create packages in a deterministic manner and store them in a way that does not suffer path conflicts. Some (possibly crazy) folks saw this and decided to apply this to an entire operating system. -The advantages are clear, the required programs are added to teh path for teh current iteration of the system. +The advantages are clear, the required programs are added to the path for the current iteration of the system. If any error arises the system can be rolled back to a previous config. -Configuration is done via ``*.nix`` files, which are then converted into teh native config for the application in question. +Configuration is done via ``*.nix`` files, which are then converted into the native config for the application in question. For example [this file][nix_dns] turns a list of attributes. ```nix @@ -137,45 +138,45 @@ For a full explanation of its key features I would like to point you to the [Lix We use Lix instead of CppNix as the goals of Lix align with the viewpoints and ideologies that our members hold and what we want to represent as a (computer) society. ## Why we use it -Back in [January 2023 we got disconnected from teh internet][skynet_disconnect]. +Back in [January 2023 we got disconnected from the internet][skynet_disconnect]. For the purposes of this document the root cause is not of importance. What *is* the mad Indian Jones ~~treasure~~ config hunt that it triggered. ![Brendan delving for configs][skynet_disconnect_reenactment] -Additionally ITD require us to update our systems regularly (as they should be). +Additionally, ITD require us to update our systems regularly (as they should be). Technically this config delving is an ongoing effort, the old hard drives are occasionally connected up and raided. -As you would imagine this is not ideal, a exasperating factor was that many programs had changed both the location and format of their configuration over the decades that Skynet has been using them. +As you would imagine this is not ideal, an exasperating factor was that many programs had changed both the location and format of their configuration over the decades that Skynet has been using them. -This is where teh strengths of NixOS lie. +This is where the strengths of NixOS lie. The config for the entire cluster is located in a singular location. -Using modules which work as a translation layer if the requirements for the programs change this dont impact us. +Using modules which work as a translation layer if the requirements for the programs change this don't impact us. Not to mention we can fearlessly (and regularly) update our systems it is a match made is heaven. -Currently the Skynet cluster is comprised of 15 servers which have NixOS on them. +Currently, the Skynet cluster comprises 15 servers which have NixOS on them. A combination of LXC's (Linux Containers) and physical bare metal servers. -Since these systems share a base config (with tehir individual applications layered on top) we are able to efficiently build them, building a package for one will also built it for other servers. -Combine that with teh ability to deploy them via our own selfhosted CI/CD we have a strong foundation to work off of. +Since these systems share a base config (with their individual applications layered on top) we are able to efficiently build them, building a package for one will also build it for other servers. +Combine that with the ability to deploy them via our own self-hosted CI/CD we have a strong foundation to work off of. ## How we use it Nix cannot run on Windows, though it cna be installed into WSL. Please refer to the below downloads to get a base system up and running * [Git][git_git] - * As we are using a git repo this is a hard requirement. + * As we are using a git repo this is a hard requirement. * [Git LFS][git_lfs] - * For storing non text files such as images. + * For storing non text files such as images. * [Nix][nix_install] - * Cant really use nix without thi installed. + * Cant really use nix without thi installed. ### Dev Shell After cloning the repo use ``nix develop`` to set up a terminal shell with the environment for working with Skynet NixOS. It (currently) adds [Colmena][dev_colmena], [Agenix][dev_agenix] and [Attic][dev_attic]. Another example of a dev shell can be [our discord bot][dev_discord-bot]. -This one sets up a rust enviroment. +This one sets up a rust environment. -Of course you can also look at the dev shell for this [wiki][dev_wiki]. -For the wiki we need to ensure that the dependencies for building it are present for all users so tehy dont have to figure out how to manually install them. +Of course, you can also look at the dev shell for this [wiki][dev_wiki]. +For the wiki we need to ensure that the dependencies for building it are present for all users so they don't have to figure out how to manually install them. ### Colmena [Colmena][dev_colmena] is our build and deployment tool. @@ -184,18 +185,19 @@ Building is pretty easy, just run ``colmena build``. Downside of that command is it will try to build everything all at once which is a *lot*. A more practical approach is to build a single server or a group of servers. ```shell -# build the Skynet server, names cna be found in teh flake.nix +# build the Skynet server, names cna be found in the flake.nix colmena build --on skynet -# build a group of servers, in this case any one with teh tag of active-core +# build a group of servers, in this case any one with the tag of active-core colmena build --on @active-core ``` -To be able to deploy to Skynet two things are required. -* Be on teh UL network - * This can also be accomplished by being on the VPN. +To be able to deploy to Skynet two things are required: + +* Be on the UL network + * This can also be accomplished by being on the VPN. * Have an ssh key configured that can access the servers - * TLDR be an admin. + * TLDR be an admin. ### Agenix [Agenix][dev_agenix] is our secrets manager. @@ -204,7 +206,7 @@ As you would expect this is an admin only tool. This file also defines the names and permissions for each secret. ```shell -# have to be in teh secrets folder for all these commands. +# have to be in the secrets folder for all these commands. cd secrets # edit the secret @@ -215,7 +217,7 @@ agenix -r ``` ### Attic -[Attic][dev_attic] is teh tool that we use for our nix cache (hosted at ). +[Attic][dev_attic] is the tool that we use for our nix cache (hosted at ). It is not often it is used by the dev and its own [documentation][dev_attic_docs] covers it best. From 8212fa77809f8a0bbf85bb7073f6361136d0c672 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 17:47:29 +0100 Subject: [PATCH 20/69] assignment: fix, improvements suggested --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index 606b096..21bff93 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c309ee38fc47772caa79d06f06ce8789c4872af0b35fbc30e589fbd2e7112751 -size 384902 +oid sha256:db1b1f700ddb6190c672e09108a1e14f88f99df904b19b25afc6f649d2f02f51 +size 392511 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index e29f33a..7b0f93e 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -10,7 +10,7 @@ These are deeply interlinked together with the language being how the package ma Nix grew out of a [PhD by Eelco Dolstra][nix_paper] wherein he proposes a slightly different way to manage dependencies on a system. For most Linux systems programs make use of other software installed on the computer, for the most part this works fine. -Where issue may arise is if one program needs to update one of these dependencies, specially a minor or major patch where backwards compatibility is not guaranteed. +Where issue may arise is if one program needs to update one of these dependencies, specifically a minor or major patch where backwards compatibility is not guaranteed. If another program is using this (system-wide) dependency then it may run into interface issues when using it. In a sense updating one program can break another on the system. @@ -47,7 +47,7 @@ The programming language used by the Nix package manager is called Nix, not NixL For clarity for the remainder of this subsection we are only talking about Nix the language. The Nix Package manager is sometimes known as CppNix for reasons we will get into later. -Nix is a lazily evaluated functional language which al has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. +Nix is a lazily evaluated functional language which also has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. As a whole it takes strong influences from OCaml and other ML derived languages. ##### Types @@ -185,7 +185,7 @@ Building is pretty easy, just run ``colmena build``. Downside of that command is it will try to build everything all at once which is a *lot*. A more practical approach is to build a single server or a group of servers. ```shell -# build the Skynet server, names cna be found in the flake.nix +# build the Skynet server, names can be found in the flake.nix colmena build --on skynet # build a group of servers, in this case any one with the tag of active-core @@ -218,7 +218,7 @@ agenix -r ### Attic [Attic][dev_attic] is the tool that we use for our nix cache (hosted at ). -It is not often it is used by the dev and its own [documentation][dev_attic_docs] covers it best. +It is not often used by the developer/admin and its own [documentation][dev_attic_docs] covers it best. From 0262d4dc8f22898d53e12d4dbf41e46af9c81014 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 2 Nov 2024 20:21:57 +0000 Subject: [PATCH 21/69] nop --- .forgejo/workflows/build.yaml | 1 + _git.tar.gz | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml index 94e35f2..2ca017f 100644 --- a/.forgejo/workflows/build.yaml +++ b/.forgejo/workflows/build.yaml @@ -10,6 +10,7 @@ on: - .forgejo/**/* - mkdocs.yml + jobs: # Build it locally, this helps caching for later build: diff --git a/_git.tar.gz b/_git.tar.gz index 21bff93..feb43d9 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db1b1f700ddb6190c672e09108a1e14f88f99df904b19b25afc6f649d2f02f51 -size 392511 +oid sha256:f5243cfd3a70c609c85cc665499bda91821d6d8d4a9fe66d6dcb0dd091f53a96 +size 394883 From 3ca52f0a3dc81c73b11565d0f3611a7e0a4e1ca6 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 23 Nov 2024 14:49:18 +0000 Subject: [PATCH 22/69] feat: added teh small sieve script to replace .forwards --- _git.tar.gz | 4 ++-- src/skynet/services/email.md | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index feb43d9..1bdc667 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5243cfd3a70c609c85cc665499bda91821d6d8d4a9fe66d6dcb0dd091f53a96 -size 394883 +oid sha256:607910832377319c9b05ae51ff9cfdc1eee8de4b53d422f99473720c392eaf59 +size 397421 diff --git a/src/skynet/services/email.md b/src/skynet/services/email.md index b3f758f..0db8597 100644 --- a/src/skynet/services/email.md +++ b/src/skynet/services/email.md @@ -29,5 +29,15 @@ Sieve scripts allow you to sort and manage yer email in a programmatic way. Recommended tool: Small tutorial will follow later. +### ``.forwards`` replacement +Since we no longer support ``.forwards`` this is the sieve script counterpart. +It copies all incoming mail to the target address. + +```sieve +require "copy"; + +redirect :copy "sending_mail_to@example.ie"; +``` + ### Committee/Admins There is an inbuilt sieve script that passes mail from committee/admin addresses into a folder in their Skynet inbox. From c9093fdcf1fa70901551f5562bf8ca1a00fb0fd3 Mon Sep 17 00:00:00 2001 From: evanc Date: Sat, 11 Jan 2025 17:50:49 +0000 Subject: [PATCH 23/69] Explicity mention imap/smtp settings and include tutorial for sieve --- src/skynet/services/email.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/skynet/services/email.md b/src/skynet/services/email.md index 0db8597..0110e40 100644 --- a/src/skynet/services/email.md +++ b/src/skynet/services/email.md @@ -23,21 +23,49 @@ This work is being done with Rust. Use your Skynet ``username@skynet.ie`` and ``password`` to login. +### IMAP / SMTP settings + +Use your full Skynet email ``username@skynet.ie`` and ``password``. + +#### SMTP +Server: ``mail.skynet.ie`` +Port: ``993`` +Authentication Method: ``Normal Password`` +Connection Security: ``SSL/TLS`` + +#### IMAP +Server: ``mail.skynet.ie`` +Port: ``465`` +Authentication Method: ``Normal Password`` +Connection Security: ``SSL/TLS`` + ## Sieve Scripts Sieve scripts allow you to sort and manage yer email in a programmatic way. Recommended tool: -Small tutorial will follow later. + +* Download and open the tool. +* Enter settings for skynet. + - Hostname: ``mail.skynet.ie`` + - Port: ``4190`` + - Username: ``username@skynet.ie`` +* Hit Create. +* Hit Connect and enter your ``password``. ### ``.forwards`` replacement Since we no longer support ``.forwards`` this is the sieve script counterpart. It copies all incoming mail to the target address. +* Continuing from above +* Hit Create new script, enter a name and press edit. +* Enter code below. (You may also use the gui drag and drop builder to create the script) ```sieve require "copy"; redirect :copy "sending_mail_to@example.ie"; ``` +* Save the script. +* Go back to the home tab and press activate on your newly created script. This will enable the forwarding ### Committee/Admins There is an inbuilt sieve script that passes mail from committee/admin addresses into a folder in their Skynet inbox. From 347c979b3536f265b2dfeed2c827672ffb41e947 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 9 Feb 2025 21:18:54 +0000 Subject: [PATCH 24/69] feat: updated teh documentation on how to do the websites --- src/tutorials/skynet/create_website.md | 33 ++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index f18f128..18512eb 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -1,10 +1,34 @@ # Create your own website on Skynet -## Login -Once ye have [logged in](./create_ssh.md) you will be able to create a website on Skynet. +One of the services that Skynet provides is access to a Linux server which also has a webserver. +Additionally each member gets their own domain: + +* $USERNAME.users.skynet.ie + * This is the core web address + * https://silver.users.skynet.ie +* skynet.ie/~$USERNAME + * This is backwards compatible to help avoid link rot + * Redirects to the core address above + * https://skynet.ie/~silver ## Website -### Manually +There are two ways to create a website on Skynet, Modern and Manual. +Modern is using Source Control (git), pipelines (CI/CD) and pinch of magic. +Manual gets you hands on with the process. + +### Modern +Modern involves using source control to version your site. +This is then leveraged to automatically deploy to your Skynet account/website. + +The core repo for this is [here][deploy_user]. +If this does not suit your needs you can take a look at the [forks which cover different tools][deploy_user_forks]. + +[deploy_user]: https://forgejo.skynet.ie/Skynet/deploy_user +[deploy_user_forks]: https://forgejo.skynet.ie/Skynet/deploy_user/forks + +### Manual +## Login +Once ye have [logged in](./create_ssh.md) you will be able to create a website on Skynet. In your home folder follow these commands to create the folder that can be used to host a website @@ -19,8 +43,7 @@ To transfer files graphically you can use these programs: * WinSCP * FileZilla -Anything put there will be accessible under ``https://$USERNAME.users.skynet.ie``. -For backwards compatability ``https://skynet.ie/~$USERNAME`` will redirect to ``https://$USERNAME.users.skynet.ie``. +Anything put there will be accessible under ``https://$USERNAME.users.skynet.ie``. ## More info There is a slideshow that might be of use to you: \ No newline at end of file From 96822e7b2fd693bb45bae11a1763ba52f7d3af82 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 9 Feb 2025 21:21:32 +0000 Subject: [PATCH 25/69] fix: make sure folks know that adding a password to a ssh key will cause CI/CD to fail --- src/tutorials/skynet/create_ssh.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tutorials/skynet/create_ssh.md b/src/tutorials/skynet/create_ssh.md index 4c144d9..3b1063b 100644 --- a/src/tutorials/skynet/create_ssh.md +++ b/src/tutorials/skynet/create_ssh.md @@ -4,7 +4,7 @@ To be able to gain remote access to the Skynet. ``$USERNAME`` Refers to your Skynet username, for example I would replace ``$USERNAME`` with ``silver`` -## Create Key +## Prep First we set up the ssh folder and create a skynet folder within it for neatness ```bash @@ -12,9 +12,12 @@ mkdir -f -p ~/.ssh/skynet cd ~/.ssh/skynet ``` +## Create Key Now we will create the ssh key itself. Location: ``$USERNAME``, your skynet username. -Password: Press Enter twice for no password on the key. +**Password: Press Enter twice for no password on the key.** + +If you are creating this key for a CI/CD pipeline (``user_deploy*``) then adding a password will cause it to fail. ```bash ssh-keygen -t ed25519 -C "" From 94a37acd12ab37ac20df7b0478016ab393fad40e Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 9 Feb 2025 23:49:58 +0000 Subject: [PATCH 26/69] fix: formatting --- src/tutorials/skynet/create_website.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index 18512eb..e5d9598 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -3,13 +3,13 @@ One of the services that Skynet provides is access to a Linux server which also has a webserver. Additionally each member gets their own domain: -* $USERNAME.users.skynet.ie - * This is the core web address - * https://silver.users.skynet.ie -* skynet.ie/~$USERNAME - * This is backwards compatible to help avoid link rot - * Redirects to the core address above - * https://skynet.ie/~silver +* ```$USERNAME.users.skynet.ie``` + * This is the core web address + * +* ``skynet.ie/~$USERNAME`` + * This is backwards compatible to help avoid link rot + * Redirects to the core address above + * ## Website There are two ways to create a website on Skynet, Modern and Manual. From b4d202739efe473f473b38d5ceec926a17239aa9 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 9 Feb 2025 23:50:15 +0000 Subject: [PATCH 27/69] fix: formatting2 --- src/tutorials/skynet/create_website.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index e5d9598..6a9964c 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -3,7 +3,7 @@ One of the services that Skynet provides is access to a Linux server which also has a webserver. Additionally each member gets their own domain: -* ```$USERNAME.users.skynet.ie``` +* ``$USERNAME.users.skynet.ie`` * This is the core web address * * ``skynet.ie/~$USERNAME`` From b2c134d950e4fa736b0608a295abbc3fc37c2626 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 10 Feb 2025 00:08:58 +0000 Subject: [PATCH 28/69] fix: formatting3 --- src/tutorials/skynet/create_website.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index 6a9964c..1b2c7a8 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -40,8 +40,16 @@ cd ~/public_html ``` To transfer files graphically you can use these programs: -* WinSCP -* FileZilla + +* [WinSCP][download_winscp] + * Windows +* [FileZilla][download_filezilla] + * Windows + * Mac + * Linux + +[download_winscp]: https://winscp.net +[download_filezilla]: https://filezilla-project.org/download.php?type=client Anything put there will be accessible under ``https://$USERNAME.users.skynet.ie``. From b6f4f3b1bae936343a1ed94b4e2b8a02bd3509d1 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 12 Feb 2025 15:08:36 +0000 Subject: [PATCH 29/69] doc: updated documentation --- src/tutorials/skynet/create_website.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index 1b2c7a8..4f2b30d 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -16,20 +16,27 @@ There are two ways to create a website on Skynet, Modern and Manual. Modern is using Source Control (git), pipelines (CI/CD) and pinch of magic. Manual gets you hands on with the process. + +### Skynet Account requirement +No matter if you choose Modern or Manual you will need a Skynet account. +Instructions to do so can be found [on the Create Skynet Account page](./create_account.md). + ### Modern Modern involves using source control to version your site. This is then leveraged to automatically deploy to your Skynet account/website. -The core repo for this is [here][deploy_user]. +The core repo for this is [here][deploy_user], it contains all teh required info to get it working. If this does not suit your needs you can take a look at the [forks which cover different tools][deploy_user_forks]. [deploy_user]: https://forgejo.skynet.ie/Skynet/deploy_user [deploy_user_forks]: https://forgejo.skynet.ie/Skynet/deploy_user/forks ### Manual -## Login +#### Login Once ye have [logged in](./create_ssh.md) you will be able to create a website on Skynet. + +#### Create Files In your home folder follow these commands to create the folder that can be used to host a website ```bash @@ -39,6 +46,19 @@ chmod -R 755 ~/public_html cd ~/public_html ``` +In this directory you can create all the relevant files using ``nano`` or ``vim``. + +```bash +# create/edit index.html usign nano +# this opens up a termial based text editor. +nano index.html +``` + +To exit ``nano`` you need to use ``[ctrl]+[x]`` keys. + +#### Transfer files +If you already have the files locally you can copy them over using ``scp``, although it is recommended to do it graphically. + To transfer files graphically you can use these programs: * [WinSCP][download_winscp] From ad79fb617da1204097e1d04aaf65b159db042a98 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Thu, 13 Feb 2025 17:58:56 +0000 Subject: [PATCH 30/69] doc: improved documentation for ssh keys --- src/tutorials/skynet/create_ssh.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/tutorials/skynet/create_ssh.md b/src/tutorials/skynet/create_ssh.md index 3b1063b..acf2a22 100644 --- a/src/tutorials/skynet/create_ssh.md +++ b/src/tutorials/skynet/create_ssh.md @@ -4,6 +4,9 @@ To be able to gain remote access to the Skynet. ``$USERNAME`` Refers to your Skynet username, for example I would replace ``$USERNAME`` with ``silver`` +## Windows +If you are using Windows then you should use PowerShell, not ``cmd``. + ## Prep First we set up the ssh folder and create a skynet folder within it for neatness @@ -13,15 +16,21 @@ cd ~/.ssh/skynet ``` ## Create Key -Now we will create the ssh key itself. -Location: ``$USERNAME``, your skynet username. -**Password: Press Enter twice for no password on the key.** - -If you are creating this key for a CI/CD pipeline (``user_deploy*``) then adding a password will cause it to fail. +Now we will create the ssh key itself. ```bash ssh-keygen -t ed25519 -C "" ``` + +* ````: this is a comment to yerself about what the key is for + * I often use ``username@host``, ``silver@skynet``. +* Location: ``./$USERNAME``, your skynet username. + * ``./silver`` for example. +* **Password: Press Enter twice for no password on the key.** + +If you are creating this key for a CI/CD pipeline (``user_deploy*``) then adding a password will cause it to fail. + + It will create two files: ``$USERNAME`` and ``$USERNAME.pub`` inside ``~/.ssh/skynet`` ### Linux Only From 72dcdb1203a3267d6b84293aae94cdbcd5673df6 Mon Sep 17 00:00:00 2001 From: generically Date: Sat, 15 Feb 2025 00:13:43 +0000 Subject: [PATCH 31/69] changed all occurances of teh to the --- README.md | 2 +- src/assets/highlight.min.js | 2 +- src/skynet/services/forgejo.md | 2 +- src/tutorials/skynet/create_account.md | 2 +- src/tutorials/skynet/create_ssh.md | 4 ++-- src/tutorials/skynet/create_website.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fe60d4f..deb3420 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Uses [mkdocs][2] to generate the site. ## Hooks -Run this command to set up the hooks properly so teh git information can be stored within the repo +Run this command to set up the hooks properly so the git information can be stored within the repo ```bash git config --local core.hooksPath .githooks/ diff --git a/src/assets/highlight.min.js b/src/assets/highlight.min.js index c3d57be..b91044f 100644 --- a/src/assets/highlight.min.js +++ b/src/assets/highlight.min.js @@ -1009,7 +1009,7 @@ className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}] end:/#>/}],contains:[{className:"doctag",variants:[{ begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },{ -begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ +begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotheelprunspace|externalhelp)\s+\S+/ }]}]}),c={className:"class",beginKeywords:"class enum",end:/\s*[{]/, excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:"function", begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0, diff --git a/src/skynet/services/forgejo.md b/src/skynet/services/forgejo.md index caf0dde..cf33726 100644 --- a/src/skynet/services/forgejo.md +++ b/src/skynet/services/forgejo.md @@ -3,7 +3,7 @@ Forgejo is an online git repo host. Like [Gitlab](./gitlab.md) it is self hostable meaning that Skynet has its own instance of it. -Structure wise it has more in common with Github with teh flatter ``owner/repo`` structure as well as being compatible with Github Actions +Structure wise it has more in common with Github with the flatter ``owner/repo`` structure as well as being compatible with Github Actions Honestly I (@silver) just love the slogan of Forgejo: > Beyond coding. We Forge. diff --git a/src/tutorials/skynet/create_account.md b/src/tutorials/skynet/create_account.md index 16e7b02..2bf1def 100644 --- a/src/tutorials/skynet/create_account.md +++ b/src/tutorials/skynet/create_account.md @@ -8,7 +8,7 @@ 3. Enter the same email used for UL Wolves. * This is the ``Preferred Contact Email`` on your [profile page][profile]. 4. You will get an email to verify your address, follow the link in the email. - * You may need to check teh spam folder. + * You may need to check the spam folder. * It may also take up to 15 min to be delivered. 5. Choose a ``username`` and ``password``. diff --git a/src/tutorials/skynet/create_ssh.md b/src/tutorials/skynet/create_ssh.md index acf2a22..cb06a43 100644 --- a/src/tutorials/skynet/create_ssh.md +++ b/src/tutorials/skynet/create_ssh.md @@ -79,7 +79,7 @@ nano config Or open up in a text editor. ### Windows/Linux -This is what we want to have in teh file. +This is what we want to have in the file. ``` Host *.skynet.ie User $USERNAME @@ -91,7 +91,7 @@ Host *.skynet.ie ## Add key to account -Go to [the modify SSH page](https://account.skynet.ie/modify_ssh) and paste in teh contents of ``$USERNAME.pub``. +Go to [the modify SSH page](https://account.skynet.ie/modify_ssh) and paste in the contents of ``$USERNAME.pub``. You will now be able to SSH into Skynet like so: diff --git a/src/tutorials/skynet/create_website.md b/src/tutorials/skynet/create_website.md index 4f2b30d..38e78da 100644 --- a/src/tutorials/skynet/create_website.md +++ b/src/tutorials/skynet/create_website.md @@ -25,7 +25,7 @@ Instructions to do so can be found [on the Create Skynet Account page](./create_ Modern involves using source control to version your site. This is then leveraged to automatically deploy to your Skynet account/website. -The core repo for this is [here][deploy_user], it contains all teh required info to get it working. +The core repo for this is [here][deploy_user], it contains all the required info to get it working. If this does not suit your needs you can take a look at the [forks which cover different tools][deploy_user_forks]. [deploy_user]: https://forgejo.skynet.ie/Skynet/deploy_user From cb1399424e464388e1fdb870c781a813f56b695f Mon Sep 17 00:00:00 2001 From: generically Date: Sat, 15 Feb 2025 00:16:33 +0000 Subject: [PATCH 32/69] Update src/assets/highlight.min.js --- src/assets/highlight.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/highlight.min.js b/src/assets/highlight.min.js index b91044f..c3d57be 100644 --- a/src/assets/highlight.min.js +++ b/src/assets/highlight.min.js @@ -1009,7 +1009,7 @@ className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}] end:/#>/}],contains:[{className:"doctag",variants:[{ begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },{ -begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotheelprunspace|externalhelp)\s+\S+/ +begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ }]}]}),c={className:"class",beginKeywords:"class enum",end:/\s*[{]/, excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:"function", begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0, From 6ba9f59e78e0f7bc6e9e07fc92f5f695d0da1ca1 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Thu, 2 Jan 2025 16:29:11 +0000 Subject: [PATCH 33/69] feat: new section for procedures Got started on how to init a new server --- _git.tar.gz | 4 +- src/procedures/skynet/new_server.md | 67 +++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/procedures/skynet/new_server.md diff --git a/_git.tar.gz b/_git.tar.gz index 1bdc667..21dcb3b 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:607910832377319c9b05ae51ff9cfdc1eee8de4b53d422f99473720c392eaf59 -size 397421 +oid sha256:c3f36679e432c85bbd2f13f1ba064a5e7ceb8dbb2e20f9a469d9bb534b79f628 +size 401139 diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/new_server.md new file mode 100644 index 0000000..fb3ae6d --- /dev/null +++ b/src/procedures/skynet/new_server.md @@ -0,0 +1,67 @@ +# New Server (LXC) + +This is the instruction guide for setting up a new LXC server. + +Rough steps are as follows: +1. Plan the servers config +2. Login to Proxmox +3. Create Container using the base LXC image +4. Grab server details +5. Push new configuration + +## Plan server Configuration +To allocate he correct resources there are a few questions that need to be asked and answered. + +1. What will this server be **For**? +2. What will its **Name** be? +3. What will its **IP** be? +4. Fill the details into the tracking sheet. + +### What is it **For**? +What a server is for dictates what hardware resources need to be allocated. +Is there one already existing that you can copy the configuration of? +Do you have prior experience with what will be hosted on it? +Is there documentation that you can use as a foundation? + +When you know these, write it down and save for later. + +### What is its **Name**? +In our cluster we have a very definite naming scheme for the servers we have. +There are two rules: + +1. The login server (where folks have their home dirs and websites) is called Skynet. + * [This can be traced back to 2007][server_name_skynet] + * > By popular demand, the skynet name was retained for the login server +2. All other servers are also named after AI's + + +In the current cluster we tend to use groups of AI names for particular functions. +For example: + +* Vigil/Vendetta were AI's in the Mass effect series, pointing Shepherd forward, so they are our DNS servers +* Glados/Wheatly from Portal, that game runs on the Source Engine, so they are our Source control servers +* Optimus/Bumblebee from Transformers, their origin is a line of toys, so fittingly our games servers. +* Neuromancer/Wintermute, from Neuromancer, each with multiple minds, thus became our backup (redundancy) servers. + +If at all possible try to get the name to match its task. +Some past names and ideas for others can be found on [the nixos wiki][server_names] + +[server_name_skynet]: https://2009.skynet.ie/history.html +[server_names]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/Possible_Server_Names.md + + + + +### What is its **IP** address? +We have a ``/26`` allocation, so about 60 IP's we can make use of. +Like with the names above several servers are grouped together IP wise. +Check the [Server Inventory][server_inventory] to see what addresses are available. + +[server_inventory]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/ITD/Server_Inventory.csv + +### Tracking sheet +Now that ye have all the details about the build it is time to add them to the [Server Inventory][server_inventory]. +Add a new one, incrementing the index, and fill in the rest of the information. + +For the IP address if the last segment (ABC in this: 193.1.99.ABC) is less than 100 then add a leading ``0`` to it. +This is so that it can be easily sorted. \ No newline at end of file From 9ae1201b1b86c4f6290c1477aeee13b5ece8a5b8 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Thu, 2 Jan 2025 17:09:40 +0000 Subject: [PATCH 34/69] feat: abandon the use of the git information in the repo itself --- .githooks/post-checkout | 3 --- .githooks/post-commit | 3 --- .githooks/post-merge | 3 --- .githooks/pre-commit | 4 ---- .githooks/pre-push | 3 --- _git.tar.gz | 3 --- flake.nix | 4 +--- mkdocs.yml | 8 ++++---- 8 files changed, 5 insertions(+), 26 deletions(-) delete mode 100755 .githooks/post-checkout delete mode 100755 .githooks/post-commit delete mode 100755 .githooks/post-merge delete mode 100755 .githooks/pre-commit delete mode 100755 .githooks/pre-push delete mode 100644 _git.tar.gz diff --git a/.githooks/post-checkout b/.githooks/post-checkout deleted file mode 100755 index ca7fcb4..0000000 --- a/.githooks/post-checkout +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-checkout' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } -git lfs post-checkout "$@" diff --git a/.githooks/post-commit b/.githooks/post-commit deleted file mode 100755 index 52b339c..0000000 --- a/.githooks/post-commit +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } -git lfs post-commit "$@" diff --git a/.githooks/post-merge b/.githooks/post-merge deleted file mode 100755 index a912e66..0000000 --- a/.githooks/post-merge +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-merge' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } -git lfs post-merge "$@" diff --git a/.githooks/pre-commit b/.githooks/pre-commit deleted file mode 100755 index 99c93f8..0000000 --- a/.githooks/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -tar czf _git.tar.gz --exclude .git/lfs .git -git add _git.tar.gz diff --git a/.githooks/pre-push b/.githooks/pre-push deleted file mode 100755 index 0f0089b..0000000 --- a/.githooks/pre-push +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'pre-push' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; } -git lfs pre-push "$@" diff --git a/_git.tar.gz b/_git.tar.gz deleted file mode 100644 index 21dcb3b..0000000 --- a/_git.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3f36679e432c85bbd2f13f1ba064a5e7ceb8dbb2e20f9a469d9bb534b79f628 -size 401139 diff --git a/flake.nix b/flake.nix index 31415bf..b6401ae 100644 --- a/flake.nix +++ b/flake.nix @@ -19,8 +19,6 @@ packages = with pkgs.python3Packages; [ mkdocs mkdocs-material - mkdocs-git-authors-plugin - mkdocs-git-revision-date-localized-plugin ]; in { formatter = alejandra.defaultPackage.${system}; @@ -28,7 +26,7 @@ name = "skynet-wiki"; src = self; buildInputs = packages; - buildPhase = "tar -zxf _git.tar.gz && mkdocs build"; + buildPhase = "mkdocs build"; installPhase = "mkdir -p $out; cp -R site/* $out;"; }; diff --git a/mkdocs.yml b/mkdocs.yml index 0fd35f5..35c0d7a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,10 +25,10 @@ theme: view: material/eye plugins: - search - - git-authors: - show_email_address: false - - git-revision-date-localized: - enable_creation_date: true +# - git-authors: +# show_email_address: false +# - git-revision-date-localized: +# enable_creation_date: true markdown_extensions: - tables - pymdownx.caret From 3a32d0936e696fa1b76292344f1aad2338d52fc8 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Thu, 2 Jan 2025 18:23:40 +0000 Subject: [PATCH 35/69] doc: added details on how to actually set up the container --- src/procedures/skynet/new_server.md | 71 ++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/new_server.md index fb3ae6d..d926e43 100644 --- a/src/procedures/skynet/new_server.md +++ b/src/procedures/skynet/new_server.md @@ -64,4 +64,73 @@ Now that ye have all the details about the build it is time to add them to the [ Add a new one, incrementing the index, and fill in the rest of the information. For the IP address if the last segment (ABC in this: 193.1.99.ABC) is less than 100 then add a leading ``0`` to it. -This is so that it can be easily sorted. \ No newline at end of file +This is so that it can be easily sorted. + +## Login to Proxmox + +Login to Proxmox (TODO: insert link to accessing Proxmox here) + +## Create Container Using the Base LXC Image +The Proxmox documentation for LXC's is available [here][proxmox_lxc]. + +Top right there is a button [Create CT], that brings up a window. +Each section below is one of the tabs in the window. + +### General +#### Hostname +This is the **Name** of the server, lowercase. +#### Unprivilaged +Ensure this is ticked. +#### Nesting +Ensure this is ticked. +#### SSH Public Keys +Enter the ``root`` pub ssh key. +This is used to login to teh container later. + +### Template +Select the container image, most likely ``nixos-system-x86_64-linux.tar.xz``. + +### Disks +#### Storage +Most likely it is ``main_pool``, it should have a significant amount of storage available. +**DO NOT** use ``local-zfs``, this is on Proxmox's own drive and not suited for container data. + +#### Disk Size +Self-explanatory, how much space you want to give teh container. +A minimum of 30Gb is suggested. + +### CPU +One core minimum, larger servers will require up to 6 or so. + +### Memory +Nixos will happily run on 512Mb if its load is not too intensive + +### Network +#### Bridge +The main bridge we use is ``vmbr0`` which is for most servers as it connects to the normal Skynet DMZ. + +We also have ``vmbr1`` which is for ``skynet.skynet.ie`` and connects to Skynet-EXT DMZ. +This is due to our users needing ssh access. + +#### IPv4 +##### IPv5/CIDR +This is the **IP** followed by ``/26``. +For example ``193.1.99.75/26`` + +##### Gateway +The main gateway we use is ``193.1.99.65``. +There is a secondary one for ``skynet.skynet.ie`` which is ``193.1.96.161``. + +### DNS +You can either use ``use host settings`` or fill in ``193.1.99.120`` and ``193.1.99.109``. + +### Confirm +Use this as a chance to review all the options. +There are a few gotcha's outlined above that ye do have to look over. + +#### Start after created +Tick this box if you want it to boot up immediately after being installed. + + + +[proxmox_lxc]: https://pve.proxmox.com/wiki/Linux_Container \ No newline at end of file From 78c766db90a3da22c6513e85b880160ce50628cf Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Thu, 2 Jan 2025 18:24:32 +0000 Subject: [PATCH 36/69] fmt: little bit of re-organisation --- src/procedures/skynet/new_server.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/new_server.md index d926e43..38dee07 100644 --- a/src/procedures/skynet/new_server.md +++ b/src/procedures/skynet/new_server.md @@ -46,19 +46,12 @@ For example: If at all possible try to get the name to match its task. Some past names and ideas for others can be found on [the nixos wiki][server_names] -[server_name_skynet]: https://2009.skynet.ie/history.html -[server_names]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/Possible_Server_Names.md - - - ### What is its **IP** address? We have a ``/26`` allocation, so about 60 IP's we can make use of. Like with the names above several servers are grouped together IP wise. Check the [Server Inventory][server_inventory] to see what addresses are available. -[server_inventory]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/ITD/Server_Inventory.csv - ### Tracking sheet Now that ye have all the details about the build it is time to add them to the [Server Inventory][server_inventory]. Add a new one, incrementing the index, and fill in the rest of the information. @@ -79,7 +72,7 @@ Each section below is one of the tabs in the window. ### General #### Hostname This is the **Name** of the server, lowercase. -#### Unprivilaged +#### Unprivileged Ensure this is ticked. #### Nesting Ensure this is ticked. @@ -133,4 +126,9 @@ Tick this box if you want it to boot up immediately after being installed. + + +[server_name_skynet]: https://2009.skynet.ie/history.html +[server_names]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/Possible_Server_Names.md +[server_inventory]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/ITD/Server_Inventory.csv [proxmox_lxc]: https://pve.proxmox.com/wiki/Linux_Container \ No newline at end of file From c4631434d66730334fe1d270e9e51071990ef450 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 5 Jan 2025 15:43:21 +0000 Subject: [PATCH 37/69] feat: login to teh server step completed --- src/procedures/skynet/new_server.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/new_server.md index 38dee07..b347178 100644 --- a/src/procedures/skynet/new_server.md +++ b/src/procedures/skynet/new_server.md @@ -6,7 +6,7 @@ Rough steps are as follows: 1. Plan the servers config 2. Login to Proxmox 3. Create Container using the base LXC image -4. Grab server details +4. Login to Server 5. Push new configuration ## Plan server Configuration @@ -124,11 +124,29 @@ There are a few gotcha's outlined above that ye do have to look over. #### Start after created Tick this box if you want it to boot up immediately after being installed. +## Login to Server +Now that the server is up and running it is time to login to it. +Assuming you have your SSH configured like (TODO: admin ssh config). +You just have to use ``ssh root@IP`` (for example ``ssh root@192.99.1.111``) +### Getting the server ssh key +We are logging in because we need to get the servers own ssh key. +You can find it in ``/etc/ssh``. +You have a choice between ``ssh_host_ed25519_key.pub`` and ``ssh_host_rsa_key.pub``. +``ssh_host_ed25519_key.pub`` is the recommended one. + +### Using the server ssh key +This key is used to decrypt secrets stored in our Nixos repo and as such needs to be added there. +1. Add the key with the other system keys [here][nixos_secrets]. +2. Add it to the systems array underneath that. +3. In the ``secrets`` folder run ``cd secrets && agenix -r`` to rekey the secrets. + * This is to give the new server access. +4. Commit all the changed files [server_name_skynet]: https://2009.skynet.ie/history.html [server_names]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/Possible_Server_Names.md [server_inventory]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/ITD/Server_Inventory.csv -[proxmox_lxc]: https://pve.proxmox.com/wiki/Linux_Container \ No newline at end of file +[proxmox_lxc]: https://pve.proxmox.com/wiki/Linux_Container +[nixos_secrets]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/secrets/secrets.nix#L35 \ No newline at end of file From ececefd9bf2cc93e8b876c41267f76359ca1652b Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 5 Jan 2025 19:42:43 +0000 Subject: [PATCH 38/69] doc: added segments on how to deploy the config --- src/procedures/skynet/new_server.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/new_server.md index b347178..7ec7a89 100644 --- a/src/procedures/skynet/new_server.md +++ b/src/procedures/skynet/new_server.md @@ -144,9 +144,35 @@ This key is used to decrypt secrets stored in our Nixos repo and as such needs t 4. Commit all the changed files +## Push new configuration +### Create config +An example server config for nixos is [available here][nixos_template]. +Copy it to a new file and name it ``name.nix``. +Fill in all relevant details (name/ip/name details/its purpose/...). + +Finally add it to the bottom of the [``flake.nix``][nixos_flake]. +Save and commit the files. + +### Push Config +There are two ways to test out the config, manual and pipeline. +Each has pros and cons. + +#### Manually +This requires your key to be added the the keys for the [root account][nixos_root] and your ``~/.ssh/config`` to be set up properly (TODO: SSH tutorial) + +1. Build it with ``colmena build --on name`` +2. If it builds ye can test deployment +3. Deploy it using ``colmena apply --on name`` + +#### Pipeline +Just push it to the repo and the pipeline will handle building and deployment. +The disadvantage of this is you cannot fix any mistakes before they are pushed. [server_name_skynet]: https://2009.skynet.ie/history.html [server_names]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/Possible_Server_Names.md [server_inventory]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/ITD/Server_Inventory.csv [proxmox_lxc]: https://pve.proxmox.com/wiki/Linux_Container -[nixos_secrets]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/secrets/secrets.nix#L35 \ No newline at end of file +[nixos_secrets]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/secrets/secrets.nix#L35 +[nixos_template]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/machines/_template.nix +[nixos_flake]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/flake.nix#L156 +[nixos_root]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/machines/_base.nix#L75 \ No newline at end of file From f3e6d86211c296d44fa4208c88927dc462afcd18 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 5 Jan 2025 19:47:14 +0000 Subject: [PATCH 39/69] fmt: rename --- src/procedures/skynet/{new_server.md => server_new.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/procedures/skynet/{new_server.md => server_new.md} (100%) diff --git a/src/procedures/skynet/new_server.md b/src/procedures/skynet/server_new.md similarity index 100% rename from src/procedures/skynet/new_server.md rename to src/procedures/skynet/server_new.md From eaa30e38fd132ba7df7aa2860bd2a9c4bf304c5a Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 5 Jan 2025 19:49:40 +0000 Subject: [PATCH 40/69] doc: planned documentation --- src/procedures/skynet/admin_add.md | 0 src/procedures/skynet/admin_remove.md | 0 src/procedures/skynet/admin_ssh.md | 0 src/procedures/skynet/almnui_verify.md | 0 src/procedures/skynet/committee_modify.md | 0 src/procedures/skynet/proxmox_access.md | 0 src/procedures/skynet/proxmox_reboot.md | 0 src/procedures/skynet/server_update.md | 0 src/procedures/skynet/vaultwarden.md | 0 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/procedures/skynet/admin_add.md create mode 100644 src/procedures/skynet/admin_remove.md create mode 100644 src/procedures/skynet/admin_ssh.md create mode 100644 src/procedures/skynet/almnui_verify.md create mode 100644 src/procedures/skynet/committee_modify.md create mode 100644 src/procedures/skynet/proxmox_access.md create mode 100644 src/procedures/skynet/proxmox_reboot.md create mode 100644 src/procedures/skynet/server_update.md create mode 100644 src/procedures/skynet/vaultwarden.md diff --git a/src/procedures/skynet/admin_add.md b/src/procedures/skynet/admin_add.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/admin_remove.md b/src/procedures/skynet/admin_remove.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/admin_ssh.md b/src/procedures/skynet/admin_ssh.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/almnui_verify.md b/src/procedures/skynet/almnui_verify.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/committee_modify.md b/src/procedures/skynet/committee_modify.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/proxmox_access.md b/src/procedures/skynet/proxmox_access.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/proxmox_reboot.md b/src/procedures/skynet/proxmox_reboot.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/server_update.md b/src/procedures/skynet/server_update.md new file mode 100644 index 0000000..e69de29 diff --git a/src/procedures/skynet/vaultwarden.md b/src/procedures/skynet/vaultwarden.md new file mode 100644 index 0000000..e69de29 From c6f2f62b091bca27bd164cad400920bc7f026652 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 8 Jan 2025 23:58:50 +0000 Subject: [PATCH 41/69] doc: add about how to verify alumni --- src/procedures/skynet/almnui_verify.md | 0 src/procedures/skynet/alumni_verify.md | 95 +++++++++++++++++++ .../skynet/alumni_verify/plus_icon.png | 3 + .../skynet/alumni_verify/private_thread.png | 3 + 4 files changed, 101 insertions(+) delete mode 100644 src/procedures/skynet/almnui_verify.md create mode 100644 src/procedures/skynet/alumni_verify.md create mode 100644 src/procedures/skynet/alumni_verify/plus_icon.png create mode 100644 src/procedures/skynet/alumni_verify/private_thread.png diff --git a/src/procedures/skynet/almnui_verify.md b/src/procedures/skynet/almnui_verify.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/procedures/skynet/alumni_verify.md b/src/procedures/skynet/alumni_verify.md new file mode 100644 index 0000000..e5ede7f --- /dev/null +++ b/src/procedures/skynet/alumni_verify.md @@ -0,0 +1,95 @@ +# Alumni Verification +We are an old Society (1992-now) with a long history of members staying members long after they leave UL. +In 2023 we had an outage ([see here for more information][outage_2023]) which lead to us loosing contact with many of these since their contact details were their Skynet email. +We are also required to ensure that all active Skynet accounts are linked to a UL Computer Society membership. +This put us in the catch22, where folks needed their Skynet account in order to gain access to their Skynet account. + +Many of these people want to regain access to their accounts and will make a request for help. + +## How to process Requests +These requests to gain access to an old Skynet account may come in through one of our Email addresses (``contact@skynet.ie``) or from our [Discord][discord] + +### Email +Keep an eye on the inboxes ye have access to. +Ensure that you have set up the aliases correctly (TODO: Email Aliases). +Aside from that be polite. + +### Discord +Generally users will bring up their query in ``help-and-support``. +It is recommended that you create a Private thread and ping them to bring them into it. +This ensures that no private information will leak out. + +#### How to create a Private Thread + +1. Bottom left there is a Plus icon, click on that and select the ``Thread`` option. + ![plus_icon.png](alumni_verify/plus_icon.png) +2. In teh segment that popped up tick the Private Thread checkbox. + ![private_thread.png](alumni_verify/private_thread.png) + +## The user recovers their own account. +The easiest way is that the user can recover their own account. +This works if they know their own username/password. +See [Account Recovery here][account_recovery] for more details. + +If the user's account is old enough that the password is hashed with CRYPT then tehy will be unable to reset it themselves (even if they know teh password). +This is due to CRYPT being specific to the *machine* it is on, and the LDAP server has moved several times since in the last two decades. +In which case check out the following methods. + +## Check if there is ``.forward`` +A ``.forward`` file was placed in a users home directory to forward all incoming mail to that address. + +```shell +USER="username" + +# Output a list of paths if one exists for this user +find /skynet_old/{mailconfig,home}/$USER-name '.forward' + +# use cat to output the contents to teh terminal +cat /skynet_old/mailconfig/$USER/.forward +``` + +### Usernames +One possible contents of the file is one or more Skynet usernames. + +These are not too useful for our use case. +``` +usera +userb +``` + +### Email(s) +What we are looking for is an email (identity) to tie the Skynet account to. +In which case you can check with the user that they still have access to teh email. +Get them to send you a mail from that account and verify the headers (TODO: Email headers) +``` +username@example.com +``` + +## Find a link to Personal Email +Nothing in the ``.forwards`` or they no longer have access to the email its time to see if you can tie their current identity to skynet. +This is mostly possible since many members used to send mail between their Skynet account and their private account. + +SSH into ``skynet.skynet.ie`` and run: +```shell +EMAIL="email@example.ie" +USER="username" +grep -r "$EMAIL" /skynet_old/{home,mail,mailconfig}/$USER +``` +It may take a while to run depending on the contents of these folders. +in some cases they may have proof of their ID, in which case you can search for that. + +Honestly the output of this is vibes based. +If there are forwarded email headers its a strong indication. +If a file in their ``public_html`` shows up that is also a strong indication. +The easiest one is if nothing pops up. + +Remember you are the guardian of data on Skynet, if a user cannot prove a connection you are not obligated to grant them access. + +[outage_2023]: ../../support/recovery.md +[discord]: https://discord.skynet.ie +[account_recovery]: ../../support/recovery#account-recovery + + \ No newline at end of file diff --git a/src/procedures/skynet/alumni_verify/plus_icon.png b/src/procedures/skynet/alumni_verify/plus_icon.png new file mode 100644 index 0000000..6b3616c --- /dev/null +++ b/src/procedures/skynet/alumni_verify/plus_icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c8b9c84d2e446106fd7b0dea7cbc174427560889c7434a3bd78fab972f2775 +size 1602 diff --git a/src/procedures/skynet/alumni_verify/private_thread.png b/src/procedures/skynet/alumni_verify/private_thread.png new file mode 100644 index 0000000..1f9e821 --- /dev/null +++ b/src/procedures/skynet/alumni_verify/private_thread.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2b8a766d63908e1f684734f210d9bf982c23a63b281336ff468f96cae79acf9 +size 5904 From 3c03d6ae7aedafcfba98293491e7cb497c0ee8c4 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 10 Jan 2025 23:12:56 +0000 Subject: [PATCH 42/69] doc: add how to update Nixos based servers --- src/procedures/skynet/server_update_nixos.md | 84 ++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/procedures/skynet/server_update_nixos.md diff --git a/src/procedures/skynet/server_update_nixos.md b/src/procedures/skynet/server_update_nixos.md new file mode 100644 index 0000000..23605fc --- /dev/null +++ b/src/procedures/skynet/server_update_nixos.md @@ -0,0 +1,84 @@ +# Updating Servers (NixOS) +A short guide on how to update NixOS servers. +This is required at least once a semester in order to keep the systems up to date. + +These are some of the easiest servers we have to update. +This is how you update it locally, and then deploy. + +## Update +Invoke the devshell for the NixOS repo locally on your computer (TODO: Setup nix and into to devshell). +This will give you all the tools you need to update the NixOS servers. + +In that shell you can run these commands. + +```shell +# this will update every input, sometimes that is not desired +nix flake update + +# This will update a single input, nixpkgs which will update the OS's +nix flake update nixpkgs colmena + +# Update multiple at once, these are the core tools and utilities +# Recommended command +nix flake update nixpkgs flake-utils agenix arion alejandra colmena +``` + +## Build +Now that the inputs have been updated it is time to build it locally to ensure no errors pop up. +For any errors that pop up you can use ``--key-result`` in order to explore the system output. + +```shell +# This will build all the servers locally +colmena build + +# Build a single one +colmena build --on glados + +# Build a logical group of them +colmena build --on @active-dns + +# Build all but keep the outputs in ``.gcroots`` +# This is useful if you need to explore the config locally +colmena build --keep-result +``` + + +## Deploy +It is now time to commit and deploy the updates. + + +### Manually +Most of the flags from the build step above apply for teh deploy step. +You dont need to have the files committed to do this, so it cna be useful for testing. + +```shell +# This will build all the servers locally +colmena deploy + +# Build a single one +colmena deploy --on glados + +# Build a logical group of them +colmena deploy --on @active-dns +``` + + +### Pipeline +To deploy via the pipeline simply commit and push to Forgejo. +The pipeline will build and deploy to almost all the servers. +Downside of this is slow iteration for testing, but it is useful if you are pretty sure of teh changes. + +#### Git Server/Runner +The CI/CD pipelines we have run on Glados and Wheatly, as such the pipelines are not able to update these two servers on their own. +These need to be updated manually using any of these commands: + +```shell +# This will deploy all the servers +colmena deploy + +# Deploy a single one +colmena deploy --on glados wheatly + +# Deploy a logical group of them +colmena deploy --on @active-git +``` \ No newline at end of file From 0dbea49129b57bdd37fc389c3ee57fe90bc72542 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 10 Jan 2025 23:13:08 +0000 Subject: [PATCH 43/69] doc: new topics to cover --- src/procedures/skynet/{server_update.md => domains_renew.md} | 0 src/procedures/skynet/server_update_procmox.md | 3 +++ 2 files changed, 3 insertions(+) rename src/procedures/skynet/{server_update.md => domains_renew.md} (100%) create mode 100644 src/procedures/skynet/server_update_procmox.md diff --git a/src/procedures/skynet/server_update.md b/src/procedures/skynet/domains_renew.md similarity index 100% rename from src/procedures/skynet/server_update.md rename to src/procedures/skynet/domains_renew.md diff --git a/src/procedures/skynet/server_update_procmox.md b/src/procedures/skynet/server_update_procmox.md new file mode 100644 index 0000000..cd5f5d6 --- /dev/null +++ b/src/procedures/skynet/server_update_procmox.md @@ -0,0 +1,3 @@ +# Updating Servers (Proxmox) +A short guide on how to update servers + From b3ce7c30f4d4a6372e9b7946b62428f831e0b649 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 11 Jan 2025 00:14:08 +0000 Subject: [PATCH 44/69] doc: added procedure to modify committee members --- src/procedures/skynet/committee_modify.md | 48 +++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/procedures/skynet/committee_modify.md b/src/procedures/skynet/committee_modify.md index e69de29..8983cac 100644 --- a/src/procedures/skynet/committee_modify.md +++ b/src/procedures/skynet/committee_modify.md @@ -0,0 +1,48 @@ +# Change Committee Members +This page covers the adding and removing of UL Computer Society committee members. + +## Adding +Before starting the committee member in question *must* have a Skynet Account. +This is because we have several services that require authentication to access. +Details on how to create one can be found [here][skynet_account_creation]. + +Once they have an account add their username to [``users.nix``][users.nix]. +Then commit and push. + +Once everything is deployed they should have access to all resources within 15 min. +If you require it sooner than that see the [Force Update](#force-update) section below. + +Next checkout the page on [VaultWarden](./vaultwarden.md) to add the user to the password manager. + +## Removing +Removing is essentially the same as adding. + +Remove their username to [``users.nix``][users.nix]. +Then commit and push. + +## Force Update +If you need to hasten an update you can log into teh server to give it a (virtual) kick. + +### SSH into Kitt +Kit is teh home of the user accounts. +```shell +ssh root@kitt.skynet.ie +``` +### Once attached run these commands +```shell +# reboot the main process +systemctl reboot skynet_ldap_backend.service + +# Update the data (this ensures that folks are current members) +systemctl reboot skynet_ldap_backend-update_data.service + +# Apply the new group roles +systemctl reboot skynet_ldap_backend-update_groups.service +``` +### Exit the terminal. +```shell +quit +``` + +[skynet_account_creation]: ../../tutorials/skynet/create_account.md +[users.nix]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/config/users.nix#L52 \ No newline at end of file From 1050c1d8b0c05de19455e8d1c5e047fe20b73079 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 11 Jan 2025 01:54:20 +0000 Subject: [PATCH 45/69] doc: added page on how to add/remove admins --- src/procedures/skynet/admin_add.md | 0 src/procedures/skynet/admin_modify.md | 78 +++++++++++++++++++++++ src/procedures/skynet/admin_remove.md | 0 src/procedures/skynet/committee_modify.md | 4 +- 4 files changed, 80 insertions(+), 2 deletions(-) delete mode 100644 src/procedures/skynet/admin_add.md create mode 100644 src/procedures/skynet/admin_modify.md delete mode 100644 src/procedures/skynet/admin_remove.md diff --git a/src/procedures/skynet/admin_add.md b/src/procedures/skynet/admin_add.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/procedures/skynet/admin_modify.md b/src/procedures/skynet/admin_modify.md new file mode 100644 index 0000000..f7927b5 --- /dev/null +++ b/src/procedures/skynet/admin_modify.md @@ -0,0 +1,78 @@ +# Change Admins +A Skynet Admin is a user with teh highest level of access to the cluster, having been trained up over a year. +This guide will cover adding and removing an Admin. + +The normal Committee Member process applies to them as well, so check [here](./committee_modify.md#adding) for teh specific details. + +A user cannot add or remove themselves from being an admin, an existing admin must do so (one who will still be admin after the procedure). + +## Add +Steps to add a new Admin + +### NixOS +There are several steps related to the NixOS repo on Forgejo. + +#### Username Added +Like a normal committee member the users username must be added to the [``config/users.nix``][users.nix], specifically the admin section. +This gives teh user teh correct Skynet roles on our services. +This also enables them to use their personal account to login to all the servers. + +#### SSH Key +##### Root Account +There is a ``root`` account that admins can use. +To be able to login as root you have to add you key to the keys for ``root`` + +You can add it in the [``machines/_base.nix``][base.nix]. + +##### Secrets Management +We store our secrets encrypted in the repo using a tool called ``agenix``, a nix implementation of [age][age]. +In order to create/edit any secret your key has to be added to [``secrets/secrets.nix``][secrets.nix]. + +Add the key mimicking the format for the other admins. +Then add it to the users list/array. +Finally re-key the secrets + + +###### Re-key Secrets +In order to re-key the secrets your key must have been previously added (this just not work if you have just added your key, an existing admin must do this). + + +```shell +# enter the devshell +nix develop + +# Move into teh secrets folder +cd secrets + +# Re-key the secrets +agenix -R +``` + +Then commit the changes. + +### VPN +The VPN is what allows admins to get access to the internal parts of teh cluster when not on campus. +It is provided by ITD. + +1. Add an entry to the bottom of [``ITD/VPN_Admins.csv``][VPN_Admins.csv] +2. Add an entry to [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv] with ``Pending`` for teh Action. +3. Open up a TopDesk request with ITD to add the new Admin (TODO: TopDesk procedure) +4. Add the ticket reference to [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv] +5. When complete mark the entry ``Added`` on [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv]. + +## Remove +For teh most part the removal/retirement of an admin is just the opposite of the adding. +The main difference is contacting ITD to remove them from the VPN. + +### VPN +1. Open up a TopDesk request with ITD to remove the old Admin. +2. Add the ticket reference to [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv] +3. When complete mark the entry ``Removed`` on [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv]. + + +[users.nix]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/b46eca16b0b207d14e173d4e40286160749c5c07/config/users.nix#L76 +[base.nix]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/b46eca16b0b207d14e173d4e40286160749c5c07/machines/_base.nix#L75 +[secrets.nix]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/b46eca16b0b207d14e173d4e40286160749c5c07/secrets/secrets.nix#L3-L18 +[VPN_Admins.csv]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/b46eca16b0b207d14e173d4e40286160749c5c07/ITD/VPN_Admins.csv +[VPN_Admins_changes.csv]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/b46eca16b0b207d14e173d4e40286160749c5c07/ITD/VPN_Admins_changes.csv +[age]: https://github.com/FiloSottile/age diff --git a/src/procedures/skynet/admin_remove.md b/src/procedures/skynet/admin_remove.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/procedures/skynet/committee_modify.md b/src/procedures/skynet/committee_modify.md index 8983cac..a903127 100644 --- a/src/procedures/skynet/committee_modify.md +++ b/src/procedures/skynet/committee_modify.md @@ -6,7 +6,7 @@ Before starting the committee member in question *must* have a Skynet Account. This is because we have several services that require authentication to access. Details on how to create one can be found [here][skynet_account_creation]. -Once they have an account add their username to [``users.nix``][users.nix]. +Once they have an account add their username to [``config/users.nix``][users.nix]. Then commit and push. Once everything is deployed they should have access to all resources within 15 min. @@ -17,7 +17,7 @@ Next checkout the page on [VaultWarden](./vaultwarden.md) to add the user to the ## Removing Removing is essentially the same as adding. -Remove their username to [``users.nix``][users.nix]. +Remove their username to [``config/users.nix``][users.nix]. Then commit and push. ## Force Update From 48821a414f7a9f5b32d71adee22065018c7c000f Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 13 Jan 2025 13:38:57 +0000 Subject: [PATCH 46/69] doc: added how to find information on updating proxmox --- src/procedures/skynet/server_update_procmox.md | 3 --- src/procedures/skynet/server_update_proxmox.md | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) delete mode 100644 src/procedures/skynet/server_update_procmox.md create mode 100644 src/procedures/skynet/server_update_proxmox.md diff --git a/src/procedures/skynet/server_update_procmox.md b/src/procedures/skynet/server_update_procmox.md deleted file mode 100644 index cd5f5d6..0000000 --- a/src/procedures/skynet/server_update_procmox.md +++ /dev/null @@ -1,3 +0,0 @@ -# Updating Servers (Proxmox) -A short guide on how to update servers - diff --git a/src/procedures/skynet/server_update_proxmox.md b/src/procedures/skynet/server_update_proxmox.md new file mode 100644 index 0000000..bf1ecab --- /dev/null +++ b/src/procedures/skynet/server_update_proxmox.md @@ -0,0 +1,16 @@ +# Updating Servers (Proxmox) +A short guide on how to update servers running Proxmox VM Host + +There is documentation for Proxmox available on teh [web][docs_web] and locally on teh server [itself][docs_inbuilt]. +The inbuilt ones are preferred since they match teh version of Proxmox we are using. +In both there is a chapter called [``System Software Updates``][docs_inbuilt_update] which tells you how to update. + +When there is a major version released there will be a new link on [this page][docs_wiki] in teh format of: +``Upgrade from $VersionCurrent to $VersionNext`` + + + +[docs_inbuilt]: https://193.1.99.73:8006/pve-docs/pve-admin-guide.html +[docs_inbuilt_update]: https://193.1.99.73:8006/pve-docs/pve-admin-guide.html#system_software_updates +[docs_web]: https://pve.proxmox.com/pve-docs/pve-admin-guide.html +[docs_wiki]: https://pve.proxmox.com/wiki/Category:Upgrade \ No newline at end of file From 765d6d3f484c3922f0a377478b26c39efc5ad2bc Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 13 Jan 2025 22:56:22 +0000 Subject: [PATCH 47/69] doc: information on vaultwarden --- src/procedures/skynet/vaultwarden.md | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/procedures/skynet/vaultwarden.md b/src/procedures/skynet/vaultwarden.md index e69de29..9520429 100644 --- a/src/procedures/skynet/vaultwarden.md +++ b/src/procedures/skynet/vaultwarden.md @@ -0,0 +1,36 @@ +# Vaultwarden +[Vaultwarden][vaultwarden_github] is rust based server implmentation of [Bitwarden][bitwarden_github]. +One of the core reasons why we went with Vaultwarden over the original Bitwarden is that it gives us access to Org Mode. +This allows us to have an organisation with multiple members with access to passwords, as well as controlling their access. + +Additionally we are using [Bitwarden Directory Connector][bitwarden-dc_github] to sync our ldap groups to vaultwarden. +This is how Admins and Committee can access the password manager. +it also removes folks access once they no longer meet the requirements (be committee or admin). + +Vaultwarden is not available for regular Skynet users since we do not want teh responsibility of managing their passwords, since the cost of failing is so high (for us) + +The instance is available at [``pw.skynet.ie``][pw]. + +## Adding Users +When a committee member gets [added](./committee_modify.md#adding) they will become of teh committee LDAP group. +When this group is synced with Vaultwarden then that member will get an email to their Skynet account to ``Join UL Computer Society``. + +The member should then click on teh link in that email. +They will then have to choose a password to access the password manager, the password tied to their Skynet account does nto sync for security reasons. + +The user will then need to be confirmed in the [organisation panel][pw_org]. +Once that is complete they will have access to Computer Societies AND/OR Skynet's passwords, depending if they are committee or a Skynet admin.' + + +## Resending Invites +If the user does not accept the invite within a day or so the invite will expire. + +In the [organisation panel][pw_org], to the far right of teh user there is a ``⋮``. +Selecting it will give an option to resend the invite. + + +[vaultwarden_github]: https://github.com/dani-garcia/vaultwarden +[bitwarden_github]: https://github.com/bitwarden/server +[bitwarden-dc_github]: https://github.com/bitwarden/directory-connector +[pw]: https://pw.skynet.ie/ +[pw_org]: https://pw.skynet.ie/#/organizations/ca0eacc2-988f-4368-b85f-40061eefd453/members \ No newline at end of file From 27facd79202f99a955811ac84091a97c29e6b81b Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 13 Jan 2025 23:00:50 +0000 Subject: [PATCH 48/69] fmt: move the procedures up a layer --- src/procedures/{skynet => }/admin_modify.md | 2 +- src/procedures/{skynet => }/admin_ssh.md | 0 src/procedures/{skynet => }/alumni_verify.md | 2 +- src/procedures/{skynet => }/alumni_verify/plus_icon.png | 0 src/procedures/{skynet => }/alumni_verify/private_thread.png | 0 src/procedures/{skynet => }/committee_modify.md | 4 ++-- src/procedures/{skynet => }/domains_renew.md | 0 src/procedures/{skynet => }/proxmox_access.md | 0 src/procedures/{skynet => }/proxmox_reboot.md | 0 src/procedures/{skynet => }/server_new.md | 0 src/procedures/{skynet => }/server_update_nixos.md | 0 src/procedures/{skynet => }/server_update_proxmox.md | 0 src/procedures/{skynet => }/vaultwarden.md | 2 +- 13 files changed, 5 insertions(+), 5 deletions(-) rename src/procedures/{skynet => }/admin_modify.md (98%) rename src/procedures/{skynet => }/admin_ssh.md (100%) rename src/procedures/{skynet => }/alumni_verify.md (99%) rename src/procedures/{skynet => }/alumni_verify/plus_icon.png (100%) rename src/procedures/{skynet => }/alumni_verify/private_thread.png (100%) rename src/procedures/{skynet => }/committee_modify.md (89%) rename src/procedures/{skynet => }/domains_renew.md (100%) rename src/procedures/{skynet => }/proxmox_access.md (100%) rename src/procedures/{skynet => }/proxmox_reboot.md (100%) rename src/procedures/{skynet => }/server_new.md (100%) rename src/procedures/{skynet => }/server_update_nixos.md (100%) rename src/procedures/{skynet => }/server_update_proxmox.md (100%) rename src/procedures/{skynet => }/vaultwarden.md (94%) diff --git a/src/procedures/skynet/admin_modify.md b/src/procedures/admin_modify.md similarity index 98% rename from src/procedures/skynet/admin_modify.md rename to src/procedures/admin_modify.md index f7927b5..abcda84 100644 --- a/src/procedures/skynet/admin_modify.md +++ b/src/procedures/admin_modify.md @@ -2,7 +2,7 @@ A Skynet Admin is a user with teh highest level of access to the cluster, having been trained up over a year. This guide will cover adding and removing an Admin. -The normal Committee Member process applies to them as well, so check [here](./committee_modify.md#adding) for teh specific details. +The normal Committee Member process applies to them as well, so check [here](committee_modify.md#adding) for teh specific details. A user cannot add or remove themselves from being an admin, an existing admin must do so (one who will still be admin after the procedure). diff --git a/src/procedures/skynet/admin_ssh.md b/src/procedures/admin_ssh.md similarity index 100% rename from src/procedures/skynet/admin_ssh.md rename to src/procedures/admin_ssh.md diff --git a/src/procedures/skynet/alumni_verify.md b/src/procedures/alumni_verify.md similarity index 99% rename from src/procedures/skynet/alumni_verify.md rename to src/procedures/alumni_verify.md index e5ede7f..47f2074 100644 --- a/src/procedures/skynet/alumni_verify.md +++ b/src/procedures/alumni_verify.md @@ -85,7 +85,7 @@ The easiest one is if nothing pops up. Remember you are the guardian of data on Skynet, if a user cannot prove a connection you are not obligated to grant them access. -[outage_2023]: ../../support/recovery.md +[outage_2023]: ../support/recovery.md [discord]: https://discord.skynet.ie [account_recovery]: ../../support/recovery#account-recovery diff --git a/src/procedures/skynet/alumni_verify/plus_icon.png b/src/procedures/alumni_verify/plus_icon.png similarity index 100% rename from src/procedures/skynet/alumni_verify/plus_icon.png rename to src/procedures/alumni_verify/plus_icon.png diff --git a/src/procedures/skynet/alumni_verify/private_thread.png b/src/procedures/alumni_verify/private_thread.png similarity index 100% rename from src/procedures/skynet/alumni_verify/private_thread.png rename to src/procedures/alumni_verify/private_thread.png diff --git a/src/procedures/skynet/committee_modify.md b/src/procedures/committee_modify.md similarity index 89% rename from src/procedures/skynet/committee_modify.md rename to src/procedures/committee_modify.md index a903127..abd9248 100644 --- a/src/procedures/skynet/committee_modify.md +++ b/src/procedures/committee_modify.md @@ -12,7 +12,7 @@ Then commit and push. Once everything is deployed they should have access to all resources within 15 min. If you require it sooner than that see the [Force Update](#force-update) section below. -Next checkout the page on [VaultWarden](./vaultwarden.md) to add the user to the password manager. +Next checkout the page on [VaultWarden](vaultwarden.md) to add the user to the password manager. ## Removing Removing is essentially the same as adding. @@ -44,5 +44,5 @@ systemctl reboot skynet_ldap_backend-update_groups.service quit ``` -[skynet_account_creation]: ../../tutorials/skynet/create_account.md +[skynet_account_creation]: ../tutorials/skynet/create_account.md [users.nix]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/config/users.nix#L52 \ No newline at end of file diff --git a/src/procedures/skynet/domains_renew.md b/src/procedures/domains_renew.md similarity index 100% rename from src/procedures/skynet/domains_renew.md rename to src/procedures/domains_renew.md diff --git a/src/procedures/skynet/proxmox_access.md b/src/procedures/proxmox_access.md similarity index 100% rename from src/procedures/skynet/proxmox_access.md rename to src/procedures/proxmox_access.md diff --git a/src/procedures/skynet/proxmox_reboot.md b/src/procedures/proxmox_reboot.md similarity index 100% rename from src/procedures/skynet/proxmox_reboot.md rename to src/procedures/proxmox_reboot.md diff --git a/src/procedures/skynet/server_new.md b/src/procedures/server_new.md similarity index 100% rename from src/procedures/skynet/server_new.md rename to src/procedures/server_new.md diff --git a/src/procedures/skynet/server_update_nixos.md b/src/procedures/server_update_nixos.md similarity index 100% rename from src/procedures/skynet/server_update_nixos.md rename to src/procedures/server_update_nixos.md diff --git a/src/procedures/skynet/server_update_proxmox.md b/src/procedures/server_update_proxmox.md similarity index 100% rename from src/procedures/skynet/server_update_proxmox.md rename to src/procedures/server_update_proxmox.md diff --git a/src/procedures/skynet/vaultwarden.md b/src/procedures/vaultwarden.md similarity index 94% rename from src/procedures/skynet/vaultwarden.md rename to src/procedures/vaultwarden.md index 9520429..bdeb2ce 100644 --- a/src/procedures/skynet/vaultwarden.md +++ b/src/procedures/vaultwarden.md @@ -12,7 +12,7 @@ Vaultwarden is not available for regular Skynet users since we do not want teh r The instance is available at [``pw.skynet.ie``][pw]. ## Adding Users -When a committee member gets [added](./committee_modify.md#adding) they will become of teh committee LDAP group. +When a committee member gets [added](committee_modify.mddding) they will become of teh committee LDAP group. When this group is synced with Vaultwarden then that member will get an email to their Skynet account to ``Join UL Computer Society``. The member should then click on teh link in that email. From efa19cfd96175618aa3e10303bce6e6c56b2ced3 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 15 Jan 2025 16:06:07 +0000 Subject: [PATCH 49/69] docs: added section on renewing ``ulcompsoc.ie`` --- src/procedures/domains_renew.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/procedures/domains_renew.md b/src/procedures/domains_renew.md index e69de29..396bddc 100644 --- a/src/procedures/domains_renew.md +++ b/src/procedures/domains_renew.md @@ -0,0 +1,19 @@ +# Renewing Domains + +While ``skynet.ie`` is sponsored by Blacknight (and we have one more from UL) we still have ``ulcompsoc.ie`` as a backup. +It needs renewing every two years and costs roughly €40/year for this. +Renewing every two years gives us some breathing space. + +1. [Login][login] to Blacknight + * ``username`` and ``password`` are on [Vaultwarden](./vaultwarden.md) +2. ``Domains`` > ``My Domains`` > ``ulcompsoc.ie`` +3. Under ``Actions`` select ``Renew Domain`` +4. ``Add to Cart`` > ``Checkout`` +5. In the ``Review & Checkout`` page there are several options to pay. + * Card - probably the fastest, you will have to submit an invoice to the Treasurer though. (TODO: Section on how to submit invoices) + * Paypal - Same as Card. + * Bank Transfer - Possibly the best, talk to Treasurer about this. +6. Done + + +[login]: https://cp.blacknighthosting.com/index.php/login \ No newline at end of file From 83a26f7f9102cd7e1300863957b970482ad03ab4 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 15 Jan 2025 18:16:08 +0000 Subject: [PATCH 50/69] docs: Give Proxmox its own page --- src/procedures/proxmox.md | 37 ++++++++++++++++++++++++++++++++ src/procedures/proxmox_access.md | 0 src/procedures/proxmox_reboot.md | 0 src/procedures/server_new.md | 2 +- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/procedures/proxmox.md delete mode 100644 src/procedures/proxmox_access.md delete mode 100644 src/procedures/proxmox_reboot.md diff --git a/src/procedures/proxmox.md b/src/procedures/proxmox.md new file mode 100644 index 0000000..9445cf6 --- /dev/null +++ b/src/procedures/proxmox.md @@ -0,0 +1,37 @@ +# Proxmox +A collection of all things proxmox related. + +## Access +Proxmox can be found at [``193.1.99.73:8006``][webgui] when either on UL network or connected to the [VPN][vpn]. +Login with your Skynet account. +The ``root`` account can be found on [Vaultwarden][vaultwarden]. + +If you are on Firefox you may need to refresh teh page if the ``No Valid Subscription`` popup fails to disappear after clicking ``ok``. + +## Rebooting +### LCX's +For some LXC's (haven't tracked down teh root cause) their MAC address has issues when they reboot. +If you are trying to ssh into a LXC which has rebooted it can display ``No route to host``. +To fix: + +1. [Login to Proxmox](#access) +2. Navigate to the LXC +3. Network tab, then double click on the network row. + * Clicking the row then the ``Edit`` button has teh same function. +4. Clear the MAC (so it reads ``auto``) then ``Save`` + +You will be able to ssh into that server now. + +### Proxmox + + + + + + + + +[webgui]: https://193.1.99.73:8006/ +[vpn]: ./admin_modify.md#vpn +[vaultwarden]: ./vaultwarden.md + diff --git a/src/procedures/proxmox_access.md b/src/procedures/proxmox_access.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/procedures/proxmox_reboot.md b/src/procedures/proxmox_reboot.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/procedures/server_new.md b/src/procedures/server_new.md index 7ec7a89..23c196f 100644 --- a/src/procedures/server_new.md +++ b/src/procedures/server_new.md @@ -61,7 +61,7 @@ This is so that it can be easily sorted. ## Login to Proxmox -Login to Proxmox (TODO: insert link to accessing Proxmox here) +[Login to Proxmox](./proxmox.md#access) ## Create Container Using the Base LXC Image The Proxmox documentation for LXC's is available [here][proxmox_lxc]. From 59b80218a047a6fa58814c8c508dacdbcc1afaf3 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Wed, 15 Jan 2025 19:57:05 +0000 Subject: [PATCH 51/69] fix: typo --- src/procedures/committee_modify.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/procedures/committee_modify.md b/src/procedures/committee_modify.md index abd9248..7471fa6 100644 --- a/src/procedures/committee_modify.md +++ b/src/procedures/committee_modify.md @@ -31,13 +31,13 @@ ssh root@kitt.skynet.ie ### Once attached run these commands ```shell # reboot the main process -systemctl reboot skynet_ldap_backend.service +systemctl restart skynet_ldap_backend.service # Update the data (this ensures that folks are current members) -systemctl reboot skynet_ldap_backend-update_data.service +systemctl restart skynet_ldap_backend-update_data.service # Apply the new group roles -systemctl reboot skynet_ldap_backend-update_groups.service +systemctl restart skynet_ldap_backend-update_groups.service ``` ### Exit the terminal. ```shell From 0e42295f5b65fe172ab174eaed899960a02e6148 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 17 Jan 2025 00:24:23 +0000 Subject: [PATCH 52/69] doc: added documentation about creating and managing the minecraft servers --- src/procedures/minecraft.md | 174 ++++++++++++++++++++++++++ src/procedures/minecraft/raw_file.png | 3 + 2 files changed, 177 insertions(+) create mode 100644 src/procedures/minecraft.md create mode 100644 src/procedures/minecraft/raw_file.png diff --git a/src/procedures/minecraft.md b/src/procedures/minecraft.md new file mode 100644 index 0000000..2033f21 --- /dev/null +++ b/src/procedures/minecraft.md @@ -0,0 +1,174 @@ +# Minecraft Server +Skynet can host many game servers, however one of the most popular (going back through teh years) is Minecraft. + +## Base Templates +The base templates for the servers are called [eggs][eggs]. +These are basically scripts to setup and run the servers in question. + +These are created by laying other eggs on top of each otehr to create a single config. +Bit of a PITA to make. + +### mcsleepingserverstarter-Packwiz-Purpur-Geyser-Floodgate +This is the core Minecraft egg and can be found [here][eggs_main]. +It comprises of several components bodged together + +#### Sleeping Server Starter +This is a core component of being able to host multiple servers for multiple Clubs/Socs as it allows us to reduce the footprint of the server when nto so many folks are using it. +It listens on Java and Bedrock ports as a low power process and when someone tries to connect it spins up the full server. +Coupled with a plugin which shuts down teh server after the last person leaves it is pretty good for keeping resourse useage low. + +#### Packwiz +Packwiz is a package/plugin/mod manager for minecraft which is compatible with source control. +The main repo for the plugins can be found [here][config_repo], with branches for each server configured with it + +It allows us to have several plugins as a base that can be used by all servers. + +##### Geyser and Floodgate +These pair together to allow bedrock players to connect and play with a Java server. +Quite useful as this encompasses console players. + +##### ViaVersion +This and its partner plugins allow people who dont have the exact right version to match the server to connect. +Not perfect but it works pretty well. + +#### Purpur +Purpur is a minecraft server which supports plugins. +It is a descendant of Paper and Bukkit and can use plugins built for those. + +## Server - New +### Create user account +On the [admin page][panel_users] create an account for the Club/Soc which is getting the server. +Use their UL Wolves email for the email, username can be whatever as long as its descriptive of the Club/Soc. +Their role should be ``Server Admin``. + +For password use a random string (I use 42 characters) and then email it to their Wolves address. +We are able to reset it in the future if required. + +### Server setup +#### Config +1. On the [config repo][config_repo] fork off of main and name it after the Club/Soc and push. +2. Then on the web version of teh repo find that branch and teh ``pack.toml`` and click into it. +3. In the top right hand corner of the file you will see a button called ``raw``, select that. + ![Raw File Button](minecraft/raw_file.png) +4. Copy the link of the page, will be used shortly. + +#### Pelican Setup +On Pelican, on the [servers page][panel_servers] create a new server. + +##### Information +###### Name +Enter teh Club/Soc who is getting it. + +###### Owner +Select teh account you created earlier. + +###### Primary Allocation +You will need to select the ``+``. +For ``IP Address`` select teh ``193.1.99.xyz`` address. +For ``Ports`` enter the minecraft port you have chosen, you can see the existing ports on [NixOS][nixos_minecraft] +Java ports take the form of ``255XY`` while Bedrock takes ``244XY``, with teh ``XY`` being teh same for both (makes it easier to keep track). + +Once ye have that chosen click on teh ``Next Step``. + +##### Egg Configuration +###### Egg +Select the ``mcsleepingserverstarter-Packwiz-Purpur-Geyser-Floodgate`` egg. + +###### Packwiz URL +Then enter teh URL you copied previously into the input. + +Once ye have that chosen click on teh ``Next Step``. + +##### Environment Configuration +###### Memory +Set this to be ``Limited`` and between ``8000`` and ``12000`` + +Once ye have that chosen click on teh ``Create Server``. + +#### NixOS +In NixOS you have to create DNS entries so folks can easily connect to teh server. +Location is in [``minecraft.nix``][nixos_minecraft], copy the existing format. + +This will allow players to connect to ``minecraft.$CLUBSOC.games.skynet.ie``, although bedrock players will still need to use the port. + + +### Server Configuration +#### ``server.properties`` + +This is to allow bedrock users to text chat +```` +enforce-secure-profile: false +```` + +#### ``plugins/Geyser-Spigot/config.yml`` +Set the bedrock port + +```yaml +bedrock: + port: 24423 +``` + +Also set the authtype to be ``floodgate`` +```yaml +remote: + auth-type: floodgate +``` + +#### ``sleepingSettings.yml`` +Bedrock port needs to be added to this file: +```yaml +bedrockPort: 24423 +``` + +## Server - Update + +### Plugins Modification +#### DevShell +In the [config repo][config_repo] run this command to enter teh devshell which gives you access to ``packwiz``: + +```shell +nix develop +``` + +#### Add +Once in the devshell use the add command to add a plugin. + +```shell +packwiz modrinth add $LinkToModrinthPlugin +``` + +Commit and push. + +#### Update +To update all plugins you can use this command +```shell +packwiz update --all +``` +Commit and push. + +#### Remove +To remove a plugin just delete the ``*.pw.toml``. +Then run the refresh command to update teh pack +```shell +packwiz refresh +``` +Commit and push. + +### Server Update +Now that teh pack has been updated you need to restart teh server to pull it in. + +1. ``Stop`` the server + * This stops the java server, does not start teh ``sleepingserverstarter`` server. +2. ``Kill`` the server + * This stops the ``sleepingserverstarter`` server. +3. ``Start`` the server + * This restarts everything and pulls in teh updates. + + + +[eggs]: https://panel.games.skynet.ie/admin/eggs +[eggs_main]: https://panel.games.skynet.ie/admin/eggs/22/edit?tab=-configuration-tab +[config_repo]: https://forgejo.skynet.ie/silver/Testing_packwiz +[panel_users]: https://panel.games.skynet.ie/admin/users +[panel_servers]: https://panel.games.skynet.ie/admin/servers +[nixos_minecraft]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/games/minecraft.nix#L27 \ No newline at end of file diff --git a/src/procedures/minecraft/raw_file.png b/src/procedures/minecraft/raw_file.png new file mode 100644 index 0000000..db15b42 --- /dev/null +++ b/src/procedures/minecraft/raw_file.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24e452fc56033e24087f2846386f3a84fe1039d8eb125e749ef125c988da8c41 +size 4131 From 357b67321d03d494e1e7bee15d80937b70c13097 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 17 Jan 2025 23:33:49 +0000 Subject: [PATCH 53/69] doc: add section on voice chat and discord intergration --- src/procedures/minecraft.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/procedures/minecraft.md b/src/procedures/minecraft.md index 2033f21..7f15137 100644 --- a/src/procedures/minecraft.md +++ b/src/procedures/minecraft.md @@ -93,6 +93,18 @@ This will allow players to connect to ``minecraft.$CLUBSOC.games.skynet.ie``, al ### Server Configuration +#### Discord +TODO: https://essentialsx.net/wiki/Discord-Tutorial.html + +#### ``plugins/voicechat/voicechat-server.properties`` +(TODO: add more about teh voice port) + +Set teh port for use in teh voice chat. +``` +port=24424 +``` + + #### ``server.properties`` This is to allow bedrock users to text chat From 00f334fde4da3740dd8767c9207b14fb45c0afd1 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 18 Jan 2025 14:20:42 +0000 Subject: [PATCH 54/69] doc: how to use topdesk as a skynet admin --- src/procedures/admin_modify.md | 2 +- src/procedures/topdesk.md | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/procedures/topdesk.md diff --git a/src/procedures/admin_modify.md b/src/procedures/admin_modify.md index abcda84..5d3ab5c 100644 --- a/src/procedures/admin_modify.md +++ b/src/procedures/admin_modify.md @@ -56,7 +56,7 @@ It is provided by ITD. 1. Add an entry to the bottom of [``ITD/VPN_Admins.csv``][VPN_Admins.csv] 2. Add an entry to [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv] with ``Pending`` for teh Action. -3. Open up a TopDesk request with ITD to add the new Admin (TODO: TopDesk procedure) +3. Open up a [TopDesk request with ITD](./topdesk.md) to add the new Admin. 4. Add the ticket reference to [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv] 5. When complete mark the entry ``Added`` on [``ITD/VPN_Admins_changes.csv``][VPN_Admins_changes.csv]. diff --git a/src/procedures/topdesk.md b/src/procedures/topdesk.md new file mode 100644 index 0000000..e876f9c --- /dev/null +++ b/src/procedures/topdesk.md @@ -0,0 +1,18 @@ +# Topdesk Tickets +UL and ITD uses TopDesk to allow students to submit support tickets to ITD. +In our case we mostly use it to open and close ports. +ITD also uses it to contact us about any security issues. + +Because we have to keep records, and because Skynet is not a student we cannot use TopDesk teh normal way. + +1. Ensure that you have set up your email aliasing for ``skynet_topdesk[at symbol]skynet.ie``. (TODO: email aliasing) +2. Login to your Skynet email account and enable the ``skynet_topdesk[at symbol]skynet.ie`` profile. +3. Set ``[Skynet]`` to be the first part of the Subject, the remainder can be about teh contents of teh ticket. +4. Set the to address to be``ITD.ServiceDesk[at symbol]ul.ie``. + +Check yer inbox often enough after that, they normally respond within 24hrs and may have some questions. +Sometimes they also use it in case their security software captures any issues. + +Additionally if they attach any images/files to the ticket also request that they send it to ``skynet_topdesk[at symbol]skynet.ie``. +Because we cannot view the ticket on TopDesk these dont get loaded for us. + From 80f1efabb32b6e0bc3bf4c86d1cd68ba15c36ef5 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 18 Jan 2025 16:02:13 +0000 Subject: [PATCH 55/69] feat: the subsections are getting so long now that there is a lot of scrolling --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 35c0d7a..9894177 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,7 +19,7 @@ theme: features: - search.suggest - search.highlight - - navigation.expand +# - navigation.expand - content.action.view icon: view: material/eye From 85a48117350c25bd91f45ce429bb36ce3a63d89e Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 9 Feb 2025 20:50:43 +0000 Subject: [PATCH 56/69] feat: added start for how to do admin emails --- src/procedures/9_email/manage_identities.png | 3 ++ src/procedures/9_email/manage_identity.png | 3 ++ src/procedures/9_email/settings.png | 3 ++ src/procedures/9_email/settings_account.png | 3 ++ .../9_email/settings_account_page.png | 3 ++ src/procedures/admin_email.md | 51 +++++++++++++++++++ src/procedures/admin_modify.md | 2 +- 7 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/procedures/9_email/manage_identities.png create mode 100644 src/procedures/9_email/manage_identity.png create mode 100644 src/procedures/9_email/settings.png create mode 100644 src/procedures/9_email/settings_account.png create mode 100644 src/procedures/9_email/settings_account_page.png create mode 100644 src/procedures/admin_email.md diff --git a/src/procedures/9_email/manage_identities.png b/src/procedures/9_email/manage_identities.png new file mode 100644 index 0000000..f132aef --- /dev/null +++ b/src/procedures/9_email/manage_identities.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c670badb03d5631c768da7df9ed44a514cd7f06e652dcbf09e40976c46127c44 +size 8229 diff --git a/src/procedures/9_email/manage_identity.png b/src/procedures/9_email/manage_identity.png new file mode 100644 index 0000000..85639a8 --- /dev/null +++ b/src/procedures/9_email/manage_identity.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59c68a209d0c50344ee2447f490a76e860fb7692d3d97665d9e3dff95f7571d +size 23326 diff --git a/src/procedures/9_email/settings.png b/src/procedures/9_email/settings.png new file mode 100644 index 0000000..90b7d73 --- /dev/null +++ b/src/procedures/9_email/settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38490a3906895d67c5e5b0e49d782ff78134c55622890295129a678e9acf5c4e +size 775 diff --git a/src/procedures/9_email/settings_account.png b/src/procedures/9_email/settings_account.png new file mode 100644 index 0000000..fd74281 --- /dev/null +++ b/src/procedures/9_email/settings_account.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:515838dc20d92035aacb8ab1458373045a9b2b457aa456e2d0000836f4766470 +size 3172 diff --git a/src/procedures/9_email/settings_account_page.png b/src/procedures/9_email/settings_account_page.png new file mode 100644 index 0000000..d931a97 --- /dev/null +++ b/src/procedures/9_email/settings_account_page.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04cd5ba023a0df4d6b308a9ad089d60224acaf01f13d0b9b7f38a50ed7e6f7ef +size 46294 diff --git a/src/procedures/admin_email.md b/src/procedures/admin_email.md new file mode 100644 index 0000000..f1ccdf0 --- /dev/null +++ b/src/procedures/admin_email.md @@ -0,0 +1,51 @@ +# Admin - Email + + + +## Alias Setup + + +Well //an// identity, you can have many +Thus its incredibly important +[This talk is incredibly useful for a good overview][1] +[We have SPF, DKIM and DMARK][4] + + +## Aliases + + + +Delivering to //your// mailbox is all good and grand +But what if you want to be someone else? +Such as a service account, for example: ``root[at symbol]skynet.ie`` +Thankfully that is possible (if you are given access) +[We have aliases set up for stuff like that][2] +So anyone in these groups gets mail from these addresses sent to them +These (in our case) get sent to a subfolder in our inboxes +But what if we want to send mail as the service account? +In [Thunderbird][3] it is relatively easy +Sign into your Skynet account on Thunderbird +Select ``Settings`` (bottom right) +![img.png](9_email/settings.png) +Select ``Account Setttings`` +![img_1.png](9_email/settings_account.png) +Select your Skynet email then ``Manage Identities`` +![img_2.png](9_email/settings_account_page.png) +This screen has all your current Identities +Select ``Add`` +![img_3.png](9_email/manage_identities.png) +Add yer ``Name``, ``Email Address`` you want to alias and select ``OK`` +![img_4.png](9_email/manage_identity.png) +In this example I would be able to send mail as ``this_is_a_real_email[at symbol]skynet.ie`` +(if I was actually allowed to do so) + + + +[1]: https://www.youtube.com/watch?v=mrGfahzt-4Q +[2]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/26e715b2f62e406deee5e773ebcc3e3c3d200186/applications/email.nix#L31-L91 +[3]: https://www.thunderbird.net/en-GB/ +[4]: https://forgejo.skynet.ie/Skynet/nixos/src/commit/26e715b2f62e406deee5e773ebcc3e3c3d200186/applications/email.nix#L314-L343 + + + +[original]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/src/branch/main/src/slides/skynet/9_email.md \ No newline at end of file diff --git a/src/procedures/admin_modify.md b/src/procedures/admin_modify.md index 5d3ab5c..544b460 100644 --- a/src/procedures/admin_modify.md +++ b/src/procedures/admin_modify.md @@ -1,4 +1,4 @@ -# Change Admins +# Admin - Modify A Skynet Admin is a user with teh highest level of access to the cluster, having been trained up over a year. This guide will cover adding and removing an Admin. From d5c7057fd18663c08da3a2e322ac95fa024f9ad2 Mon Sep 17 00:00:00 2001 From: Daragh <22351159@studentmail.ul.ie> Date: Sun, 6 Jul 2025 19:54:01 +0100 Subject: [PATCH 57/69] feat: docs for connecting to vpn (linux) --- src/tutorials/skynet/connect_vpn.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/tutorials/skynet/connect_vpn.md diff --git a/src/tutorials/skynet/connect_vpn.md b/src/tutorials/skynet/connect_vpn.md new file mode 100644 index 0000000..21d9cba --- /dev/null +++ b/src/tutorials/skynet/connect_vpn.md @@ -0,0 +1,15 @@ +# Connect to Skynet VPN + +## Linux + +1 .Install [openfortivpn], its available in many distros repositories, it also has instructions for building from source +2. Run ```sudo openfortivpn ulssl.ul.ie:443 -u -p "" --saml-login --trusted-cert 22edd86cce8a4d46591f0f8b63f388b98d9abc8a2eb4cd684c85172be066bac2``` +3. Click link in terminal and verify through browser +4. Should now be on the vpn - can be tested with ```ssh @cadie.skynet.ie``` + + +## Windows + + + +[openfortivpn]: https://github.com/adrienverge/openfortivpn From efe76a5c8bbf0fd767d9640d3df0b1149c3f6b80 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sun, 6 Jul 2025 20:43:04 +0100 Subject: [PATCH 58/69] doc: added windows instructions --- src/tutorials/skynet/connect_vpn.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/tutorials/skynet/connect_vpn.md b/src/tutorials/skynet/connect_vpn.md index 21d9cba..5ed908e 100644 --- a/src/tutorials/skynet/connect_vpn.md +++ b/src/tutorials/skynet/connect_vpn.md @@ -2,14 +2,27 @@ ## Linux -1 .Install [openfortivpn], its available in many distros repositories, it also has instructions for building from source +1. Install [openfortivpn], its available in many distros repositories, it also has instructions for building from source 2. Run ```sudo openfortivpn ulssl.ul.ie:443 -u -p "" --saml-login --trusted-cert 22edd86cce8a4d46591f0f8b63f388b98d9abc8a2eb4cd684c85172be066bac2``` 3. Click link in terminal and verify through browser 4. Should now be on the vpn - can be tested with ```ssh @cadie.skynet.ie``` ## Windows +1. Install [FortiClient VPN-only][windows-forticlient]. +2. Create a new profile with teh following values: + + | Field | Value | + |------------------|-----------------| + | Gateway | ``ulssl.ul.ie`` | + | Port | ``443`` | + | Enable SSO | Ticked | + | External browser | Ticked | +3. Connect + * A browser window will open up. +4. Login using your UL ``email``/``password``. [openfortivpn]: https://github.com/adrienverge/openfortivpn +[windows-forticlient]: https://www.fortinet.com/support/product-downloads#vpn From 204fa5cf3f0e80dd0556b62c572003b23f724a3c Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Mon, 7 Jul 2025 20:00:22 +0100 Subject: [PATCH 59/69] doc: added using teh vpn on nix --- src/tutorials/skynet/connect_vpn.md | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/tutorials/skynet/connect_vpn.md b/src/tutorials/skynet/connect_vpn.md index 5ed908e..fe74263 100644 --- a/src/tutorials/skynet/connect_vpn.md +++ b/src/tutorials/skynet/connect_vpn.md @@ -26,3 +26,47 @@ [openfortivpn]: https://github.com/adrienverge/openfortivpn [windows-forticlient]: https://www.fortinet.com/support/product-downloads#vpn + + +## Nix + +For folks who have [nix][nix] installed they can use. +Details on how to use it can be found on the [github]. + +If you have NixOS installed you can use the following module. +It makes use of ``Mome Manager`` to create the config file in ``$USDERNAME``'s home dir. +Using ``vpn up`` and ``vpn down`` to control the vpn. + +```nix +/* +Config for UL VPN. +Opens a small browser to grab the cookie +Use ``vpn up ul`` and ``vpn down ul`` +*/ +{inputs, ...}: { + # https://github.com/NixOS/nixpkgs/issues/231038#issuecomment-1637903456 + environment.etc."ppp/options".text = "ipcp-accept-remote"; + + home-manager.users."$USDERNAME".home = { + file.".vpn".text = '' + [ + { + "name": "ul", + "host": "ulssl.ul.ie", + "port": 443, + "default": true, + "cert": "" + } + ] + ''; + + packages = [ + inputs.openfortivpn-cli.packages.x86_64-linux.default + ]; + }; +} +``` + + +[nix]: ../../skynet/nix.md +[github]: https://github.com/adrienverge/openfortivpn \ No newline at end of file From bc44e176191b138ccab10209343cea30aa3efc68 Mon Sep 17 00:00:00 2001 From: esy Date: Mon, 7 Jul 2025 19:35:08 +0000 Subject: [PATCH 60/69] Update src/tutorials/skynet/connect_vpn.md --- src/tutorials/skynet/connect_vpn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tutorials/skynet/connect_vpn.md b/src/tutorials/skynet/connect_vpn.md index fe74263..d4dd64e 100644 --- a/src/tutorials/skynet/connect_vpn.md +++ b/src/tutorials/skynet/connect_vpn.md @@ -34,7 +34,7 @@ For folks who have [nix][nix] installed they can use. Details on how to use it can be found on the [github]. If you have NixOS installed you can use the following module. -It makes use of ``Mome Manager`` to create the config file in ``$USDERNAME``'s home dir. +It makes use of ``Home Manager`` to create the config file in ``$USERNAME``'s home dir. Using ``vpn up`` and ``vpn down`` to control the vpn. ```nix @@ -47,7 +47,7 @@ Use ``vpn up ul`` and ``vpn down ul`` # https://github.com/NixOS/nixpkgs/issues/231038#issuecomment-1637903456 environment.etc."ppp/options".text = "ipcp-accept-remote"; - home-manager.users."$USDERNAME".home = { + home-manager.users."$USERNAME".home = { file.".vpn".text = '' [ { From ca94989b92ac9daf71548207f83c8da886bfc4ec Mon Sep 17 00:00:00 2001 From: esy Date: Mon, 7 Jul 2025 19:41:51 +0000 Subject: [PATCH 61/69] Update src/tutorials/skynet/connect_vpn.md --- src/tutorials/skynet/connect_vpn.md | 61 +++++++++++++++-------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/tutorials/skynet/connect_vpn.md b/src/tutorials/skynet/connect_vpn.md index d4dd64e..74a1f40 100644 --- a/src/tutorials/skynet/connect_vpn.md +++ b/src/tutorials/skynet/connect_vpn.md @@ -1,36 +1,8 @@ # Connect to Skynet VPN -## Linux +## Nix (recommended) -1. Install [openfortivpn], its available in many distros repositories, it also has instructions for building from source -2. Run ```sudo openfortivpn ulssl.ul.ie:443 -u -p "" --saml-login --trusted-cert 22edd86cce8a4d46591f0f8b63f388b98d9abc8a2eb4cd684c85172be066bac2``` -3. Click link in terminal and verify through browser -4. Should now be on the vpn - can be tested with ```ssh @cadie.skynet.ie``` - - -## Windows -1. Install [FortiClient VPN-only][windows-forticlient]. -2. Create a new profile with teh following values: - - | Field | Value | - |------------------|-----------------| - | Gateway | ``ulssl.ul.ie`` | - | Port | ``443`` | - | Enable SSO | Ticked | - | External browser | Ticked | -3. Connect - * A browser window will open up. -4. Login using your UL ``email``/``password``. - - - -[openfortivpn]: https://github.com/adrienverge/openfortivpn -[windows-forticlient]: https://www.fortinet.com/support/product-downloads#vpn - - -## Nix - -For folks who have [nix][nix] installed they can use. +For folks who have [nix][nix] installed they can use this. Details on how to use it can be found on the [github]. If you have NixOS installed you can use the following module. @@ -66,6 +38,35 @@ Use ``vpn up ul`` and ``vpn down ul`` }; } ``` +## Linux + +1. Install [openfortivpn], its available in many distros repositories, it also has instructions for building from source +2. Run ```sudo openfortivpn ulssl.ul.ie:443 -u -p "" --saml-login --trusted-cert 22edd86cce8a4d46591f0f8b63f388b98d9abc8a2eb4cd684c85172be066bac2``` +3. Click link in terminal and verify through browser +4. Should now be on the vpn - can be tested with ```ssh @cadie.skynet.ie``` + + +## Windows +1. Install [FortiClient VPN-only][windows-forticlient]. +2. Create a new profile with teh following values: + + | Field | Value | + |------------------|-----------------| + | Gateway | ``ulssl.ul.ie`` | + | Port | ``443`` | + | Enable SSO | Ticked | + | External browser | Ticked | +3. Connect + * A browser window will open up. +4. Login using your UL ``email``/``password``. + + + +[openfortivpn]: https://github.com/adrienverge/openfortivpn +[windows-forticlient]: https://www.fortinet.com/support/product-downloads#vpn + + + [nix]: ../../skynet/nix.md From 012bd5eaf800e4c89197751b5b220b8d31cc4c0d Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sat, 12 Jul 2025 22:20:51 +0100 Subject: [PATCH 62/69] wiki: add guide for backing up UL student email in Outlook --- src/support/backup.md | 80 +++++++++++++++++++++++++++++++++ src/support/backup/backup_1.png | 3 ++ src/support/backup/backup_2.png | 3 ++ src/support/backup/backup_3.png | 3 ++ src/support/backup/backup_4.png | 3 ++ src/support/backup/backup_5.png | 3 ++ src/support/backup/backup_6.png | 3 ++ src/support/backup/backup_7.png | 3 ++ src/support/backup/backup_8.png | 3 ++ src/support/backup/backup_9.png | 3 ++ 10 files changed, 107 insertions(+) create mode 100644 src/support/backup.md create mode 100644 src/support/backup/backup_1.png create mode 100644 src/support/backup/backup_2.png create mode 100644 src/support/backup/backup_3.png create mode 100644 src/support/backup/backup_4.png create mode 100644 src/support/backup/backup_5.png create mode 100644 src/support/backup/backup_6.png create mode 100644 src/support/backup/backup_7.png create mode 100644 src/support/backup/backup_8.png create mode 100644 src/support/backup/backup_9.png diff --git a/src/support/backup.md b/src/support/backup.md new file mode 100644 index 0000000..ec17e47 --- /dev/null +++ b/src/support/backup.md @@ -0,0 +1,80 @@ +# UL Student Account Email Backup in Outlook + +After you graduate, your UL student email account will be deactivated. +There's a decent chance that you'll need access to the emails in that account at some point in the future, +so it's a good idea to back them up before you lose access. + +We recommend exporting your emails before your account is deactivated, which happens shortly after graduation ( +approximately 6 months). +You can export your emails from Outlook, which is the official email client for UL student accounts. + +Outlook has two modes, New Outlook and Classic Outlook. +As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to +back up your emails. +If you already use Classic Outlook, you can skip the following section and go straight +to [Steps to back up Your UL Student Email][0]. + +## Switching to Classic Outlook + +1. **Open Outlook**: + Launch the Outlook application on your computer. +2. **Access the ``Help`` Tab**: + Click on the ``Help`` tab in the top left taskbar. + ![Outlook Help Bar][1] +3. **Switch to Classic Outlook**: + In the ``Help`` tab, click on "``Switch to Classic Outlook``". +4. **Confirm the Switch**: + If prompted, confirm that you want to switch to Classic Outlook by clicking ``Skip Feedback``. + ![Switch to Classic Outlook][2] +5. **Done!**: + Outlook will close, and then reopen in Classic mode. + +## Steps to back up Your UL Student Email + +1. **Log in to your UL Student Email**: + Open up Outlook or your preferred email client and log in to your UL student email account. +2. **Access the File Menu**: + Click on the "``File``" tab in the top left corner of Outlook. + ![File Menu][3] +3. **Access Open * Export**: + In the left sidebar, click on "``Open & Export``". + ![Open & Export][4] +4. **Export to a File**: + Click on "``Import/Export``" to open the Import and Export Wizard. + ![Import/Export Wizard][5] +5. **Choose Export to a File**: + Select "``Export to a file``" and click "``Next``". +6. **Select File Type**: + Choose "``Outlook Data File (.pst)``" and click "``Next``". + + ![Export to Outlook Data File][6] +7. **Select the Folder to Export**: + Choose the folder you want to back up (e.g., "``Inbox``") and ensure "``Include subfolders``" is checked. + Click "``Next``" + + ![Select Folder to Export][7] +8. **Choose the Destination**: + Click "``Browse``" to select where you want to save the exported file. + Choose a location on your computer and give the file a name (e.g., "UL_Student_Email_Backup.pst"). + Click "``Finish``". + + ![Choose Destination][8] +9. **Set a Password (Optional)**: + You can set a password for the PST file if you want to protect it. + If you don't want to set a password, just click "``OK``". + + ![Set Password][9] +10. **Backup Complete**: + Your UL student email will now be backed up to the specified file. + You can access this file later using Outlook or import it into another email client. + +[0]: #steps-to-back-up-your-ul-student-email +[1]: ./backup/backup_1.png +[2]: ./backup/backup_2.png +[3]: ./backup/backup_3.png +[4]: ./backup/backup_4.png +[5]: ./backup/backup_5.png +[6]: ./backup/backup_6.png +[7]: ./backup/backup_7.png +[8]: ./backup/backup_8.png +[9]: ./backup/backup_9.png diff --git a/src/support/backup/backup_1.png b/src/support/backup/backup_1.png new file mode 100644 index 0000000..f72fb80 --- /dev/null +++ b/src/support/backup/backup_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce0956db880ca934f3db880e7a9b3e78316f7cb4c73b35a71df8fe30aeacb553 +size 25856 diff --git a/src/support/backup/backup_2.png b/src/support/backup/backup_2.png new file mode 100644 index 0000000..c3920f1 --- /dev/null +++ b/src/support/backup/backup_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c757057749a12227a5a97ff3c148668745e64586c8ab8de80ca1212de238496 +size 32454 diff --git a/src/support/backup/backup_3.png b/src/support/backup/backup_3.png new file mode 100644 index 0000000..e56a0f6 --- /dev/null +++ b/src/support/backup/backup_3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a64c89a24f4b5c4ab1ede94a46569674b4c1c67644370f97de8c9a5f582754 +size 8250 diff --git a/src/support/backup/backup_4.png b/src/support/backup/backup_4.png new file mode 100644 index 0000000..e9cceed --- /dev/null +++ b/src/support/backup/backup_4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18423c8ed5a5248abee4a019ec12ba3d9bb85eec67126ae71b440a54d3b44db2 +size 23201 diff --git a/src/support/backup/backup_5.png b/src/support/backup/backup_5.png new file mode 100644 index 0000000..52fe097 --- /dev/null +++ b/src/support/backup/backup_5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fe765009e2ead40b05d51719767e5e3e654ed2e8f74af780cc453a731b0a914 +size 53665 diff --git a/src/support/backup/backup_6.png b/src/support/backup/backup_6.png new file mode 100644 index 0000000..3fd57e4 --- /dev/null +++ b/src/support/backup/backup_6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac0bf305b79f0a39ad9850ca96b1640061b8e48f3b996ec2d96005fd1922e494 +size 48848 diff --git a/src/support/backup/backup_7.png b/src/support/backup/backup_7.png new file mode 100644 index 0000000..eacf584 --- /dev/null +++ b/src/support/backup/backup_7.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef937ead125f89d2938a5ffd156e57f83643d2f96fc5b04038610ac208355841 +size 54044 diff --git a/src/support/backup/backup_8.png b/src/support/backup/backup_8.png new file mode 100644 index 0000000..efdef3b --- /dev/null +++ b/src/support/backup/backup_8.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f86136284899d4397d4808e14a914cb00d98294df6eb7fabf3ef56090c5248a6 +size 51851 diff --git a/src/support/backup/backup_9.png b/src/support/backup/backup_9.png new file mode 100644 index 0000000..eeaa9d7 --- /dev/null +++ b/src/support/backup/backup_9.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ee29852142dc3eaa6a0b8b35ed411f845bfb5bce86a0415e21c82fb3c3c4594 +size 5728 From be0baabd7eaf3f44b723cb121c6f9f170355d713 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Sat, 12 Jul 2025 23:17:48 +0100 Subject: [PATCH 63/69] doc: slightly change wording --- src/tutorials/skynet/create_ssh.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tutorials/skynet/create_ssh.md b/src/tutorials/skynet/create_ssh.md index cb06a43..4aad614 100644 --- a/src/tutorials/skynet/create_ssh.md +++ b/src/tutorials/skynet/create_ssh.md @@ -79,9 +79,10 @@ nano config Or open up in a text editor. ### Windows/Linux -This is what we want to have in the file. +This is what we want to have in the file. +The below is valid currently and suitable for users and admins. ``` -Host *.skynet.ie +Host *.skynet.ie 193.1.99.* 193.1.96.165 User $USERNAME IdentityFile ~/.ssh/skynet/$USERNAME IdentitiesOnly yes From 185f658c5b21565b5625d7fa67f7be38fdbf6080 Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 03:30:03 +0100 Subject: [PATCH 64/69] wiki: update UL email backup --- src/support/backup.md | 55 ++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index ec17e47..ed2134f 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -1,74 +1,69 @@ -# UL Student Account Email Backup in Outlook +# UL Email Backup After you graduate, your UL student email account will be deactivated. There's a decent chance that you'll need access to the emails in that account at some point in the future, so it's a good idea to back them up before you lose access. -We recommend exporting your emails before your account is deactivated, which happens shortly after graduation ( -approximately 6 months). +We recommend exporting your emails before your account is deactivated, which happens shortly after graduation (approximately 3 months). You can export your emails from Outlook, which is the official email client for UL student accounts. Outlook has two modes, New Outlook and Classic Outlook. As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to back up your emails. If you already use Classic Outlook, you can skip the following section and go straight -to [Steps to back up Your UL Student Email][0]. +to [Backup Email][0]. ## Switching to Classic Outlook 1. **Open Outlook**: - Launch the Outlook application on your computer. + Launch the Outlook application on your computer. 2. **Access the ``Help`` Tab**: - Click on the ``Help`` tab in the top left taskbar. + Click on the ``Help`` tab in the top left taskbar. ![Outlook Help Bar][1] 3. **Switch to Classic Outlook**: - In the ``Help`` tab, click on "``Switch to Classic Outlook``". + In the ``Help`` tab, click on "``Switch to Classic Outlook``". 4. **Confirm the Switch**: - If prompted, confirm that you want to switch to Classic Outlook by clicking ``Skip Feedback``. + If prompted, confirm that you want to switch to Classic Outlook by clicking ``Skip Feedback``. ![Switch to Classic Outlook][2] 5. **Done!**: - Outlook will close, and then reopen in Classic mode. + Outlook will close, and then reopen in Classic mode. -## Steps to back up Your UL Student Email +## Backup Email 1. **Log in to your UL Student Email**: - Open up Outlook or your preferred email client and log in to your UL student email account. + Open up Outlook or your preferred email client and log in to your UL student email account. 2. **Access the File Menu**: - Click on the "``File``" tab in the top left corner of Outlook. + Click on the "``File``" tab in the top left corner of Outlook. ![File Menu][3] 3. **Access Open * Export**: - In the left sidebar, click on "``Open & Export``". + In the left sidebar, click on "``Open & Export``". ![Open & Export][4] 4. **Export to a File**: - Click on "``Import/Export``" to open the Import and Export Wizard. + Click on "``Import/Export``" to open the Import and Export Wizard. ![Import/Export Wizard][5] 5. **Choose Export to a File**: - Select "``Export to a file``" and click "``Next``". + Select "``Export to a file``" and click "``Next``". 6. **Select File Type**: - Choose "``Outlook Data File (.pst)``" and click "``Next``". - + Choose "``Outlook Data File (.pst)``" and click "``Next``". ![Export to Outlook Data File][6] 7. **Select the Folder to Export**: - Choose the folder you want to back up (e.g., "``Inbox``") and ensure "``Include subfolders``" is checked. - Click "``Next``" - + Choose the folder you want to back up (e.g., "``Inbox``") and ensure "``Include subfolders``" is checked. + Click "``Next``" ![Select Folder to Export][7] 8. **Choose the Destination**: - Click "``Browse``" to select where you want to save the exported file. - Choose a location on your computer and give the file a name (e.g., "UL_Student_Email_Backup.pst"). - Click "``Finish``". - + Click "``Browse``" to select where you want to save the exported file. + Choose a location on your computer and give the file a name (e.g., "UL_Student_Email_Backup.pst"). + Click "``Finish``". ![Choose Destination][8] 9. **Set a Password (Optional)**: - You can set a password for the PST file if you want to protect it. - If you don't want to set a password, just click "``OK``". - + You can set a password for the PST file if you want to protect it. + If you don't want to set a password, just click "``OK``". ![Set Password][9] 10. **Backup Complete**: - Your UL student email will now be backed up to the specified file. - You can access this file later using Outlook or import it into another email client. + Your UL student email will now be backed up to the specified file. + You can access this file later using Outlook or import it into another email client. -[0]: #steps-to-back-up-your-ul-student-email +[0]: #backup-email [1]: ./backup/backup_1.png [2]: ./backup/backup_2.png [3]: ./backup/backup_3.png From c6716c268341e038c7ca2d5f6df2f174622d37db Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 03:35:31 +0100 Subject: [PATCH 65/69] fix: update image paths in backup guide --- src/support/backup.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index ed2134f..a80bf87 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -64,12 +64,12 @@ to [Backup Email][0]. You can access this file later using Outlook or import it into another email client. [0]: #backup-email -[1]: ./backup/backup_1.png -[2]: ./backup/backup_2.png -[3]: ./backup/backup_3.png -[4]: ./backup/backup_4.png -[5]: ./backup/backup_5.png -[6]: ./backup/backup_6.png -[7]: ./backup/backup_7.png -[8]: ./backup/backup_8.png -[9]: ./backup/backup_9.png +[1]: ../support/backup/backup_1.png +[2]: ../support/backup/backup_2.png +[3]: ../support/backup/backup_3.png +[4]: ../support/backup/backup_4.png +[5]: ../support/backup/backup_5.png +[6]: ../support/backup/backup_6.png +[7]: ../support/backup/backup_7.png +[8]: ../support/backup/backup_8.png +[9]: ../support/backup/backup_9.png From 01a9958e8311bd91d6654e49eea6277969ad077b Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 03:50:53 +0100 Subject: [PATCH 66/69] fix: update image paths in backup guide --- src/support/backup.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index a80bf87..c71ff60 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -64,12 +64,12 @@ to [Backup Email][0]. You can access this file later using Outlook or import it into another email client. [0]: #backup-email -[1]: ../support/backup/backup_1.png -[2]: ../support/backup/backup_2.png -[3]: ../support/backup/backup_3.png -[4]: ../support/backup/backup_4.png -[5]: ../support/backup/backup_5.png -[6]: ../support/backup/backup_6.png -[7]: ../support/backup/backup_7.png -[8]: ../support/backup/backup_8.png -[9]: ../support/backup/backup_9.png +[1]: support/backup/backup_1.png +[2]: support/backup/backup_2.png +[3]: support/backup/backup_3.png +[4]: support/backup/backup_4.png +[5]: support/backup/backup_5.png +[6]: support/backup/backup_6.png +[7]: support/backup/backup_7.png +[8]: support/backup/backup_8.png +[9]: support/backup/backup_9.png From b5827e4fd354472562b7296b06ace68722382cac Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 03:53:14 +0100 Subject: [PATCH 67/69] fix: update image paths in backup guide again --- src/support/backup.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index c71ff60..ed2134f 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -64,12 +64,12 @@ to [Backup Email][0]. You can access this file later using Outlook or import it into another email client. [0]: #backup-email -[1]: support/backup/backup_1.png -[2]: support/backup/backup_2.png -[3]: support/backup/backup_3.png -[4]: support/backup/backup_4.png -[5]: support/backup/backup_5.png -[6]: support/backup/backup_6.png -[7]: support/backup/backup_7.png -[8]: support/backup/backup_8.png -[9]: support/backup/backup_9.png +[1]: ./backup/backup_1.png +[2]: ./backup/backup_2.png +[3]: ./backup/backup_3.png +[4]: ./backup/backup_4.png +[5]: ./backup/backup_5.png +[6]: ./backup/backup_6.png +[7]: ./backup/backup_7.png +[8]: ./backup/backup_8.png +[9]: ./backup/backup_9.png From ce27d5a63a185aea2b15fca7b8c0383f011a9ec2 Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 17:35:58 +0100 Subject: [PATCH 68/69] fix: AAAAAAAAAAAAAAAAAAAAAA INTELLIJ FORMATTER --- src/support/backup.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index ed2134f..3ace3fd 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -1,17 +1,14 @@ # UL Email Backup After you graduate, your UL student email account will be deactivated. -There's a decent chance that you'll need access to the emails in that account at some point in the future, -so it's a good idea to back them up before you lose access. +There's a decent chance that you'll need access to the emails in that account at some point in the future, so it's a good idea to back them up before you lose access. We recommend exporting your emails before your account is deactivated, which happens shortly after graduation (approximately 3 months). You can export your emails from Outlook, which is the official email client for UL student accounts. Outlook has two modes, New Outlook and Classic Outlook. -As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to -back up your emails. -If you already use Classic Outlook, you can skip the following section and go straight -to [Backup Email][0]. +As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to back up your emails. +If you already use Classic Outlook, you can skip the following section and go straight to [Backup Email][0]. ## Switching to Classic Outlook From 9a14e2bef4d7bf88c0693043b4fb91e121b08184 Mon Sep 17 00:00:00 2001 From: Nanda128 Date: Sun, 13 Jul 2025 18:49:17 +0100 Subject: [PATCH 69/69] fix: improve formatting and readability in backup guide --- src/support/backup.md | 90 +++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/support/backup.md b/src/support/backup.md index 3ace3fd..76f4bd5 100644 --- a/src/support/backup.md +++ b/src/support/backup.md @@ -1,72 +1,72 @@ # UL Email Backup -After you graduate, your UL student email account will be deactivated. -There's a decent chance that you'll need access to the emails in that account at some point in the future, so it's a good idea to back them up before you lose access. +After you graduate, your UL student email account will be deactivated. +There's a decent chance that you'll need access to the emails in that account at some point in the future, so it's a good idea to back them up before you lose access. -We recommend exporting your emails before your account is deactivated, which happens shortly after graduation (approximately 3 months). -You can export your emails from Outlook, which is the official email client for UL student accounts. +We recommend exporting your emails before your account is deactivated, which happens shortly after graduation (approximately 3 months). +You can export your emails from Outlook, which is the official email client for UL student accounts. -Outlook has two modes, New Outlook and Classic Outlook. -As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to back up your emails. -If you already use Classic Outlook, you can skip the following section and go straight to [Backup Email][0]. +Outlook has two modes, New Outlook and Classic Outlook. +As of the time of writing, New Outlook does not support exporting emails, so you will need to use Classic Outlook to back up your emails. +If you already use Classic Outlook, you can skip the following section and go straight to [Backup Email][0]. ## Switching to Classic Outlook -1. **Open Outlook**: - Launch the Outlook application on your computer. -2. **Access the ``Help`` Tab**: - Click on the ``Help`` tab in the top left taskbar. - ![Outlook Help Bar][1] -3. **Switch to Classic Outlook**: - In the ``Help`` tab, click on "``Switch to Classic Outlook``". -4. **Confirm the Switch**: - If prompted, confirm that you want to switch to Classic Outlook by clicking ``Skip Feedback``. - ![Switch to Classic Outlook][2] -5. **Done!**: +1. **Open Outlook**: + Launch the Outlook application on your computer. +2. **Access the ``Help`` Tab**: + Click on the ``Help`` tab in the top left taskbar. + ![Outlook Help Bar][1] +3. **Switch to Classic Outlook**: + In the ``Help`` tab, click on "``Switch to Classic Outlook``". +4. **Confirm the Switch**: + If prompted, confirm that you want to switch to Classic Outlook by clicking ``Skip Feedback``. + ![Switch to Classic Outlook][2] +5. **Done!**: Outlook will close, and then reopen in Classic mode. ## Backup Email -1. **Log in to your UL Student Email**: +1. **Log in to your UL Student Email**: Open up Outlook or your preferred email client and log in to your UL student email account. -2. **Access the File Menu**: +2. **Access the File Menu**: Click on the "``File``" tab in the top left corner of Outlook. - ![File Menu][3] -3. **Access Open * Export**: + ![File Menu][3] +3. **Access Open * Export**: In the left sidebar, click on "``Open & Export``". - ![Open & Export][4] -4. **Export to a File**: + ![Open & Export][4] +4. **Export to a File**: Click on "``Import/Export``" to open the Import and Export Wizard. - ![Import/Export Wizard][5] -5. **Choose Export to a File**: + ![Import/Export Wizard][5] +5. **Choose Export to a File**: Select "``Export to a file``" and click "``Next``". -6. **Select File Type**: +6. **Select File Type**: Choose "``Outlook Data File (.pst)``" and click "``Next``". - ![Export to Outlook Data File][6] -7. **Select the Folder to Export**: + ![Export to Outlook Data File][6] +7. **Select the Folder to Export**: Choose the folder you want to back up (e.g., "``Inbox``") and ensure "``Include subfolders``" is checked. Click "``Next``" - ![Select Folder to Export][7] -8. **Choose the Destination**: + ![Select Folder to Export][7] +8. **Choose the Destination**: Click "``Browse``" to select where you want to save the exported file. Choose a location on your computer and give the file a name (e.g., "UL_Student_Email_Backup.pst"). Click "``Finish``". - ![Choose Destination][8] -9. **Set a Password (Optional)**: + ![Choose Destination][8] +9. **Set a Password (Optional)**: You can set a password for the PST file if you want to protect it. If you don't want to set a password, just click "``OK``". - ![Set Password][9] -10. **Backup Complete**: + ![Set Password][9] +10. **Backup Complete**: Your UL student email will now be backed up to the specified file. You can access this file later using Outlook or import it into another email client. -[0]: #backup-email -[1]: ./backup/backup_1.png -[2]: ./backup/backup_2.png -[3]: ./backup/backup_3.png -[4]: ./backup/backup_4.png -[5]: ./backup/backup_5.png -[6]: ./backup/backup_6.png -[7]: ./backup/backup_7.png -[8]: ./backup/backup_8.png -[9]: ./backup/backup_9.png +[0]: #backup-email +[1]: ./backup/backup_1.png +[2]: ./backup/backup_2.png +[3]: ./backup/backup_3.png +[4]: ./backup/backup_4.png +[5]: ./backup/backup_5.png +[6]: ./backup/backup_6.png +[7]: ./backup/backup_7.png +[8]: ./backup/backup_8.png +[9]: ./backup/backup_9.png