Håvard Ose Nordstrand 1 年之前
父節點
當前提交
336a476765
共有 64 個文件被更改,包括 196 次插入116 次删除
  1. 1 1
      aaa/kerberos.md
  2. 2 2
      check-links.sh
  3. 1 1
      game-server/minecraft-bukkit.md
  4. 1 1
      general/computer-testing.md
  5. 1 1
      general/linux.md
  6. 2 2
      hpc/containers.md
  7. 2 2
      hpc/cuda.md
  8. 1 1
      hpc/enroot.md
  9. 4 4
      hpc/hip.md
  10. 1 1
      hpc/interconnects.md
  11. 3 3
      hpc/rocm.md
  12. 1 1
      hpc/singularity.md
  13. 22 21
      index.md
  14. 8 8
      linux-server/applications.md
  15. 1 1
      linux-server/ceph.md
  16. 2 2
      linux-server/db-crdb.md
  17. 4 4
      linux-server/debian.md
  18. 35 0
      linux-server/rabbitmq.md
  19. 5 5
      linux-server/storage.md
  20. 1 1
      linux-server/zfs.md
  21. 1 1
      media/ffmpeg.md
  22. 1 1
      media/ndi.md
  23. 1 1
      media/video-basics.md
  24. 1 1
      monitoring/prometheus.md
  25. 2 2
      networking/bgp.md
  26. 1 1
      networking/cisco-ios-routers.md
  27. 1 1
      networking/cisco-ios-switches.md
  28. 1 1
      networking/cisco-sda.md
  29. 1 1
      networking/ipv4.md
  30. 3 3
      networking/ipv6.md
  31. 2 2
      networking/juniper-ex.md
  32. 7 7
      networking/juniper-ex3300-fanmod.md
  33. 1 1
      networking/juniper-hardware.md
  34. 2 2
      networking/juniper-srx.md
  35. 2 2
      networking/linux.md
  36. 3 3
      networking/multicast.md
  37. 1 1
      networking/ospf.md
  38. 1 1
      networking/routing.md
  39. 1 1
      networking/ubiquiti-unifi-aps.md
  40. 2 2
      networking/ubiquiti-unifi-controllers.md
  41. 2 2
      personal-device/applications.md
  42. 4 4
      personal-device/arch-i3.md
  43. 2 2
      personal-device/kubuntu.md
  44. 1 1
      personal-device/manjaro-kde.md
  45. 0 0
      swe/_name
  46. 0 0
      swe/ccpp-tools.md
  47. 1 1
      swe/clang-llvm.md
  48. 0 0
      swe/cpp.md
  49. 0 0
      swe/data.md
  50. 0 0
      swe/db.md
  51. 1 1
      swe/gcc.md
  52. 48 4
      swe/git.md
  53. 0 0
      swe/go.md
  54. 0 0
      swe/licensing.md
  55. 0 0
      swe/openmp.md
  56. 0 0
      swe/rust.md
  57. 0 0
      swe/web-security.md
  58. 0 0
      virt/_name
  59. 0 0
      virt/docker.md
  60. 0 0
      virt/k8s.md
  61. 0 0
      virt/libvirt-kvm.md
  62. 1 1
      virt/podman.md
  63. 3 3
      virt/proxmox-ve.md
  64. 0 0
      virt/virtualbox.md

+ 1 - 1
aaa/kerberos.md

@@ -38,6 +38,6 @@ It's designed to be run on top of an untrusted network using an appropriate set
 
 
 ## Setup
 ## Setup
 
 
-See [FreeIPA](/config/aaa/freeipa/) (a suite consisting of MIT Kerberos and more).
+See [FreeIPA](/aaa/freeipa/) (a suite consisting of MIT Kerberos and more).
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 2 - 2
check-links.sh

