From d1b8dadcbc000ab5331264edd396841115d09267 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Mon, 1 Jun 2026 19:09:09 +0100 Subject: [PATCH 01/16] Moved outdated servers to wiki and updated links --- docs/hardware/azazel.md | 40 -------------------------- docs/hardware/index.md | 24 ++++++---------- docs/hardware/network/arse.md | 8 ------ docs/hardware/network/cerberus.md | 11 ------- docs/hardware/nix/hardcase.md | 44 ---------------------------- docs/hardware/nix/icarus.md | 45 ----------------------------- docs/hardware/nix/motherlode.md | 32 --------------------- docs/hardware/paphos.md | 48 ------------------------------- docs/hardware/zeus.md | 40 -------------------------- 9 files changed, 8 insertions(+), 284 deletions(-) delete mode 100644 docs/hardware/azazel.md delete mode 100644 docs/hardware/network/arse.md delete mode 100644 docs/hardware/network/cerberus.md delete mode 100644 docs/hardware/nix/hardcase.md delete mode 100644 docs/hardware/nix/icarus.md delete mode 100644 docs/hardware/nix/motherlode.md delete mode 100644 docs/hardware/paphos.md delete mode 100644 docs/hardware/zeus.md diff --git a/docs/hardware/azazel.md b/docs/hardware/azazel.md deleted file mode 100644 index c1527031..00000000 --- a/docs/hardware/azazel.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: azazel -aliases: - - Azazel -tags: - - login-box - - hardware - - azazel - - details - - debian -created: 2023-12-02T14:18:51 -modified: 2024-03-13T04:49:14 -title: Azazel ---- - -# Azazel - -## Details - -- **Type**: Dell PowerEdge R515 -- **OS**: Debian 12 `bookworm` -- **CPU**: 2 x AMD Opteron 4180 @ 2.6Ghz -- **RAM**: 16GB -- **Storage**: Dell PERC H200 Integrated RAID Controller -- **Disks**: 2 x 146GB 15,000 RPM SAS in RAID 1 -- **DAS**: Worf -- **Drives**: Internal SATA DVD±RW -- **Network**: 2x Onboard Ethernet - -## Where to Find - -- **Internal**: - - `10.5.0.1` -- **External**: - - `136.206.15.24` - -## Services - -- primary ssh login box for users (see [Logging in](../services/servers.md#Logging%20in)) -- jump-box for admins diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 18c4a9d9..87f96ec2 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -14,29 +14,21 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and ## [Login](../services/servers.md#Logging%20in) Boxes -- [**`azazel`**](azazel.md) -- [**`pygmalion`**](pygmalion.md) - -## [NixOS](../procedures/nixos.md) Boxes - -- [**`hardcase`**](nix/hardcase.md) -- [**`motherlode`**](nix/motherlode.md) -- [**`icarus`**](nix/icarus.md) - -- [**`paphos`**](paphos.md) -- [**`zeus`**](zeus.md) +- [**`Callisto`**](callisto.md) +- [**`Europa`**](europa.md) ## [Aperture](aperture/index.md) - [**`glados`**](aperture/glados.md) - [**`wheatley`**](aperture/wheatley.md) - [**`chell`**](aperture/chell.md) -- [**`johnson`**](aperture/johnson.md) -- [**`bastion-vm`**](../services/bastion-vm.md) + +Storage Boxes +- [**`Mirage`**](aperture/mirage.md) +- [**`Anubis`**](aperture/anubis.md) ## Network Hardware -- [**`arse`**](network/arse.md) -- [**`cerberus`**](network/cerberus.md) - [**`mordor`**](network/mordor.md) -- [**switches**](network/switches.md) +- [**`Isengard`**](network/isengard.md) +- [**`Rivendell`**](network/rivendell.md) diff --git a/docs/hardware/network/arse.md b/docs/hardware/network/arse.md deleted file mode 100644 index 783a196d..00000000 --- a/docs/hardware/network/arse.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -id: arse -aliases: [] -tags: [] -created: 2024-03-01T21:17:25 -modified: 2024-03-01T21:17:25 -title: Arse ---- diff --git a/docs/hardware/network/cerberus.md b/docs/hardware/network/cerberus.md deleted file mode 100644 index 0af41a3f..00000000 --- a/docs/hardware/network/cerberus.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -id: cerberus -aliases: - - cerberus - - srx - - SRX -tags: [] -created: 2024-03-01T21:17:25 -modified: 2024-03-01T21:17:25 -title: Cerberus (SRX) ---- diff --git a/docs/hardware/nix/hardcase.md b/docs/hardware/nix/hardcase.md deleted file mode 100644 index a928e153..00000000 --- a/docs/hardware/nix/hardcase.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: hardcase -aliases: - - Hardcase -tags: - - nixos - - hardware - - details - - hardcase -created: 2023-12-04T22:28:41 -modified: 2024-03-13T04:49:14 -title: Hardcase ---- - -# Hardcase - -## Details - -- **Type**: Dell PowerEdge R410 -- **OS**: NixOS -- **CPU**: 2 x Intel Xeon X5570 @ 2.93GHz -- **RAM**: 48GB, incorrectly populated -- **Storage**: LSI Logic SAS1068E "Fake" RAID controller -- **Disks**: 2 x 500GB SATA disks in RAID 1 -- **Drives**: Internal SATA DVD±RW -- **Network**: 2x Onboard Ethernet, 802.3ad bonding -- **iDRAC NIC**: Shared on port 1 -- iDRAC IP is `1.158` - -## Where to Find - -- **Internal**: - - `192.168.0.158` -- **External**: - - `136.206.15.3` - -## Services - -- postgreSQL -- apache -- ~~monitoring~~ -- postfix (SMTP) -- dovecot (IMAP) -- mailman - mailing lists diff --git a/docs/hardware/nix/icarus.md b/docs/hardware/nix/icarus.md deleted file mode 100644 index 8b1d1bf9..00000000 --- a/docs/hardware/nix/icarus.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: icarus -aliases: - - Icarus -tags: - - nixos - - hardware - - icarus - - daedalus - - details -created: 2021-06-28T23:17:10 -modified: 2024-03-13T04:49:14 -title: Icarus ---- - -# Icarus - -Daedalus and Icarus ~~are~~ were twins ~~and thus share documentation.~~ - -However, Daedalus is now ***Dead***alus and Icarus lives on *for now* albeit a little sick. - -## Details - -- **Type**: Dell PowerEdge 2950 -- **OS**: NixOS -- **CPU**: 2x Intel Xeon L5335 @ 2.00GHz -- **RAM**: 32GB (Daedalus), 16GB (Icarus) -- **Storage**: Dell Perc 6/i Integrated RAID controller -- **Disks**: - - 2 x 73GB SAS disks in RAID 1 (hardware) - - 3 x 600GB SAS disks in passthrough (3x RAID 0) -- **Drives**: Internal SATA DVD±RW -- **Network**: 2x Onboard Ethernet, 802.3ad bonding -- iDRAC NIC: Shared on port 1 - -## Where to Find - -- **Internal**: - - `192.168.0.150` - -## Services - -- LDAP -- [NFS](../../services/nfs.md), (a.k.a `/storage`) -- GlusterFS, eventually, or some other distributed storage to replace NFS diff --git a/docs/hardware/nix/motherlode.md b/docs/hardware/nix/motherlode.md deleted file mode 100644 index 73743b00..00000000 --- a/docs/hardware/nix/motherlode.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: motherlode -aliases: - - Motherlode -tags: - - nixos - - hardware - - motherlode - - details - - qemu - - libvirt -created: 2023-12-04T22:28:41 -modified: 2024-03-13T04:49:14 -title: Motherlode ---- - -# Motherlode - -## Details - -(Something should go here probably) - -## Where to Find - -- **Internal**: - - `192.168.0.130` -- **External**: - - `136.206.15.250` ([dcuclubsandsocs.ie](https://dcuclubsandsocs.ie)) - -## Services - -- hosts the VM for [dcuclubsandsocs.ie](https://dcuclubsandsocs.ie) (`libvirt`/`QEMU`) diff --git a/docs/hardware/paphos.md b/docs/hardware/paphos.md deleted file mode 100644 index f193ddeb..00000000 --- a/docs/hardware/paphos.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -id: paphos -aliases: - - Paphos -tags: - - hardware - - paphos - - details - - dns - - bind - - ubuntu -created: 2023-12-02T14:18:51 -modified: 2024-03-13T04:49:14 -title: Paphos ---- - -# Paphos - -## Details - -- **Type**: Dell PowerEdge R710 -- **OS**: Ubuntu 14.04.5 LTS 😭 -- **CPU**: 2 x Intel Xeon CPU E5620 @ 2.40Ghz -- **RAM**: 16GB -- **Drives**: Internal SATA DVD±RW -- **Network**: NetXtreme II BCM5709 Gigabit Ethernet - -## Where to Find - -- **Internal**: - - `192.168.0.26` - - `192.168.0.4` - - `10.5.0.6` -- **External**: - - `136.206.15.26` - - `136.206.15.52` - - `136.206.15.53` - - `136.206.15.55` - - `136.206.15.57` - - `136.206.15.58` - - `136.206.15.101` - - `136.206.15.54` - - `136.206.15.74` - - `ns1.redbrick.dcu.ie` - -## Services - -- DNS ([bind](../services/bind.md)) diff --git a/docs/hardware/zeus.md b/docs/hardware/zeus.md deleted file mode 100644 index 10125477..00000000 --- a/docs/hardware/zeus.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: zeus -aliases: - - Zeus -tags: - - hardware - - zeus - - details - - docker - - ubuntu -created: 2023-12-02T14:18:51 -modified: 2024-03-13T04:49:14 -title: Zeus ---- - -# Zeus - -## Details - -- **Type**: Dell PowerEdge R410 -- **OS**: Ubuntu 18.04 -- **CPU**: 2x Intel(R) Xeon (R) x5570 @ 2.93 GHz -- **RAM**: 32GB -- **Network**: 2x NetXtreme II BCM5716 Gigabit Ethernet - -## Where to Find - -- **Internal**: - - `192.168.0.131` -- **External**: - - `136.206.15.31` - -## Services - -- [Wetty](../services/servers.md#Logging%20in%20to%20Wetty) at: [wetty.redbrick.dcu.ie](https://wetty.redbrick.dcu.ie) -- [Admin API](../services/api.md) at: [api.redbrick.dcu.ie](https://api.redbrick.dcu.ie) -- brickbot2 -- Secretary's email generator at: [generator.redbrick.dcu.ie](https://generator.redbrick.dcu.ie) -- [CodiMD](../services/md.md) at: [md.redbrick.dcu.ie](https://md.redbrick.dcu.ie) -- all of this is routed through [traefik](../services/traefik.md) as a reverse proxy From 4faa900fd8b1e91d80a8d39dbf8f2313ec6b4305 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Mon, 1 Jun 2026 19:15:59 +0100 Subject: [PATCH 02/16] Added back Arse --- docs/hardware/index.md | 1 + docs/hardware/network/arse.md | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 docs/hardware/network/arse.md diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 87f96ec2..7ad53269 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -32,3 +32,4 @@ Storage Boxes - [**`mordor`**](network/mordor.md) - [**`Isengard`**](network/isengard.md) - [**`Rivendell`**](network/rivendell.md) +- [**`Arse`**](network/arse.md) \ No newline at end of file diff --git a/docs/hardware/network/arse.md b/docs/hardware/network/arse.md new file mode 100644 index 00000000..36c5b64a --- /dev/null +++ b/docs/hardware/network/arse.md @@ -0,0 +1,8 @@ +--- +id: arse +aliases: [] +tags: [] +created: 2024-03-01T21:17:25 +modified: 2024-03-01T21:17:25 +title: Arse +--- \ No newline at end of file From ed96421e0f1bcf8c131d52207bcc5ea614255614 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 2 Jun 2026 20:24:27 +0100 Subject: [PATCH 03/16] Add isengard and rivendell + vlan ips for aparture --- docs/hardware/aperture/chell.md | 6 ++++-- docs/hardware/aperture/glados.md | 6 ++++-- docs/hardware/aperture/wheatley.md | 6 ++++-- docs/hardware/index.md | 2 +- docs/hardware/network/isengard.md | 22 ++++++++++++++++++++++ docs/hardware/network/rivendell.md | 22 ++++++++++++++++++++++ docs/hardware/network/switches.md | 8 -------- 7 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 docs/hardware/network/isengard.md create mode 100644 docs/hardware/network/rivendell.md delete mode 100644 docs/hardware/network/switches.md diff --git a/docs/hardware/aperture/chell.md b/docs/hardware/aperture/chell.md index 0a47dcc6..083aa44d 100644 --- a/docs/hardware/aperture/chell.md +++ b/docs/hardware/aperture/chell.md @@ -8,7 +8,7 @@ tags: - chell - details created: 2023-12-04T22:28:41 -modified: 2024-03-13T04:49:14 +modified: 2026-06-02T00:00:00 title: Chell --- @@ -27,7 +27,9 @@ Part of [aperture](index.md) ## Where to Find - **Internal**: - - `10.10.0.6` + - `10.10.10.6` + - `10.10.30.6` + - `10.10.40.6` - **External**: - `136.206.16.6` - `chell.redbrick.dcu.ie` diff --git a/docs/hardware/aperture/glados.md b/docs/hardware/aperture/glados.md index e61c0b12..0fe88686 100644 --- a/docs/hardware/aperture/glados.md +++ b/docs/hardware/aperture/glados.md @@ -9,7 +9,7 @@ tags: - glados - details created: 2023-12-04T22:28:41 -modified: 2024-03-13T04:49:14 +modified: 2026-06-02T00:00:00 title: GlaDOS --- @@ -28,7 +28,9 @@ Part of [aperture](index.md) ## Where to Find - **Internal**: - - `10.10.0.4` + - `10.10.10.4` + - `10.10.30.4` + - `10.10.40.4` - **External**: - `136.206.16.4` - `glados.redbrick.dcu.ie` diff --git a/docs/hardware/aperture/wheatley.md b/docs/hardware/aperture/wheatley.md index 86ce2083..76fa44b4 100644 --- a/docs/hardware/aperture/wheatley.md +++ b/docs/hardware/aperture/wheatley.md @@ -8,7 +8,7 @@ tags: - wheatley - details created: 2023-12-04T22:28:41 -modified: 2024-03-13T04:49:14 +modified: 2026-06-02T00:00:00 title: Wheatley --- @@ -27,7 +27,9 @@ Part of [aperture](index.md) ## Where to Find - **Internal**: - - `10.10.0.5` + - `10.10.10.5` + - `10.10.30.5` + - `10.10.40.5` - **External**: - `136.206.16.5` - `wheatley.redbrick.dcu.ie` diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 7ad53269..0dd40891 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -23,7 +23,7 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and - [**`wheatley`**](aperture/wheatley.md) - [**`chell`**](aperture/chell.md) -Storage Boxes +## Storage Boxes - [**`Mirage`**](aperture/mirage.md) - [**`Anubis`**](aperture/anubis.md) diff --git a/docs/hardware/network/isengard.md b/docs/hardware/network/isengard.md new file mode 100644 index 00000000..bf17f496 --- /dev/null +++ b/docs/hardware/network/isengard.md @@ -0,0 +1,22 @@ +--- +id: isengard +aliases: + - Isengard +tags: ["network", "hardware", "switch"] +created: 2026-06-02T00:00:00 +modified: 2026-06-02T00:00:00 +title: Isengard +--- + +# Isengard + +## Details + +* **Device**: Ubiquiti UniFi Switch Pro 24 + +## Services + +* Used as a managed switch to create various VLANs and to apply rules in the network. + +## Ip Addresses: +* 10.10.0.3 \ No newline at end of file diff --git a/docs/hardware/network/rivendell.md b/docs/hardware/network/rivendell.md new file mode 100644 index 00000000..feb397e3 --- /dev/null +++ b/docs/hardware/network/rivendell.md @@ -0,0 +1,22 @@ +--- +id: rivendell +aliases: + - Rivendell +tags: ["network", "hardware", "switch"] +created: 2026-06-02T00:00:00 +modified: 2026-06-02T00:00:00 +title: Rivendell +--- + +# Rivendell + +## Details + +* **Device**: Ubiquiti UniFi Switch Pro 24 + +## Services + +* Used as a managed switch to create various VLANs and to apply rules in the network. + +## Ip Addresses: +* 10.10.0.2 \ No newline at end of file diff --git a/docs/hardware/network/switches.md b/docs/hardware/network/switches.md deleted file mode 100644 index 58134882..00000000 --- a/docs/hardware/network/switches.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -id: switches -aliases: [] -tags: [] -created: 2024-03-01T21:17:25 -modified: 2024-03-01T21:17:25 -title: switches ---- From fe12d5bc02878d98a77e7b2597141ba166fcf927 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 2 Jun 2026 20:37:25 +0100 Subject: [PATCH 04/16] Added basic vlan explanation --- docs/hardware/network/index.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/hardware/network/index.md b/docs/hardware/network/index.md index d69bbb43..f5ec3f84 100644 --- a/docs/hardware/network/index.md +++ b/docs/hardware/network/index.md @@ -7,3 +7,14 @@ title: Redbrick Network Architecture --- # Redbrick Network Architecture + +## VLANs + +Redbrick has a number of VLANs in use, which are used to separate different types of traffic and to apply different rules to different types of devices. The VLANs in use are: + +- **VLAN 10** (Internal Prod): Used for production servers that need to be accessible from the rest of the network. +- **VLAN 16** (External Prod): Used for production servers that need to be accessible from the internet. +- **VLAN 20** (Login): Used for login boxes and other devices that need to be accessible from the rest of the network. +- **VLAN 30** (Storage): Used for storage servers to be able to communicate with the rest of the network. +- **VLAN 40** (Management): Used for management of the servers by the sysadmins. +- **VLAN 99**: *SCP-CLASSIFIED* - Access Denied. Danger: Unstable Network. \ No newline at end of file From 83e28fa239ead1993d1a70130342bfac0bf2b17d Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 2 Jun 2026 21:05:16 +0100 Subject: [PATCH 05/16] Removed johnson. Added Mirage + Anubis --- docs/hardware/aperture/johnson.md | 43 ------------------------------- docs/hardware/index.md | 4 +-- docs/hardware/network/index.md | 1 + docs/hardware/storage/anubis.md | 37 ++++++++++++++++++++++++++ docs/hardware/storage/mirage.md | 38 +++++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 45 deletions(-) delete mode 100644 docs/hardware/aperture/johnson.md create mode 100644 docs/hardware/storage/anubis.md create mode 100644 docs/hardware/storage/mirage.md diff --git a/docs/hardware/aperture/johnson.md b/docs/hardware/aperture/johnson.md deleted file mode 100644 index a56c2747..00000000 --- a/docs/hardware/aperture/johnson.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: johnson -aliases: - - Johnson -tags: - - aperture - - hardware - - johnson - - details -created: 2023-12-06T01:22:03 -modified: 2024-03-13T04:49:14 -title: Johnson ---- - -# Johnson - -## Details - -Formerly `albus` (in a different life) - -- **Type**: Dell PowerEdge R515 -- **OS**: NixOS -- **CPU**: 2 x Opteron 4334 6 core @ 3.2GHz -- **RAM**: 32GB -- **Storage**: LSI MegaRAID SAS 2108 RAID controller -- **Disks**: 2 x 300gb SAS for boot, 8x 1tb SATA ZFS -- **Drives**: Internal SATA DVD±RW -- **Network**: 4x Onboard Ethernet, 802.3ad bonding -- **iDRAC NIC**: Shared on port 1 - -Part of [aperture](index.md) - -## Where to Find - -- **Internal**: - - `10.10.0.7` -- 2nd NIC is currently unused, would be a good idea to make a bond for more throughput and redundancy on the same ip - -## Services - -- `NFS` for [aperture](index.md) - -![](https://cdn.redbrick.dcu.ie/docs/res/johnson.png) diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 0dd40891..bac21a07 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -24,8 +24,8 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and - [**`chell`**](aperture/chell.md) ## Storage Boxes -- [**`Mirage`**](aperture/mirage.md) -- [**`Anubis`**](aperture/anubis.md) +- [**`Mirage`**](storage/mirage.md) +- [**`Anubis`**](storage/anubis.md) ## Network Hardware diff --git a/docs/hardware/network/index.md b/docs/hardware/network/index.md index f5ec3f84..53285b7a 100644 --- a/docs/hardware/network/index.md +++ b/docs/hardware/network/index.md @@ -12,6 +12,7 @@ title: Redbrick Network Architecture Redbrick has a number of VLANs in use, which are used to separate different types of traffic and to apply different rules to different types of devices. The VLANs in use are: +- **VLAN 0** (Internal): Used for legacy reasons and for management. - **VLAN 10** (Internal Prod): Used for production servers that need to be accessible from the rest of the network. - **VLAN 16** (External Prod): Used for production servers that need to be accessible from the internet. - **VLAN 20** (Login): Used for login boxes and other devices that need to be accessible from the rest of the network. diff --git a/docs/hardware/storage/anubis.md b/docs/hardware/storage/anubis.md new file mode 100644 index 00000000..8d6d75e6 --- /dev/null +++ b/docs/hardware/storage/anubis.md @@ -0,0 +1,37 @@ +--- +id: anubis +aliases: + - Anubis +tags: + - hardware + - storage + - details +created: 2026-06-02T00:00:00 +modified: 2026-06-02T00:00:00 +title: Anubis +--- + +# Anubis + +## Details + +- **Type**: PowerEdge R730 +- **OS**: TrueNAS Community (Goldeye) +- **CPU**: 2 x Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GH +- **RAM**: 256GB +- **Storage**: Onboard RAID controller +- **Disks**: 2x 500Gb SAS Disks, 12x 4Tb SAS Disks, 2x 512Gb SAS SSDs, 1x 512Gb SAS Disk +- **Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Where to Find + +- **Internal**: + - `10.10.0.10` + - `10.10.30.10` + - `10.10.40.10` + +## Services + +- Backup server for [mirage](mirage.md) + +![](https://cdn.redbrick.dcu.ie/docs/res/anubis.webp) diff --git a/docs/hardware/storage/mirage.md b/docs/hardware/storage/mirage.md new file mode 100644 index 00000000..fbb6860c --- /dev/null +++ b/docs/hardware/storage/mirage.md @@ -0,0 +1,38 @@ +--- +id: mirage +aliases: + - Mirage +tags: + - hardware + - storage + - details +created: 2026-06-02T00:00:00 +modified: 2026-06-02T00:00:00 +title: Mirage +--- + +# Mirage + +## Details + +- **Type**: PowerEdge R730 +- **OS**: TrueNAS Community (Goldeye) +- **CPU**: 2 x Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GH +- **RAM**: 256GB +- **Storage**: Onboard RAID controller +- **Disks**: 2x 500Gb SAS Disks, 12x 4Tb SAS Disks, 2x 512Gb SAS SSDs, 1x 1Tb SAS Disk +- **Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Where to Find + +- **Internal**: + - `10.10.0.9` + - `10.10.30.9` + - `10.10.40.9` + +## Services + +- `NFS` for [aperture](../aperture/index.md) +- `NFS` for Login Boxes + +![](https://cdn.redbrick.dcu.ie/docs/res/mirage.webp) From f8fce856fb721f58a1586a5f17d021ae8fcf5256 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Fri, 5 Jun 2026 23:58:22 +0100 Subject: [PATCH 06/16] Added Applejack and Rainbowdash --- docs/hardware/index.md | 6 +++++- docs/hardware/power/applejack.md | 21 +++++++++++++++++++++ docs/hardware/power/rainbowdash.md | 21 +++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 docs/hardware/power/applejack.md create mode 100644 docs/hardware/power/rainbowdash.md diff --git a/docs/hardware/index.md b/docs/hardware/index.md index bac21a07..37844362 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -32,4 +32,8 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and - [**`mordor`**](network/mordor.md) - [**`Isengard`**](network/isengard.md) - [**`Rivendell`**](network/rivendell.md) -- [**`Arse`**](network/arse.md) \ No newline at end of file +- [**`Arse`**](network/arse.md) + +## Power Hardware +- [**`Applejack`**](power/applejack.md) +- [**`Rainbowdash`**](power/rainbowdash.md) \ No newline at end of file diff --git a/docs/hardware/power/applejack.md b/docs/hardware/power/applejack.md new file mode 100644 index 00000000..990e9b63 --- /dev/null +++ b/docs/hardware/power/applejack.md @@ -0,0 +1,21 @@ +--- +id: applejack +aliases: + - Applejack +tags: + - hardware + - power + - details +created: 2026-06-05T00:00:00 +modified: 2026-06-05T00:00:00 +title: Applejack +--- + +# Applejack + +* **Device**: APC Smart UPS SRT 3000 + +### Services +* Used for power and power redundancy for the servers and network hardware in the server room. + +![](https://cdn.redbrick.dcu.ie/docs/res/APC_UPS.jpg) \ No newline at end of file diff --git a/docs/hardware/power/rainbowdash.md b/docs/hardware/power/rainbowdash.md new file mode 100644 index 00000000..4ecc6640 --- /dev/null +++ b/docs/hardware/power/rainbowdash.md @@ -0,0 +1,21 @@ +--- +id: rainbowdash +aliases: + - Rainbowdash +tags: + - hardware + - power + - details +created: 2026-06-05T00:00:00 +modified: 2026-06-05T00:00:00 +title: Rainbowdash +--- + +# Rainbowdash + +* **Device**: APC Smart UPS SRT 3000 + Network Management Card + +### Services +* Used for power and power redundancy for the servers and network hardware in the server room. + +![](https://cdn.redbrick.dcu.ie/docs/res/APC_UPS.jpg) \ No newline at end of file From ddb2aefb723a9627649914da85a370c9dd1a56a2 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:04:27 +0100 Subject: [PATCH 07/16] Add Login boxes to Docs --- docs/hardware/index.md | 4 +-- docs/hardware/login/callisto.md | 43 +++++++++++++++++++++++++++++++++ docs/hardware/login/europa.md | 43 +++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 docs/hardware/login/callisto.md create mode 100644 docs/hardware/login/europa.md diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 37844362..b5918793 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -14,8 +14,8 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and ## [Login](../services/servers.md#Logging%20in) Boxes -- [**`Callisto`**](callisto.md) -- [**`Europa`**](europa.md) +- [**`Callisto`**](login/callisto.md) +- [**`Europa`**](login/europa.md) ## [Aperture](aperture/index.md) diff --git a/docs/hardware/login/callisto.md b/docs/hardware/login/callisto.md new file mode 100644 index 00000000..f838f36c --- /dev/null +++ b/docs/hardware/login/callisto.md @@ -0,0 +1,43 @@ +--- +id: callisto +aliases: + - Callisto +tags: + - hardware + - login + - details +created: 2026-06-06T00:00:00 +modified: 2026-06-06T00:00:00 +title: Callisto +--- + + +# Callisto + +## Details +![Fastfetch of login box](https://wiki.redbrick.dcu.ie/images/thumb/3/34/Callisto_fetch.png/700px-Callisto_fetch.png) + +**Type**: Dell PowerEdge R730 +**OS**: Debian 13 (trixie) +**CPU**: 2 x Intel(R) Xeon(R) E5-2687W v3 (40) @ 3.50 GHz +**RAM**: 256GB +**Storage**: Onboard RAID controller +**Disks**: 2x 300Gb SAS Disks (RAID 1) +**Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Description +One of our new login boxes setup in Summer 2026. Named after the moon of Jupiter. Donated to us by Susquehanna along with 7 other machines in August 2025. + +Callisto is a twin of [Europa](./europa.md). + +## Where to Find +- **Internal**: + - `10.10.10.25` + - `10.10.20.25` + - `10.10.30.25` + - `10.10.40.25` +- **External**: + - `136.206.16.25` + + +![Callisto](https://img.redbrick.dcu.ie/1000x200/https://cdn.redbrick.dcu.ie/docs/res/callisto.jpg) \ No newline at end of file diff --git a/docs/hardware/login/europa.md b/docs/hardware/login/europa.md new file mode 100644 index 00000000..8eabc82c --- /dev/null +++ b/docs/hardware/login/europa.md @@ -0,0 +1,43 @@ +--- +id: europa +aliases: + - Europa +tags: + - hardware + - login + - details +created: 2026-06-06T00:00:00 +modified: 2026-06-06T00:00:00 +title: Europa +--- + + +# Europa + +## Details +![Fastfetch of login box](https://wiki.redbrick.dcu.ie/images/thumb/2/20/Europa_fetch.png/700px-Europa_fetch.png) + +**Type**: Dell PowerEdge R730 +**OS**: Debian 13 (trixie) +**CPU**: 2 x Intel(R) Xeon(R) E5-2687W v3 (40) @ 3.50 GHz +**RAM**: 256GB +**Storage**: Onboard RAID controller +**Disks**: 2x 300Gb SAS Disks (RAID 1) +**Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Description +One of our new login boxes setup in Summer 2026. Named after the moon of Jupiter. Donated to us by Susquehanna along with 7 other machines in August 2025. + +Europa is a twin of [Callisto](./callisto.md). + +## Where to Find +- **Internal**: + - `10.10.10.24` + - `10.10.20.24` + - `10.10.30.24` + - `10.10.40.24` +- **External**: + - `136.206.16.24` + + +![Europa](https://img.redbrick.dcu.ie/1000x200/https://cdn.redbrick.dcu.ie/docs/res/europa.jpg) \ No newline at end of file From 3e261ee282976cda1af0dd5a568212be4ae49436 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:27:16 +0100 Subject: [PATCH 08/16] Fixed some inaccurate info --- docs/hardware/aperture/about.md | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/docs/hardware/aperture/about.md b/docs/hardware/aperture/about.md index ffe29a92..7749138d 100644 --- a/docs/hardware/aperture/about.md +++ b/docs/hardware/aperture/about.md @@ -6,7 +6,7 @@ tags: - aperture - hardware created: 2022-05-16T01:44:40 -modified: 2024-03-13T04:49:14 +modified: 2026-06-06T04:49:14 title: About Aperture --- @@ -18,10 +18,6 @@ It consists of: - 3x Dell R6515 - [`glados`](glados.md), [`wheatley`](wheatley.md), [`chell`](chell.md) -| CPU | RAM | Storage | -| ----------------------------------------- | --------------------------------- | -------------------------------- | -| AMD 7302P 3GHz, 16C/32T, 128M, 155W, 3200 | 2x 16GB RDIMM, 3200MT/s Dual Rank | 4x 2TB SATA HDDs (hardware RAID) | - - 2x Ubiquiti USW Pro - `rivendell`, `isengard` - 1x Ubiquiti UDM Pro - `mordor` @@ -31,39 +27,25 @@ The three servers are named [`glados`](glados.md) , [`wheatley`](wheatley.md) an ## Networks -The firewall is called [`mordor`](../network/mordor.md), and the two 24-port switches are called [`rivendell` and `isengard`](../network/switches.md). - -## Networking - -The IP address range for the [`aperture`](index.md) subnet is `10.10.0.0/24`, with `10.10.0.0/16` being used for user VMs. - -| Hostname | Internal Address | External Address | Purpose | -|:-----------:|:----------------:|:----------------:|:--------:| -| `mordor` | 10.10.0.1 | N/A | Firewall | -| `rivendell` | 10.10.0.2 | N/A | Switch | -| `isengard` | 10.10.0.3 | N/A | Switch | -| `glados` | 10.10.0.4 | 136.206.16.4 | Server | -| `wheatley` | 10.10.0.5 | 136.206.16.5 | Server | -| `chell` | 10.10.0.6 | 136.206.16.6 | Server | +The firewall is called [`mordor`](../network/mordor.md), and the two 24-port switches are called [`rivendell`](../network/rivendell.md) and [`isengard`](../network/isengard.md). > [!NOTE] Note! > **Blue** cables are used for **production network**. ## KVM -`nexus` is the name of the KVM switch. It's internal IP address is `10.10.0.10`. +`nexus` is the name of the KVM switch. It's internal IP address is `10.10.0.100`. -[`glados`](glados.md) is connected on port 1, [`wheatley`](wheatley.md) on port 2, and [`chell`](chell.md) on port 3. +> [!ERROR] Note! +> **Red** cables are used for **KVM network**. -> [!WARNING] Note! -> **Yellow** cables are used for **KVM network**. ## IDRAC The new servers are all equipped with IDRACs. These still need to be configured. -> [!ERROR] Note! -> **Red** cables are used for **IDRAC network**. +> [!WARNING] Note! +> **Yellow** cables are used for **iDRAC network**. ## [Images (click me)](images.md) From 48ed551d015979aec91a094c864234ee5d7ca16a Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:54:13 +0100 Subject: [PATCH 09/16] Removal of internal prod from login --- docs/hardware/login/callisto.md | 1 - docs/hardware/login/europa.md | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/hardware/login/callisto.md b/docs/hardware/login/callisto.md index f838f36c..34803775 100644 --- a/docs/hardware/login/callisto.md +++ b/docs/hardware/login/callisto.md @@ -32,7 +32,6 @@ Callisto is a twin of [Europa](./europa.md). ## Where to Find - **Internal**: - - `10.10.10.25` - `10.10.20.25` - `10.10.30.25` - `10.10.40.25` diff --git a/docs/hardware/login/europa.md b/docs/hardware/login/europa.md index 8eabc82c..2ad72c26 100644 --- a/docs/hardware/login/europa.md +++ b/docs/hardware/login/europa.md @@ -32,7 +32,6 @@ Europa is a twin of [Callisto](./callisto.md). ## Where to Find - **Internal**: - - `10.10.10.24` - `10.10.20.24` - `10.10.30.24` - `10.10.40.24` From b376587918034cab8c0d78f64b4f22e6baaa3384 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:46:33 +0100 Subject: [PATCH 10/16] Add templates for pygmalion and habibi --- docs/hardware/index.md | 4 ++++ docs/hardware/infrastructure/habibi.md | 8 ++++++++ docs/hardware/infrastructure/pygmalion.md | 8 ++++++++ 3 files changed, 20 insertions(+) create mode 100644 docs/hardware/infrastructure/habibi.md create mode 100644 docs/hardware/infrastructure/pygmalion.md diff --git a/docs/hardware/index.md b/docs/hardware/index.md index b5918793..7343a69c 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -27,6 +27,10 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and - [**`Mirage`**](storage/mirage.md) - [**`Anubis`**](storage/anubis.md) +# Infrastructure Hardware +- [**`Habibi`**](infrastructure/habibi.md) +- [**`Pygmalion`**](infrastructure/pygmalion.md) + ## Network Hardware - [**`mordor`**](network/mordor.md) diff --git a/docs/hardware/infrastructure/habibi.md b/docs/hardware/infrastructure/habibi.md new file mode 100644 index 00000000..6688d551 --- /dev/null +++ b/docs/hardware/infrastructure/habibi.md @@ -0,0 +1,8 @@ +--- +id: habibi +aliases: [] +tags: [] +created: 2026-06-16T19:17:25 +modified: 2026-06-16T19:17:25 +title: Habibi +--- \ No newline at end of file diff --git a/docs/hardware/infrastructure/pygmalion.md b/docs/hardware/infrastructure/pygmalion.md new file mode 100644 index 00000000..e0eaf90e --- /dev/null +++ b/docs/hardware/infrastructure/pygmalion.md @@ -0,0 +1,8 @@ +--- +id: pygmalion +aliases: [] +tags: [] +created: 2026-06-16T19:17:25 +modified: 2026-06-16T19:17:25 +title: Pygmalion +--- \ No newline at end of file From 3d471a2cecc7146b2aebae27c9d3d8ec86743b99 Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Thu, 18 Jun 2026 14:59:11 +0100 Subject: [PATCH 11/16] New post-powercut todo list --- docs/procedures/post-powercut.md | 101 ++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 21 deletions(-) diff --git a/docs/procedures/post-powercut.md b/docs/procedures/post-powercut.md index 95f2e09f..ca0678e9 100644 --- a/docs/procedures/post-powercut.md +++ b/docs/procedures/post-powercut.md @@ -6,38 +6,97 @@ tags: - powercut - todo created: 2023-12-05T01:36:11 -modified: 2024-09-30T19:24:57 +modified: 2026-06-18T13:24:57 title: Post-powercut Todo List --- -# Post-powercut Todo List +# Post-Powercut Verification Checklist A list of things that should be done/checked immediately after a power cut: -- Ensure the [`aperture`](../hardware/aperture/index.md) servers have the correct IP addresses: - - `eno1` should have the internal IP address (`10.10.0.0/24`) - this should be reserved by DHCP on [`mordor`](../hardware/network/mordor.md) - - `eno2` should have *no IP address* - - `br0` should have the external IP address (`136.206.16.0/24`) - this should also be reserved by DHCP on [`mordor`](../hardware/network/mordor.md) -- If the [`bastion-vm`](../services/bastion-vm.md) fails to start, check: - - `/storage` is mounted `rw` on each [`aperture`](../hardware/aperture/index.md) server - - `br0` is present and configured on each [`aperture`](../hardware/aperture/index.md) server - - `vm-resources.service.consul` is running and `http://vm-resources.service.consul:8000/bastion/bastion-vm-latest.qcow2` is accessible - - if the `latest` symlink points to a corrupted image, `ln -sf` it to an earlier one -- All the [`nixos`](..//procedures/nixos.md) boxes rely on [`DNS`](..//services/bind.md) for [`LDAP`](../services/ldap.md) and [`NFS`](../services/nfs.md): - - Make sure bind is running on [`paphos`](../hardware/paphos.md) - - mount `/storage` - - `systemctl restart` `httpd`, `php-fpm-rbusers-*` and `ldap` -- Apache on [`hardcase`](../hardware/nix/hardcase.md) sometimes tries to start before networking is finished starting. To fix it, disable/re-enable it a few times. This usually makes it turn on. -- Mailman on [`hardcase`](../hardware/nix/hardcase.md) has a lock file at `/var/lib/mailman/lock/master.lck`. If it doesn't shut down correctly, this lock file will block mailman from starting up. Remove it with: +> [!NOTE] Note! +> An announcement should be made in the Redbrick Discord server to notify members that a power cut has occurred and that the team is working on restoring services. +## 1. Network & VLAN Verification + +Run these baseline commands on each [`aperture`](../hardware/aperture/index.md) server to refresh the network states and make sure that all bridges are up and running correctly: +```bash +sudo systemctl daemon-reload +sudo systemctl restart networking +``` + +### IP Address & Bridge Validation +Ensure all [`aperture`](../hardware/aperture/index.md) servers have their correct IP addresses across **vlan16**, **vlan10**, **vlan30**, and **vlan40**. + +#### For [`glados`](../hardware/aperture/glados.md): +* Verify `br0` is up. +* Verify `br0` holds the vlan16 IP: `136.206.16.4` +* Verify `br0` holds the Keepalived IP: `136.206.16.50` + +### Troubleshooting Network Bridges + +* **If `br0` is down**, force the link: + ```bash + sudo ip link set vlan16 master br0 + ``` + +* **Verify VM communication** link by checking if `br0` is linked to `vnet0` and `vlan16`: + ```bash + sudo brctl show br0 + ``` + +* **If `br0` lacks a link to `vnet0`**, manually bridge them: + ```bash + sudo brctl addif br0 vnet0 + ``` + **Note:** You must restart any VMs running on that host after running this command to restore their connectivity. + +--- + +## 2. Storage Mounts + +Verify that shared storage is attached before checking any Nomad jobs. + +1. Access each [`aperture`](../hardware/aperture/index.md) server. +2. Force mount all entries: + ```bash + sudo mount -a + ``` +3. Confirm `/storage` is mounted correctly. +4. *If mounting fails, inspect `/etc/fstab` for issues.* + +--- + +## 3. Nomad Workloads + +If Nomad jobs started while `/storage` was unmounted, they will be in a broken state and must be restarted. + +Run this loop script to automatically reschedule and fix all active Nomad jobs on the host: ```bash -rm /var/lib/mailman/lock/master.lck +for job in \$(nomad job status | awk 'NR>1 {print \$1}'); do + echo "Rescheduling job to fix storage: \$job" + nomad job restart -reschedule "\$job" +done ``` -- [`paphos`](../hardware/paphos.md) is old and sometimes its time will become out of sync. To make sure its time is accurate, run: +--- + +## 4. System Time Verification + +Ensure you have the correct time on each server. + +* Check current system time: + ```bash + date + ``` + +## 5. Debug current services. + +Some services might be in a corrupted or unstable state, especially if they are running with databases like PostgreSQL. Check the status of all services and restart any that are not running correctly. + +One useful step is to run pg_resetwal on those databases to reset the write-ahead log and restore them to a consistent state. This should be done with caution and ideally after taking a backup of the database. ```bash -sudo service ntp restart +sudo docker run --rm -u -v "$(pwd)/db:/var/lib/postgresql/data" postgres:17-alpine pg_resetwal -f /var/lib/postgresql/data ``` -and ensure you have the correct time with `date` From 8413b50f0c07efe7c764b927f32ed48470f7c66b Mon Sep 17 00:00:00 2001 From: Liam Kelly Date: Tue, 18 Aug 2026 10:10:58 +0100 Subject: [PATCH 12/16] Update API docs and remove bastion-vm --- docs/services/api.md | 125 +++++++++++------------------------- docs/services/bastion-vm.md | 36 ----------- 2 files changed, 39 insertions(+), 122 deletions(-) delete mode 100644 docs/services/bastion-vm.md diff --git a/docs/services/api.md b/docs/services/api.md index 4191557b..1ea6cf4e 100644 --- a/docs/services/api.md +++ b/docs/services/api.md @@ -7,21 +7,21 @@ tags: - api - ldap created: 2021-08-13T23:28:49 -modified: 2024-03-31T18:48:31 +modified: 2026-08-18T10:01:49 title: Admin API --- # Redbrick Administrative Web API -The source code for the API can be found [here](https://github.com/redbrick/api/). +The source code for the API can be found [here](https://github.com/redbrick/api/). The repository is private and accessible only to committee. The Redbrick web API serves as an easy interface to carry out administrator tasks *(mainly LDAP related)*, and for use in automation. This saves time instead of accessing machines, and formulating and executing manual LDAP queries or scripts. -The server code for the API is hosted on [`aperture`](../hardware/aperture/index.md) in a docker container deployed with [`nomad`](nomad.md), the job file for which is [here](https://github.com/redbrick/nomad/blob/master/jobs/services/api.hcl). It is written in Python with [FastAPI](https://fastapi.tiangolo.com/). This container is then served to the public using [`traefik`](traefik.md). +The API is hosted on [`aperture`](../hardware/aperture/index.md) in a docker container deployed with [`nomad`](nomad.md), the job is deployed automatically by github workflows and to trigger redeployment the action needs to be re-run. It is written in Python with [FastAPI](https://fastapi.tiangolo.com/). This container is then served to the public using [`traefik`](traefik.md). ## Nomad Job File -The [nomad job for Redbrick's API](https://github.com/redbrick/nomad/blob/master/jobs/services/api.hcl) is similar to most other web servers for the most part. As always, all secrets are stored in [`consul`](consul.md). Some things to watch out for are: +The [nomad job for Redbrick's API](https://github.com/redbrick/nomad/blob/master/jobs/services/api.hcl) is used as a template for deployment by github workflows and attempting to deploy the template directly **will not work.** This uses a similar system to [atlas](https://docs.redbrick.dcu.ie/webgroup/atlas/) and [blockbot](https://docs.redbrick.dcu.ie/webgroup/blockbot/). To redeploy the API you need to trigger the deployment workflow. The production deployment workflow will run if it's triggered in the master branch, and the review deployment will run in any other branch. - The docker image on ghcr.io is private and therefore requires credentials to access. @@ -33,33 +33,28 @@ auth { ``` ```hcl title="Nomad" -template { - data = <' -} - -response = requests.request("GET", url, headers=headers) - -print(response.text) ``` - -- `PUT` a user's LDAP data to change their `loginShell` to `/usr/local/shells/zsh` - -```python -import requests -import json - -url = "https://api.redbrick.dcu.ie/users/USERNAME_HERE" -payload = json.dumps({ - "ldap_key": "loginShell", - "ldap_value": "/usr/local/shells/zsh" -}) -headers = { - 'Authorization': 'Basic ', - 'Content-Type': 'application/json' -} - -response = requests.request("GET", url, headers=headers, data=payload) - -print(response.text) +Select a task to start your session. + +Customize your command, then hit ‘return’ to run. + +$ nomad alloc exec -i -t -task api b8395f6f /bin/sh +/usr/src # python -m app account -h +Usage: + python -m app account register + python -m app account delete + python -m app account list + python -m app account permission add + python -m app account permission remove + python -m app account permission list + +Example: + python -m app account permission add blockbot admin:getuser,admin:updateuser +/usr/src # ``` -## Important Notes and Caveats - -As the FastAPI server for the API is hosted inside of a Docker container, there are limitations to the commands we can execute that affect the "outside" world. - -*This is especially important with commands that rely on LDAP.* +Valid permissions include `admin:getuser` for the admin get user endpoints, `admin:updateuser` for any endpoints that modify user LDAP data, `admin:registeruser` for creating new LDAP users and `admin:deleteuser` for deleting LDAP users. Any of the commands that take permissions as an input support comma seperated lists of permissions for bulk operations. -For example inside the `ldap-register.sh` script used by the `/register` endpoint. -- Commands like `chown` which require a user group or user to be passed to them will not work because they cannot access these users/groups in the container. - -- This is prevalent in our implementation of the API that creates and modifies users' `webtree` directory. - -*How do we fix this?* - -Instead of relying on using users/group names for the `chown` command, it is advisable to instead use their unique id's. - -```bash -# For example, the following commands are equivalent. -chown USERNAME:member /storage/webtree/U/USERNAME - -chown 13371337:103 /storage/webtree/U/USERNAME -# Where 13371337 is userid and 103 is the id for the 'member' group. -``` +## Important Notes and Caveats -> Note that `USERNAME` can be used to refer to the user's web directory here since it is the name of the directory and doesn't refer to the user object. +While the API can be used to change a users name on LDAP, it is not recommended to do so. This has caused issues in the past, so the better way is to simply delete the users old account and make a new one, and manually move the old home and webtree directories. \ No newline at end of file diff --git a/docs/services/bastion-vm.md b/docs/services/bastion-vm.md deleted file mode 100644 index 2614cd40..00000000 --- a/docs/services/bastion-vm.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: bastion-vm -aliases: - - Bastion VM -tags: - - aperture - - services - - nomad - - vm - - ingress -created: 2024-01-23T15:43:40 -modified: 2024-04-02T00:12:41 -title: Bastion VM ---- - -# Bastion VM - -This VM is an ephemeral machine that can be placed on any nomad client that has the qemu driver enabled. - -It acts as the point of ingress for Aperture, with ISS and our [mordor](../hardware/network/mordor.md) allowing traffic to reach it's IP address externally. The VM is configured as a Nomad client itself, in the `ingress` node pool to ensure that only ingress-type allocations are placed there (like [traefik](./traefik.md)). Those services can proxy requests from the Bastion VM to internal services using consul's service DNS resolution, it's service mesh, or by plain IP and port. - -![Ingress Topology with Bastion VM](https://cdn.redbrick.dcu.ie/docs/res/ingress-topology.png) - -`cloud-init` is given a static address during the initialisation phase to configure the interface. This ensures that, even if it is replanned, it will be able to accept traffic. - -The base image that the VM uses is a Debian 12 qcow file. After all configuration was done, the size of the image is `~3.2GB`. The image can be used to create replicas of the ingress on other external IP addresses, creating more availability if needed. - -## Steps to Deploy - -You'll need to ensure the hosts have a bridge device configured to ensure that the networking aspect of the VM can function. See the[`redbrick/nomad`](https://github.com/redbrick/nomad) repo for more information about the steps needed for that. - -You'll need a webserver to serve the `cloud-init` configs. There may be another solution to this in the near future, but for now, `wheatley:/home/mojito/tmp/serve` contains the configurations. - -Plan the Nomad job and wait for the allocation to be created. If you used the correct image (for example a backup of the qcow file) the virtual machine should be configured and should connect as normal to the Consul and Nomad clusters and become eligible for allocations. If you started from scratch, then use the `ansible/redbrick-ansible.yml` playbook in the [`redbrick/nomad`](https://github.com/redbrick/nomad) repo and ensure that the `hosts` file is up to date. - -For security's sake, there is no root login and no user accounts on the bastion VM. This is an attempt to make the node more secure. If you need to make changes, you should change the base image and apply that. The less vulnerabilities that are discovered on the bastion VM, the happier we can keep ISS and the safer Redbrick will be. From 30cd261837ed7c8ab7793363cfb400e8d5c36338 Mon Sep 17 00:00:00 2001 From: Liam Kelly Date: Tue, 18 Aug 2026 21:52:06 +0100 Subject: [PATCH 13/16] Update hardware section --- docs/hardware/aperture/about.md | 14 +++------ docs/hardware/aperture/chell.md | 5 ++-- docs/hardware/aperture/glados.md | 5 ++-- docs/hardware/aperture/wheatley.md | 5 ++-- docs/hardware/index.md | 2 +- docs/hardware/infrastructure/habibi.md | 26 +++++++++++++++- docs/hardware/infrastructure/pygmalion.md | 35 ++++++++++++++++++---- docs/hardware/login/callisto.md | 1 - docs/hardware/login/europa.md | 1 - docs/hardware/login/index.md | 30 +++++++++++++++++++ docs/hardware/network/arse.md | 4 ++- docs/hardware/network/index.md | 2 +- docs/hardware/network/mordor.md | 4 +++ docs/hardware/sewer/donatello.md | 36 +++++++++++++++++++++++ docs/hardware/sewer/index.md | 29 ++++++++++++++++++ docs/hardware/sewer/michelangelo.md | 36 +++++++++++++++++++++++ docs/hardware/sewer/raphael.md | 36 +++++++++++++++++++++++ docs/hardware/storage/anubis.md | 1 - docs/hardware/storage/mirage.md | 1 - 19 files changed, 241 insertions(+), 32 deletions(-) create mode 100644 docs/hardware/login/index.md create mode 100644 docs/hardware/sewer/donatello.md create mode 100644 docs/hardware/sewer/index.md create mode 100644 docs/hardware/sewer/michelangelo.md create mode 100644 docs/hardware/sewer/raphael.md diff --git a/docs/hardware/aperture/about.md b/docs/hardware/aperture/about.md index 7749138d..46c33fb1 100644 --- a/docs/hardware/aperture/about.md +++ b/docs/hardware/aperture/about.md @@ -18,12 +18,9 @@ It consists of: - 3x Dell R6515 - [`glados`](glados.md), [`wheatley`](wheatley.md), [`chell`](chell.md) -- 2x Ubiquiti USW Pro - `rivendell`, `isengard` -- 1x Ubiquiti UDM Pro - `mordor` - ## Servers -The three servers are named [`glados`](glados.md) , [`wheatley`](wheatley.md) and [`chell`](chell.md). +The three servers are named [`glados`](glados.md), [`wheatley`](wheatley.md) and [`chell`](chell.md). ## Networks @@ -34,7 +31,7 @@ The firewall is called [`mordor`](../network/mordor.md), and the two 24-port swi ## KVM -`nexus` is the name of the KVM switch. It's internal IP address is `10.10.0.100`. +`nexus` is the name of the KVM switch. It's internal IP address is `10.10.0.100`. This is used to directly access the machines from the server room. > [!ERROR] Note! > **Red** cables are used for **KVM network**. @@ -42,13 +39,10 @@ The firewall is called [`mordor`](../network/mordor.md), and the two 24-port swi ## IDRAC -The new servers are all equipped with IDRACs. These still need to be configured. +The new servers are all equipped with IDRACs. These are configured for access through the vpn. The ips assigned for these are a bit all over the place +so you need to find it on mordor. > [!WARNING] Note! > **Yellow** cables are used for **iDRAC network**. ## [Images (click me)](images.md) - -## Switching from the Old Network to the New - -We have two address ranges that come in on a single redundant link, so we're exchanging that redundant link for two separate links, each taking responsibility for an address range (`136.26.15.0/24` and `136.206.16.0/24`). So we're surrendering redundancy to gain uptime/connectivity during the switchover only. Once the new servers are production ready, we can recombine the link to regain the redundancy. diff --git a/docs/hardware/aperture/chell.md b/docs/hardware/aperture/chell.md index 083aa44d..77e849ba 100644 --- a/docs/hardware/aperture/chell.md +++ b/docs/hardware/aperture/chell.md @@ -17,9 +17,9 @@ title: Chell ## Details - **Type**: Dell R6515 -- **OS**: Debian 11 +- **OS**: Debian 12 - **CPU**: AMD 7302P 3GHz, 16C/32T, 128M, 155W -- **RAM**: 2x 16GB RDIMM, 3200MT/s Dual Rank +- **RAM**: 16x 64GB RDIMM, 3200MT/s Dual Rank - **Storage**: 4x 2TB SATA HDDs (hardware RAID) Part of [aperture](index.md) @@ -29,7 +29,6 @@ Part of [aperture](index.md) - **Internal**: - `10.10.10.6` - `10.10.30.6` - - `10.10.40.6` - **External**: - `136.206.16.6` - `chell.redbrick.dcu.ie` diff --git a/docs/hardware/aperture/glados.md b/docs/hardware/aperture/glados.md index 0fe88686..e1f078f7 100644 --- a/docs/hardware/aperture/glados.md +++ b/docs/hardware/aperture/glados.md @@ -18,9 +18,9 @@ title: GlaDOS ## Details - **Type**: Dell R6515 -- **OS**: Debian 11 +- **OS**: Debian 12 - **CPU**: AMD 7302P 3GHz, 16C/32T, 128M, 155W -- **RAM**: 2x 16GB RDIMM, 3200MT/s Dual Rank +- **RAM**: 16x 64GB RDIMM, 3200MT/s Dual Rank - **Storage**: 4x 2TB SATA HDDs (hardware RAID) Part of [aperture](index.md) @@ -30,7 +30,6 @@ Part of [aperture](index.md) - **Internal**: - `10.10.10.4` - `10.10.30.4` - - `10.10.40.4` - **External**: - `136.206.16.4` - `glados.redbrick.dcu.ie` diff --git a/docs/hardware/aperture/wheatley.md b/docs/hardware/aperture/wheatley.md index 76fa44b4..9ead777c 100644 --- a/docs/hardware/aperture/wheatley.md +++ b/docs/hardware/aperture/wheatley.md @@ -17,9 +17,9 @@ title: Wheatley ## Details - **Type**: Dell R6515 -- **OS**: Debian 11 +- **OS**: Debian 12 - **CPU**: AMD 7302P 3GHz, 16C/32T, 128M, 155W -- **RAM**: 2x 16GB RDIMM, 3200MT/s Dual Rank +- **RAM**: 16x 64GB RDIMM, 3200MT/s Dual Rank - **Storage**: 4x 2TB SATA HDDs (hardware RAID) Part of [aperture](index.md) @@ -29,7 +29,6 @@ Part of [aperture](index.md) - **Internal**: - `10.10.10.5` - `10.10.30.5` - - `10.10.40.5` - **External**: - `136.206.16.5` - `wheatley.redbrick.dcu.ie` diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 7343a69c..2c6b0f57 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -27,7 +27,7 @@ Here is a list of current hardware in Redbrick's suite of servers, switches and - [**`Mirage`**](storage/mirage.md) - [**`Anubis`**](storage/anubis.md) -# Infrastructure Hardware +## Infrastructure - [**`Habibi`**](infrastructure/habibi.md) - [**`Pygmalion`**](infrastructure/pygmalion.md) diff --git a/docs/hardware/infrastructure/habibi.md b/docs/hardware/infrastructure/habibi.md index 6688d551..47b437d5 100644 --- a/docs/hardware/infrastructure/habibi.md +++ b/docs/hardware/infrastructure/habibi.md @@ -5,4 +5,28 @@ tags: [] created: 2026-06-16T19:17:25 modified: 2026-06-16T19:17:25 title: Habibi ---- \ No newline at end of file +--- + +# Habibi + +## Details + +- **Type**: Dell R6515 +- **OS**: Debian 12 +- **CPU**: Intel(R) Xeon(R) CPU E5-2687W v3 @ 3.10GHz +- **RAM**: 256GB +- **Storage**: 2x 300GB SATA HDDs (hardware RAID) + +Habibi is one of the machines we had donated to us by susquehana. Currently it just runs DNS but that will eventually be moved to aperture and habibi will be used as a backup / fafo box. + +## Where to Find + +- **Internal**: + - `10.10.10.6` + - `10.10.30.6` +- **External**: + - `136.206.16.6` + - `chell.redbrick.dcu.ie` + - `chell.aperture.redbrick.dcu.ie` + +![](https://cdn.redbrick.dcu.ie/docs/res/chell.png) diff --git a/docs/hardware/infrastructure/pygmalion.md b/docs/hardware/infrastructure/pygmalion.md index e0eaf90e..bdebdca7 100644 --- a/docs/hardware/infrastructure/pygmalion.md +++ b/docs/hardware/infrastructure/pygmalion.md @@ -1,8 +1,33 @@ --- id: pygmalion -aliases: [] -tags: [] -created: 2026-06-16T19:17:25 -modified: 2026-06-16T19:17:25 +aliases: + - Pygmalion + - pyg +tags: + - hardware + - pygmalion +created: 2023-12-02T14:18:51 +modified: 2024-03-13T04:49:14 title: Pygmalion ---- \ No newline at end of file +--- + +# Pygmalion + +Former login box, now used as a fafo box with proxmox + +## Details + +- **Type**: Intel(R) Xeon (R) +- **OS**: Proxmox +- **CPU**: 2x Intel (R) Xeon (R) E5620 2.46GHz +- **RAM**: 24GB +- **Network**: 4x Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet + +## Where to Find + +- **Internal**: + - `10.10.0.25` + +## Services + +- fafo box \ No newline at end of file diff --git a/docs/hardware/login/callisto.md b/docs/hardware/login/callisto.md index 34803775..cb341bc3 100644 --- a/docs/hardware/login/callisto.md +++ b/docs/hardware/login/callisto.md @@ -34,7 +34,6 @@ Callisto is a twin of [Europa](./europa.md). - **Internal**: - `10.10.20.25` - `10.10.30.25` - - `10.10.40.25` - **External**: - `136.206.16.25` diff --git a/docs/hardware/login/europa.md b/docs/hardware/login/europa.md index 2ad72c26..ca52e346 100644 --- a/docs/hardware/login/europa.md +++ b/docs/hardware/login/europa.md @@ -34,7 +34,6 @@ Europa is a twin of [Callisto](./callisto.md). - **Internal**: - `10.10.20.24` - `10.10.30.24` - - `10.10.40.24` - **External**: - `136.206.16.24` diff --git a/docs/hardware/login/index.md b/docs/hardware/login/index.md new file mode 100644 index 00000000..4fbcf75d --- /dev/null +++ b/docs/hardware/login/index.md @@ -0,0 +1,30 @@ +--- +id: index +aliases: + - Login +tags: + - login + - details + - getting-started +created: 2022-05-16T01:44:40 +modified: 2024-03-13T04:49:14 +title: Login Boxes +--- + +# Login Boxes + +## What are the login boxes? + +These are the servers that we have open to use for all brickies. You can use them to play games, store files, or do any work that you need a linux system for (like compiling projects). + +## New Login Boxes + +If you need to reset or setup a new login box, there are quite a few things that need to be done. You need: +- Setup NFS mounts to give the login boxes access to both the home and webtree shares from truenas. +- Run the [ansible](../../procedures/ansible.md) scripts for new login boxes. This will install most of the packages you need and load some configs. +- Check that SSSD is working for logins. +- Check that SSSD is correctly mapping ssh keys from LDAP. +- Check that user storage quotas are applied correctly. +- Check that users cannot access or view other user folders (including admin home dirs). +- Check that users can change their own passwords. +- Check that users have permissions for their webtree. \ No newline at end of file diff --git a/docs/hardware/network/arse.md b/docs/hardware/network/arse.md index 36c5b64a..1d89b665 100644 --- a/docs/hardware/network/arse.md +++ b/docs/hardware/network/arse.md @@ -5,4 +5,6 @@ tags: [] created: 2024-03-01T21:17:25 modified: 2024-03-01T21:17:25 title: Arse ---- \ No newline at end of file +--- + +Fibre splitter. \ No newline at end of file diff --git a/docs/hardware/network/index.md b/docs/hardware/network/index.md index 53285b7a..e808164c 100644 --- a/docs/hardware/network/index.md +++ b/docs/hardware/network/index.md @@ -18,4 +18,4 @@ Redbrick has a number of VLANs in use, which are used to separate different type - **VLAN 20** (Login): Used for login boxes and other devices that need to be accessible from the rest of the network. - **VLAN 30** (Storage): Used for storage servers to be able to communicate with the rest of the network. - **VLAN 40** (Management): Used for management of the servers by the sysadmins. -- **VLAN 99**: *SCP-CLASSIFIED* - Access Denied. Danger: Unstable Network. \ No newline at end of file +- **VLAN 99**: Void VLAN for unconfigured devices, so that they cannot access anything they shouldn't \ No newline at end of file diff --git a/docs/hardware/network/mordor.md b/docs/hardware/network/mordor.md index da614ae9..f43c6a80 100644 --- a/docs/hardware/network/mordor.md +++ b/docs/hardware/network/mordor.md @@ -34,6 +34,10 @@ The owner account of the unifi equipment is `rbadmins` (email: elected-admins@re There is a "super admin" account that can be used for **local access only**, details are stored in `pwsafe` under `udmpro-super-admin`. +### VPN + +The admin VPN is currently hosted directly on mordor. Wireguard certs for new vpn connections can be created in the settings for the vpn. + ### Updates The UDM Pro should be kept up to date at all times using the web interface. Please ensure there are no breaking changes before updating. diff --git a/docs/hardware/sewer/donatello.md b/docs/hardware/sewer/donatello.md new file mode 100644 index 00000000..d3feb6af --- /dev/null +++ b/docs/hardware/sewer/donatello.md @@ -0,0 +1,36 @@ +--- +id: donatello +aliases: + - Donatello +tags: + - hardware + - sewer + - details +created: 2026-06-06T00:00:00 +modified: 2026-06-06T00:00:00 +title: Donatello +--- + + +# Donatello + +## Details +**Type**: Dell PowerEdge R730 +**OS**: Debian 13 (trixie) +**CPU**: 2 x Intel(R) Xeon(R) E5-2637 v3 (16) @ 3.60 GHz +**RAM**: 128GB +**Storage**: Onboard RAID controller +**Disks**: 2x 300Gb SAS Disks (RAID 1) +**Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Description +Part of our new dev cluster, setup in Summer 2026. Donated to us by Susquehanna along with 7 other machines in August 2025. + +Donatello is part of the [sewer cluster](./index.md). + +## Where to Find +- **Internal**: + - `10.10.10.44` + - `10.10.30.44` +- **External**: + - `136.206.16.44` diff --git a/docs/hardware/sewer/index.md b/docs/hardware/sewer/index.md new file mode 100644 index 00000000..40a11267 --- /dev/null +++ b/docs/hardware/sewer/index.md @@ -0,0 +1,29 @@ +--- +id: sewer +aliases: + - Sewer +tags: + - sewer + - details + - getting-started +created: 2022-05-16T01:44:40 +modified: 2024-03-13T04:49:14 +title: Sewer Cluster +--- + +# Sewer Cluster + +## What is the Sewer Cluster? + +The sewer cluster is a trio of systems named after the teenage mutant ninja turtles. They make up redbricks dev cluster. + +## What does it do? + +The sewer cluster is hooked up with nomad and consul just like aperture, so it's the perfect place to test new services. The sewer cluster boxes also +have GPUs in them, which lets them run AI workloads. Anything hosted by redbrick that uses an AI model is hosted here. + +## Hardware + +- [Donatello](./donatello.md) +- [Raphael](./raphael.md) +- [Michelangelo](./michelangelo.md) \ No newline at end of file diff --git a/docs/hardware/sewer/michelangelo.md b/docs/hardware/sewer/michelangelo.md new file mode 100644 index 00000000..1bcc381a --- /dev/null +++ b/docs/hardware/sewer/michelangelo.md @@ -0,0 +1,36 @@ +--- +id: michelangelo +aliases: + - Michelangelo +tags: + - hardware + - sewer + - details +created: 2026-06-06T00:00:00 +modified: 2026-06-06T00:00:00 +title: Michelangelo +--- + + +# Michelangelo + +## Details +**Type**: Dell PowerEdge R730 +**OS**: Debian 13 (trixie) +**CPU**: 2 x Intel(R) Xeon(R) E5-2687W v3 (40) @ 3.50 GHz +**RAM**: 256GB +**Storage**: Onboard RAID controller +**Disks**: 2x 300Gb SAS Disks (RAID 1) +**Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Description +Part of our new dev cluster, setup in Summer 2026. Donated to us by Susquehanna along with 7 other machines in August 2025. + +Michelangelo is part of the [sewer cluster](./index.md). + +## Where to Find +- **Internal**: + - `10.10.10.45` + - `10.10.30.45` +- **External**: + - `136.206.16.45` diff --git a/docs/hardware/sewer/raphael.md b/docs/hardware/sewer/raphael.md new file mode 100644 index 00000000..a4634c0b --- /dev/null +++ b/docs/hardware/sewer/raphael.md @@ -0,0 +1,36 @@ +--- +id: raphael +aliases: + - Raphael +tags: + - hardware + - sewer + - details +created: 2026-06-06T00:00:00 +modified: 2026-06-06T00:00:00 +title: Raphael +--- + + +# Raphael + +## Details +**Type**: Dell PowerEdge R730 +**OS**: Debian 13 (trixie) +**CPU**: 2 x Intel(R) Xeon(R) E5-2687W v3 (40) @ 3.50 GHz +**RAM**: 128GB +**Storage**: Onboard RAID controller +**Disks**: 2x 600Gb SAS Disks (RAID 1) +**Network**: 2x Gigabit Ethernet, 2x 10 Gigabit SPF+ + +## Description +Part of our new dev cluster, setup in Summer 2026. Donated to us by Susquehanna along with 7 other machines in August 2025. + +Raphael is part of the [sewer cluster](./index.md). + +## Where to Find +- **Internal**: + - `10.10.10.45` + - `10.10.30.45` +- **External**: + - `136.206.16.45` diff --git a/docs/hardware/storage/anubis.md b/docs/hardware/storage/anubis.md index 8d6d75e6..ccec0191 100644 --- a/docs/hardware/storage/anubis.md +++ b/docs/hardware/storage/anubis.md @@ -28,7 +28,6 @@ title: Anubis - **Internal**: - `10.10.0.10` - `10.10.30.10` - - `10.10.40.10` ## Services diff --git a/docs/hardware/storage/mirage.md b/docs/hardware/storage/mirage.md index fbb6860c..d3c7d15a 100644 --- a/docs/hardware/storage/mirage.md +++ b/docs/hardware/storage/mirage.md @@ -28,7 +28,6 @@ title: Mirage - **Internal**: - `10.10.0.9` - `10.10.30.9` - - `10.10.40.9` ## Services From cef872c195a7c3fbc1275b1713836d78da1421cf Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Fri, 21 Aug 2026 15:12:45 +0100 Subject: [PATCH 14/16] Fix info + login info --- Dockerfile | 22 ++++++++++ docs/hardware/infrastructure/habibi.md | 7 +--- docs/hardware/pygmalion.md | 38 ----------------- docs/hardware/sewer/raphael.md | 6 +-- docs/services/servers.md | 58 +++----------------------- 5 files changed, 33 insertions(+), 98 deletions(-) create mode 100644 Dockerfile delete mode 100644 docs/hardware/pygmalion.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..40401c96 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM python:3.12-slim + +WORKDIR /app + +# Install system dependencies required for Git plugin and Material imaging features +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + gcc \ + python3-dev \ + zlib1g-dev \ + libjpeg-dev \ + libfreetype6-dev \ + && rm -rf /var/lib/apt/lists/* + +# Copy and install Python requirements +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +EXPOSE 8000 + +# Fire up ProperDocs from the root app directory +CMD ["properdocs", "serve", "--dev-addr=0.0.0.0:8000"] diff --git a/docs/hardware/infrastructure/habibi.md b/docs/hardware/infrastructure/habibi.md index 47b437d5..61ff9859 100644 --- a/docs/hardware/infrastructure/habibi.md +++ b/docs/hardware/infrastructure/habibi.md @@ -25,8 +25,5 @@ Habibi is one of the machines we had donated to us by susquehana. Currently it j - `10.10.10.6` - `10.10.30.6` - **External**: - - `136.206.16.6` - - `chell.redbrick.dcu.ie` - - `chell.aperture.redbrick.dcu.ie` - -![](https://cdn.redbrick.dcu.ie/docs/res/chell.png) + - `136.206.15.53` + - `ns1.redbrick.dcu.ie` diff --git a/docs/hardware/pygmalion.md b/docs/hardware/pygmalion.md deleted file mode 100644 index e2469631..00000000 --- a/docs/hardware/pygmalion.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: pygmalion -aliases: - - Pygmalion - - pyg -tags: - - login-box - - hardware - - pygmalion - - ubuntu -created: 2023-12-02T14:18:51 -modified: 2024-03-13T04:49:14 -title: Pygmalion ---- - -# Pygmalion - -## Details - -- **Type**: Intel(R) Xeon (R) -- **OS**: Debian 12 `bookworm` -- **CPU**: 2x Intel (R) Xeon (R) E5620 2.46GHz -- **RAM**: 16GB -- **Network**: 4x Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet - -## Where to Find - -- **Internal**: - - `192.168.0.25` -- **External**: - - `136.206.15.25` - - `pygmalion.redbrick.dcu.ie` - - `pyg.redbrick.dcu.ie` - -## Services - -- secondary ssh login box for users (see [Logging in](../services/servers.md#Logging%20in)) -- jump-box for admins diff --git a/docs/hardware/sewer/raphael.md b/docs/hardware/sewer/raphael.md index a4634c0b..72e39e4a 100644 --- a/docs/hardware/sewer/raphael.md +++ b/docs/hardware/sewer/raphael.md @@ -30,7 +30,7 @@ Raphael is part of the [sewer cluster](./index.md). ## Where to Find - **Internal**: - - `10.10.10.45` - - `10.10.30.45` + - `10.10.10.46` + - `10.10.30.46` - **External**: - - `136.206.16.45` + - `136.206.16.46` diff --git a/docs/services/servers.md b/docs/services/servers.md index eb681e71..20c06d84 100644 --- a/docs/services/servers.md +++ b/docs/services/servers.md @@ -22,22 +22,17 @@ The main login server used in Redbrick is [Azazel](../hardware/azazel.md). You m You've set up 2FA on your account with an SSH key, right? [_If not, you really have to, I'm sorry._](#setting-up-an-ssh-key) -You can log in using SSH in your command prompt or terminal application of choice with your Redbrick username and password like so: +You can log in using SSH in your command prompt or terminal application of choice with your Redbrick username like so: ```bash -ssh YOUR_USERNAME@redbrick.dcu.ie -i SSH_KEY_LOCATION_PATH +ssh YOUR_USERNAME@login.redbrick.dcu.ie -i SSH_KEY_LOCATION_PATH -# When prompted for the password, please input your Redbrick account password. # NOTE: The "-i" flag specifies the location of your private ssh key. ``` -### Alternatives - -If you are an unbothered king/queen that simply does not mind using a web interface, let me introduce you to [wetty.redbrick.dcu.ie](https://wetty.redbrick.dcu.ie/). You do not need an SSH key here. - ### Logging in to other Servers -Your home directory is synced (i.e the same) on all public Redbrick servers. Thus the `authorized_keys` file will be the same on [Azazel](../hardware/azazel.md) as it is on [Pygmalion](../hardware/pygmalion.md), meaning you can log in to `pyg.redbrick.dcu.ie` too, and so on. +Your home directory is synced (i.e the same) on all public Redbrick servers. Thus your public key will be the same on [Callisto](../hardware/login/callisto.md) as it is on [Europa](../hardware/login/europa.md), meaning you can log in to `europa.redbrick.dcu.ie` too, and so on. ## Setting up an SSH Key @@ -88,57 +83,16 @@ Here you may protect this key file with a passphrase. This is optional and recom This key is saved under .ssh under your User directory. (i.e `C:\Users\Bob\.ssh\id_ed25519`) -### 3. Copying the Public Key to the Server - -In this step we store our **public** key on the server we intend to log in to. This key will be used against our secret private key to authenticate our login. - -For the purposes of this tutorial we will be using [Pygmalion](../hardware/pygmalion.md) (`pyg.redbrick.dcu.ie`) as our server. - -#### Logging in to Wetty - -In order to access the server to actually place our keys in it, we need to log in via Wetty - a shell interface for [Pygmalion](../hardware/pygmalion.md) on the web. - -- Head to wetty.redbrick.dcu.ie. - -You should see this prompt: - -``` -pygmalion.redbrick.dcu.ie login: -``` - -Enter your Redbrick username and press ENTER. When prompted, enter your Redbrick password. [*Forgot either of these?*](#forgot-your-password) - -#### Adding the Key into the `authorized_keys` File +### 3. Add your Public Key to your Redbrick Account -- Add the key - -Grab the contents of your public key. You may use the `cat filepath` command for this: +To do this you will need to run the `/account pubkey` command on the Redbrick Discord server. This will give you a field called "key" where you can paste your public key. You can get the contents of your public key by running the following command in your terminal: ```bash cat /home/bob/.ssh/id_ed25519.pub ``` -On Wetty, enter the following command in the shell, with `YOUR_KEY` replaced with your **public** ssh key. - -```bash -echo "YOUR_KEY" >> ~/.ssh/authorized_keys -``` - -This command will append your public key to the end of the `authorized_keys` file. - -> [!NOTE] Note! -> The speech marks surrounding YOUR_KEY are important! - -##### *PSSST… Made a mistake?* - - *You can manually edit the authorized_key file in a text editor with the following command to fix any issues:* - -```bash -nano ~/.ssh/authorized_keys -``` - Congratulations! If you've made it this far, [you're ready to login](#logging-in) now. ## Forgot Your Password? -[Contact an admin](../contact.md) on our [Discord Server](https://discord.gg/3D8kTX9auY) or at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie) +[Contact an admin](../contact.md) on our [Discord Server](https://discord.redbrick.dcu.ie) or at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie) From e08108edfc2bd2b7ee3680d8c384a2bd73d9a91c Mon Sep 17 00:00:00 2001 From: Liam Kelly Date: Mon, 24 Aug 2026 13:50:18 +0100 Subject: [PATCH 15/16] Updates to information on login boxes --- docs/contact.md | 2 +- docs/services/servers.md | 46 +++++++++++++++++++++++++++++----------- docs/services/wetty.md | 35 ------------------------------ 3 files changed, 35 insertions(+), 48 deletions(-) delete mode 100644 docs/services/wetty.md diff --git a/docs/contact.md b/docs/contact.md index eb0b63db..ffb49da7 100644 --- a/docs/contact.md +++ b/docs/contact.md @@ -10,6 +10,6 @@ title: Contact Us # Contact Us -If you have any questions or comments, please contact us at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie). Or you can join the [Discord server](https://discord.gg/MttnTq9UyK)! +If you have any questions or comments, please contact us at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie). Or you can create a ticket on the [Discord server](https://discord.redbrick.dcu.ie)! diff --git a/docs/services/servers.md b/docs/services/servers.md index 20c06d84..88d09c03 100644 --- a/docs/services/servers.md +++ b/docs/services/servers.md @@ -10,17 +10,18 @@ title: Servers # Servers -Redbrick provides two main servers ([Azazel](../hardware/azazel.md) and [Pygmalion](../hardware/pygmalion.md)) for it's members to use for various use cases, for example running applications or user programs. +Redbrick provides two main servers ([Europa](../hardware/login/europa.md) and [Callisto](../hardware/login/callisto.md)) for it's members to use for various use cases, for example running applications or user programs. ## Entrypoints -The main login server used in Redbrick is [Azazel](../hardware/azazel.md). You may also log in to [Pygmalion](../hardware/pygmalion.md) if you wish at `pyg.redbrick.dcu.ie` +**With the introduction of our new login boxes, [Europa](../hardware/login/europa.md) and [Callisto](../hardware/login/callisto.md) we now require public key authentication. You can no longer login with just a password.** +If you had a public ssh key added to your account in the past, it should still work. If not, the prefferred way to add one is to join the redbrick [Discord server](https://discord.redbrick.dcu.ie), link your Discord account with your redbrick account, and add your key using the `/account pubkey ` blockbot command. -**2 Factor Authentication is required to log in to Redbrick servers.** This is done via an SSH key and your Redbrick username/password combination. For more information on how to create an SSH key, and configure your account for 2FA, please read below. +If you have any issues, please contact the admins either by creating a ticket in the Discord server or by [email](mailto://elected-admins@redbrick.dcu.ie). ## Logging in -You've set up 2FA on your account with an SSH key, right? [_If not, you really have to, I'm sorry._](#setting-up-an-ssh-key) +You've set up your account with an SSH key, right? [_If not, you really have to, I'm sorry._](#setting-up-an-ssh-key) You can log in using SSH in your command prompt or terminal application of choice with your Redbrick username like so: @@ -32,7 +33,7 @@ ssh YOUR_USERNAME@login.redbrick.dcu.ie -i SSH_KEY_LOCATION_PATH ### Logging in to other Servers -Your home directory is synced (i.e the same) on all public Redbrick servers. Thus your public key will be the same on [Callisto](../hardware/login/callisto.md) as it is on [Europa](../hardware/login/europa.md), meaning you can log in to `europa.redbrick.dcu.ie` too, and so on. +Your home directory and all user information is synced between the login boxes, meaning if you can login to [Europa](../hardware/login/europa.md) with your ssh key, you will also be able to login to [Callisto](../hardware/login/callisto.md) with the same key. This works regardless of how you added your key (Whether through blockbot, or in the `authorized_keys` file) ## Setting up an SSH Key @@ -40,6 +41,8 @@ Generating an SSH key pair creates two long strings of characters: a public and When these keys match up, and your account password is also correct, you are granted authorisation to log in. +**Never share your private key with anyone, or store it anywhere you don't trust completely, because anybody can use this to gain full control over your redbrick account.** + ### 1. Creating the Key Pair On your local computer, in the command line of your choice, enter the following command: @@ -61,7 +64,7 @@ You will now be prompted with some information and input prompts: - The first prompt will ask where to save the keys. ``` -Enter file in which to save the key (e.g /home/bob/.ssh/id_ed25519): +Enter file in which to save the key (e.g /home//.ssh/id_ed25519): ``` You can simply press ENTER here to save them at the default location (.ssh directory in your home directory). *Alternatively you can specify a custom location if you wish.* @@ -72,27 +75,46 @@ You can simply press ENTER here to save them at the default location Enter passphrase (empty for no passphrase): ``` -Here you may protect this key file with a passphrase. This is optional and recommended for security. +Here you may protect this key file with a passphrase. This is optional but recommended for security. > [!NOTE] Note > *If you do not wish to add a passphrase to save you all that typing, simply press ENTER for the password and confirmation password prompts.* -*The newly generated public key should now be saved* in `/home/bob/.ssh/id_ed25519.pub`. The private key is the same file is at `/home/bob/.ssh/id_ed25519`. *(i.e under the `.ssh` folder in your user home directory.)* +*The newly generated public key should now be saved* in `/home//.ssh/id_ed25519.pub`. The private key is the same file is at `/home//.ssh/id_ed25519`. *(i.e under the `.ssh` folder in your user home directory.)* ##### NOTE FOR WINDOWS (you heathen) -This key is saved under .ssh under your User directory. (i.e `C:\Users\Bob\.ssh\id_ed25519`) +This key is saved under .ssh under your User directory. (i.e `C:\Users\\.ssh\id_ed25519`) ### 3. Add your Public Key to your Redbrick Account -To do this you will need to run the `/account pubkey` command on the Redbrick Discord server. This will give you a field called "key" where you can paste your public key. You can get the contents of your public key by running the following command in your terminal: +In this step we store our **public** key on the server we intend to log in to. This key will be used against our secret private key to authenticate our login. + +For the purposes of this tutorial we will be using [Europa](../hardware/login/europa.md) (`europa.redbrick.dcu.ie`) as our server. + +#### Adding the Key into the `authorized_keys` File + +If you want to have multiple ssh keys on your redbrick account, you can add them to the `authorized_keys` file. + +To do this you **need** to already have access to the login boxes, such as by using the blockbot `/account pubkey ` command. + +If your key is located at `/home//.ssh/id_ed25519.pub`, for example, you can run +```bash +ssh-copy-id @europa.redbrick.dcu.ie -i /home//.ssh/id_ed25519.pub +``` + +This command will append your public key to the end of the `authorized_keys` file. + +##### *PSSST… Made a mistake?* + +*You can manually edit the authorized_key file in a text editor with the following command to fix any issues:* ```bash -cat /home/bob/.ssh/id_ed25519.pub +nano ~/.ssh/authorized_keys ``` Congratulations! If you've made it this far, [you're ready to login](#logging-in) now. ## Forgot Your Password? -[Contact an admin](../contact.md) on our [Discord Server](https://discord.redbrick.dcu.ie) or at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie) +If you have any issues, please contact the admins either by creating a ticket in the Discord server or by [email](mailto://elected-admins@redbrick.dcu.ie). diff --git a/docs/services/wetty.md b/docs/services/wetty.md deleted file mode 100644 index 51abb35e..00000000 --- a/docs/services/wetty.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: wetty -aliases: - - Wetty - `wizzdom` -tags: - - aperture - - nomad - - docker -author: - - wizzdom -created: 2024-07-16T23:52:13 -modified: 2024-07-18T23:08:33 -title: Wetty ---- - -# Wetty - `wizzdom` - -Redbrick uses [Wetty](https://github.com/butlerx/wetty) as our web terminal of choice. It is accessible at [wetty.redbrick.dcu.ie](https://wetty.redbrick.dcu.ie), [wetty.rb.dcu.ie](https://wetty.rb.dcu.ie),[term.redbrick.dcu.ie](https://term.redbrick.dcu.ie), [anyterm.redbrick.dcu.ie](https://anyterm.redbrick.dcu.ie) and [ajaxterm.redbrick.dcu.ie](https://ajaxterm.redbrick.dcu.ie). - -*Why all the different domains?* - ***For legacy reasons!*** - -The configuration is located [here](https://github.com/redbrick/nomad/blob/master/jobs/services/wetty.hcl) - -The configuration for Wetty is pretty straightforward: - -- `SSHHOST` - the host that Wetty will connect to (one of the [Login](servers.md#Logging%20in) boxes), defined in [`consul`](consul.md) -- `SSHPORT` - the port used for ssh -- `BASE` - the base path for Wetty (default is `/wetty`) - - *This isn't very well documented but trust the process. It works!!* - -```hcl title="Nomad" -SSHHOST={{ key "wetty/ssh/host" }} -SSHPORT=22 -BASE=/ -``` From 6817718a610b2fd2c9998e4158b61c082ad627be Mon Sep 17 00:00:00 2001 From: Liam Kelly Date: Thu, 3 Sep 2026 13:37:16 +0100 Subject: [PATCH 16/16] Update docs --- docs/.obsidian/core-plugins.json | 53 ++++++---- docs/.obsidian/types.json | 9 ++ docs/contact.md | 8 +- docs/hardware/index.md | 47 +++++---- docs/hardware/infrastructure/index.md | 18 ++++ docs/hardware/infrastructure/pygmalion.md | 4 +- docs/hardware/login/index.md | 8 +- docs/hardware/network/mordor.md | 8 +- docs/hardware/power/index.md | 22 +++++ docs/hardware/sewer/index.md | 7 +- docs/hardware/storage/index.md | 23 +++++ docs/index.md | 8 +- docs/procedures/ansible.md | 25 ++--- docs/procedures/cheatsheet.md | 76 +++------------ docs/procedures/handover.md | 1 - docs/procedures/index.md | 22 +---- docs/procedures/irc-ops.md | 4 +- docs/procedures/new-admins.md | 3 +- docs/procedures/nixos.md | 53 ---------- docs/procedures/policies.md | 15 ++- docs/procedures/vpn.md | 28 ++---- docs/services/api.md | 6 +- docs/services/forgejo.md | 28 ++++++ docs/services/gate.md | 13 +++ docs/services/gitea.md | 41 -------- docs/services/icecast.md | 75 -------------- docs/services/irc.md | 5 +- docs/services/ldap.md | 113 +++------------------- docs/services/nfs.md | 113 +++------------------- docs/services/nomad.md | 2 - docs/services/servers.md | 7 +- docs/services/socs.md | 4 +- docs/services/traefik.md | 2 + docs/services/znapzend.md | 63 ------------ docs/webgroup/atlas.md | 2 + 35 files changed, 278 insertions(+), 638 deletions(-) create mode 100644 docs/.obsidian/types.json create mode 100644 docs/hardware/infrastructure/index.md create mode 100644 docs/hardware/power/index.md create mode 100644 docs/hardware/storage/index.md delete mode 100644 docs/procedures/nixos.md create mode 100644 docs/services/forgejo.md create mode 100644 docs/services/gate.md delete mode 100644 docs/services/gitea.md delete mode 100644 docs/services/icecast.md delete mode 100644 docs/services/znapzend.md diff --git a/docs/.obsidian/core-plugins.json b/docs/.obsidian/core-plugins.json index 9405bfdc..74381c31 100644 --- a/docs/.obsidian/core-plugins.json +++ b/docs/.obsidian/core-plugins.json @@ -1,20 +1,33 @@ -[ - "file-explorer", - "global-search", - "switcher", - "graph", - "backlink", - "canvas", - "outgoing-link", - "tag-pane", - "page-preview", - "daily-notes", - "templates", - "note-composer", - "command-palette", - "editor-status", - "bookmarks", - "outline", - "word-count", - "file-recovery" -] \ No newline at end of file +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "properties": false, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": false, + "footnotes": false, + "bases": true, + "webviewer": false +} \ No newline at end of file diff --git a/docs/.obsidian/types.json b/docs/.obsidian/types.json new file mode 100644 index 00000000..e0010a98 --- /dev/null +++ b/docs/.obsidian/types.json @@ -0,0 +1,9 @@ +{ + "types": { + "aliases": "aliases", + "cssclasses": "multitext", + "tags": "tags", + "created": "datetime", + "modified": "datetime" + } +} \ No newline at end of file diff --git a/docs/contact.md b/docs/contact.md index ffb49da7..bbc75675 100644 --- a/docs/contact.md +++ b/docs/contact.md @@ -4,12 +4,16 @@ aliases: - Contact Us tags: [] created: 2022-11-08T04:34:34 -modified: 2024-03-13T06:05:10 +modified: 2026-09-03T06:05:10 title: Contact Us --- # Contact Us -If you have any questions or comments, please contact us at [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie). Or you can create a ticket on the [Discord server](https://discord.redbrick.dcu.ie)! +If you have any questions or comments, you can contact us at: +- [elected-admins@redbrick.dcu.ie](mailto:elected-admins@redbrick.dcu.ie) +- [committee@redbrick.dcu.ie](mailto:committee@redbrick.dcu.ie) + +Or you can create a ticket on the [Discord server](https://discord.redbrick.dcu.ie)! diff --git a/docs/hardware/index.md b/docs/hardware/index.md index 2c6b0f57..6b5e1041 100644 --- a/docs/hardware/index.md +++ b/docs/hardware/index.md @@ -4,7 +4,7 @@ aliases: - Hardware tags: [] created: 2023-12-04T22:35:50 -modified: 2024-03-01T21:17:25 +modified: 2026-09-03T21:17:25 title: Hardware --- @@ -12,32 +12,29 @@ title: Hardware Here is a list of current hardware in Redbrick's suite of servers, switches and other bits. -## [Login](../services/servers.md#Logging%20in) Boxes +## [Login](login/index) +- [**`Callisto`**](login/callisto) +- [**`Europa`**](login/europa) -- [**`Callisto`**](login/callisto.md) -- [**`Europa`**](login/europa.md) +## [Aperture](aperture/index) +- [**`Glados`**](aperture/glados) +- [**`Wheatley`**](aperture/wheatley) +- [**`Chell`**](aperture/chell) -## [Aperture](aperture/index.md) +## [Storage](storage/index) +- [**`Mirage`**](storage/mirage) +- [**`Anubis`**](storage/anubis) -- [**`glados`**](aperture/glados.md) -- [**`wheatley`**](aperture/wheatley.md) -- [**`chell`**](aperture/chell.md) +## [Infrastructure](infrastructure/index) +- [**`Habibi`**](infrastructure/habibi) +- [**`Pygmalion`**](infrastructure/pygmalion) -## Storage Boxes -- [**`Mirage`**](storage/mirage.md) -- [**`Anubis`**](storage/anubis.md) +## [Network](network/index) +- [**`Mordor`**](network/mordor) +- [**`Isengard`**](network/isengard) +- [**`Rivendell`**](network/rivendell) +- [**`Arse`**](network/arse) -## Infrastructure -- [**`Habibi`**](infrastructure/habibi.md) -- [**`Pygmalion`**](infrastructure/pygmalion.md) - -## Network Hardware - -- [**`mordor`**](network/mordor.md) -- [**`Isengard`**](network/isengard.md) -- [**`Rivendell`**](network/rivendell.md) -- [**`Arse`**](network/arse.md) - -## Power Hardware -- [**`Applejack`**](power/applejack.md) -- [**`Rainbowdash`**](power/rainbowdash.md) \ No newline at end of file +## [Power](power/index) +- [**`Applejack`**](power/applejack) +- [**`Rainbowdash`**](power/rainbowdash) \ No newline at end of file diff --git a/docs/hardware/infrastructure/index.md b/docs/hardware/infrastructure/index.md new file mode 100644 index 00000000..299fbe06 --- /dev/null +++ b/docs/hardware/infrastructure/index.md @@ -0,0 +1,18 @@ +--- +id: index +aliases: + - Infrastructure +tags: +created: 2022-05-16T01:44:40 +modified: 2026-09-03T04:49:14 +title: Infrastructure +--- + +# Infrastructure + +## What are these servers? + +These are the servers that we use for specific services or as backups. +## Hardware +- [Habibi](habibi) +- [Pygmalion](pygmalion) \ No newline at end of file diff --git a/docs/hardware/infrastructure/pygmalion.md b/docs/hardware/infrastructure/pygmalion.md index bdebdca7..19aa46db 100644 --- a/docs/hardware/infrastructure/pygmalion.md +++ b/docs/hardware/infrastructure/pygmalion.md @@ -7,13 +7,13 @@ tags: - hardware - pygmalion created: 2023-12-02T14:18:51 -modified: 2024-03-13T04:49:14 +modified: 2026-09-03T04:49:14 title: Pygmalion --- # Pygmalion -Former login box, now used as a fafo box with proxmox +Former login box, now used as a fafo box running proxmox. ## Details diff --git a/docs/hardware/login/index.md b/docs/hardware/login/index.md index 4fbcf75d..0f7f1598 100644 --- a/docs/hardware/login/index.md +++ b/docs/hardware/login/index.md @@ -7,7 +7,7 @@ tags: - details - getting-started created: 2022-05-16T01:44:40 -modified: 2024-03-13T04:49:14 +modified: 2026-09-03T04:49:14 title: Login Boxes --- @@ -27,4 +27,8 @@ If you need to reset or setup a new login box, there are quite a few things that - Check that user storage quotas are applied correctly. - Check that users cannot access or view other user folders (including admin home dirs). - Check that users can change their own passwords. -- Check that users have permissions for their webtree. \ No newline at end of file +- Check that users have permissions for their webtree. + +## Hardware +- [Europa](europa) +- [Callisto](callisto) \ No newline at end of file diff --git a/docs/hardware/network/mordor.md b/docs/hardware/network/mordor.md index f43c6a80..51d4ee39 100644 --- a/docs/hardware/network/mordor.md +++ b/docs/hardware/network/mordor.md @@ -30,14 +30,10 @@ We have a 10 GB/s link to DCU's core. The current elected admins should all have access to the rbadmin account on the firewall. Rootholders **should not** have access to the firewall unless they are explicitly granted access. -The owner account of the unifi equipment is `rbadmins` (email: elected-admins@redbrick.dcu.ie) with the password stored in `pwsafe` under `unifi`. - -There is a "super admin" account that can be used for **local access only**, details are stored in `pwsafe` under `udmpro-super-admin`. - +The owner account of the unifi equipment is `rbadmins` (email: elected-admins@redbrick.dcu.ie) with the password stored in bitwarden. ### VPN The admin VPN is currently hosted directly on mordor. Wireguard certs for new vpn connections can be created in the settings for the vpn. - ### Updates The UDM Pro should be kept up to date at all times using the web interface. Please ensure there are no breaking changes before updating. @@ -51,11 +47,9 @@ The UDM Pro should be kept up to date at all times using the web interface. Plea SSH is enabled to allow for rollbacks in case of a bad update *(I warned you!)*. Remote access is disabled as it should not be needed, the admin [`VPN`](../../procedures/vpn.md) should provide enough access for you. If it is enabled in future, please update these docs with your reasons. - ### Backups Backups are configured to run every week at 1am on a Sunday. 20 backups are stored at a time, therefore storing 20 weeks of configuration. This should be plenty of time to recover from a bad configuration change. - ## External Addresses `Mordor` is NATted when it accesses the Internet. This is because the link address between it and DCU is on a private address. diff --git a/docs/hardware/power/index.md b/docs/hardware/power/index.md new file mode 100644 index 00000000..003392ff --- /dev/null +++ b/docs/hardware/power/index.md @@ -0,0 +1,22 @@ +--- +id: power +aliases: + - Power +tags: +created: 2026-09-03T01:44:40 +modified: 2026-09-03T04:49:14 +title: Power +--- + +# Power + +## What is our power infrastructure? + +We have two UPS's in the server room, one for each rack which serve as backup batteries that kick in if the power goes out. They are named after characters from My Little Pony. +## What do they do? + +The UPS's power the servers for just long enough to let them gracefully shutdown to prevent any data loss or corruption if we ever lose power. + +## Hardware +- [Applejack](applejack) +- [Rainbowdash](rainbowdash) \ No newline at end of file diff --git a/docs/hardware/sewer/index.md b/docs/hardware/sewer/index.md index 40a11267..69cf8a41 100644 --- a/docs/hardware/sewer/index.md +++ b/docs/hardware/sewer/index.md @@ -6,8 +6,8 @@ tags: - sewer - details - getting-started -created: 2022-05-16T01:44:40 -modified: 2024-03-13T04:49:14 +created: 2026-09-03T01:44:40 +modified: 2026-09-03T04:49:14 title: Sewer Cluster --- @@ -15,7 +15,7 @@ title: Sewer Cluster ## What is the Sewer Cluster? -The sewer cluster is a trio of systems named after the teenage mutant ninja turtles. They make up redbricks dev cluster. +The sewer cluster is a trio of systems named after the teenage mutant ninja turtles. They make up redbrick dev cluster. ## What does it do? @@ -23,7 +23,6 @@ The sewer cluster is hooked up with nomad and consul just like aperture, so it's have GPUs in them, which lets them run AI workloads. Anything hosted by redbrick that uses an AI model is hosted here. ## Hardware - - [Donatello](./donatello.md) - [Raphael](./raphael.md) - [Michelangelo](./michelangelo.md) \ No newline at end of file diff --git a/docs/hardware/storage/index.md b/docs/hardware/storage/index.md new file mode 100644 index 00000000..b1d4642c --- /dev/null +++ b/docs/hardware/storage/index.md @@ -0,0 +1,23 @@ +--- +id: storage +aliases: + - Storage +tags: +created: 2026-09-03T01:44:40 +modified: 2026-09-03T04:49:14 +title: Storage +--- + +# Storage + +## What is our storage? + +Our storage is currently hosted on two identical PowerEdge R730s that run TrueNAS. They are configured to be in sync with each other so that if one fails, we can just switch over to using the other with minimal downtime. + +## What does it do? + +The only service hosted on our storage boxes is NFS. This is how we share storage across the network to all of our servers. + +## Hardware +- [Mirage](mirage) +- [Anubis](anubis) \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 0eafc608..f838ab56 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ aliases: - Home tags: [] created: 2021-06-28T22:38:22 -modified: 2024-03-13T06:05:10 +modified: 2026-09-03T06:05:10 title: Home --- @@ -19,12 +19,12 @@ This is mostly intended for admins, future admins, webmasters, and everybody els ## Quick Links - [Redbrick Website](https://redbrick.dcu.ie) -- [SSH help](https://docs.redbrick.dcu.ie/services/servers/#logging-in) -- [Aperture - Redbrick's new fleet of hardware](hardware/aperture/about.md) +- [SSH help](services/servers#Logging in) +- [Aperture - Our production cluster](hardware/aperture/about.md) ## Webgroup -The [webgroup](webgroup/index.md) is a subgroup of Redbrick consisting of volunteers who work with the webmaster on a number of projects. +The [webgroup](webgroup/index.md) is a subgroup of Redbrick consisting of volunteers who work with the webmaster on a number of projects, mainly [Atlas](webgroup/atlas) and [Blockbot](webgroup/blockbot). ## New Admins diff --git a/docs/procedures/ansible.md b/docs/procedures/ansible.md index 5c6d2f90..b969399b 100644 --- a/docs/procedures/ansible.md +++ b/docs/procedures/ansible.md @@ -4,24 +4,18 @@ aliases: - Ansible tags: [] created: 2022-11-08T04:34:34 -modified: 2024-03-01T21:17:25 +modified: 2026-09-03T21:17:25 title: Ansible --- - # Ansible -Redbrick uses ansible to manage its infrastructure. This document describes the procedures and some tips to get the most out of it. +Redbrick maintains some ansible scripts that make some tasks easier. ## Getting Started ### Installing Ansible -Ansible is a python package, so you'll need to install python first. On Debian/Ubuntu, you can do this with: - -```bash -pip install ansible -``` - +You can install ansible using your package manager of choice. Because ansible is a python package it can also be installed using `pip` or `uv`. ### Add an SSH Key Ansible uses ssh to connect to the remote hosts. You'll need to set up your ssh key so that you can connect to the hosts without constant prompts for passwords. @@ -31,17 +25,16 @@ Ansible uses ssh to connect to the remote hosts. You'll need to set up your ssh This is used a phonebook of sorts for ansible. It tells ansible which hosts to connect to, and what user to use. ```ini -[aperture] +glados ansible_host=10.10.10.4 +wheatley ansible_host=10.10.10.5 +chell ansible_host=10.10.10.6 + +[nomad] glados wheatley chell - -[aperture:vars] -ansible_user= ``` -> Contact @distro for a fully populated file. - ### Test it out ```bash @@ -69,7 +62,7 @@ Ansible playbooks are written in YAML. The basic structure is: #### Example ```yaml -- hosts: aperture +- hosts: nomad tasks: - name: Install curl apt: diff --git a/docs/procedures/cheatsheet.md b/docs/procedures/cheatsheet.md index e99f2e9b..ea25f5ba 100644 --- a/docs/procedures/cheatsheet.md +++ b/docs/procedures/cheatsheet.md @@ -4,12 +4,14 @@ aliases: - Cheatsheet tags: [] created: 2021-06-28T23:17:10 -modified: 2024-03-13T06:05:10 +modified: 2026-09-03T06:05:10 title: Cheatsheet --- # Cheatsheet +While we primarily use the API for LDAP operations, these commands may come in useful. These commands were for a previous version of our LDAP schema and may not work as-is. + ## LDAP - Query a user @@ -47,74 +49,18 @@ ___ ### Onboarding New Admins -- Create `root` ssh key for [NixOS](../procedures/nixos.md) Machines -Following creation of the key, add to the whitelist in *[nix configs](https://github.com/redbrick/nix-configs/blob/master/services/ssh.nix)*. - -```bash -ssh-keygen -t ed25519 # Generate key -cat ~/.ssh/id_ed25519.pub # Verify it's been created -ssh-copy-id -i ~/.ssh/id_ed25519 user@redbrick.dcu.ie # Copy to local account's ssh dir -ssh -i ~/.ssh/mykey user@redbrick.dcu.ie # Verify that this key was copied -``` - -### Access Passwordsafe (pwsafe) - -Location of master password vault. - -> [!NOTE] Note: -> `getpw` will prompt you for the Master root password. - -```bash -ssh localroot@halfpint -sudo -i # to log in as root with local user password -pwsafe # to list passwords -getpw # Grab password by name key | getpw pygmalion -``` - -___ - -## SSH to Root on a [NixOS](../procedures/nixos.md) Machine - -- From the account you generated your ssh key on (in nix configs) type: - -```bash -ssh root@hardcase.internal -``` - -___ - -## NixOS - -- Install a temporary program - -```bash -nix-shell -p [space seperated package names] -``` - -- Run brickbot2 (running on Metharme) - -```bash -cd brickbot2 -nix-shell -source venv/bin/activate -python3 main.py config.toml -``` - -Brickbot runs in `tmux a -t 0` and can be restarted by pressing ctrl+c and running the above python command - +New admins should have a local account created on each box with an ssh key loaded onto them. +They should also be given a config file to access the [admin VPN](procedures/vpn) on [mordor](hardware/network/mordor) ## Minecraft Servers -The Redbrick Minecraft server's are dockerized applications running on [`zeus`](../hardware/zeus.md) on a server-per-container basis, using the tools on this GitHub Repo: https://github.com/itzg/docker-minecraft-server#interacting-with-the-server - -Repo is very well documented so have a look at the README but here's the basics: +The Redbrick Minecraft server's are dockerized applications running on [Aperture](hardware/aperture/index) on a server-per-container basis, using the tools on this [GitHub Repo](https://github.com/itzg/docker-minecraft-server): . -**NOTE:** *Local Root accounts must be added to the docker group before they can run the docker commands.* `usermod -a -G docker ACCOUNT_NAME` +Repo is very well documented so have a look at the [docs](https://docker-minecraft-server.readthedocs.io/en/latest/) but here's the basics: -You can `docker ps | grep minec` to find the docker containers running the servers. +The configuration for these minecraft servers is almost entirely managed through environment variables. The exception to this is individual configs for mods or plugins that are installed on the server. To edit those you need to modify the config files directly. -The docker compose files are located in `/etc/docker-compose/services`, Unmodded Vanilla compose for example is in `/etc/docker-compose/services/minecraft_unmodded/` +We use [Gate](services/gate) as our minecraft proxy. This lets us host multiple minecraft servers with just one exposed port. -To see the configuration for the container you can do `docker inspect CONTAINER_NAME_OR_ID` +[Gate](services/gate) is configured to automatically work for any nomad job that has the prefix `minecraft-` in it's name. -- Interacting with the Server Console - - https://github.com/itzg/docker-minecraft-server#interacting-with-the-server +To execute commands on one of our minecraft servers you need to go onto [nomad](services/nomad) and exec into one of the allocations. Once you have a shell open, you can run `rcon-cli` and you will be able to execute commands on the serverl. \ No newline at end of file diff --git a/docs/procedures/handover.md b/docs/procedures/handover.md index 9c8ad436..5a8b86ac 100644 --- a/docs/procedures/handover.md +++ b/docs/procedures/handover.md @@ -7,7 +7,6 @@ created: 2022-05-16T00:59:20 modified: 2024-01-30T01:31:37 title: Handover --- - # Committee Handover When a new committee is elected, there are many things to hand over. This is a list of those things. diff --git a/docs/procedures/index.md b/docs/procedures/index.md index ce3beb19..f479553b 100644 --- a/docs/procedures/index.md +++ b/docs/procedures/index.md @@ -4,30 +4,10 @@ aliases: - Procedures tags: [] created: 2023-12-05T01:36:11 -modified: 2024-03-13T06:05:10 +modified: 2026-09-03T06:05:10 title: Procedures --- # Procedures Here you can find a list of various procedures useful for the day-to-day running of Redbrick - -### [New elected admins](new-admins.md) - -### [Cheatsheet](cheatsheet.md) - -### [Admin VPN](vpn.md) - -### [Ansible](ansible.md) - -### [Post-powercut Todo List](post-powercut.md) - -### [NixOS](nixos.md) - -### [Updating WordPress Domains](update-wp-domain.md) - -### [IRC Ops](irc-ops.md) - -### [Committee Handover](handover.md) - -### [Redbrick System Administrator Policies](policies.md) diff --git a/docs/procedures/irc-ops.md b/docs/procedures/irc-ops.md index 1d5d47f7..53d10e4d 100644 --- a/docs/procedures/irc-ops.md +++ b/docs/procedures/irc-ops.md @@ -4,12 +4,14 @@ aliases: - IRC Ops tags: [] created: 2023-12-05T01:36:11 -modified: 2024-01-31T08:23:37 +modified: 2026-09-03T08:23:37 title: IRC Ops --- # IRC Ops +IRC is currently not hosted on redbrick, but may come back in the future. This might be useful then. + This is a mirror of: [Redbrick cmt Wiki entry](https://www.redbrick.dcu.ie/cmt/wiki/index.php?title=IRC_Op_Guide) diff --git a/docs/procedures/new-admins.md b/docs/procedures/new-admins.md index aba01ddd..924e1ca8 100644 --- a/docs/procedures/new-admins.md +++ b/docs/procedures/new-admins.md @@ -4,10 +4,9 @@ aliases: - New Elected Admins tags: [] created: 2023-12-05T01:36:11 -modified: 2024-01-31T08:23:37 +modified: 2026-09-03T08:23:37 title: New Elected Admins --- - # New Elected Admins The chronological process of becoming an admin usually looks very similar each year. There are some important things you should know. diff --git a/docs/procedures/nixos.md b/docs/procedures/nixos.md deleted file mode 100644 index 8f94a0ca..00000000 --- a/docs/procedures/nixos.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: nixos -aliases: - - NixOS -tags: [] -created: 2023-12-05T01:36:11 -modified: 2024-01-31T08:23:37 -title: NixOS ---- - -# NixOS - -Familiarise yourself with the layout of the following. Bookmarking the page is also a good shout. - -[NixOS documentation](https://nixos.org/nixos/manual/) - -## Who is NixOS and what Does He Do - -NixOS is a distribution of linux that is focused on having a config-first operating system to run services. The advantages of such an approach are the following: - -- Files dictate how an installation is set up, and as such, can be versioned and tracked in your favourite VCS. -- New configs can be tested, and safely rolled back. -- Can be used for both physical and virtual machines in the same way. - -Further reading on this can be found on the [about page](https://nixos.org/nixos/about.html). - -## Being an Admin: NixOS and You - -There's a couple of things you'll need to do before you get started with NixOS: - -- First and foremost is to get set up to contribute to the [Redbrick nix-configs repo](https://github.com/redbrick/nix-configs). - -Depending on the powers that be, some sort of normal pr contribution will be acceptable, if you have access a branch is appropriate, in all other cases make a fork and pr back to Redbrick's repo. This will be case by case for those of you reading. - -Here's a quick hit list of stuff that's worthy of book marking also as you work with Nix: - -- [NixOS Wiki](https://nixos.wiki/wiki/Main_Page) -- [NixOS Manual](https://nixos.org/nixos/manual/) -- [Nixpkgs index](https://nixos.org/nixos/packages.html?channel=nixpkgs-unstable) - (unstable means changing, not buggy) -- [Grafana config options](https://nixos.org/nixos/options.html#services.grafana) - (as an example of how to configure an individual service) - -Nix is pretty small as an OS so setting yourself up a node, either as a home server, or as a VM is a solid way to practice how stuff works in an actual environment and lets you work independently of Redbrick. A service you configure at home should be able to run on Redbrick, and vice versa. - -### Getting Set up to Start Deploying Stuff - -- The first step is to navigate to the ssh service config in the nix-config repo [here](https://github.com/redbrick/nix-configs/blob/master/services/ssh.nix). - -- Make a pull request asking to add the **PUBLIC KEY** of your ssh key pait to the config file. - - The best thing to do is to copy the previous line and modify it to contain your details instead. - - At time of writing, it is expected for you to generate a `ssh-ed25519` key. This is subject to change with new cryprographic standards. -- Once this is done, contact one of the currently set up users to pull and reload the given machines and you'll have access right away using the accompanying key. diff --git a/docs/procedures/policies.md b/docs/procedures/policies.md index 83612239..da56aef0 100644 --- a/docs/procedures/policies.md +++ b/docs/procedures/policies.md @@ -4,7 +4,7 @@ aliases: - Redbrick System Administrator Policies tags: [] created: 2023-12-05T01:36:11 -modified: 2024-01-30T01:31:37 +modified: 2026-09-03T01:31:37 title: Systems Administrator Policies --- @@ -12,10 +12,10 @@ title: Systems Administrator Policies The purpose of this is to brief new Redbrick system administrators on the current setup, policies and practices in place and to serve as the place to record all such information for current and future administrators. -## Admin Account Priviliges +## Admin Account Privileges - By default, all admin accounts will remain the same as the rest of the committee. -- Each admin will recieve a local account on each machine that will be in the root group. This allows you to log on if ldap goes down. +- Each admin will recieve a local account on each machine that will be in the root group. This allows you to log on if [LDAP](services/ldap) goes down. - Accounts should not be placed into any other 'system' or privileged accounts (e.g. pgSQL, mail, news, etc.) but by all accounts (hah, bad pun!) can be placed into useful groups (e.g. cvs, webgroup, helpdesk etc.) ## Root account @@ -23,13 +23,12 @@ The purpose of this is to brief new Redbrick system administrators on the curren When su'ing to root, please observe the following: - Wait for the password prompt before typing in the password! Sometimes lag/terminal freezes or whatever can kick in. The other classic mistake is typing the password in place of the username (say for a console login). -- Make sure LOGNAME is set to your UNIX name. The Linux boxes will prompt you for this. On OpenBSD you can use 'su -m' to keep the environment. -- Don't change the root account/finger information! +- Don't change the root account information! - If you wish to use another shell, place customisations in your own file. For bash, `/root/.bash_profile.` and for zsh `/root/.zshrc.`. -`/root/.zshrc` and `/root/.bash_profile` source in the appropriate file as long as `$LOGNAME` is set right (see above). Do not put personal customisations into the default root account setup, remember other people have to use it. +Do not put personal customisations into the default root account setup, remember other people have to use it. -Common aliases can be put in /root/.profile, familiarise yourself with the existing ones, they can come in handy. +Common aliases can be put in `/root/.profile`, familiarise yourself with the existing ones, they can come in handy. - Please keep `/root` tidy. Don't leave stuff strewn about the place! - Make sure to check permissions and ownership on files you work on **constantly** especially files with important or sensitive information in them (e.g. always use `cp -p` when copying stuff about). @@ -70,7 +69,7 @@ Actively ensure system and network security. We can't police all user accounts a ## Downtime -All downtime must be scheduled and notified to the members well in advance by means of motd & _announce_. If it's really important, a mail to announce-redbrick and socials post may be necessary. +All downtime must be scheduled and notified to the members well in advance by means of motd & an announcement in the [Discord](https://discord.redbrick.dcu.ie) server. If it's really important, a mail to announce-redbrick and socials post may be necessary. All unexpected/unscheduled downtime (as a result of a crash or as an emergency precaution) must be explained to the members as soon as possible after the system is brought back. A post to announce, notice in motd or possibly a mail to committee/admins is sufficient. diff --git a/docs/procedures/vpn.md b/docs/procedures/vpn.md index aaeb5a84..d56e01b0 100644 --- a/docs/procedures/vpn.md +++ b/docs/procedures/vpn.md @@ -4,10 +4,9 @@ aliases: - Admin VPN tags: [] created: 2022-09-05T04:00:22 -modified: 2024-03-01T21:17:25 +modified: 2026-09-03T21:17:25 title: Admin VPN --- - # Admin VPN The admin VPN is set up to allow admins to access the network from outside of DCU, giving them an IP address on the internal network for troubleshooting, testing and integrating. @@ -16,30 +15,23 @@ If you just want to create a new client configuration, go here: [adding a new cl ## Setup -Installed OpenVPN using [this script](https://github.com/Nyr/openvpn-install) on [`glados`](../hardware/aperture/glados.md). - +We use a `WireGuard` VPN managed by [mordor](hardware/network/mordor). ## Adding a New Client -To add a new client, run the following command (as root) on Glados: +To add a new client simply select the Aperture VPN and click add client on the [mordor](hardware/network/mordor) webui. -```bash -bash /root/ovpn/openvpn-install.sh -``` +## Revoking a Client -You will be prompted to add a new client, enter a name for the client and then the script will generate a new client. +To revoke a client just select it and click remove. -It will be saved in `/root/[client name].ovpn`. +## Connecting to the VPN -## Revoking a Client +To connect to the VPN, you will need to download the client configuration file or scan the qr code from [mordor](hardware/network/mordor) and load it onto `WireGuard`. -To revoke a client, run the following command (as root) on Glados: +If you use `NetworkManager` on your machine and have `WireGuard` installed you can import the client file to `NetworkManager` with: ```bash -bash /root/ovpn/openvpn-install.sh +nmcli connection import type wireguard file /path/to/file ``` -You will be prompted to revoke a client, enter the name of the client you want to revoke. - -## Connecting to the VPN - -To connect to the VPN, you will need to download the client configuration file from [glados](../hardware/aperture/glados.md) and then import it into your OpenVPN client. +It can then be toggled on and off with `nmtui` or your desktop environments network configuration screen. \ No newline at end of file diff --git a/docs/services/api.md b/docs/services/api.md index 1ea6cf4e..f8d36ac1 100644 --- a/docs/services/api.md +++ b/docs/services/api.md @@ -7,13 +7,13 @@ tags: - api - ldap created: 2021-08-13T23:28:49 -modified: 2026-08-18T10:01:49 +modified: 2026-09-03T10:01:49 title: Admin API --- # Redbrick Administrative Web API -The source code for the API can be found [here](https://github.com/redbrick/api/). The repository is private and accessible only to committee. +The source code for the API can be found [here](https://github.com/redbrick/api/). The repository is private and accessible only to committee members. The Redbrick web API serves as an easy interface to carry out administrator tasks *(mainly LDAP related)*, and for use in automation. This saves time instead of accessing machines, and formulating and executing manual LDAP queries or scripts. @@ -71,7 +71,7 @@ Most endpoints require [HTTP basic auth](https://docs.python-requests.org/en/mas Instead, you should create an account with the specific permissions you need for that service. You can do this by going onto the allocation for the API on [nomad](./nomad.md) and execing into the allocation with a shell. You can then run `python -m app account -h` to see a list of commands for account creation and management. -``` +```bash Select a task to start your session. Customize your command, then hit ‘return’ to run. diff --git a/docs/services/forgejo.md b/docs/services/forgejo.md new file mode 100644 index 00000000..b64b02e5 --- /dev/null +++ b/docs/services/forgejo.md @@ -0,0 +1,28 @@ +--- +id: forgejo +aliases: + - Forgejo +tags: [] +created: 2021-06-29T04:44:29 +modified: 2026-09-03T08:23:37 +title: Forgejo +--- + +# Forgejo + +Redbrick uses [Forgejo](https://forgejo.org/) for git hosting. + +- [Forgejo docs](https://forgejo.org/docs/latest/) +- [Gitea docs](https://docs.gitea.com/), Forgejo was forked from [Gitea](https://about.gitea.com/), so a lot of their docs are still relevant. +- [Link to Redbrick deployment](https://git.redbrick.dcu.ie/) + +## Deployment + +Forgejo is deployed and managed by [nomad](./nomad.md) on [aperture](../hardware/aperture) + +## Management + +The main admin account for forgejo is `rb-admins` and it's password is stored in the password vault. This account is both a site administrator and +an owner for the Redbrick organisation. It can be used to add people to the any team. + +Committee members should have their redbrick accounts added to their respective teams on the Redbrick organisation when they are elected. \ No newline at end of file diff --git a/docs/services/gate.md b/docs/services/gate.md new file mode 100644 index 00000000..b7b5a3f3 --- /dev/null +++ b/docs/services/gate.md @@ -0,0 +1,13 @@ +--- +id: gate +aliases: + - Gate +tags: [] +created: 2026-09-03T12:00:14 +modified: 2026-09-03T21:17:25 +title: Gate +--- + +# Gate + +Gate is our reverse proxy for minecraft. It allows us to run multiple minecraft servers using just one exposed port. It is configured to automatically proxy any job thats name has the prefix `minecraft-`. Because of this it is very rare that you will need to touch it's configuration. \ No newline at end of file diff --git a/docs/services/gitea.md b/docs/services/gitea.md deleted file mode 100644 index 1e43a2a5..00000000 --- a/docs/services/gitea.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: gitea -aliases: - - Gitea -tags: [] -created: 2021-06-29T04:44:29 -modified: 2024-01-31T08:23:37 -title: Gitea ---- - -# Gitea - -Redbrick uses [Gitea](https://gitea.io/en-US/) as an open source git host. - -- [Gitea docs](https://docs.gitea.io/en-us/) -- [Gogs docs](https://gogs.io/docs), not really important, but Gitea is built on [Gogs](https://gogs.io/) -- [Link to Redbrick deployment](https://git.redbrick.dcu.ie/) - -## Deployment - -Gitea and its database are deployed to [Hardcase](../hardware/nix/hardcase.md) which runs [NixOS](../procedures/nixos.md) - -- The actual repositories are stored in `/zroot/git` and most other data is stored in `/var/lib/gitea` -- The `SECRET_KEY` and `INTERNAL_TOKEN_URI` are stored in `/var/secrets`. They are not automatically created and must be copied when setting up new hosts. Permissions on the `gitea_token.secret` must be 740 and owned by `git:gitea` -- Make sure that the `gitea_token.secret` does NOT have a newline character in it. - -## Other Notes - -The Giteadmin credentials are in the passwordsafe. - -## Operation - -Gitea is very well documented in itself. Here's a couple of special commands when deploying/migrating Gitea to a different host. - -```bash -# Regenerate hooks which fixes push errors -/path/to/gitea admin regenerate hooks - -# If you didn't copy the authorized_keys folder then regen that too -/path/to/gitea admin regenerate keys -``` diff --git a/docs/services/icecast.md b/docs/services/icecast.md deleted file mode 100644 index 6a284906..00000000 --- a/docs/services/icecast.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: icecast -aliases: - - Icecast -tags: [] -created: 2022-11-08T04:34:34 -modified: 2024-03-01T21:17:25 -title: Icecast ---- - -# Icecast - -Icecast is a streaming server that we currently host on aperture. - -We stream DCUFm's Broadcasts to their apps via a stream presented on `dcufm.redbrick.dcu.ie`. - -## Procedure - -The configuration file for icecast is located in the [nomad config repo](https://github.com/redbrick/nomad). - -It should just be a case of running `nomad job plan clubs-socs/dcufm.hcl` to plan and run the job. - -> [!NOTE] Note -> The job may bind to either the internal or external address. Ensure that if you make a change to the config, you inform DCUfm that they may need to switch which server they use. - -## Streaming to Icecast - -DCUfm use [butt](https://danielnoethen.de/butt/) on a desktop in their studio to stream to Icecast. - -The desktop must be connected to the VPN to ensure the stream stays up, and traefik doesn't reset the connection every 10 seconds. The current icecast configuration for the server is `10.10.0.5:2333` or `136.206.16.5:2333` (see above note). - -Read more about it in [this issue](https://github.com/redbrick/issue-tracker/issues/4). - -A shortcut to the VPN is available on the desktop (change a shortcut to the binary to include `--connect profile.ovpn`. - -See [here](https://munkjensen.net/wiki/index.php/Connect_OpenVPN_on_Windows_startup)). - -## DCUfm Cheat Sheet - -This is a cheat sheet for DCUfm to help them stream to `icecast`. - -### Connecting to the VPN - -You'll need to connect to the Redbrick VPN to stream to `icecast`. You can do this by double clicking the shortcut on the desktop. - -You'll then need to go to bottom right corner of the screen and right click this icon: - -![Disconnected OpenVPN icon](https://i.dbyte.xyz/2022-11-I9.png) - -A popup will appear, click connect. This will connect you to the VPN. It may take a second, but a window will pop up with a lot of text. The VPN will connect and then it'll close. - -![Connect to OpenVPN](https://i.dbyte.xyz/2022-11-AV.png) - -You should end up with an icon like this: - -![Connected OpenVPN icon](https://i.dbyte.xyz/2022-11-16.png) - -You're now connected to the VPN. - -### Connecting to Icecast - -You'll need to connect to `icecast` to stream to it. BUTT is the software we use to stream to `icecast`. You'll also find this on the desktop. Once its open, (and you're connected to the VPN), press the small "play" button in the top left corner. This will start your stream to the server. - -The username and password should already be configured in the software. If not, ask a [redbrick sysadmin](../contact.md) for the login details. - -> [!WARNING] Warning! -> If you find that butt is not connecting, then you may need to switch which server you're connecting to. To do this, go to settings, and then the "Main" tab. In the dropdown, select either DCUfm 1 or DCUfm 2 (try both, one will definitely work). - -### Saving Your Stream - -Your stream will be saved automatically onto the desktop into a folder called `Recordings YYYY` (where `YYYY` is the current year), with the date and time of the recording, and the format `.mp3`. Take this file with you (via a USB or similar) if you want to keep it for later, it will not be kept on the desktop for long! - -### Further Information - -If you have any questions, please ask a [redbrick sysadmin](../contact.md). diff --git a/docs/services/irc.md b/docs/services/irc.md index 094f9695..a8fa4b49 100644 --- a/docs/services/irc.md +++ b/docs/services/irc.md @@ -4,12 +4,15 @@ aliases: - IRC tags: [] created: 2021-06-29T04:44:29 -modified: 2024-03-13T04:49:14 +modified: 2026-09-03T04:49:14 title: IRC --- # IRC +IRC is currently not online on Redbrick. It may return in the future... +This is the old documentation for it: + ## Redbrick InspIRCd In 2016/2017 we began work to move to InspIRCd. This was due to the complications in ircd-hybrid and how old it was. These complications stopped new netsocs joining us so we all agreed to move irc. $ 4 years later after multiple attempts we had not migrated. Until TCD decided to shutdown their server breaking the network. diff --git a/docs/services/ldap.md b/docs/services/ldap.md index ecb41b58..2921b125 100644 --- a/docs/services/ldap.md +++ b/docs/services/ldap.md @@ -1,19 +1,19 @@ --- id: ldap aliases: - - LDAP - `m1cr0man` + - LDAP tags: - ldap - icarus - daedalus author: - - m1cr0man + - m1cr0man and graggle created: 2024-03-13T06:05:23 -modified: 2024-03-13T06:05:23 +modified: 2026-09-03T06:05:23 title: LDAP --- -# LDAP - `m1cr0man` +# LDAP LDAP is our directory service. It stores usernames, passwords, UIDs, quotas, and other user specific info. @@ -21,33 +21,25 @@ LDAP's structure is different to most other database systems. If you are not fam ## Deployment -- OpenLDAP is deployed with Nix to Daedalus and Icarus -- Daedalus is the master, Icarus is slaved to it and can be used as a read only failover -- `ldap.internal` and `ldap2.internal` are slaved to Daedalus + Icarus respectively -- Both servers store their data in `/var/db/openldap` -- The ldap.secret, which should **ALWAYS** have permissions `400`, and owned by the openldap user, is stored in `/var/secrets`. It is not automatically created and must be copied when setting up new hosts -- `rb-ldap` and `useradm` are wrappers around LDAP that are custom built +- OpenLDAP is deployed with Nomad to Aperture +- Unlike most services it is specifically assigned to Glados, rather than dynamically assigned. This is so that it always has a static ip address. +- All LDAP data is stored at `/storage/nomad/openldap` +- The majority of all LDAP operations are handled by the [admin API](api.md). +- Our LDAP structure can be viewed, and to a limited degree interacted with, using the [LDAP Account Manager](https://ldap.rb.dcu.ie), the login information for which is in the password vault. ## Redbrick Special Notes -- The root user password is in the passwordsafe -- The OID for most of the schema is [DCU's](http://www.oid-info.com/cgi-bin/display?oid=1.3.6.1.4.1.9736&submit=Display&action=display) -- The configs that exist for NixOS were mostly ported from our last - LDAP server ([`paphos`](../hardware/paphos.md)) to maintain compatibility -- At the time of writing, LDAP is not configured with TLS -- There are 2 scripts to manage quotas on /storage that run on the server serving NFS (`zfsquota` and `zfsquotaquery`). They are covered under the NFS documentation. -- There's a user in ldap called testing, for testing. The password is in `pwsafe`. +- The admin user password is in the password vault. It should not be used directly as a bind dn, we prefer the use of service accounts for them +- Service accounts, unlike normal user accounts, cannot be managed by the API. The best way to manage them is using [LAM](https://ldap.rb.dcu.ie). +- At the time of writing most of our services are not configured to use TLS with LDAPS. LDAPS does work, however, it is only configured for use with sssd on the [login boxes](../hardware/login/index.md) +- Storage quotas are managed by a python script that runs once every hour. It gets user quotas from LDAP and sends them to the TrueNAS API to apply restrictions on the `home` and `webtree` datasets by uid number. -## Operation +## LDAP commands -The `ldap*` suite of commands can be used to manage LDAP. Their man pages are very well documented, but we've provided most common operations below. - -Note that the ldap.secret is a crypted file, and not equal to the actual password you need to run ldap commands. +While we primarily use the API for LDAP operations, these commands may come in useful. These commands were for a previous version of our LDAP schema and may not work as-is. ### Ldapsearch Recipes -`ldapsearch` can be used with and without authenticating as root. Without root, some fields (such as the password hash, altmail) will be hidden. - ```bash # Dump the entire LDAP database in LDIF form, which can be used as a form of backup ldapsearch -b o=redbrick -xLLL -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt @@ -138,78 +130,3 @@ ldapadd -x -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt -f add.ldif # Ensure slapd is not running first slapadd -v -l backup.ldif ``` - -### Other Recipes - -On a yearly basis, the `yearsPaid` fields must be incremented for every users, and last year's newbies need to be not newbies anymore. - -Remember to take off `-n` when you are ready to rock. - -Adding the `updated` and `updatedby` fields from above to these queries would be a good idea. - -```bash -# Decrement yearsPaid -# WARNING NOT IDEMPOTENT, RUN ONCE -ldapsearch -b o=redbrick -xLLL -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt objectClass=member yearsPaid |\ -tee yearsPaid-$(date +'%F').backup.ldif |\ -awk '/yearsPaid/ { print "changetype: modify\nreplace: yearsPaid\nyearsPaid: " $2 - 1 } ! /yearsPaid/ {print $0}' |\ -ldapmodify -x -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt -n - -# De-newbie last year's users -ldapsearch -b o=redbrick -xLLL -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt newbie=TRUE dn |\ -tee newbie-$(date +'%F').backup.ldif |\ -awk '/^dn/ {print $0"\nchangetype: modify\nreplace: newbie\nnewbie: FALSE\n"}' |\ -ldapmodify -x -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt -n - -# Set quotas of users without quotas -ldapsearch -b o=redbrick -xLLL '(&(objectClass=posixAccount)(!(quota=*)))' dn |\ -awk '/^dn/ {print $0"\nchangetype: modify\nadd: quota\nquota: 2G\n"}' |\ -ldapmodify -x -D cn=root,ou=ldap,o=redbrick -y /path/to/passwd.txt -n -``` - -## Troubleshooting - -First off, it's worth calling out that if you are coming here to find help with a client side issue, chances are the DNS rule applies: - ->It's probably not LDAP - -With that out of the way, here's some things to check - in order. - -### Check Reachability of LDAP - -Run from the master and also from the problem client. It should return `m1cr0man`'s details. If you get an `invalid credentials` or `object not found` check that the LDAP auth config hasn't changed. If you get a connection error then restart the service. - -```bash -ldapsearch -h ldap.internal -p 389 -xLLL -b o=redbrick uid=m1cr0man -``` - -### Verify LDAP Can Be Written to - -Get the password from the passwordsafe. Run this from the master. - -```bash -ldapmodify -D cn=root,ou=ldap,o=redbrick -x -y filewithpwd.txt << EOF -dn: uid=m1cr0man,ou=accounts,o=redbrick -changetype: modify -replace: quota -quota: 3G -EOF -``` - -Run the command from the first troubleshooting step to verify the value changed. - -If it fails with an auth issue, triple check your password file (it should contain the plain text password). If it fails with a non-auth issue, then check the service logs. - -### Enable Debug Logging - -OpenLDAP produces a nice set of logs when the `loglevel` is _not_ set. - -Remove `loglevel` from `extraConfig` in the Nix config and switch, then run this command to tail the logs: - -```bash -journalctl -fu openldap -``` - -### Re-syncing Secondary LDAP Server(s) - -In the event a secondary server becomes out of sync with the master, it can be synced by stopping the server, deleting its database files, then restarting the server. Do this after ensuring that `config.redbrick.ldapSlaveTo` is set correctly. diff --git a/docs/services/nfs.md b/docs/services/nfs.md index 40f24fca..629345f5 100644 --- a/docs/services/nfs.md +++ b/docs/services/nfs.md @@ -4,116 +4,33 @@ aliases: - NFS / Network File Storage tags: [] created: 2021-06-29T04:44:29 -modified: 2024-01-31T08:23:37 +modified: 2026-09-03T08:23:37 title: NFS --- # NFS / Network File Storage -NFS is used to serve the notorious `/storage` directory on Icarus to all of Redbrick's machines, which in turn serves `/home`, `/webtree` and some other critical folders. +NFS is the protocol we use to share our storage drive over the network to all our servers. It is managed by TrueNAS on [mirage](../hardware/storage/mirage.md) with [anubis](../hardware/storage/anubis.md) as an active backup. ## Deployment -- NFS is deployed with Nix on [Icarus](../hardware/nix/icarus.md) -- It is backed onto the PowerVault MD1200 with all its disk passed through single-drive RAID 0s toallow for setup of ZFS: - - 1 mirror of 2x 500GB drives - - 1 mirror of 2x 750GB drives - - 1 mirror of 2x 1TB drives - - Stripe across all the mirrors for 2TB of usable storage - - 1 hot spare 750GB drive -- ZFS is configured with compression onand dedup off -- The ZFS pool is called `zbackup` - -## Redbrick Special Notes - -On each machine where `/storage` is where NFS is mounted, but `/home` and `/webtree` are symlinks into there. - -There are 2 scripts used to control quotas, detailed below. - -NFS is backed up to Albus via [ZnapZend](znapzend.md). - -## `zfsquota` And `zfsquotaquery` - -These are two bash scripts that run as systemd services on Icarus to manage quotas. This is achieved through getting and setting the `userquota` and `userused` properties of the ZFS dataset. - -### Zfsquota - -ZFSQuota will read the `quota` field from LDAP and sync this with the userquota value on the dataset. It is not event driven - it runs on a timer every 3 hours and syncs all LDAP quotas with ZFS. It can be kicked off manually, which is described below. Users with no quota in LDAP will have no quota in `/storage`, and users who have their quota removed will persist on ZFS. - -Changing user names has no impact on this since it is synced with `uidNumber`. - -### Zfsquotaquery - -ZFSQuotaQuery returns the quota and used space of a particular user. This is used to then inform `rbquota` which provides the data for the MOTD used space report. Both of these scripts are defined and deployed in the Nix config repo. It runs on port 1995/tcp. - -## Operation - -In general, there isn't too much to do with NFS. Below are some commands of interest for checking its status. - -```bash -# On the NFS server, list the exported filesystems -showmount -e - -# Get the real space usage + fragmentation percent from ZFS -zpool list zbackup +- NFS is deployed with TrueNAS on [mirage](../hardware/storage/mirage.md) +- The drives are setup like this: -# Check a user's quota -zpool get userquota@m1cr0man zbackup -zpool get userused@m1cr0man zbackup +| VDEV Type | RAID Type | Array Width | Drive Size | +| ----------- | ---------- | ----------- | ---------- | +| Data VDEVs | 2 x RAIDZ2 | 6 wide | 3.64 TiB | +| Log VDEVs | 1 x DISK | 1 wide | 931.51 GiB | +| Cache VDEVs | 2 x DISK | | 465.76 GiB | -# Delete a quota from ZFS (useful if a user is deleted) -zpool set userquota@123456=none zbackup - -# Get all user quota usage, and sort it by usage -zfs userspace -o used,name zbackup | sort -h | tee used_space.txt +- ZFS is configured with compression onand dedup off +- [Anubis](../hardware/storage/anubis.md) is an active backup of mirage. They are identical machines and are configured to sync with each other. All our services are configured to use [mirage](../hardware/storage/mirage.md). If mirage were to fail, you would need to manually switch all our servers over to using [anubis](../hardware/storage/anubis.md). +- The storage dataset is split into a number of different smaller datasets, which can each be individually mounted on servers so that you don't, for example, mount all of our service databases to the login boxes. -# Resync quotas (this command will not return until it is finished) -systemctl start zfsquota +## Redbrick Special Notes -# Check the status of zfsquotaquery -systemctl status zfsquotaquery -``` +Storage quotas are managed by a python script that runs once every hour. It queries LDAP for user storageQuota fields then sends it off to the TrueNAS API which applies those quotas to the `webtree` and `home` datasets using the users `uidNumber` ## Troubleshooting -In the event where clients are unable to read from NFS, your priority should be restoring the NFS server, rather than - -unmounting NFS from clients. This is because NFS is mounted in `hard` mode everywhere, meaning that it will block on IO until a request can be fulfilled. - -### Check The Server - -```bash -# Check the ZFS volume is readable and writable -ls -l /zbackup/home -touch /zbackup/testfile - -# Check that rpc.mountd, rpc.statd and rpcbind are running and lisening -ss -anlp | grep rpc - -# Check the above services for errors (don't worry about blkmap) -systemctl status nfs-{server,idmapd,mountd} -journalctl -fu nfs-server -u nfs-idmapd -u nfs-mountd -``` - -### Check The Client - -```bash -# Check for connection to NFS -ss -atp | grep nfs - -# Check the fstab entry -grep storage /etc/fstab - -# Check if the NFS server port can be reached -telnet 192.168.0.150 2049 -# Entering gibberish should cause the connection to close - -# Remount read-only -mount -o remount,ro /storage - -# Not much left you can do but remount entirely or reboot -``` - -### Rolling Back or Restoring a Backup - -See [znapzend](znapzend.md) +In the event where clients are unable to read from NFS, your priority should be restoring the NFS server, rather than unmounting NFS from clients. Usually it's a networking or permissions issue which can be resolved through the TrueNAS control panel. diff --git a/docs/services/nomad.md b/docs/services/nomad.md index d9d9f3f7..09441e31 100644 --- a/docs/services/nomad.md +++ b/docs/services/nomad.md @@ -125,5 +125,3 @@ Where: ### Node Pools [Node pools](https://developer.hashicorp.com/nomad/docs/concepts/node-pools) are a way to group nodes together into logical groups which jobs can target that can be used to enforce where allocations are placed. - -e.g. [`ingress-pool.hcl`](https://github.com/redbrick/nomad/blob/master/cluster-config/ingress-pool.hcl) is a node pool that is used for ingress nodes such as the [bastion-vm](bastion-vm). Any jobs that are defined to use `node_pool = "ingress"` such as `traefik.hcl` and `gate-proxy.hcl` will only be assigned to one of the nodes in the `ingress` node pool (i.e. the [bastion VM](bastion-vm)) diff --git a/docs/services/servers.md b/docs/services/servers.md index 88d09c03..4cb26334 100644 --- a/docs/services/servers.md +++ b/docs/services/servers.md @@ -2,12 +2,13 @@ id: servers aliases: - Servers + - Logging in + - Login tags: [] created: 2021-08-14T23:47:50 -modified: 2024-01-31T08:23:37 +modified: 2026-09-03T08:23:37 title: Servers --- - # Servers Redbrick provides two main servers ([Europa](../hardware/login/europa.md) and [Callisto](../hardware/login/callisto.md)) for it's members to use for various use cases, for example running applications or user programs. @@ -17,7 +18,7 @@ Redbrick provides two main servers ([Europa](../hardware/login/europa.md) and [C **With the introduction of our new login boxes, [Europa](../hardware/login/europa.md) and [Callisto](../hardware/login/callisto.md) we now require public key authentication. You can no longer login with just a password.** If you had a public ssh key added to your account in the past, it should still work. If not, the prefferred way to add one is to join the redbrick [Discord server](https://discord.redbrick.dcu.ie), link your Discord account with your redbrick account, and add your key using the `/account pubkey ` blockbot command. -If you have any issues, please contact the admins either by creating a ticket in the Discord server or by [email](mailto://elected-admins@redbrick.dcu.ie). +If you have any issues, please contact the admins either by creating a ticket in the Discord server or by [email](mailto:elected-admins@redbrick.dcu.ie). ## Logging in diff --git a/docs/services/socs.md b/docs/services/socs.md index d551bd2e..fc26190d 100644 --- a/docs/services/socs.md +++ b/docs/services/socs.md @@ -4,14 +4,12 @@ aliases: - Socs Using Redbrick Infrastructure tags: [] created: 2024-03-01T21:17:25 -modified: 2024-04-02T00:12:41 +modified: 2026-09-03T00:12:41 title: Socs using Redbrick Infrastructure --- # Socs Using Redbrick Infrastructure -- MPS/DCUfm - [`icecast`](icecast.md) - MPS/TheCollegeView - [TheCollegeView](https://thecollegeview.ie) - `wordpress` - DCU Style - [The Look](https://thelookonline.dcu.ie) - `wordpress` - DCU Solar Racing - [Solarracing.ie](https://solarracing.ie) -- DCU Games Society - [`minecraft`](minecraft.md) diff --git a/docs/services/traefik.md b/docs/services/traefik.md index 2185e573..18aa5577 100644 --- a/docs/services/traefik.md +++ b/docs/services/traefik.md @@ -9,3 +9,5 @@ title: Traefik --- # Traefik + +Traefik is our reverse proxy. It runs as a system job on aperture, meaning there's one instance of it per client. \ No newline at end of file diff --git a/docs/services/znapzend.md b/docs/services/znapzend.md deleted file mode 100644 index a13979bb..00000000 --- a/docs/services/znapzend.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: znapzend -aliases: - - ZnapZend -tags: [] -created: 2021-06-29T04:44:29 -modified: 2024-01-31T08:23:37 -title: ZnapZend ---- - -# ZnapZend - -## Overview - -[ZnapZend](https://www.znapzend.org/) is used to back up the NFS ZFS dataset from our NFS server to Albus. - -It can also be used to back up other ZFS datasets on other hosts, but at the time of writing NFS is the only thing being backed up this way. - -ZnapZend runs on the client and sends backups to Albus over SSH using `zfs send | zfs receive` piping. - -The backup strategy can be viewed in the [NixOS configuration](https://github.com/redbrick/nix-configs/blob/5ddaf2097a3267b871368fea73a530e399381b4a/services/znapzend.nix). - -## Adding Another Backup - -There is not much manual configuration to add a host to the ZnapZend backups. - -1. Create an SSH key for the root user with no passphrase on the host you want to send the backups from. Use -`ssh-keygen -t ed25519`. -2. Add this new SSH public key to the rbbackup user's authorized keys on [Albus](https://github.com/redbrick/nix-configs/blob/5ddaf2097a3267b871368fea73a530e399381b4a/hosts/albus/configuration.nix#L32). -3. Try SSHing to `rbbackups@albus.internal` to load the host key and test the passwordless authentication. -4. Import the [znapzend service config](https://github.com/redbrick/nix-configs/blob/5ddaf2097a3267b871368fea73a530e399381b4a/services/znapzend.nix) -on the sending host and configure `redbrick.znapzendSourceDataset` and `redbrick.znapzendDestDataset`. Then apply the config. - -> [!NOTE] Note -> The `DestDataset` must be unique across all configured backups/servers. - -## Debugging - -Znapzend runs at the top of every hour to make backups. You can watch the progress with `journalctl -fu znapzend.service`. - -Failures are usually caused by incorrect SSH configuration, so make sure that passwordless auth using the sending host's root SSH key is working. - -## Rolling Back NFS - -If the NFS server is online and functional, you do not need to involve Albus to roll back changes, as all the snapshots - -are kept on Icarus too. - - 1. Find the snapshot you want to restore with `zfs list -t snapshot`. - 2. Run `zfs rollback $snapshotname`. - -That's it! These instructions obviously work for backups other than NFS too, should any ever exist. - -## Restoring NFS from a Backup - -If the NFS server has died or you are creating a copy of it, here's how to pull the dataset from Albus, - - 1. On Albus, find the snapshot you want to restore with `zfs list -t snapshot`. - 2. Open a screen/tmux, and copy the snapshot to a dataset in your target ZFS pool with: - - ```bash -ssh albus zfs send -vRLec $snapshotname | zfs receive $newpool/$datasetname` -``` diff --git a/docs/webgroup/atlas.md b/docs/webgroup/atlas.md index bfa8bc72..d79b2931 100644 --- a/docs/webgroup/atlas.md +++ b/docs/webgroup/atlas.md @@ -5,6 +5,8 @@ aliases: tags: - webgroup - website +created: 2026-09-03T12:26:00 +modified: 2026-09-03T12:26:00 title: Atlas ---