@@ -46,13 +46,13 @@ function check_link {
     fi
     fi
 
 
     # Show error if using relative path.
     # Show error if using relative path.
-    if grep -P '/$' <<<$target_file >/dev/null; then
+    if grep -P '^\.\.' <<<$target_file >/dev/null; then
         print_error "$src_file" "$web_url" "$target_file" "Relative paths not allowed."
         print_error "$src_file" "$web_url" "$target_file" "Relative paths not allowed."
         return
         return
     fi
     fi
 
 
     # Show error if file does not exist.
     # Show error if file does not exist.
-    if [[ ! -f $target_file ]]; then
+    if [[ ! -f $PWD/$target_file ]]; then
         print_error "$src_file" "$web_url" "$target_file" "Target file does not exist."
         print_error "$src_file" "$web_url" "$target_file" "Target file does not exist."
         return
         return
     fi
     fi

+ 1 - 1
game-server/minecraft-bukkit.md

@@ -21,7 +21,7 @@ This page is intended for the Bukkit server software or any of its derivatives,
 ## Server Managers
 ## Server Managers
 
 
 - [Pterodactyl](https://pterodactyl.io/):
 - [Pterodactyl](https://pterodactyl.io/):
-    - See [Linux Server Applications: Pterodactyl](/config/linux-server/applications/#pterodactyl)).
+    - See [Linux Server Applications: Pterodactyl](/linux-server/applications/#pterodactyl)).
     - Open-source.
     - Open-source.
     - Free to use.
     - Free to use.
     - Modern.
     - Modern.

+ 1 - 1
general/computer-testing.md

@@ -73,7 +73,7 @@ fio --name=random-write --ioengine=posixaio --rw=randwrite --bs=1m --size=16G --
 ### smartmontools (Linux)
 ### smartmontools (Linux)
 
 
 - For health testing.
 - For health testing.
-- See [smartmontools](/config/linux-general/applications/#smartmontools).
+- See [smartmontools](/linux-general/applications/#smartmontools).
 
 
 ## Miscellanea
 ## Miscellanea
 
 

+ 1 - 1
general/linux.md

@@ -418,7 +418,7 @@ Using GPG (from package `gnupg2` on Debian).
     - The nice value is inherited by child processes (meaning forking processes maintains the nice value it started with).
     - The nice value is inherited by child processes (meaning forking processes maintains the nice value it started with).
     - Use `renice` to change the value.
     - Use `renice` to change the value.
     - Use `ionice` to set the I/O scheduler and scheduler-specific priority.
     - Use `ionice` to set the I/O scheduler and scheduler-specific priority.
-- Stress test with stress/stress-ng (see [Computer Testing](../computer-testing/)):
+- Stress test with stress/stress-ng (see [Computer Testing](/general/computer-testing/)):
     - Install (Debian): `apt install stress-ng`
     - Install (Debian): `apt install stress-ng`
     - Install (Arch): `apt install stress`
     - Install (Arch): `apt install stress`
     - Stress CPU: `stress(-ng) -c $(nproc) -t $((10*60))` (use all CPU threads for 10 minutes)
     - Stress CPU: `stress(-ng) -c $(nproc) -t $((10*60))` (use all CPU threads for 10 minutes)

+ 2 - 2
hpc/containers.md

@@ -11,7 +11,7 @@ breadcrumbs:
 
 
 #### Resources
 #### Resources
 
 
-- Config notes: [Docker](/config/virt-cont/docker/)
+- Config notes: [Docker](/virt/docker/)
 
 
 #### General Information
 #### General Information
 
 
@@ -26,7 +26,7 @@ breadcrumbs:
 #### Resources
 #### Resources
 
 
 - Homepage: [Singularity](https://singularity.hpcng.org/)
 - Homepage: [Singularity](https://singularity.hpcng.org/)
-- Config notes: [Singularity](/config/hpc/singularity/)
+- Config notes: [Singularity](/hpc/singularity/)
 
 
 #### Information
 #### Information
 
 

+ 2 - 2
hpc/cuda.md

@@ -10,7 +10,7 @@ Introduced by NVIDIA in 2006. While GPU compute was hackishly possible before CU
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [HIP](../hip/)
+- [HIP](/hpc/hip/)
 
 
 ## TODO
 ## TODO
 
 
@@ -59,7 +59,7 @@ Downloads: [CUDA Toolkit Download (NVIDIA)](https://developer.nvidia.com/cuda-do
 
 
 Docker containers may run NVIDIA applications using the NVIDIA runtime for Docker.
 Docker containers may run NVIDIA applications using the NVIDIA runtime for Docker.
 
 
-See [Docker](/config/virt-cont/docker/).
+See [Docker](/virt/docker/).
 
 
 ### DCGM
 ### DCGM
 
 

+ 1 - 1
hpc/enroot.md

@@ -9,7 +9,7 @@ A container technology for HPC, made by NVIDIA.
 
 
 ## Information
 ## Information
 
 
-- For more general imformation and comparison to other HPC container technologies, see [Containers](/config/hpc/containers/).
+- For more general imformation and comparison to other HPC container technologies, see [Containers](/hpc/containers/).
 
 
 ## Configuration
 ## Configuration
 
 

+ 4 - 4
hpc/hip.md

@@ -11,8 +11,8 @@ Compared to OpenCL (which is also supported by both NVIDIA and AMD), it's much m
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [ROCm](../rocm/)
-- [CUDA](../cuda/)
+- [ROCm](/hpc/rocm/)
+- [CUDA](/hpc/cuda/)
 
 
 ## Resources
 ## Resources
 
 
@@ -27,13 +27,13 @@ Compared to OpenCL (which is also supported by both NVIDIA and AMD), it's much m
 
 
 ### Install for AMD GPUs
 ### Install for AMD GPUs
 
 
-1. Install the ROCm suite (contains HIP and other useful stuff): See [ROCm](../rocm/).
+1. Install the ROCm suite (contains HIP and other useful stuff): See [ROCm](/hpc/rocm/).
 
 
 ### Install for NVIDIA GPUs
 ### Install for NVIDIA GPUs
 
 
 Updated for ROCm 5.0.
 Updated for ROCm 5.0.
 
 
-1. Install the CUDA toolkit and the NVIDIA driver: See [CUDA](../cuda/).
+1. Install the CUDA toolkit and the NVIDIA driver: See [CUDA](/hpc/cuda/).
 1. Add the ROCm package repo:
 1. Add the ROCm package repo:
     1. Install requirements: `sudo apt install curl libnuma-dev wget gnupg2`
     1. Install requirements: `sudo apt install curl libnuma-dev wget gnupg2`
     1. Add repo key: `curl -sSf https://repo.radeon.com/rocm/rocm.gpg.key | sudo gpg --dearmor --output /usr/share/keyrings/rocm.gpg`
     1. Add repo key: `curl -sSf https://repo.radeon.com/rocm/rocm.gpg.key | sudo gpg --dearmor --output /usr/share/keyrings/rocm.gpg`

+ 1 - 1
hpc/interconnects.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Linux Switching & Routing](/config/network/linux/)
+- [Linux Switching & Routing](/network/linux/)
 
 
 ## General
 ## General
 
 

+ 3 - 3
hpc/rocm.md

@@ -11,8 +11,8 @@ It uses the runtime API and kernel language HIP, which is compilable for both AM
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [HIP](../hip/)
-- [Clang/LLVM](/se/clang-llvm/)
+- [HIP](/hpc/hip/)
+- [Clang/LLVM](/swd/clang-llvm/)
 
 
 ## Resources
 ## Resources
 
 
@@ -48,7 +48,7 @@ Updated for ROCm 5.0.
 1. Verify AMDGPU DKMS install: `sudo dkms status`
 1. Verify AMDGPU DKMS install: `sudo dkms status`
 1. Verify ROCm install: `rocminfo`
 1. Verify ROCm install: `rocminfo`
     - This should show you AMD GPU as an agent (and also you AMD CPU if you have one).
     - This should show you AMD GPU as an agent (and also you AMD CPU if you have one).
-1. (Optional) Verify HIP: See [HIP](../HIP/).
+1. (Optional) Verify HIP: See [HIP](/hpc/HIP/).
 
 
 ## Usage and Tools
 ## Usage and Tools
 
 

+ 1 - 1
hpc/singularity.md

@@ -9,7 +9,7 @@ A container technology for HPC.
 
 
 ## Information
 ## Information
 
 
-- For more general imformation and comparison to other HPC container technologies, see [Containers](/config/hpc/containers/).
+- For more general imformation and comparison to other HPC container technologies, see [Containers](/hpc/containers/).
 
 
 ## Configuration
 ## Configuration
 
 

+ 22 - 21
index.md

@@ -77,11 +77,12 @@ Random collection of config notes and Miscellanea. _Technically not a wiki._
 ## Linux Server
 ## Linux Server
 
 
 - [Linux Server Applications](/linux-server/applications/)
 - [Linux Server Applications](/linux-server/applications/)
-- [Linux Server Database: CockroachDB (CRDB)](/linux-server/db-crdb/)
+- [Ceph](/linux-server/ceph/)
+- [CockroachDB (CRDB)](/linux-server/db-crdb/)
 - [Debian Server](/linux-server/debian/)
 - [Debian Server](/linux-server/debian/)
+- [RabbitMQ](/linux-server/rabbitmq/)
 - [Linux Server Storage](/linux-server/storage/)
 - [Linux Server Storage](/linux-server/storage/)
-- [Linux Server Storage: Ceph](/linux-server/storage-ceph/)
-- [Linux Server Storage: ZFS](/linux-server/storage-zfs/)
+- [ZFS](/linux-server/zfs/)
 
 
 ## Media
 ## Media
 
 
@@ -167,26 +168,26 @@ Random collection of config notes and Miscellanea. _Technically not a wiki._
 
 
 ## Software Engineering
 ## Software Engineering
 
 
-- [C/C++ Tools](/soft-eng/ccpp-tools/)
-- [Clang/LLVM](/soft-eng/clang-llvm/)
-- [C++ (Language)](/soft-eng/cpp/)
-- [Data Stuff](/soft-eng/data/)
-- [Databases](/soft-eng/db/)
-- [GNU Compiler Collection (GCC)](/soft-eng/gcc/)
-- [Git](/soft-eng/git/)
-- [Go (Language)](/soft-eng/go/)
-- [Licensing](/soft-eng/licensing/)
-- [OpenMP](/soft-eng/openmp/)
-- [Rust (Language)](/soft-eng/rust/)
-- [Web Security](/soft-eng/web-security/)
+- [C/C++ Tools](/swe/ccpp-tools/)
+- [Clang/LLVM](/swe/clang-llvm/)
+- [C++ (Language)](/swe/cpp/)
+- [Data Stuff](/swe/data/)
+- [Databases](/swe/db/)
+- [GNU Compiler Collection (GCC)](/swe/gcc/)
+- [Git](/swe/git/)
+- [Go (Language)](/swe/go/)
+- [Licensing](/swe/licensing/)
+- [OpenMP](/swe/openmp/)
+- [Rust (Language)](/swe/rust/)
+- [Web Security](/swe/web-security/)
 
 
 ## Virtualization, Containerization and Orchestration
 ## Virtualization, Containerization and Orchestration
 
 
-- [Docker](/virt-cont/docker/)
-- [Kubernetes](/virt-cont/k8s/)
-- [libvirt & KVM](/virt-cont/libvirt-kvm/)
-- [Podman](/virt-cont/podman/)
-- [Proxmox VE](/virt-cont/proxmox-ve/)
-- [VirtualBox](/virt-cont/virtualbox/)
+- [Docker](/virt/docker/)
+- [Kubernetes](/virt/k8s/)
+- [libvirt & KVM](/virt/libvirt-kvm/)
+- [Podman](/virt/podman/)
+- [Proxmox VE](/virt/proxmox-ve/)
+- [VirtualBox](/virt/virtualbox/)
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 8 - 8
linux-server/applications.md

@@ -130,7 +130,7 @@ A free community backend for Bitwarden.
 
 
 ## Ceph
 ## Ceph
 
 
-See [Storage: Ceph](/config/linux-server/storage/#ceph).
+See [Storage: Ceph](/linux-server/storage/#ceph).
 
 
 ## Certbot
 ## Certbot
 
 
@@ -210,11 +210,11 @@ This setup requires pubkey plus MFA (if configured) plus password.
 
 
 ## Intel SSD Data Center Tool (isdct)
 ## Intel SSD Data Center Tool (isdct)
 
 
-See [Storage: isdct](/config/linux-server/storage/#intel-ssd-data-center-tool-isdct).
+See [Storage: isdct](/linux-server/storage/#intel-ssd-data-center-tool-isdct).
 
 
 ## Home Assistant
 ## Home Assistant
 
 
-See [Home Assistant](/config/iot-ha/home-assistant/).
+See [Home Assistant](/iot-ha/home-assistant/).
 
 
 ## ISC DHCP Server
 ## ISC DHCP Server
 
 
@@ -729,11 +729,11 @@ Logs are located in `/app/storage/logs/laravel/` inside the container.
 
 
 #### Counter-Strike: Global Offensive
 #### Counter-Strike: Global Offensive
 
 
-See [Counter-Strike: Global Offensive (CS:GO)](/config/game-servers/csgo/).
+See [Counter-Strike: Global Offensive (CS:GO)](/game-servers/csgo/).
 
 
 #### Team Fortress 2
 #### Team Fortress 2
 
 
-See [Team Fortress 2 (TF2)](/config/game-servers/tf2/).
+See [Team Fortress 2 (TF2)](/game-servers/tf2/).
 
 
 ## Router Advertisement Daemon (radvd)
 ## Router Advertisement Daemon (radvd)
 
 
@@ -919,7 +919,7 @@ See [Team Fortress 2 (TF2)](/config/game-servers/tf2/).
 
 
 ## UniFi
 ## UniFi
 
 
-See [Ubiquiti UniFi Controllers](/config/network/ubiquiti-unifi-controllers/).
+See [Ubiquiti UniFi Controllers](/network/ubiquiti-unifi-controllers/).
 
 
 ## WireGuard
 ## WireGuard
 
 
@@ -927,7 +927,7 @@ See [Ubiquiti UniFi Controllers](/config/network/ubiquiti-unifi-controllers/).
 
 
 1. Install: `apt install wireguard`
 1. Install: `apt install wireguard`
 1. (Debian) Fix broken DNS (using systemd resolved):
 1. (Debian) Fix broken DNS (using systemd resolved):
-    1. Enable systemd resolved: See [systemd-resolved (Debian server setup)](/config/linux-server/debian/#using-systemd-resolved-alternative-2).
+    1. Enable systemd resolved: See [systemd-resolved (Debian server setup)](/linux-server/debian/#using-systemd-resolved-alternative-2).
     1. Fix missing `resolvconf`: `ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf`
     1. Fix missing `resolvconf`: `ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf`
 
 
 ### Usage
 ### Usage
@@ -959,6 +959,6 @@ PersistentKeepalive = 25
 
 
 ## ZFS
 ## ZFS
 
 
-See [Storage: ZFS](/config/linux-server/storage/#zfs).
+See [Storage: ZFS](/linux-server/storage/#zfs).
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 1 - 1
linux-server/storage-ceph.md → linux-server/ceph.md

@@ -1,5 +1,5 @@
 ---
 ---
-title: 'Linux Server Storage: Ceph'
+title: Ceph
 breadcrumbs:
 breadcrumbs:
 - title: Linux Server
 - title: Linux Server
 ---
 ---

+ 2 - 2
linux-server/db-crdb.md

@@ -1,5 +1,5 @@
 ---
 ---
-title: 'Linux Server Database: CockroachDB (CRDB)'
+title: CockroachDB (CRDB)
 breadcrumbs:
 breadcrumbs:
 - title: Linux Server
 - title: Linux Server
 ---
 ---
@@ -7,7 +7,7 @@ breadcrumbs:
 
 
 ## Resources
 ## Resources
 
 
-- [Databases](/soft-eng/db/)
+- [Databases](/swe/db/)
 
 
 ## Info
 ## Info
 
 

+ 4 - 4
linux-server/debian.md

@@ -12,7 +12,7 @@ Using **Debian 11 (Bullseye)**.
 ### Installation
 ### Installation
 
 
 - Always verify the downloaded installation image after downloading it.
 - Always verify the downloaded installation image after downloading it.
-- If installing in a Proxmox VE VM, see [Proxmox VE: VMs: Initial Setup](/config/virt-cont/proxmox-ve/#initial-setup).
+- If installing in a Proxmox VE VM, see [Proxmox VE: VMs: Initial Setup](/virt/proxmox-ve/#initial-setup).
 - Prefer UEFI if possible.
 - Prefer UEFI if possible.
 - Use the non-graphical installer. It's basically the same as the graphical one.
 - Use the non-graphical installer. It's basically the same as the graphical one.
 - If it asks to install non-free firmware, take note of the packages so they can be installed later.
 - If it asks to install non-free firmware, take note of the packages so they can be installed later.
@@ -33,7 +33,7 @@ Using **Debian 11 (Bullseye)**.
     - For automation-managed systems: The passwords may be something temporary and the non-root user may be called e.g. `ansible` (for the initial automation).
     - For automation-managed systems: The passwords may be something temporary and the non-root user may be called e.g. `ansible` (for the initial automation).
 - System disk partitioning:
 - System disk partitioning:
     - Simple system: Guided, single partition, use all available space.
     - Simple system: Guided, single partition, use all available space.
-    - Advanced system: Manually partition, see [system storage](/config/linux-server/storage/#system-storage).
+    - Advanced system: Manually partition, see [system storage](/linux-server/storage/#system-storage).
     - Swap can be set up later as a file or LVM volume.
     - Swap can be set up later as a file or LVM volume.
     - When using LVM: Create the partition for the volume group, configure LVM (separate menu), configure the LVM volumes (filesystem and mount).
     - When using LVM: Create the partition for the volume group, configure LVM (separate menu), configure the LVM volumes (filesystem and mount).
 - Package manager:
 - Package manager:
@@ -164,7 +164,7 @@ The first steps (`(Skip)`) may be skipped if already configured during installat
 1. Setup lm_sensors to monitor sensors:
 1. Setup lm_sensors to monitor sensors:
     1. Install `lm-sensors`.
     1. Install `lm-sensors`.
     1. Run `sensors` to make sure it runs without errors and shows some (default-ish) sensors.
     1. Run `sensors` to make sure it runs without errors and shows some (default-ish) sensors.
-    1. For further configuration (more sensors) and more info, see [Linux Server Applications: lm_sensors](/config/linux-server/applications/#lm_sensors).
+    1. For further configuration (more sensors) and more info, see [Linux Server Applications: lm_sensors](/linux-server/applications/#lm_sensors).
 1. Check the performance governor and other frequency settings:
 1. Check the performance governor and other frequency settings:
     1. Install `linux-cpupower`.
     1. Install `linux-cpupower`.
     1. Show: `cpupower frequency-info`
     1. Show: `cpupower frequency-info`
@@ -287,7 +287,7 @@ Everything here is optional.
         - Check: `swapon --show`
         - Check: `swapon --show`
     1. Add it to fstab using this line: `/swapfile swap swap defaults 0 0`
     1. Add it to fstab using this line: `/swapfile swap swap defaults 0 0`
         - Check: `mount -a`
         - Check: `mount -a`
-- Setup Postfix mail relay: See [Linux Server Applications: Postfix](/config/linux-server/applications/#postfix).
+- Setup Postfix mail relay: See [Linux Server Applications: Postfix](/linux-server/applications/#postfix).
 - Prevent root local login:
 - Prevent root local login:
     - Alternatively, keep it enabled with a strong password as a local backdoor for recovery or similar.
     - Alternatively, keep it enabled with a strong password as a local backdoor for recovery or similar.
     - Add a personal user first.
     - Add a personal user first.

+ 35 - 0
linux-server/rabbitmq.md

@@ -0,0 +1,35 @@
+---
+title: RabbitMQ
+breadcrumbs:
+- title: Linux Server
+---
+{% include header.md %}
+
+## Info
+
+- A message broker, used for asynchronous message communication between different services.
+- Supports MQTT, AMQP and STOMP, as described below.
+- Messages are sent from a producer to an exchange, which routes it to one or more bound queues, which finally forwards it to one or more consumer.
+- Exchanges can route (1) directly to a specific queue, (2) to multiple queues using topics or (3) to all queues using fanout.
+
+### Messaging Protocols
+
+- Message Queuing Telemetry Transport (MQTT):
+    - Lightweight/minimalistic, designed to avoid excessive communication. Good for IoT environments.
+    - Pub/sub messaging pattern only, with different topics.
+    - Three QoS levels (low-priority 0 to high-priority 2).
+    - Supports a "last will" message specified during client connection setup, that it sent if the client unexpectedly disconnects.
+    - Brokers support retaining the last message on a topic, to send to newly connected clients.
+- Advanced Message Queuing Protocol (AMQP):
+    - Designed as an open standard for enterprise messaging.
+    - Supports sending acknowledgements back from the receiving client to the broker.
+    - Supports reliable message delivery and message persistance.
+    - Uses an _exchange_ in front of a set of _queues_, to allow for more complex routing.
+    - Supports messaging patterns like pub/sub, point-to-pint and request/reply.
+- Simple Text Oriented Messaging Protocol (STOMP):
+    - Designed as a more bare-bones protocol that is simple to implement.
+    - Supports a limited set of commands, including CONNECT, SEND and SUBSCRIBE.
+    - Supports very simple routing.
+    - Is text-based, making implementation and debugging simpler.
+
+{% include footer.md %}

+ 5 - 5
linux-server/storage.md

@@ -9,7 +9,7 @@ Using **Debian**, unless otherwise stated.
 
 
 ## General
 ## General
 
 
-- For benchmarking etc., see [Computer Testing (General)](/config/general/computer-testing/).
+- For benchmarking etc., see [Computer Testing (General)](/general/computer-testing/).
 
 
 ## Guidelines and Miscellaneous Notes
 ## Guidelines and Miscellaneous Notes
 
 
@@ -26,7 +26,7 @@ Using **Debian**, unless otherwise stated.
 - Addressing modes: Cylinder, head and sector (CHS) (old and HDD-based) and logical block addressing (LBA) (new and hardware agnostic).
 - Addressing modes: Cylinder, head and sector (CHS) (old and HDD-based) and logical block addressing (LBA) (new and hardware agnostic).
 - After receiving a new drive or after transporting an existing drive, you should run a SMART conveyance test,
 - After receiving a new drive or after transporting an existing drive, you should run a SMART conveyance test,
   which is similar to a short test but targeted at this scenario.
   which is similar to a short test but targeted at this scenario.
-  See [smartmontools](/config/linux-server/applications/#smartmontools).
+  See [smartmontools](/linux-server/applications/#smartmontools).
 - Alignment and block sizes:
 - Alignment and block sizes:
     - Using a logical block size smaller than the physical one or misaligning logical and physical blocks will cause reduced performance, mainly for small writes.
     - Using a logical block size smaller than the physical one or misaligning logical and physical blocks will cause reduced performance, mainly for small writes.
     - Main variants:
     - Main variants:
@@ -109,7 +109,7 @@ Attributes 1 (Raw Read Error Rate) and 7 (Seek Error Rate) can be a bit misleadi
 
 
 ### SMART
 ### SMART
 
 
-See [smartmontools](/config/linux-server/applications/#smartmontools).
+See [smartmontools](/linux-server/applications/#smartmontools).
 
 
 For HDDs, the following attributes should stay near 0 and should not be rising. If they are, it may indicate the drive is about to commit seppuku.
 For HDDs, the following attributes should stay near 0 and should not be rising. If they are, it may indicate the drive is about to commit seppuku.
 
 
@@ -212,11 +212,11 @@ To automount it, you need to actually enter it (or equivalent).
 
 
 ### Ceph
 ### Ceph
 
 
-See [Linux Server Storage: Ceph](../storage-ceph/).
+See [Linux Server Storage: Ceph](/linux-server/ceph/).
 
 
 ### ZFS
 ### ZFS
 
 
-See [Linux Server Storage: ZFS](../storage-zfs/).
+See [Linux Server Storage: ZFS](/linux-server/zfs/).
 
 
 ## Miscellanea
 ## Miscellanea
 
 

+ 1 - 1
linux-server/storage-zfs.md → linux-server/zfs.md

@@ -1,5 +1,5 @@
 ---
 ---
-title: 'Linux Server Storage: ZFS'
+title: ZFS
 breadcrumbs:
 breadcrumbs:
 - title: Linux Server
 - title: Linux Server
 ---
 ---

+ 1 - 1
media/ffmpeg.md

@@ -30,7 +30,7 @@ breadcrumbs:
 
 
 #### Linux
 #### Linux
 
 
-- See the the [Video4Linux 2 (V4L2) page](../v4l2/) for more info about managing devices.
+- See the the [Video4Linux 2 (V4L2) page](/media/v4l2/) for more info about managing devices.
 - List devices: `v4l2-ctl --list-devices`
 - List devices: `v4l2-ctl --list-devices`
     - Cameras often provide multiple `/dev/video<n>` for the same device, only one of them provides the correct video feed.
     - Cameras often provide multiple `/dev/video<n>` for the same device, only one of them provides the correct video feed.
 - Show current device info: `v4l2-ctl -<n> --all` (for `/dev/video<n>`)
 - Show current device info: `v4l2-ctl -<n> --all` (for `/dev/video<n>`)

+ 1 - 1
media/ndi.md

@@ -63,6 +63,6 @@ A network video protocol by NewTek.
 
 
 ### OBS NDI Plugin
 ### OBS NDI Plugin
 
 
-See [OBS](../obs/).
+See [OBS](/media/obs/).
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 1 - 1
media/video-basics.md

@@ -5,7 +5,7 @@ breadcrumbs:
 ---
 ---
 {% include header.md %}
 {% include header.md %}
 
 
-- Also see [image basics](../image-basics/) and [audio basics](../audio-basics/) for other concepts that apply to video as well.
+- Also see [image basics](/media/image-basics/) and [audio basics](/media/audio-basics/) for other concepts that apply to video as well.
 - Video formats:
 - Video formats:
     - **TODO**
     - **TODO**
     - MP4 (aka MPEG-4 Part 14):
     - MP4 (aka MPEG-4 Part 14):

+ 1 - 1
monitoring/prometheus.md

@@ -126,7 +126,7 @@ Instructions:
 1. Create the required files and directories:
 1. Create the required files and directories:
     - `touch /etc/default/prometheus-node-exporter`
     - `touch /etc/default/prometheus-node-exporter`
     - `mkdir -p /var/lib/prometheus/node-exporter/`
     - `mkdir -p /var/lib/prometheus/node-exporter/`
-1. Create the systemd service `/etc/systemd/system/prometheus-node-exporter.service`, see [prometheus-node-exporter.service](../files/prometheus-node-exporter.service.txt).
+1. Create the systemd service `/etc/systemd/system/prometheus-node-exporter.service`, see [prometheus-node-exporter.service](/monitoring/files/prometheus-node-exporter.service.txt).
 1. (Optional) Configure it:
 1. (Optional) Configure it:
     - The defaults work fine.
     - The defaults work fine.
     - File: `/etc/default/prometheus-node-exporter`
     - File: `/etc/default/prometheus-node-exporter`

+ 2 - 2
networking/bgp.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Routing Theory](../routing/)
+- [Routing Theory](/networking/routing/)
 
 
 ## General
 ## General
 
 
@@ -87,7 +87,7 @@ The path selection algorithm is used to select a single best path for a prefix.
     - See [Managing Route Objects in the IRR (RIPE)](https://www.ripe.net/manage-ips-and-asns/db/support/managing-route-objects-in-the-irr).
     - See [Managing Route Objects in the IRR (RIPE)](https://www.ripe.net/manage-ips-and-asns/db/support/managing-route-objects-in-the-irr).
     - IRR policies are handled by `route(6)` objects, containing the ASN and IPv4/IPv6 prefix.
     - IRR policies are handled by `route(6)` objects, containing the ASN and IPv4/IPv6 prefix.
     - Authorization for managing `route(6)` objects can be a little complicated. Generally, the LIR is always allowed to manage it.
     - Authorization for managing `route(6)` objects can be a little complicated. Generally, the LIR is always allowed to manage it.
-- For more info, see [Internet Governance and Registries](../inet-gov-reg/).
+- For more info, see [Internet Governance and Registries](/networking/inet-gov-reg/).
 
 
 ## Resource Public Key Infrastructure (RPKI)
 ## Resource Public Key Infrastructure (RPKI)
 
 

+ 1 - 1
networking/cisco-ios-routers.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Cisco IOS/IOS XE General](../cisco-ios-general/)
+- [Cisco IOS/IOS XE General](/networking/cisco-ios-general/)
 
 
 ## Initial Configuration
 ## Initial Configuration
 
 

+ 1 - 1
networking/cisco-ios-switches.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Cisco IOS/IOS XE General](../cisco-ios-general/)
+- [Cisco IOS/IOS XE General](/networking/cisco-ios-general/)
 
 
 ## Initial Configuration
 ## Initial Configuration
 
 

+ 1 - 1
networking/cisco-sda.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ## General
 ## General
 
 
 - A full zero-trust network solution for campus/enterprise networks (not DC), part of Cisco DNA (often called DNA/SDA).
 - A full zero-trust network solution for campus/enterprise networks (not DC), part of Cisco DNA (often called DNA/SDA).
-- Relation to Cisco Application Centric Infrastructure (ACI): [Cisco ACI: Relation to SDA](../cisco-aci/#relation-to-sda)
+- Relation to Cisco Application Centric Infrastructure (ACI): [Cisco ACI: Relation to SDA](/networking/cisco-aci/#relation-to-sda)
 
 
 ## Links
 ## Links
 
 

+ 1 - 1
networking/ipv4.md

@@ -96,6 +96,6 @@ The terms are frequently interchanged and now typically used to refer to the sam
     - Adds a leave process, group queries, querier election (separated from DR election) and a maximum response time (MRT) field.
     - Adds a leave process, group queries, querier election (separated from DR election) and a maximum response time (MRT) field.
     - Group queries are only sent to the specific groups and not all hosts.
     - Group queries are only sent to the specific groups and not all hosts.
     - The maximum response time (MRT) is used in queries to inform hosts about how long the router will wait for a report. Hosts will wait a random amount of time less than the MRT and then sends a report if no other host has sent one yet. This reduces the amount of reports in the local network. IGMPv1 uses a hardcoded value of 10 seconds instead. The maximum configurable value is 25 seconds (255s/10). If the timer runs out on the router and no reports have been received, it informs PIM that there are no more listeners.
     - The maximum response time (MRT) is used in queries to inform hosts about how long the router will wait for a report. Hosts will wait a random amount of time less than the MRT and then sends a report if no other host has sent one yet. This reduces the amount of reports in the local network. IGMPv1 uses a hardcoded value of 10 seconds instead. The maximum configurable value is 25 seconds (255s/10). If the timer runs out on the router and no reports have been received, it informs PIM that there are no more listeners.
-- Configuration and commands: See [Multicast](../multicast/).
+- Configuration and commands: See [Multicast](/networking/multicast/).
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 3 - 3
networking/ipv6.md

@@ -165,7 +165,7 @@ See the [IANA IPv6 Special-Purpose Address Registry](https://www.iana.org/assign
 
 
 ## Packet Structure
 ## Packet Structure
 
 
-![Packet header differences between IPv4 and IPv6](../files/ripe-ipv6-header-changes.png)
+![Packet header differences between IPv4 and IPv6](/networking/files/ripe-ipv6-header-changes.png)
 
 
 *Figure: Packet header differences between IPv4 and IPv6. (Source: RIPE)*
 *Figure: Packet header differences between IPv4 and IPv6. (Source: RIPE)*
 
 
@@ -340,7 +340,7 @@ See the [IANA IPv6 Special-Purpose Address Registry](https://www.iana.org/assign
 - Multicast router discovery (MRD):
 - Multicast router discovery (MRD):
     - Based on MLD.
     - Based on MLD.
     - For discovery of multicast routers.
     - For discovery of multicast routers.
-- Configuration and commands: See [Multicast](../multicast/).
+- Configuration and commands: See [Multicast](/networking/multicast/).
 
 
 ### Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
 ### Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
 
 
@@ -588,7 +588,7 @@ See the [IANA IPv6 Special-Purpose Address Registry](https://www.iana.org/assign
 
 
 ## Security
 ## Security
 
 
-![RIPE-722 Overview](../files/ripe-722-overview.png)
+![RIPE-722 Overview](/networking/files/ripe-722-overview.png)
 
 
 *Figure: RIPE-722 "Requirements for IPv6 in ICT Equipment" overview. (Source: RIPE)*
 *Figure: RIPE-722 "Requirements for IPv6 in ICT Equipment" overview. (Source: RIPE)*
 
 

+ 2 - 2
networking/juniper-ex.md

@@ -10,8 +10,8 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Juniper Hardware](/config/network/juniper-hardware/)
-- [Juniper Junos OS](/config/network/juniper-junos/)
+- [Juniper Hardware](/network/juniper-hardware/)
+- [Juniper Junos OS](/network/juniper-junos/)
 
 
 ### Using
 ### Using
 {:.no_toc}
 {:.no_toc}

+ 7 - 7
networking/juniper-ex3300-fanmod.md

@@ -25,31 +25,31 @@ I take no responsibility if this destroys your switch, burns your house down and
 
 
 **Old and new fans.** The one with screws is the back fan.
 **Old and new fans.** The one with screws is the back fan.
 
 
-[![All fans](../files/juniper-ex3300-fanmod/fans-all.jpg)](../files/juniper-ex3300-fanmod/fans-all.jpg)
+[![All fans](/networking/files/juniper-ex3300-fanmod/fans-all.jpg)](/networking/files/juniper-ex3300-fanmod/fans-all.jpg)
 
 
 **Original switch.**
 **Original switch.**
 
 
-[![Original switch](../files/juniper-ex3300-fanmod/switch-original.jpg)](../files/juniper-ex3300-fanmod/switch-original.jpg)
+[![Original switch](/networking/files/juniper-ex3300-fanmod/switch-original.jpg)](/networking/files/juniper-ex3300-fanmod/switch-original.jpg)
 
 
 **Original back fan.**
 **Original back fan.**
 
 
-[![Original back fan](../files/juniper-ex3300-fanmod/fan-old-back.jpg)](../files/juniper-ex3300-fanmod/fan-old-back.jpg)
+[![Original back fan](/networking/files/juniper-ex3300-fanmod/fan-old-back.jpg)](/networking/files/juniper-ex3300-fanmod/fan-old-back.jpg)
 
 
 **Original PSU fan.**
 **Original PSU fan.**
 
 
-[![Original PSU fan](../files/juniper-ex3300-fanmod/fan-old-psu.jpg)](../files/juniper-ex3300-fanmod/fan-old-psu.jpg)
+[![Original PSU fan](/networking/files/juniper-ex3300-fanmod/fan-old-psu.jpg)](/networking/files/juniper-ex3300-fanmod/fan-old-psu.jpg)
 
 
 **Modded switch.**
 **Modded switch.**
 
 
-[![Modded switch](../files/juniper-ex3300-fanmod/switch-modded.jpg)](../files/juniper-ex3300-fanmod/switch-modded.jpg)
+[![Modded switch](/networking/files/juniper-ex3300-fanmod/switch-modded.jpg)](/networking/files/juniper-ex3300-fanmod/switch-modded.jpg)
 
 
 **Modded switch again.**
 **Modded switch again.**
 
 
-[![Modded switch, different angle](../files/juniper-ex3300-fanmod/switch-modded-2.jpg)](../files/juniper-ex3300-fanmod/switch-modded-2.jpg)
+[![Modded switch, different angle](/networking/files/juniper-ex3300-fanmod/switch-modded-2.jpg)](/networking/files/juniper-ex3300-fanmod/switch-modded-2.jpg)
 
 
 **Backside of PSU PCB.** Notice the 12V and GND wires from the fan cable extenders soldered onto it.
 **Backside of PSU PCB.** Notice the 12V and GND wires from the fan cable extenders soldered onto it.
 
 
-[![PSU PCB backside](../files/juniper-ex3300-fanmod/psu-back.jpg)](../files/juniper-ex3300-fanmod/psu-back.jpg)
+[![PSU PCB backside](/networking/files/juniper-ex3300-fanmod/psu-back.jpg)](/networking/files/juniper-ex3300-fanmod/psu-back.jpg)
 
 
 ## Steps
 ## Steps
 
 

+ 1 - 1
networking/juniper-hardware.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Juniper Junos OS](/config/network/juniper-junos/)
+- [Juniper Junos OS](/network/juniper-junos/)
 
 
 ## EX3300
 ## EX3300
 
 

+ 2 - 2
networking/juniper-srx.md

@@ -8,8 +8,8 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Juniper Hardware](/config/network/juniper-hardware/)
-- [Juniper Junos OS](/config/network/juniper-junos/)
+- [Juniper Hardware](/network/juniper-hardware/)
+- [Juniper Junos OS](/network/juniper-junos/)
 
 
 ### Using
 ### Using
 {:.no_toc}
 {:.no_toc}

+ 2 - 2
networking/linux.md

@@ -21,13 +21,13 @@ Issues may also be related to stupid things like which ports you're using on the
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Linux Server Networking](/config/linux-server/networking/)
+- [Linux Server Networking](/linux-server/networking/)
 
 
 ## Setup (Debian)
 ## Setup (Debian)
 
 
 (In semi-random order.)
 (In semi-random order.)
 
 
-- Setup the Linux node as described in [Debian Server: Basic Setup](/config/linux-server/debian-server/#basic-setup).
+- Setup the Linux node as described in [Debian Server: Basic Setup](/linux-server/debian-server/#basic-setup).
 - Setup the firewall for filtering both forwarded traffic and input/output to the router.
 - Setup the firewall for filtering both forwarded traffic and input/output to the router.
 - Setup the firewall for NAT.
 - Setup the firewall for NAT.
 - Enable IP forwarding in `/etc/sysctl.conf`, then run `sysctl -p`:
 - Enable IP forwarding in `/etc/sysctl.conf`, then run `sysctl -p`:

+ 3 - 3
networking/multicast.md

@@ -22,19 +22,19 @@ breadcrumbs:
 
 
 ### Address Space
 ### Address Space
 
 
-See the [IPv4](../ipv4/) and [IPv6](../ipv6/) pages.
+See the [IPv4](/networking/ipv4/) and [IPv6](/networking/ipv6/) pages.
 
 
 ## Protocols
 ## Protocols
 
 
 ### Internet Group Messaging Protocol (IGMP)
 ### Internet Group Messaging Protocol (IGMP)
 
 
 - For cooordination between the host and the first-hop router.
 - For cooordination between the host and the first-hop router.
-- See [IPv4](../ipv4/).
+- See [IPv4](/networking/ipv4/).
 
 
 ### Multicast Listener Discovery (MLD)
 ### Multicast Listener Discovery (MLD)
 
 
 - For cooordination between the host and the first-hop router.
 - For cooordination between the host and the first-hop router.
-- See [IPv6](../ipv6/).
+- See [IPv6](/networking/ipv6/).
 
 
 ## Vendor Support
 ## Vendor Support
 
 

+ 1 - 1
networking/ospf.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Routing Theory](../routing/)
+- [Routing Theory](/networking/routing/)
 
 
 ## TODO
 ## TODO
 
 

+ 1 - 1
networking/routing.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [BGP](../bgp/)
+- [BGP](/networking/bgp/)
 
 
 ## General
 ## General
 
 

+ 1 - 1
networking/ubiquiti-unifi-aps.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Ubiquiti UniFi Controllers](/config/network/ubiquiti-unifi-controllers/)
+- [Ubiquiti UniFi Controllers](/network/ubiquiti-unifi-controllers/)
 
 
 ### Using
 ### Using
 {:.no_toc}
 {:.no_toc}

+ 2 - 2
networking/ubiquiti-unifi-controllers.md

@@ -8,7 +8,7 @@ breadcrumbs:
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Ubiquiti UniFi Access Points](/config/network/ubiquiti-unifi-aps/)
+- [Ubiquiti UniFi Access Points](/network/ubiquiti-unifi-aps/)
 
 
 ## General
 ## General
 
 
@@ -46,7 +46,7 @@ UniFi 5 is the latest version and does only officially support Debian 9 (Stretch
 Official installation instructions: [UniFi: How to Install & Upgrade the UniFi Network Controller Software](https://help.ubnt.com/hc/en-us/articles/360012282453-UniFi-How-to-Install-Upgrade-the-UniFi-Network-Controller-Software)
 Official installation instructions: [UniFi: How to Install & Upgrade the UniFi Network Controller Software](https://help.ubnt.com/hc/en-us/articles/360012282453-UniFi-How-to-Install-Upgrade-the-UniFi-Network-Controller-Software)
 
 
 1. Install Debian 9 (later versions don't have the required versions of Java etc.).
 1. Install Debian 9 (later versions don't have the required versions of Java etc.).
-1. Configure it: See [Debian Server](/config/linux-server/debian/) (for Debian 10).
+1. Configure it: See [Debian Server](/linux-server/debian/) (for Debian 10).
 1. Open incoming ports: See note above.
 1. Open incoming ports: See note above.
 1. (Optional) NAT port 443 to 8443 (to access it from the normal HTTPS port): `iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443`
 1. (Optional) NAT port 443 to 8443 (to access it from the normal HTTPS port): `iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443`
 1. (Alternative 1) Install via repo: See [How to Install and Update via APT on Debian or Ubuntu (UniFi)](https://help.ui.com/hc/en-us/articles/220066768-UniFi-How-to-Install-and-Update-via-APT-on-Debian-or-Ubuntu).
 1. (Alternative 1) Install via repo: See [How to Install and Update via APT on Debian or Ubuntu (UniFi)](https://help.ui.com/hc/en-us/articles/220066768-UniFi-How-to-Install-and-Update-via-APT-on-Debian-or-Ubuntu).

+ 2 - 2
personal-device/applications.md

@@ -114,7 +114,7 @@ KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="008f", MODE="0660
 
 
 ### Installation
 ### Installation
 
 
-See my [Arch setup with i3](../arch-i3/).
+See my [Arch setup with i3](/personal-device/arch-i3/).
 
 
 ### Configuration
 ### Configuration
 
 
@@ -207,7 +207,7 @@ Comes with adapters for compatibility with existing applications and such that e
 
 
 ### Installation
 ### Installation
 
 
-See the [Arch (i3)](../arch-i3/) or [Kubuntu](../kubuntu/) config notes.
+See the [Arch (i3)](/personal-device/arch-i3/) or [Kubuntu](/personal-device/kubuntu/) config notes.
 
 
 ### Configuration
 ### Configuration
 
 

+ 4 - 4
personal-device/arch-i3.md

@@ -10,7 +10,7 @@ For Arch with LUKS encrypted root, using the i3 window manager.
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Applications: i3](../applications/#i3)
+- [Applications: i3](/personal-device/applications/#i3)
 
 
 ## Resources
 ## Resources
 
 
@@ -329,7 +329,7 @@ Note: Install _either_ the LightDM (X11 GUI) or Ly (TTY TUI) display manager, no
 ### Setup the i3 Window Manager Basics
 ### Setup the i3 Window Manager Basics
 
 
 1. (Note) Some notes about i3:
 1. (Note) Some notes about i3:
-    - Se [i3](../applications/#i3) for more personal notes about i3.
+    - Se [i3](/personal-device/applications/#i3) for more personal notes about i3.
     - Use `Mod+Shift+R` to reload the i3 config.
     - Use `Mod+Shift+R` to reload the i3 config.
     - Use `Mod+Shift+E` to exit i3.
     - Use `Mod+Shift+E` to exit i3.
     - Use `Mod+Enter` to open a terminal.
     - Use `Mod+Enter` to open a terminal.
@@ -482,7 +482,7 @@ Note: Install _either_ the LightDM (X11 GUI) or Ly (TTY TUI) display manager, no
 ### Setup Audio
 ### Setup Audio
 
 
 Note: We're using the PipeWire sound server, a modern, security-focused and compatible replacement for both PulseAudio and JACK.
 Note: We're using the PipeWire sound server, a modern, security-focused and compatible replacement for both PulseAudio and JACK.
-See [PipeWire (Applications)](../applications/#pipewire) for more config info.
+See [PipeWire (Applications)](/personal-device/applications/#pipewire) for more config info.
 
 
 1. Install ALSA stuff:
 1. Install ALSA stuff:
     1. (Note) ALSA itself is already provided as built-in kernel modules and ALSA drivers will just work.
     1. (Note) ALSA itself is already provided as built-in kernel modules and ALSA drivers will just work.
@@ -546,7 +546,7 @@ See [PipeWire (Applications)](../applications/#pipewire) for more config info.
 1. Setup terminal emulator:
 1. Setup terminal emulator:
     1. Already done.
     1. Already done.
 1. Setup the ZSH shell:
 1. Setup the ZSH shell:
-    1. See [Applications: ZSH](../applications/#zsh-linux) (includes font, theme and plugins).
+    1. See [Applications: ZSH](/personal-device/applications/#zsh-linux) (includes font, theme and plugins).
 1. Setup the VLC video and audio player:
 1. Setup the VLC video and audio player:
     1. Install: `sudo pacman -S vlc`
     1. Install: `sudo pacman -S vlc`
 1. Setup the Mirage image viewer:
 1. Setup the Mirage image viewer:

+ 2 - 2
personal-device/kubuntu.md

@@ -44,14 +44,14 @@ breadcrumbs:
 
 
 ### Extra
 ### Extra
 
 
-1. Install applications: See [PC Applications](/config/pc/applications/).
+1. Install applications: See [PC Applications](/pc/applications/).
 1. (Optional) Install encrypted DVD support:
 1. (Optional) Install encrypted DVD support:
     - Install: `sudo apt install libdvd-pkg && sudo dpkg-reconfigure libdvd-pkg`
     - Install: `sudo apt install libdvd-pkg && sudo dpkg-reconfigure libdvd-pkg`
     - Warning: Don't change the region if not necessary. It's typically limited to five changes.
     - Warning: Don't change the region if not necessary. It's typically limited to five changes.
 
 
 ### PipeWire
 ### PipeWire
 
 
-Kubuntu comes with PulseAudio. PipeWire is a modern solution designed to replace PulseAudio, JACK and ALSA. This means it combines the simplicity of basic desktop usage from PulseAudio with the complexity of session managers from JACK, with extra focus on security, performance and compatibility. Plus it supports video. See [PipeWire (Applications)](../applications/#pipewire) for more config info.
+Kubuntu comes with PulseAudio. PipeWire is a modern solution designed to replace PulseAudio, JACK and ALSA. This means it combines the simplicity of basic desktop usage from PulseAudio with the complexity of session managers from JACK, with extra focus on security, performance and compatibility. Plus it supports video. See [PipeWire (Applications)](/personal-device/applications/#pipewire) for more config info.
 
 
 1. Install PipeWire:
 1. Install PipeWire:
     1. Install: `sudo apt install pipewire pipewire-audio-client-libraries pipewire-pulse`
     1. Install: `sudo apt install pipewire pipewire-audio-client-libraries pipewire-pulse`

+ 1 - 1
personal-device/manjaro-kde.md

@@ -50,6 +50,6 @@ Nothing special.
 
 
 ### Extra
 ### Extra
 
 
-1. Install applications: See [PC Applications](/config/pc/applications/).
+1. Install applications: See [PC Applications](/pc/applications/).
 
 
 {% include footer.md %}
 {% include footer.md %}

+ 0 - 0
soft-eng/_name → swe/_name


+ 0 - 0
soft-eng/ccpp-tools.md → swe/ccpp-tools.md


+ 1 - 1
soft-eng/clang-llvm.md → swe/clang-llvm.md

@@ -10,7 +10,7 @@ LLVM is an extensive compiler platform and toolchain. It's typically used as the
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [GCC](../gcc/)
+- [GCC](/swd/gcc/)
 
 
 ## Usage
 ## Usage
 
 

+ 0 - 0
soft-eng/cpp.md → swe/cpp.md


+ 0 - 0
soft-eng/data.md → swe/data.md


+ 0 - 0
soft-eng/db.md → swe/db.md


+ 1 - 1
soft-eng/gcc.md → swe/gcc.md

@@ -12,7 +12,7 @@ The notes below mainly apply to C/C++, unless otherwise stated.
 ### Related Pages
 ### Related Pages
 {:.no_toc}
 {:.no_toc}
 
 
-- [Clang/LLVM](../clang-llvm/)
+- [Clang/LLVM](/swd/clang-llvm/)
 
 
 ## Usage
 ## Usage
 
 

+ 48 - 4
soft-eng/git.md → swe/git.md

@@ -59,10 +59,18 @@ breadcrumbs:
     - Clone a repo using SSH (GitHub HON95/wiki example): `git clone git@github.com:HON95/wiki.git [local-dir]`
     - Clone a repo using SSH (GitHub HON95/wiki example): `git clone git@github.com:HON95/wiki.git [local-dir]`
     - Partial clone without blobs (for big repos, will fetch them on demand): `git clone --filter=blob:none <...>`
     - Partial clone without blobs (for big repos, will fetch them on demand): `git clone --filter=blob:none <...>`
     - Partial clone without trees (for big repos, rarely used, maybe for CI): `git clone --filter=tree:0 <...>`
     - Partial clone without trees (for big repos, rarely used, maybe for CI): `git clone --filter=tree:0 <...>`
+    - Clone with scalar:
+        - The `scalar` command now comes shipped with Git, after being upstreamed by Microsoft.
+        - Cloning with scalar will set up the defaults for better scaling, with features like prefetching, commit-graph, filesystem monitor, partial cloning and sparse checkout.
+        - Usage: `scalar clone <remote-repo>`
 - Staging files:
 - Staging files:
-    - Add all files: `git add -A`
+    - Stage all changes: `git add -A`
+    - Stage specific files: `git add <file>`
+    - Unstage changes: `git reset [file]`
     - Unstage all files (without changing them): `git reset`
     - Unstage all files (without changing them): `git reset`
-    - Discard changes (rollback to HEAD): `git checkout -- <dir or file>`
+    - Discard changes for file: `git checkout [target] -- <file>` (target defaults to HEAD)
+    - Discard changes for file (new command): `git restore [--source <target>] <file>` (target defaults to HEAD)
+    - Discard all changes: `git reset --hard HEAD`
     - gitignore:
     - gitignore:
         - Add files to ignore in `.gitignore` in the same or a parent folder.
         - Add files to ignore in `.gitignore` in the same or a parent folder.
         - A leading `/` means to only match in the same folder as the gitignore file (the gitignore root).
         - A leading `/` means to only match in the same folder as the gitignore file (the gitignore root).
@@ -78,11 +86,19 @@ breadcrumbs:
         - See note above about when to sign commits.
         - See note above about when to sign commits.
         - Configure a signing key in the config first.
         - Configure a signing key in the config first.
         - To sign a commit, use `git commit -S ...`.
         - To sign a commit, use `git commit -S ...`.
-    - Show details about last commit: `git cat-file -p HEAD`
+    - Fixup and auto-squash:
+        - Allows you to add a special type of commit that updates a previous commit, without rebase nightmares.
+        - If you only want to update the directly previous commit, just use `git commit --amend` instead.
+        - Commit the updates to a previous commit, referencing the previous commit: `git commit --fixup=<prev-commit-hash>`
+        - Auto-squash the temporary fixup commit(s) into the original commit(s): `git rebase --autosquash <branch>`
+    - Show details about the last commit: `git cat-file -p HEAD`
+    - Show details about a single file in the last commit: `git cat-file -p HEAD:"filename.txt"` (example)
 - Pulling/pushing:
 - Pulling/pushing:
     - Force push, e.g. when changing history (dangerous): `git push --force`
     - Force push, e.g. when changing history (dangerous): `git push --force`
     - Force push, but only if the remote hasn't changed (less dangerous): `git push --force-with-lease`
     - Force push, but only if the remote hasn't changed (less dangerous): `git push --force-with-lease`
 - Branching:
 - Branching:
+    - Checkout a branch: `git checkout [-b] <branch>` (`-b` if new branch)
+    - Checkout a branch (new command): `git switch [-c] <branch>` (`-c` if new branch)
     - Edit the description of a branch: `git branch --edit-description [branchname]` (defaults to active branch)
     - Edit the description of a branch: `git branch --edit-description [branchname]` (defaults to active branch)
     - Sparse checkout (limit locally present dirs, assume others are unchanged): `git sparse-checkout set <dir ...>`
     - Sparse checkout (limit locally present dirs, assume others are unchanged): `git sparse-checkout set <dir ...>`
 - Stashing:
 - Stashing:
@@ -106,8 +122,31 @@ breadcrumbs:
         - Detect movement in the same commit: `git blame -C <...>`
         - Detect movement in the same commit: `git blame -C <...>`
         - ... or in the commit that created the file: `git blame -C -C <...>`
         - ... or in the commit that created the file: `git blame -C -C <...>`
         - ... or in any commit at all (slow): `git blame -C -C -C <...>`
         - ... or in any commit at all (slow): `git blame -C -C -C <...>`
+- Attributes:
+    - The attribute config is stored in `.gitattributes`.
+    - Used by e.g. Git LFS.
+    - Show EXIF diff for binary picture diffs (repo-level):
+        1. Install `exiftool`.
+        1. Enable EXIF diffing: `echo '*.png diff=exif' >> .gitattributes`
+        1. Set EXIF tool: `git config diff.exif.textconv exiftool`
 - Submodules:
 - Submodules:
     - **TODO**
     - **TODO**
+- Hooks:
+    - Most important hooks:
+        - Commit stuff: `pre-commit`, `prepare-commit-msg`, `commit-msg`, `post-commit`
+        - Rewriting stuff: `pre-rebase`, `post-rewrite`
+        - Merging stuff: `post-merge`, `pre-merge-commit`
+        - Switching/pushing stuff: `post-checkout`, `reference-transaction`, `pre-push`
+        - Server stuff: `pre-receive`, `update`, `proc-receive`, `post-receive`, `post-update`, `push-to-checkout`
+    - The [pre-commit app](https://pre-commit.com/) may be used to manage pre-commit hooks, like checks to run before the commit is allowed to go through. [Husky](https://typicode.github.io/husky/) is another alternative.
+- Git Large File Storage (LFS):
+    - To keep large files in the repo by pushing them to an LFS server but with references in the repo.
+    - Uses Git's "smudge and clean" to pull/push files seemingly like normal Git files.
+    - Git LFS might need to be installed first:
+        - Windows: [Download from git-lfs.com.](https://git-lfs.com/)
+    - Enable LFS for repo (setup hooks): `git lfs install`
+    - Track certain files (setup attributes): `git lfs track "*.mov"`
+    - Show info about file in LFS: `git cat-file -p HEAD:"movie.mov"` (example)
 - Config:
 - Config:
     - Se section below.
     - Se section below.
     - Update global config: `git config --global <key> <value>`
     - Update global config: `git config --global <key> <value>`
@@ -124,7 +163,9 @@ breadcrumbs:
 
 
 ### Example Global Config
 ### Example Global Config
 
 
-`~/.gitconfig`
+File: `~/.gitconfig`
+
+Note: Avoid quotation marks around values.
 
 
 ```ini
 ```ini
 [user]
 [user]
@@ -149,6 +190,9 @@ breadcrumbs:
 [branch]
 [branch]
         # Sorted "git branch" output
         # Sorted "git branch" output
         sort = -committerdate
         sort = -committerdate
+[rebase]
+        # Automaticall update refs by sefault after rebase
+        updateRefs = true
 ```
 ```
 
 
 (Keep up to date with [HON95/configs](https://github.com/HON95/configs/blob/master/git/config).)
 (Keep up to date with [HON95/configs](https://github.com/HON95/configs/blob/master/git/config).)

+ 0 - 0
soft-eng/go.md → swe/go.md


+ 0 - 0
soft-eng/licensing.md → swe/licensing.md


+ 0 - 0
soft-eng/openmp.md → swe/openmp.md


+ 0 - 0
soft-eng/rust.md → swe/rust.md


+ 0 - 0
soft-eng/web-security.md → swe/web-security.md


+ 0 - 0
virt-cont/_name → virt/_name


+ 0 - 0
virt-cont/docker.md → virt/docker.md


+ 0 - 0
virt-cont/k8s.md → virt/k8s.md


+ 0 - 0
virt-cont/libvirt-kvm.md → virt/libvirt-kvm.md


+ 1 - 1
virt-cont/podman.md → virt/podman.md

@@ -117,7 +117,7 @@ Warning: If you have any existing CNI networks, forcing Netavark will break thos
 
 
 ### General
 ### General
 
 
-- See [Docker usage](../docker/#usage).
+- See [Docker usage](/virt/docker/#usage).
     - Most commands are Docker clones and simply replacing `docker` with `podman` in the command will typically work.
     - Most commands are Docker clones and simply replacing `docker` with `podman` in the command will typically work.
     - Configuration files are a bit different.
     - Configuration files are a bit different.
 - Registries:
 - Registries:

+ 3 - 3
virt-cont/proxmox-ve.md → virt/proxmox-ve.md

@@ -53,7 +53,7 @@ See [HON95/ansible](https://github.com/HON95/ansible) (Debian role) and [lae.pro
 
 
 ### Initial Configuration
 ### Initial Configuration
 
 
-Follow the instructions for [Debian server](/config/linux-server/debian/) in addition to the notes and instructions below (read them first).
+Follow the instructions for [Debian server](/linux-server/debian/) in addition to the notes and instructions below (read them first).
 
 
 Warning: Don't install any of the firmware packages, it will remove the PVE firmware packages.
 Warning: Don't install any of the firmware packages, it will remove the PVE firmware packages.
 
 
@@ -294,7 +294,7 @@ The "Cloud-Init" notes can be ignored if you're not using Cloud-Init. See the se
 1. Setup the VM (see the general setup section).
 1. Setup the VM (see the general setup section).
 1. (Recommended) Setup the QEMU guest agent: See the section about it.
 1. (Recommended) Setup the QEMU guest agent: See the section about it.
 1. (Optional) Setup SPICE (for better graphics): See the section about it.
 1. (Optional) Setup SPICE (for better graphics): See the section about it.
-1. More detailed Debian setup: [Debian](/config/linux-server/debian/)
+1. More detailed Debian setup: [Debian](/linux-server/debian/)
 
 
 ### Linux VM Cloud-Init Debian Template
 ### Linux VM Cloud-Init Debian Template
 
 
@@ -531,7 +531,7 @@ Check the host system logs. It may for instance be due to hardware changes or st
 
 
 ### Ceph
 ### Ceph
 
 
-See [Storage: Ceph](/config/linux-server/storage/#ceph) for general notes.
+See [Storage: Ceph](/linux-server/storage/#ceph) for general notes.
 The notes below are PVE-specific.
 The notes below are PVE-specific.
 
 
 #### Notes
 #### Notes

+ 0 - 0
virt-cont/virtualbox.md → virt/virtualbox.md