Compare commits

...

33 Commits

Author SHA1 Message Date
julien f984d59bff "Updates" 2026-06-19 08:58:08 +02:00
julien 036ec2e9f3 "Updates" 2026-06-19 08:55:26 +02:00
julien fd7fed3f3e "Updates" 2026-06-12 16:29:57 +02:00
julien 9d84200a3d "Updates" 2026-06-12 16:29:44 +02:00
julien 73ad7b1d8f "Updates" 2026-06-12 16:29:02 +02:00
julien bc6eff61d2 "Updates" 2026-06-12 16:03:11 +02:00
julien 5dc22ef4c0 "Updates" 2026-06-12 16:02:16 +02:00
julien 3c7e026ef3 "Updates" 2026-06-12 15:36:17 +02:00
julien aa08cb17d6 "Updates" 2026-06-12 15:27:19 +02:00
julien e4701b45fe "Updates" 2026-06-12 14:17:46 +02:00
julien 88946739a2 "Updates" 2026-06-12 14:08:53 +02:00
julien 96e3b2971f "Updates" 2026-06-12 14:08:48 +02:00
julien 38684e47e9 "Updates" 2026-06-12 12:47:50 +02:00
julien 6f44d9cfa8 "Updates" 2026-06-11 08:03:43 +02:00
julien e3d39c10fa "Updates" 2026-06-04 16:55:55 +02:00
julien 7022c40f1a "Updates" 2026-06-04 14:26:19 +02:00
julien fa7e23a602 "Updates" 2026-06-01 17:31:09 +02:00
julien 7ac9d4d467 "Updates" 2026-06-01 17:29:53 +02:00
julien f7c65dcb75 "Updates" 2026-06-01 16:14:32 +02:00
julien 5d04e982ee "Updates" 2026-06-01 16:02:19 +02:00
julien a9f5df877d "Updates" 2026-06-01 12:07:47 +02:00
julien 7d45f81200 "Updates" 2026-05-31 19:38:30 +02:00
julien dd8aa60450 "Updates" 2026-05-31 09:51:52 +02:00
julien 8b6f20bc92 "Updates" 2026-05-30 01:11:13 +02:00
julien 2a4f4722e3 "Updates" 2026-05-26 14:38:04 +02:00
julien b61656bec2 "Updates" 2026-05-23 12:04:18 +02:00
julien 5c6b07c16d "Updates" 2026-05-23 12:03:23 +02:00
julien d6d41b50f9 "Updates" 2026-05-18 19:19:57 +02:00
julien d9eca10775 "Updates" 2026-05-15 14:12:48 +02:00
julien 21ce52e22f "Updates" 2026-05-10 00:23:44 +02:00
julien d5ac9cd0bc "Updates" 2026-05-08 07:47:28 +02:00
julien 9cbce9e2b4 "Updates" 2026-05-07 23:23:39 +02:00
julien db481e3c91 "Updates" 2026-05-07 11:25:07 +02:00
14 changed files with 1682 additions and 899 deletions
+5 -3
View File
@@ -1,5 +1,5 @@
$TTL 3600 $TTL 3600
@ IN SOA dns106.ovh.net. tech.ovh.net. (2076846298 86400 3600 3600000 300) @ IN SOA dns106.ovh.net. tech.ovh.net. (2080297022 86400 3600 3600000 300)
IN NS dns106.ovh.net. IN NS dns106.ovh.net.
IN NS ns106.ovh.net. IN NS ns106.ovh.net.
IN MX 100 mx3.mail.ovh.net. IN MX 100 mx3.mail.ovh.net.
@@ -8,9 +8,10 @@ $TTL 3600
IN MX 0 mx0.mail.ovh.net. IN MX 0 mx0.mail.ovh.net.
IN A 213.186.33.5 IN A 213.186.33.5
IN TXT "v=spf1 include:mx.ovh.com ~all" IN TXT "v=spf1 include:mx.ovh.com ~all"
IN TXT "google-site-verification=j7RPCRYeiAgvZ4uHOD3ZQ4uqi-vPQ-UUmyVD9WXv4t8"
IN TXT "1|www.delmar.bzh" IN TXT "1|www.delmar.bzh"
IN TXT "openpgp4fpr:E22A8974BD3F45E3A827AEB891AFB168A1EAD35C" IN TXT "openpgp4fpr:E22A8974BD3F45E3A827AEB891AFB168A1EAD35C"
IN TXT "google-site-verification=TnvMDaGmjlopLRKrt-mJcJ6tGsE57bTraQy48mcs4mo"
IN TXT "google-site-verification=6WENUO2y1QUIY8IuyP70tTkGNhLyQmP_eQuBazpXgRk"
IN CAA 0 issue "letsencrypt.org" IN CAA 0 issue "letsencrypt.org"
_acme-challenge.mon 60 IN TXT "KIcXU0JrpELQffhG-D3Jr6-LijjvBBSb06QO1-WrSo8" _acme-challenge.mon 60 IN TXT "KIcXU0JrpELQffhG-D3Jr6-LijjvBBSb06QO1-WrSo8"
_autodiscover._tcp IN SRV 0 0 443 pro1.mail.ovh.net. _autodiscover._tcp IN SRV 0 0 443 pro1.mail.ovh.net.
@@ -44,9 +45,10 @@ it IN A 176.188.240.123
jellyfin IN A 176.188.240.123 jellyfin IN A 176.188.240.123
jellyseerr IN A 176.188.240.123 jellyseerr IN A 176.188.240.123
kontadenn IN A 176.188.240.123 kontadenn IN A 176.188.240.123
lai IN A 176.188.240.123
lghn IN A 176.188.240.123 lghn IN A 176.188.240.123
lnk IN A 176.188.240.123
lud IN A 176.188.240.123 lud IN A 176.188.240.123
mailbear IN A 176.188.240.123
minio IN A 176.188.240.123 minio IN A 176.188.240.123
mmgr IN A 176.188.240.123 mmgr IN A 176.188.240.123
nds IN A 176.188.240.123 nds IN A 176.188.240.123
+19
View File
@@ -0,0 +1,19 @@
Jetson Orin Nano
===
[![jetson-orin-nano.webp](./jetson-orin-nano.webp)](./jetson-orin-nano.webp)
[https://developer.nvidia.com/sdk-manager#host_os_comp_matrix](https://developer.nvidia.com/sdk-manager#host_os_comp_matrix)
[https://www.jetson-ai-lab.com/tutorials/initial-setup-sdk-manager/](https://www.jetson-ai-lab.com/tutorials/initial-setup-sdk-manager/)
---
### Documentation
[https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit](https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit)
##### Server World
[https://www.server-world.info/en/note?os=Debian\_12&p=download&f=1](https://www.server-world.info/en/note?os=Debian_12&p=download&f=1)
@@ -1,10 +1,8 @@
Compute Modules Pine64 SoQuartz (RK3566)
=== ===
### Install OS / headless installation ### Install OS / headless installation
#### SoQuartz (RK3566)
[![soquartz-cm.webp](./soquartz-cm.webp)](./soquartz-cm.webp) [![soquartz-cm.webp](./soquartz-cm.webp)](./soquartz-cm.webp)
##### Specifications ##### Specifications
@@ -96,7 +94,7 @@ sudo vim /etc/update-motd.d/01-cowsay
``` ```
```bash ```bash
sudo vim ~/local/bin/now sudo vim ~/.local/bin/now
``` ```
```bash ```bash
@@ -220,7 +218,23 @@ exit 0
```bash ```bash
sudo chmod +x /etc/update-motd.d/01-cowsay sudo chmod +x /etc/update-motd.d/01-cowsay
sudo chmod +x ~/local/bin/now sudo chmod +x ~/.local/bin/now
```
```bash
sudo vim .bashrc
```
```bash
...
export PATH="/home/pleb/.local/bin:$PATH"
# Splash Calendar and time
now
# ASCII Linux distribution display
# screenfetch
``` ```
#### Networking #### Networking
@@ -234,96 +248,6 @@ sudo apt install lm-sensors fancontrol read-edid i2c-tools libi2c-dev python3-sm
sudo sensors-detect sudo sensors-detect
``` ```
---
#### Turing RK1 (RK3588)
[![turing-rk1-cm.webp](./turing-rk1-cm.webp)](./turing-rk1-cm.webp)
##### Specifications
<table id="bkmrk-instruction-set-armv"><tbody><tr><td>**Instruction Set**</td><td>ARMv8-A (64-bit)</td></tr><tr><td>**OS Support**</td><td>Ubuntu Server 22.04 LTS</td></tr><tr><td>**CPUs**</td><td>8× | 4× ARM Cortex-A76 | 4× ARM Cortex-A55 | DynamIQ</td></tr><tr><td>**GPU**</td><td>G610 GPU
Support OpenGLES 1.1, 2.0, and 3.2, OpenCL up to 2.2 and Vulkan1.2
Proprietary 2D hardware acceleration engine</td></tr><tr><td>**NPU**</td><td>6 TOPS</td></tr><tr><td>**RAM**</td><td>LPDDR4 up to 32 GB</td></tr><tr><td>**Storage**</td><td>32 G eMMC 5.1, SD 3.0</td></tr><tr><td>**Ethernet**</td><td>1000Mbps</td></tr><tr><td>**USB**</td><td>2x USB 3.0, 2x USB 2.0</td></tr><tr><td>**PCIe**</td><td>PCIe Gen3</td></tr><tr><td>**MIPI**</td><td>4-Lane MIPI-DSI, 4-Lane MIPI-CSI</td></tr><tr><td>**Digital Audio port**</td><td>2× I2S</td></tr><tr><td>**HDMI**</td><td>HDMI 2.1, 8K@60fps</td></tr><tr><td>**Video input port**</td><td>2× MIPI-CSI RX 4× lanes
1× MIPI-CSI DPHY RX 4× lanes</td></tr><tr><td>**Display output port**</td><td>1× MIPI-DSI DPHY 2× lanes
1× HDMI 2.1
1× DP 1.4</td></tr><tr><td>**VPU**</td><td>VPU 2.0, supporting 8K video</td></tr><tr><td>**Video Encoder**</td><td>H264, 8K@30FPS
VP9/H265, 8k@60FPS
AV1/AVS2, 4k@60FPS</td></tr><tr><td>**Video Decoder**</td><td>H265/H264/VP9/AV1/AVS2 up to 8K@60fps</td></tr><tr><td>**Power**</td><td>5V/3A via USB Type-C</td></tr><tr><td>**Operating Temp**</td><td>-20°C to 70°C</td></tr><tr><td>**Storage Temp**</td><td>-40°C to 85°C</td></tr><tr><td>**Weight**</td><td>17g</td></tr><tr><td>**Form Factor**</td><td>69.6mm x 45mm
260-pin SO-DIMM connector</td></tr></tbody></table>
##### Setup
[https://joshua-riek.github.io/ubuntu-rockchip-download/boards/turing-rk1.html](https://joshua-riek.github.io/ubuntu-rockchip-download/boards/turing-rk1.html)
> bob (192.168.1.11) | gary (192.168.1.13) | sandy (192.168.1.14) | sheldon (192.168.1.16) | pearl (192.168.1.19)
> pleb / transatlantique
```bash
sudo useradd pleb
sudo groupadd sudo
sudo usermod -aG sudo pleb
echo "pleb ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/pleb
```
```bash
sudo hostnamectl set-hostname [hostname]
sudo dpkg-reconfigure tzdata
(. /etc/lsb-release &&
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh |
sudo env os=ubuntu dist="${DISTRIB_CODENAME}" bash)
sudo apt update && sudo apt install -y git-all git-lfs curl wget screenfetch net-tools open-iscsi python3 python3-pip build-essential libssl-dev libffi-dev python3-dev wireguard
```
### GPU Drivers
```bash
cd /usr/lib && sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11-wayland-gbm.so
cd /lib/firmware && sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/firmware/g610/mali_csffw.bin
sudo apt update && sudo apt install -y mesa-opencl-icd
sudo mkdir -p /etc/OpenCL/vendors && echo "/usr/lib/libmali-valhall-g610-g6p0-x11-wayland-gbm.so" | sudo tee /etc/OpenCL/vendors/mali.icd
sudo apt install -y ocl-icd-opencl-dev
sudo apt install -y libxcb-dri2-0 libxcb-dri3-0 libwayland-client0 libwayland-server0 libx11-xcb1
sudo apt install -y clinfo vulkan-tools
```
```bash
clinfo
vulkaninfo
```
**PS :** [Ubuntu Pro](https://ubuntu.com/pro/tutorial)
---
#### Jetson Orin Nano
[![jetson-orin-nano.webp](./jetson-orin-nano.webp)](./jetson-orin-nano.webp)
[https://developer.nvidia.com/sdk-manager#host_os_comp_matrix](https://developer.nvidia.com/sdk-manager#host_os_comp_matrix)
[https://www.jetson-ai-lab.com/tutorials/initial-setup-sdk-manager/](https://www.jetson-ai-lab.com/tutorials/initial-setup-sdk-manager/)
---
### Documentation
[https://docs.turingpi.com](https://docs.turingpi.com)
[https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit](https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit)
##### help.turingpi.com
jme69@pm.me
Ln4@iJMNn85h2Xrx
[https://help.turingpi.com/hc/en-us](https://help.turingpi.com/hc/en-us "https://help.turingpi.com/hc/en-us")
##### Server World ##### Server World
+189
View File
@@ -0,0 +1,189 @@
Turing RK1 (RK3588)
===
[![turing-rk1-cm.webp](./turing-rk1-cm.webp)](./turing-rk1-cm.webp)
##### Specifications
<table id="bkmrk-instruction-set-armv"><tbody><tr><td>**Instruction Set**</td><td>ARMv8-A (64-bit)</td></tr><tr><td>**OS Support**</td><td>Ubuntu Server 22.04 LTS</td></tr><tr><td>**CPUs**</td><td>8× | 4× ARM Cortex-A76 | 4× ARM Cortex-A55 | DynamIQ</td></tr><tr><td>**GPU**</td><td>G610 GPU
Support OpenGLES 1.1, 2.0, and 3.2, OpenCL up to 2.2 and Vulkan1.2
Proprietary 2D hardware acceleration engine</td></tr><tr><td>**NPU**</td><td>6 TOPS</td></tr><tr><td>**RAM**</td><td>LPDDR4 up to 32 GB</td></tr><tr><td>**Storage**</td><td>32 G eMMC 5.1, SD 3.0</td></tr><tr><td>**Ethernet**</td><td>1000Mbps</td></tr><tr><td>**USB**</td><td>2x USB 3.0, 2x USB 2.0</td></tr><tr><td>**PCIe**</td><td>PCIe Gen3</td></tr><tr><td>**MIPI**</td><td>4-Lane MIPI-DSI, 4-Lane MIPI-CSI</td></tr><tr><td>**Digital Audio port**</td><td>2× I2S</td></tr><tr><td>**HDMI**</td><td>HDMI 2.1, 8K@60fps</td></tr><tr><td>**Video input port**</td><td>2× MIPI-CSI RX 4× lanes
1× MIPI-CSI DPHY RX 4× lanes</td></tr><tr><td>**Display output port**</td><td>1× MIPI-DSI DPHY 2× lanes
1× HDMI 2.1
1× DP 1.4</td></tr><tr><td>**VPU**</td><td>VPU 2.0, supporting 8K video</td></tr><tr><td>**Video Encoder**</td><td>H264, 8K@30FPS
VP9/H265, 8k@60FPS
AV1/AVS2, 4k@60FPS</td></tr><tr><td>**Video Decoder**</td><td>H265/H264/VP9/AV1/AVS2 up to 8K@60fps</td></tr><tr><td>**Power**</td><td>5V/3A via USB Type-C</td></tr><tr><td>**Operating Temp**</td><td>-20°C to 70°C</td></tr><tr><td>**Storage Temp**</td><td>-40°C to 85°C</td></tr><tr><td>**Weight**</td><td>17g</td></tr><tr><td>**Form Factor**</td><td>69.6mm x 45mm
260-pin SO-DIMM connector</td></tr></tbody></table>
# TuringPi hosts
## Flash modules
https://armbian.com/fr
### First login
> root/1234
Add pleb user and change password to transatlantique
### Complete setup
```bash
sudo usermod -aG sudo pleb
echo "pleb ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/pleb
sudo hostnamectl set-hostname ...
(. /etc/lsb-release &&
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh |
sudo env os=ubuntu dist="${DISTRIB_CODENAME}" bash)
sudo apt update && sudo apt install -y vim git-all git-lfs curl wget cryptsetup dmsetup open-iscsi screenfetch net-tools open-iscsi python3 python3-pip build-essential libssl-dev libffi-dev python3-dev wireguard
sudo vim /etc/hosts
```
```
127.0.0.1 localhost
127.0.1.1 <hostname> <hostname>.local
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
#
192.168.1.11 bob
192.168.1.12 carlo
#
192.168.1.15 krabs
192.168.1.17 bernie
#
192.168.1.14 sandy
192.168.1.13 gary
192.168.1.16 sheldon
192.168.1.19 pearl
#
192.168.1.18 patrick
192.168.1.20 karen
#
192.168.1.53 retropie
```
#### On PC
```bash
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@192.168.1.xxx
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
```
#### On host
```bash
vim .ssh/authorized_keys
sudo vim /etc/ssh/sshd_config
```
```
# ----------------------------------------
PasswordAuthentication no
PermitEmptyPasswords no
# ----------------------------------------
```
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBLk24u7FT8PhAdM8EVUFGlOi0hle4CW8L284E1foUhS julien@julien-pc
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE6wr+DUbcfVTltoWT6gbPRY3geUYNhgN7/CLcMaMu0B eliot@toile-win
```
### Format and mount the disks
```bash
sudo fdisk -l
**With disk <xxx>**
sudo fdisk /dev/<xxx>
(create new primary partition)
sudo mkfs -t ext4 /dev/<xxxp1>
sudo blkid -s UUID -o value /dev/<xxxp1>
```
### UUIDs
```
sandy
nvme0n1p1 195a1632-e6b3-41a4-8b2b-eea2fde75cfc
sda1 8a758c09-3ad8-4681-bcb0-41ced1d316e1
gary
nvme0n1p1 7395f5ad-c422-4a09-9a1f-5c8bf96b00f5
sheldon
nvme0n1p1 0a52875c-41a6-419f-b322-33ed2cec9717
sda1 d4cad1ad-6154-4eb3-b1a1-2c613a6cbe51
sdb1 c445f17b-56b0-4606-9d14-db9728da0aa4
pearl
nvme0n1p1 da49c557-732e-4bbc-b002-f9c627e2cf82
```
### Add mount point to fstab
```bash
sudo mkdir -p /mnt/<folder>
echo "UUID=... /mnt/<folder> ext4 defaults 0 0" | sudo tee -a /etc/fstab
```
```bash
sudo mount -a
sudo systemctl daemon-reload
df -h /mnt/<folder>
```
---
# ?
### GPU Drivers
```bash
cd /usr/lib && sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11-wayland-gbm.so
cd /lib/firmware && sudo wget https://github.com/JeffyCN/mirrors/raw/libmali/firmware/g610/mali_csffw.bin
sudo apt update && sudo apt install -y mesa-opencl-icd
sudo mkdir -p /etc/OpenCL/vendors && echo "/usr/lib/libmali-valhall-g610-g6p0-x11-wayland-gbm.so" | sudo tee /etc/OpenCL/vendors/mali.icd
sudo apt install -y ocl-icd-opencl-dev
sudo apt install -y libxcb-dri2-0 libxcb-dri3-0 libwayland-client0 libwayland-server0 libx11-xcb1
sudo apt install -y clinfo vulkan-tools
```
```bash
clinfo
vulkaninfo
```
---
### Documentation
[https://docs.turingpi.com](https://docs.turingpi.com)
##### help.turingpi.com
jme69@pm.me
Ln4@iJMNn85h2Xrx
[https://help.turingpi.com/hc/en-us](https://help.turingpi.com/hc/en-us "https://help.turingpi.com/hc/en-us")
##### Server World
[https://www.server-world.info/en/note?os=Debian\_12&amp;p=download&amp;f=1](https://www.server-world.info/en/note?os=Debian_12&p=download&f=1)
+50 -33
View File
@@ -25,7 +25,7 @@ sudo mkdir -p /mnt/<folder>
echo "UUID=... /mnt/<folder> ext4 defaults 0 0" | sudo tee -a /etc/fstab echo "UUID=... /mnt/<folder> ext4 defaults 0 0" | sudo tee -a /etc/fstab
``` ```
#### bob (...) #### bob (mmcblk0 / nvme0n1 / sda / sdb)
``` ```
# /etc/fstab: static file system information. # /etc/fstab: static file system information.
# #
@@ -43,51 +43,66 @@ UUID=15c5c8b9-af8d-4d35-bf0b-47443d554971 / ext4 errors=remount
UUID=1c99fbca-6863-4f8a-b8da-4bbea3fbe8c9 none swap sw 0 0 UUID=1c99fbca-6863-4f8a-b8da-4bbea3fbe8c9 none swap sw 0 0
# nvme # nvme
UUID=b656c935-5ef2-45a6-894e-c7062a75a862 /mnt/ssd ext4 defaults 0 0 UUID=b656c935-5ef2-45a6-894e-c7062a75a862 /mnt/ssd ext4 defaults 0 0
/mnt/ssd/var /var none bind
/mnt/ssd/tmp /tmp none bind
/mnt/ssd/home /home none bind
``` ```
#### carlo (nvme0n1 / sda / sdb) (nfs server --> backups) #### carlo (mmcblk0 / sda )
``` ```
proc /proc proc defaults 0 0 # /etc/fstab: static file system information.
PARTUUID=550961db-01 /boot/firmware vfat defaults 0 2 #
PARTUUID=550961db-02 / ext4 defaults,noatime 0 1 # Use 'blkid' to print the universally unique identifier for a
# LVM # device; this may be used with UUID= as a more robust way to name devices
/dev/hdds/data /mnt/data ext4 defaults,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2 # that works even if disks are added and removed. See fstab(5).
# NFS exports #
/mnt/data/backup /srv/nfs4/backup none bind,nofail 0 0 # systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/mmcblk0p2 during installation
UUID=327ff1db-0f93-49e7-9f80-79964eb2ad02 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=B23E-A140 /boot/efi vfat umask=0077 0 1
# swap was on /dev/mmcblk0p3 during installation
UUID=69691db2-1213-4f0b-8797-a246e6924c4a none swap sw 0 0
# ssd
UUID=6702c3b0-eb03-4c1f-9ddc-56f4f7736222 /mnt/ssd ext4 defaults 0 0
/mnt/ssd/var /var none bind
/mnt/ssd/tmp /tmp none bind
/mnt/ssd/home /home none bind
``` ```
#### sandy (sda / nvme0n1) #### sandy (nvme0n1 / sda )
``` ```
# <file system> <mount point> <type> <options> <dump> <fsck> UUID=a92029d5-96be-47f6-8d45-ea81995e0a1b / ext4 defaults,commit=120,errors=remount-ro 0 1
UUID=1cf633ab-4f5f-42da-b347-31282732a446 / ext4 defaults,x-systemd.growfs 0 1 tmpfs /tmp tmpfs defaults,nosuid 0 0
# nvme UUID=195a1632-e6b3-41a4-8b2b-eea2fde75cfc /mnt/ssd ext4 defaults 0 0
UUID=e2e3a295-9731-4aa2-996f-c72c2b81f40f /mnt/ssd ext4 defaults 0 0 UUID=8a758c09-3ad8-4681-bcb0-41ced1d316e1 /mnt/hdd ext4 defaults 0 0
``` ```
#### gary (nvme0n1 / sda) #### gary (nvme0n1)
``` ```
# <file system> <mount point> <type> <options> <dump> <fsck> UUID=a92029d5-96be-47f6-8d45-ea81995e0a1b / ext4 defaults,commit=120,errors=remount-ro 0 1
UUID=1cf633ab-4f5f-42da-b347-31282732a446 / ext4 defaults,x-systemd.growfs 0 1 tmpfs /tmp tmpfs defaults,nosuid 0 0
# nvme UUID=7395f5ad-c422-4a09-9a1f-5c8bf96b00f5 /mnt/ssd ext4 defaults 0 0
UUID=124046b7-f656-4691-933b-4673e5abbb17 /mnt/ssd ext4 defaults 0 0
# hdd
UUID=deebbc34-ca9b-4752-abfc-89f7ed24bcf1 /mnt/hdd ext4 defaults 0 0
``` ```
#### sheldon (nvme0n1) #### sheldon (nvme0n1 / sda / sdb)
``` ```
# <file system> <mount point> <type> <options> <dump> <fsck> UUID=a92029d5-96be-47f6-8d45-ea81995e0a1b / ext4 defaults,commit=120,errors=remount-ro 0 1
UUID=1cf633ab-4f5f-42da-b347-31282732a446 / ext4 defaults,x-systemd.growfs 0 1 tmpfs /tmp tmpfs defaults,nosuid 0 0
# nvme UUID=0a52875c-41a6-419f-b322-33ed2cec9717 /mnt/ssd ext4 defaults 0 0
UUID=fd0d6603-c6f1-43fe-a993-39f79b4e3eb8 /mnt/ssd ext4 defaults 0 0 # hdds
# sda1 d4cad1ad-6154-4eb3-b1a1-2c613a6cbe51
# sdb1 c445f17b-56b0-4606-9d14-db9728da0aa4
``` ```
#### pearl (nvme0n1) #### pearl (nvme0n1)
``` ```
# <file system> <mount point> <type> <options> <dump> <fsck> UUID=a92029d5-96be-47f6-8d45-ea81995e0a1b / ext4 defaults,commit=120,errors=remount-ro 0 1
UUID=1cf633ab-4f5f-42da-b347-31282732a446 / ext4 defaults,x-systemd.growfs 0 1 tmpfs /tmp tmpfs defaults,nosuid 0 0
# nvme UUID=da49c557-732e-4bbc-b002-f9c627e2cf82 /mnt/ssd ext4 defaults 0 0
UUID=6d255d62-eafe-4333-87b0-9e0c6bf6a44d /mnt/ssd ext4 defaults 0 0
``` ```
#### krabs (sad / sdb) (nfs server) #### krabs (sad / sdb) (nfs server)
@@ -111,9 +126,11 @@ UUID=e8d74f7a-642a-486d-92db-d39388d1545f /mnt/ssd ext4 defaults
#### patrick (nvme0n1) #### patrick (nvme0n1)
``` ```
UUID=0ED4-57AA /config vfat defaults,x-systemd.automount,fmask=0077,dmask=0077 0 2 UUID=9C26-3AB6 /config vfat defaults,x-systemd.automount,fmask=0077,dmask=0077 0 2
UUID=0ED4-A6E5 /boot/efi vfat defaults,x-systemd.automount,fmask=0077,dmask=0077 0 2 UUID=9C26-8CEE /boot/efi vfat defaults,x-systemd.automount,fmask=0077,dmask=0077 0 2
UUID=8ac0019e-35c5-4065-828a-804da615ee7a / ext4 defaults 0 1 UUID=ce95976e-7c04-4b82-8251-c780b6b3fac1 / ext4 defaults 0 1
# NFS
krabs:/srv/nfs4/media /nfs/media nfs _netdev,x-systemd.automount,nofail,noatime,nolock,tcp,bg,actimeo=1800
``` ```
#### Check #### Check
+99 -84
View File
@@ -45,6 +45,26 @@ ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@192.168.1.xxx
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname> ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
``` ```
#### Keys
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBLk24u7FT8PhAdM8EVUFGlOi0hle4CW8L284E1foUhS julien@julien-pc
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE6wr+DUbcfVTltoWT6gbPRY3geUYNhgN7/CLcMaMu0B eliot@toile-win
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKmttayKqj6Z290hMCc97v4dMZTSUz4lYgXR0NtcRr8U delmar@thinkpad
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFlta/YdJ0ztVpZsP/nh37Fn+H5Hxg/Mw+jR91f5Gf08 pleb@bob
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN9mn7tuYWTPLbH2MViAkiKSUkXj4NauCUgzj778LoQ2 pleb@carlo
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKL7A0xvHSfmWo+LUHdWWb03a5NXN1IlbLS5iSHxs3zw pleb@sandy
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHpnC0ftrLwzhsmonDtSvh38Oi5OGe1iOaQjlsm1RlD2 pleb@gary
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII9USnPFJx/PbV+KnlTN4o3f4SwiuHCWaAlE8aKcY4Ne pleb@sheldon
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMrWtBN3yRh3PHG+7UUeRUIvhuMcwtR88FzUn4xS5FyV pleb@pearl
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMfd7PrJ50jHrG6yjIJ5u7jKTyXi9mPn8/oa+HNAVNsf pleb@krabs
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJtrn0Oj2IstMwzheIZcJGBA8RNWTyNtksaK2LhvjNul pleb@bernie
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHh1LTS5PzsQ45xiRbyxBbCurI7JdEpdkCsbx3mlYaaR pleb@patrick
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaOsYNLsoYcXDV3I7zbJABeIo7CJOdMxUN86rH1/IH9 pleb@karen
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCiAt5dNKbcaYmmsMGitBTaYoKkfEMJ5dGBzbSIDF4WdmPQGFmNf3urAxM1MDjlW7ifzfia7I49pc+Sndo0+b/FiS9FIMWwlNmOrr5c24XXZvYhPvk2M9ghEhXgLGDO3N/xPG6M+rrEzeRFXCdlHZuan6/iUdGcDQtgS2q4ciAMCk8V0QptmvWYqgs/CMsnU3WULUA+abKdx605zzG0inF6pNFaIO50mRraPQsWq34SxXknkJnTBHFogj9NyV/Y9BhiKBm3IXn2f9cVK5/+8Af91w5uI07kpLnPXSDkEZFKK4J48dCdDLhOk2H1/PzapkwW5pF8dhBeKVW2W7oyvuWplKj7cS2dS9ODqqae5kgI83IBdOxQ3VONRCHiUVbezREON66xpOncmWq/YhegWCCHviHUzO0DtpxQXPnZTcX6LwiWhZ9vzGdostJ72i2PxtU155S5PBqaXF+u01cbD0yOuA364LIri2mJxgXHqQH6VwgUJYA7G3Ln4KTueHc9oQxZS5+zZA6LfIu0AB0o7RGcvRV2F+434svy9aXceOUQ2n/5qWo6jmqtOsx2IGkiBkCCHBK8G/83mWBWcfbzXdfPDj7a2xeMoiAU5Rr99JIJkiplDMVrR48diGtCxRYjitWUBigbz6Yy0ozowT6TUvK2PaPUgfhxVK2lhi/et37+/w== NVIDIA-SDK-Manager
```
=== ===
### Map ### Map
@@ -96,14 +116,14 @@ ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
```bash ```bash
_,met$$$$$gg. pleb@carlo _,met$$$$$gg. pleb@carlo
,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie ,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie
,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.12.47+rpt-rpi-v8 ,g$$P"" """Y$$.". Kernel: x86_64 Linux 6.12.90+deb13.1-amd64
,$$P' `$$$. Uptime: 6m ,$$P' `$$$. Uptime: 2m
',$$P ,ggs. `$$b: Packages: 707 ',$$P ,ggs. `$$b: Packages: 429
`d$$' ,$P"' . $$$ Shell: bash 5.2.37 `d$$' ,$P"' . $$$ Shell: bash 5.2.37
$$P d$' , $$P Disk: 4,2G / 33G (14%) $$P d$' , $$P Disk: 1,6G / 269G (1%)
$$: $$. - ,d$$' CPU: ARM Cortex-A72 @ 4x 1,5GHz $$: $$. - ,d$$' CPU: Intel Atom E3950 @ 4x 2GHz [35.0°C]
$$\; Y$b._ _,d$P' GPU: $$\; Y$b._ _,d$P' GPU: HD Graphics 505
Y$$. `.`"Y$$$$P"' RAM: 358MiB / 7820MiB Y$$. `.`"Y$$$$P"' RAM: 432MiB / 15843MiB
`$$b "-.__ `$$b "-.__
`Y$$ `Y$$
`Y$$. `Y$$.
@@ -117,48 +137,45 @@ ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
### gary ### gary
```bash ```bash
./+o+- hostname: gary _,met$$$$$gg. pleb@gary
yyyyy- -yyyyyy+ OS: Ubuntu 25.10 questing ,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie
://+//////-yyyyyyo Kernel: aarch64 Linux 6.11.0-1006-rockchip ,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.18.35-current-rockchip64
.++ .:/++++++/-.+sss/` Uptime: ,$$P' `$$$. Uptime: 2m
.:++o: /++++++++/:--:/- Packages: 1447 ',$$P ,ggs. `$$b: Packages: 309
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.2.37 `d$$' ,$P"' . $$$ Shell: bash 5.2.37
.:+o:+o/. `+sssoo+/ Disk: 1TB $$P d$' , $$P Disk: 1,7G / 974G (1%)
.++/+:+oo+o:` /sssooo. CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1.8GHz $$: $$. - ,d$$' CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1,8GHz
/+++//+:`oo+o /::--:. GPU: Mali G610 $$\; Y$b._ _,d$P' RAM: 441MiB / 15713MiB
\+/+o+++`o++o ++////. RAM: 15959MiB Y$$. `.`"Y$$$$P"'
.++.o+++oo+:` /dddhhh. `$$b "-.__
.+.o+oo:. `oddhhhh+ `Y$$
\+.++o+o``-````.:ohdhhhhh+ `Y$$.
`:o+++ `ohhhhhhhhyo++os: `$$b.
.o:`.syhhhhhhh/.oo++o` `Y$$b.
/osyyyyyyo++ooo+++/ `"Y$b._
````` +oo+++o\: `""""
`oo++.
``` ```
### sandy ### sandy
```bash ```bash
./+o+- hostname: sandy _,met$$$$$gg. pleb@sandy
yyyyy- -yyyyyy+ OS: Ubuntu 25.10 questing ,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie
://+//////-yyyyyyo Kernel: aarch64 Linux 6.11.0-1006-rockchip ,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.18.35-current-rockchip64
.++ .:/++++++/-.+sss/` Uptime: ,$$P' `$$$. Uptime: 2m
.:++o: /++++++++/:--:/- Packages: 1262 ',$$P ,ggs. `$$b: Packages: 309
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.2.37 `d$$' ,$P"' . $$$ Shell: bash 5.2.37
.:+o:+o/. `+sssoo+/ Disk: 1TB / 1TB $$P d$' , $$P Disk: 1,7G / 970G (1%)
.++/+:+oo+o:` /sssooo. CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1.8GHz $$: $$. - ,d$$' CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1,8GHz
/+++//+:`oo+o /::--:. RAM: 7929MiB $$\; Y$b._ _,d$P' RAM: 402MiB / 7683MiB
\+/+o+++`o++o ++////. Y$$. `.`"Y$$$$P"'
.++.o+++oo+:` /dddhhh. `$$b "-.__
.+.o+oo:. `oddhhhh+ `Y$$
\+.++o+o``-````.:ohdhhhhh+ `Y$$.
`:o+++ `ohhhhhhhhyo++os: `$$b.
.o:`.syhhhhhhh/.oo++o` `Y$$b.
/osyyyyyyo++ooo+++/ `"Y$b._
````` +oo+++o\: `""""
`oo++.
``` ```
### krabs ([NFS Server](https://bookstack.delmar.bzh/books/turing-pi/page/nfs-server "NFS Server")) ### krabs ([NFS Server](https://bookstack.delmar.bzh/books/turing-pi/page/nfs-server "NFS Server"))
@@ -186,46 +203,44 @@ ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
### sheldon ### sheldon
```bash ```bash
./+o+- hostname: sheldon _,met$$$$$gg. pleb@sheldon
yyyyy- -yyyyyy+ OS: Ubuntu 25.10 questing ,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie
://+//////-yyyyyyo Kernel: aarch64 Linux 6.11.0-1006-rockchip ,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.18.35-current-rockchip64
.++ .:/++++++/-.+sss/` Uptime: ,$$P' `$$$. Uptime: 3m
.:++o: /++++++++/:--:/- Packages: 1053 ',$$P ,ggs. `$$b: Packages: 309
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.2.37 `d$$' ,$P"' . $$$ Shell: bash 5.2.37
.:+o:+o/. `+sssoo+/ Disk: 1TB / 1.8TB $$P d$' , $$P Disk: 1,7G / 974G (1%)
.++/+:+oo+o:` /sssooo. CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1.8GHz $$: $$. - ,d$$' CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1,8GHz
/+++//+:`oo+o /::--:. RAM: 15959MiB $$\; Y$b._ _,d$P' RAM: 445MiB / 15713MiB
\+/+o+++`o++o ++////. Y$$. `.`"Y$$$$P"'
.++.o+++oo+:` /dddhhh. `$$b "-.__
.+.o+oo:. `oddhhhh+ `Y$$
\+.++o+o``-````.:ohdhhhhh+ `Y$$.
`:o+++ `ohhhhhhhhyo++os: `$$b.
.o:`.syhhhhhhh/.oo++o` `Y$$b.
/osyyyyyyo++ooo+++/ `"Y$b._
````` +oo+++o\: `""""
`oo++.
``` ```
### pearl ### pearl
```bash ```bash
./+o+- pleb@pearl _,met$$$$$gg. pleb@pearl
yyyyy- -yyyyyy+ OS: Ubuntu 25.10 questing ,g$$$$$$$$$$$$$$$P. OS: Debian 13 trixie
://+//////-yyyyyyo Kernel: aarch64 Linux 6.11.0-1006-rockchip ,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.18.35-current-rockchip64
.++ .:/++++++/-.+sss/` Uptime: 1h 36m ,$$P' `$$$. Uptime: 3m
.:++o: /++++++++/:--:/- Packages: 878 ',$$P ,ggs. `$$b: Packages: 309
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.2.37 `d$$' ,$P"' . $$$ Shell: bash 5.2.37
.:+o:+o/. `+sssoo+/ Disk: 3.7G / 29G (14%) $$P d$' , $$P Disk: 1,7G / 952G (1%)
.++/+:+oo+o:` /sssooo. CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1.8GHz $$: $$. - ,d$$' CPU: ARM Cortex-A55 Cortex-A76 @ 8x 1,8GHz
/+++//+:`oo+o /::--:. GPU: $$\; Y$b._ _,d$P' RAM: 473MiB / 15713MiB
\+/+o+++`o++o ++////. RAM: 550MiB / 15959MiB Y$$. `.`"Y$$$$P"'
.++.o+++oo+:` /dddhhh. `$$b "-.__
.+.o+oo:. `oddhhhh+ `Y$$
\+.++o+o``-````.:ohdhhhhh+ `Y$$.
`:o+++ `ohhhhhhhhyo++os: `$$b.
.o:`.syhhhhhhh/.oo++o` `Y$$b.
/osyyyyyyo++ooo+++/ `"Y$b._
````` +oo+++o\: `""""
`oo++.
``` ```
### bernie ### bernie
@@ -256,12 +271,12 @@ ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@<hostname>
_,met$$$$$gg. pleb@patrick _,met$$$$$gg. pleb@patrick
,g$$$$$$$$$$$$$$$P. OS: Debian 12 bookworm ,g$$$$$$$$$$$$$$$P. OS: Debian 12 bookworm
,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.6.89-3-sky1 ,g$$P"" """Y$$.". Kernel: aarch64 Linux 6.6.89-3-sky1
,$$P' `$$$. Uptime: 14m ,$$P' `$$$. Uptime: 3m
',$$P ,ggs. `$$b: Packages: 1621 ',$$P ,ggs. `$$b: Packages: 1535
`d$$' ,$P"' . $$$ Shell: bash 5.2.15 `d$$' ,$P"' . $$$ Shell: bash 5.2.15
$$P d$' , $$P Disk: 7,2G / 955G (1%) $$P d$' , $$P Disk: 6,1G / 955G (1%)
$$: $$. - ,d$$' CPU: CIX P1 CD8180 @ 12x 2,6GHz $$: $$. - ,d$$' CPU: CIX P1 CD8180 @ 12x 2,6GHz
$$\; Y$b._ _,d$P' RAM: 7166MiB / 31675MiB $$\; Y$b._ _,d$P' RAM: 7265MiB / 31675MiB
Y$$. `.`"Y$$$$P"' Y$$. `.`"Y$$$$P"'
`$$b "-.__ `$$b "-.__
`Y$$ `Y$$
@@ -1,4 +1,7 @@
#### Installation de kubectl Kubernetes (K3Sup)
===
### Installation de kubectl ?
```bash ```bash
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
@@ -11,7 +14,7 @@ sudo apt-get update
sudo apt-get install -y kubectl sudo apt-get install -y kubectl
``` ```
#### Installation de k3sup : ### Installation de k3sup :
```bash ```bash
# Avec curl # Avec curl
@@ -24,19 +27,6 @@ chmod +x k3sup
sudo mv k3sup /usr/local/bin/ sudo mv k3sup /usr/local/bin/
``` ```
#### Configuration sudo sans mot de passe :
```bash
# Ajout de l'utilisateur au groupe sudo
sudo usermod -aG sudo pleb
# Configuration pour éviter la saisie de mot de passe
# debian
echo "pleb ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/pleb
# ubuntu
echo "pleb ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/90-cloud-init-users
```
#### Premier déploiement : #### Premier déploiement :
```bash ```bash
@@ -62,18 +52,31 @@ kubectl get nodes -o wide
kubectl get pods -n kube-system kubectl get pods -n kube-system
``` ```
#### Validation : #### Setting labels:
```bash
# sudo k3s kubectl label nodes xxx kubernetes.io/role=worker
kubectl label nodes gary kubernetes.io/role=worker
kubectl label nodes sheldon kubernetes.io/role=worker
kubectl label nodes pearl kubernetes.io/role=worker
# sudo k3s kubectl label nodes sandy node-type=worker
kubectl label nodes gary node-type=worker
kubectl label nodes sheldon node-type=worker
kubectl label nodes pearl node-type=worker
```
```bash ```bash
kubectl get nodes kubectl get nodes
NAME STATUS ROLES AGE VERSION
gary Ready <none> 77s v1.34.4+k3s1
sandy Ready control-plane 39m v1.34.4+k3s1
sheldon Ready <none> 48s v1.34.4+k3s1
pearl Ready <none> 48s v1.34.4+k3s1
``` ```
```
NAME STATUS ROLES AGE VERSION
gary Ready worker 82m v1.35.5+k3s1
pearl Ready worker 81m v1.35.5+k3s1
sandy Ready control-plane 84m v1.35.5+k3s1
sheldon Ready worker 82m v1.35.5+k3s1
```
### Helm ### Helm
@@ -119,63 +122,6 @@ kubectl --namespace kube-system port-forward $POD_NAME 8080:$CONTAINER_PORT
kubectl create token bb-headlamp --namespace kube-system kubectl create token bb-headlamp --namespace kube-system
``` ```
#### [longhorn](https://longhorn.io)
```bash
USER=admin; PASSWORD=v5bB4OQRDfY5tFJ1; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" >> auth
sudo k3s kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
vim longhorn-ingress.yml
```
```
---
apiVersion: v1
kind: Secret
metadata:
name: longhorn-basic-auth-secret
namespace: longhorn-system
data:
users: |2
YWRtaW46JGFwcjEkMmp5TzMwYmskRE5IV0VEQW1VQXFVajVGOHNvdXNVMAoK
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: longhorn-basic-auth-middleware
spec:
basicAuth:
secret: longhorn-basic-auth-secret
realm: "Longhorn Dashboard"
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
spec.ingressClassName: traefik
traefik.ingress.kubernetes.io/router.middlewares: longhorn-system-longhorn-basic-auth-middleware@kubernetescrd
spec:
rules:
- http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: longhorn-frontend
port:
number: 80
```
```bash
sudo k3s kubectl -n longhorn-system apply -f longhorn-ingress.yml
```
#### metallb #### metallb
```bash ```bash
@@ -213,7 +159,7 @@ metadata:
namespace: metallb-system namespace: metallb-system
spec: spec:
addresses: addresses:
- 192.168.1.21-192.168.1.40 - 192.168.1.21-192.168.1.30
--- ---
apiVersion: metallb.io/v1beta1 apiVersion: metallb.io/v1beta1
@@ -326,3 +272,104 @@ spec:
```bash ```bash
sudo k3s kubectl -n kube-system apply -f traefik-ingress.yml sudo k3s kubectl -n kube-system apply -f traefik-ingress.yml
``` ```
#### [longhorn](https://longhorn.io)
```bash
helm repo add longhorn https://charts.longhorn.io
helm repo update
kubectl create namespace longhorn-system
helm install longhorn longhorn/longhorn --namespace longhorn-system
USER=admin; PASSWORD=v5bB4OQRDfY5tFJ1; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" >> auth
kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
vim longhorn/longhorn-middelwares.yaml
````
```
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: longhorn-auth
namespace: longhorn-system
spec:
basicAuth:
secret: basic-auth
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: longhorn-buffering
namespace: longhorn-system
spec:
buffering:
# Allows backing image uploads up to 10,000MB
maxRequestBodyBytes: 10485760000
```
```bash
kubectl apply -f longhorn-middlewares.yml
```
```bash
vim longhorn/longhorn-ingress.yaml
```
```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
# Connect the middlewares defined in step 2
traefik.ingress.kubernetes.io/router.middlewares:
longhorn-system-longhorn-auth@kubernetescrd,
longhorn-system-longhorn-buffering@kubernetescrd
spec:
ingressClassName: traefik
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: longhorn-frontend
port:
number: 80
```
```bash
kubectl -n longhorn-system get pod
kubectl get storageclass
```
```
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 93m
longhorn (default) driver.longhorn.io Delete Immediate true 59m
longhorn-static driver.longhorn.io Delete Immediate true 59m
```
##### Unset default for "local-path" (emmc)
```bash
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
```
##### Mark longhorn as "default"
```bash
kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
```
##### Apply ingress
```bash
kubectl -n longhorn-system apply -f longhorn/longhorn-ingress.yaml
kubectl -n longhorn-system get ingress
```
-517
View File
@@ -1,517 +0,0 @@
# Kubernetes
## 1. Compute Modules
### Install OS / headless installation
1. Flash the Plebian image to a SD card/ EMMC.
2. Boot.
3. ssh as "pleb/pleb" and complete setup
```bash
sudo useradd pleb
sudo groupadd sudo
sudo usermod -aG sudo pleb
# Configuration pour éviter la saisie de mot de passe
# debian
echo "pleb ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/pleb
# ubuntu
echo "pleb ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/90-cloud-init-users
```
```bash
sudo apt update && sudo apt install -y curl
# curl -O https://overviewer.org/~pillow/up/75bea78e59/devicetrees-plebian-quartz64-20230601130309-arm64.deb
# sudo dpkg -i devicetrees-plebian-quartz64-20230601130309-arm64.deb
# sudo sysctl -w net.core.rmem_max=2500000
sudo apt update && sudo apt -y upgrade
sudo hostnamectl set-hostname < hostname >
sudo apt install -y git wget screenfetch net-tools open-iscsi python3 python3-pip build-essential libssl-dev libffi-dev python3-dev
# sudo apt install -y docker docker-compose
```
#### Reboot
```bash
sudo mkfs.ext4 /dev/nvme0n1
sudo mkdir -p /mnt/ssd
sudo blkid -s UUID -o value /dev/nvme0n1
> sandy UUID=e2e3a295-9731-4aa2-996f-c72c2b81f40f
> gary UUID=124046b7-f656-4691-933b-4673e5abbb17
> sheldon UUID=fd0d6603-c6f1-43fe-a993-39f79b4e3eb8
> pearl UUID=6d255d62-eafe-4333-87b0-9e0c6bf6a44d
echo "UUID=... /mnt/ssd ext4 defaults 0 0" | sudo tee -a /etc/fstab
cat /etc/fstab
sudo mount -a
sudo systemctl daemon-reload
df -h /mnt/ssd
```
`sudo vim /etc/hosts`
```
# ----------------------------------------
# Host addresses
127.0.0.1 localhost
# Nodes
192.168.1.13 gary gary.local
192.168.1.14 sandy sandy.local
192.168.1.16 sheldon sheldon.local
192.168.1.19 pearl pearl.local
# ----------------------------------------
```
#### On remote (PC) :
```bash
ssh-keygen -t ed25519
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@gary
ssh pleb@gary
vim /etc/ssh/sshd_config
```
```
# ----------------------------------------
PasswordAuthentication no
# ----------------------------------------
```
#### Restart service
```bash
sudo systemctl restart sshd
```
#### On sandy :
```bash
ssh-keygen -t ed25519
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@gary
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@sandy
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub plebsheldon
ssh-copy-id -f -i ~/.ssh/id_ed25519.pub pleb@pearl
ssh pleb@sandy
ssh pleb@sheldon
ssh pleb@pearl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
python3 -m pip install --user ansible
```
`vim hosts.ini`
```ini
[master]
sandy ansible_connection=local
[workers]
gary ansible_connection=ssh
sheldon ansible_connection=ssh
pearl ansible_connection=ssh
[k3s_cluster:children]
master
workers
```
## UFW
```bash
sudo apt install -y ufw
sudo ufw allow "OpenSSH"
sudo ufw enable
sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10259/tcp
sudo ufw allow 10257/tcp
sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 4789/tcp
sudo ufw allow 2379/tcp
sudo ufw allow 30000:32767/tcp
sudo ufw status
```
```bash
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo service docker start
sudo docker run hello-world
sudo chmod 666 /var/run/docker.sock
sudo groupadd docker
sudo usermod -aG docker $USER
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```
```bash
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ee:latest
```
## 2. Install Kubernetes (via Ansible)
### k3s-ansible
#### Install Ansible
- [https://wiki.archlinux.org/title/Ansible#Installation](https://wiki.archlinux.org/title/Ansible#Installation "https://wiki.archlinux.org/title/Ansible#Installation")
- [https://docs.ansible.com/ansible/latest/installation\_guide/index.html](https://docs.ansible.com/ansible/latest/installation_guide/index.html "https://docs.ansible.com/ansible/latest/installation_guide/index.html")
#### On remote (PC):
`apt install -y ansible`
#### Clone Git repo : [https://github.com/k3s-io/k3s-ansible](https://github.com/k3s-io/k3s-ansible "https://github.com/k3s-io/k3s-ansible")
```bash
cd www
git clone https://github.com/k3s-io/k3s-ansible.git
cp -R k3s-ansible/inventory-sample.yml k3s-ansible/inventory/bikiniBottom.yaml
```
`vim www/k3s-ansible/inventory/bikiniBottom.yaml`
```ini
[master]
192.168.1.14 ansible_connection=ssh var_hostname=sandy var_disk=nvme0n1 var_uuid=e2e3a295-9731-4aa2-996f-c72c2b81f40f
[workers]
192.168.1.13 ansible_connection=ssh var_hostname=gary var_disk=nvme0n1 var_uuid=124046b7-f656-4691-933b-4673e5abbb17
192.168.1.16 ansible_connection=ssh var_hostname=shedon var_disk=nvme0n1 var_uuid=fd0d6603-c6f1-43fe-a993-39f79b4e3eb8
192.168.1.19 ansible_connection=ssh var_hostname=pearl var_disk=nvme0n1 var_uuid=6d255d62-eafe-4333-87b0-9e0c6bf6a44d
[k3s_cluster:children]
master
workers
```
`vim www/k3s-ansible/inventory/sandy/group_vars/all.yml`
> > change ansible\_user to pleb
#### Install playbook
```bash
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -m ping
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -m apt -a "name=iptables state=present" --become
ansible-playbook ~/delmar.bzh/ansible/k3s-ansible/playbooks/site.yml -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml
```
#### On master:
```bash
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
mkdir ~/.kube
$ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
$ sudo chown $USER: ~/.kube/config
$ export KUBECONFIG=~/.kube/config
```
#### On PC :
```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
scp pleb@sandy:~/.kube/config ~/.kube/config
export KUBECONFIG=~/.kube/config
kubectl get nodes
kubectl cluster-info
```
#### Setting labels:
```bash
# sudo k3s kubectl label nodes xxx kubernetes.io/role=worker
sudo k3s kubectl label nodes gary kubernetes.io/role=worker
sudo k3s kubectl label nodes sheldon kubernetes.io/role=worker
sudo k3s kubectl label nodes pearl kubernetes.io/role=worker
# sudo k3s kubectl label nodes sandy node-type=worker
sudo k3s kubectl label nodes gary node-type=worker
sudo k3s kubectl label nodes sheldon node-type=worker
sudo k3s kubectl label nodes pearl node-type=worker
```
#### ! Ping !
`ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -m ping`
#### ! Reset !
```bash
ansible-playbook ~/delmar.bzh/ansible/k3s-ansible/reset.yml -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml
```
#### ! Restart !
`ansible all -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml -a "shutdown -r now" -b`
## 3. Helm
#### On master
```bash
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version
```
## 4. MetalLb
```bash
helm repo add metallb https://metallb.github.io/metallb
helm search repo metallb
helm upgrade --install metallb metallb/metallb --create-namespace --namespace metallb-system --wait
```
```bash
cat << 'EOF' | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default-pool
namespace: metallb-system
spec:
addresses:
- 192.168.1.21-192.168.1.49
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: default
namespace: metallb-system
spec:
ipAddressPools:
- default-pool
EOF
```
## 5. Local Storage Provider (Longhorn)
```bash
sudo systemctl enable iscsid.service
sudo systemctl start iscsid.service
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -b -m apt -a "name=nfs-common state=present"
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -b -m apt -a "name=open-iscsi state=present"
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -b -m apt -a "name=util-linux state=present"
```
```bash
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -b -m shell -a "lsblk -f"
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -b -m shell -a "blkid -s UUID -o value /dev/nvme0n1"
```
#### Ansible mount:
```bash
ansible -i ~/delmar.bzh/ansible/k3s-ansible/inventory/bikiniBottom.yaml k3s_cluster -m ansible.posix.mount -a "path=/mnt/ssd src=UUID={{ var_uuid }} fstype=ext4 state=mounted" -b
```
### Longhorn
```bash
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.4.2 --set defaultSettings.defaultDataPath="/mnt/ssd" --set service.ui.loadBalancerIP="192.168.1.23" --set service.ui.type="LoadBalancer"
sudo k3s kubectl -n longhorn-system get pod
sudo k3s kubectl get storageclass
```
- local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 111m
- longhorn (default) driver.longhorn.io Delete Immediate true 65m Mark as "non-default"
```bash
sudo k3s kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
```
Mark as "default"
```bash
kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
```
#### UI
##### Option 1 : ingress ?
```bash
USER=admin; PASSWORD=v5bB4OQRDfY5tFJ1; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" >> auth
sudo k3s kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
```
`vim longhorn-ingress.yml`
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
nginx.ingress.kubernetes.io/proxy-body-size: 10000m
spec:
rules:
- http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: longhorn-frontend
port:
number: 80
```
```yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: longhorn-ingress
namespace: longhorn-system
annotations:
# add an annotation indicating the issuer to use
cert-manager.io/cluster-issuer: letsencrypt-staging
spec:
rules:
- host: lghn.delmar.bzh
http:
paths:
- path: /
backend:
serviceName: longhorn-frontend
servicePort: 8090
tls:
- # cert-manager will store the certificate and key in this secret
secretName: lghn-delmar-bzh-cert
hosts:
- lghn.delmar.bzh
```
```bash
sudo k3s kubectl -n longhorn-system apply -f longhorn-ingress.yml
sudo k3s kubectl -n longhorn-system get ingress
```
##### Option 2 : caddy
```bash
sudo caddy hash-password
```
```bash
sudo vim /etc/caddy/Caddyfile
```
```
lghn.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy 192.168.1.23
basic_auth / {
admin $2a$14$RsUJ13kC9DcRMoQa8hlmNOljcXGMSem.1XwYFeV1El8Drw7DIJbVu
}
}
```
## 6. HAProxy
```bash
helm repo add haproxytech https://haproxytech.github.io/helm-charts
helm install haproxy haproxytech/kubernetes-ingress -n kube-system \
--set controller.service.nodePorts.http=30000 \
--set controller.service.nodePorts.https=30001 \
--set controller.service.nodePorts.stat=30002 \
--set controller.service.type=LoadBalancer
```
## 7. Services
...
## Uninstall
> On master:
`/usr/local/bin/k3s-uninstall.sh`
> On workers:
`/usr/local/bin/k3s-agent-uninstall.sh`
+14 -12
View File
@@ -4,8 +4,10 @@
<div class="table-wrapper" id="bkmrk-name-maj%3Amin-rm-size"><table><tbody><tr><th colspan="1" rowspan="1">NAME</th><th colspan="1" rowspan="1">MAJ:MIN</th><th colspan="1" rowspan="1">RM</th><th colspan="1" rowspan="1">SIZE</th><th colspan="1" rowspan="1">RO</th><th colspan="1" rowspan="1">TYPE</th><th colspan="1" rowspan="1">MOUNTPOINTS</th></tr><tr><td colspan="1" rowspan="1">sdb</td><td colspan="1" rowspan="1">8:16</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">3.6T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">disk</td><td colspan="1" rowspan="1"> </td></tr><tr><td colspan="1" rowspan="1">└─ hdds-datas</td><td colspan="1" rowspan="1">253:0</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">7.3T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">lvm</td><td colspan="1" rowspan="1">/export/media</td></tr><tr><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1">/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107</td></tr><tr><td colspan="1" rowspan="1">sdc</td><td colspan="1" rowspan="1">8:32</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">3.6T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">disk</td><td colspan="1" rowspan="1"> </td></tr><tr><td colspan="1" rowspan="1">└─ hdds-datas</td><td colspan="1" rowspan="1">253:0</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">7.3T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">lvm</td><td colspan="1" rowspan="1">/export/media</td></tr><tr><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1">/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107</td></tr></tbody></table> <div class="table-wrapper" id="bkmrk-name-maj%3Amin-rm-size"><table><tbody><tr><th colspan="1" rowspan="1">NAME</th><th colspan="1" rowspan="1">MAJ:MIN</th><th colspan="1" rowspan="1">RM</th><th colspan="1" rowspan="1">SIZE</th><th colspan="1" rowspan="1">RO</th><th colspan="1" rowspan="1">TYPE</th><th colspan="1" rowspan="1">MOUNTPOINTS</th></tr><tr><td colspan="1" rowspan="1">sdb</td><td colspan="1" rowspan="1">8:16</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">3.6T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">disk</td><td colspan="1" rowspan="1"> </td></tr><tr><td colspan="1" rowspan="1">└─ hdds-datas</td><td colspan="1" rowspan="1">253:0</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">7.3T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">lvm</td><td colspan="1" rowspan="1">/export/media</td></tr><tr><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1">/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107</td></tr><tr><td colspan="1" rowspan="1">sdc</td><td colspan="1" rowspan="1">8:32</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">3.6T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">disk</td><td colspan="1" rowspan="1"> </td></tr><tr><td colspan="1" rowspan="1">└─ hdds-datas</td><td colspan="1" rowspan="1">253:0</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">7.3T</td><td colspan="1" rowspan="1">0</td><td colspan="1" rowspan="1">lvm</td><td colspan="1" rowspan="1">/export/media</td></tr><tr><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1"> </td><td colspan="1" rowspan="1">/srv/dev-disk-by-uuid-a67ae390-f36c-4b7c-98a0-4a3b5601c107</td></tr></tbody></table>
</div>```bash </div>
apt install -y lvm2
```bash
sudo apt install -y lvm2
``` ```
### Disks ### Disks
@@ -40,20 +42,20 @@ I/O size (minimum/optimal): 4096 bytes / 4096 bytes
#### Physical Volumes (partitions) #### Physical Volumes (partitions)
``` ```
pvcreate /dev/sdb pvcreate /dev/sdX
pvcreate /dev/sdc pvcreate /dev/sdY
``` ```
#### Volume Group #### Volume Group
``` ```
vgcreate hdds /dev/sdb /dev/sdc vgcreate hdds /dev/sdX /dev/sdY
``` ```
#### Logical Volume(s) #### Logical Volume(s)
``` ```
lvcreate --extents 100%FREE -n datas hdds lvcreate --extents 100%FREE -n <volume_name> hdds
``` ```
``` ```
@@ -62,7 +64,7 @@ pvdisplay
``` ```
--- Physical volume --- --- Physical volume ---
PV Name               /dev/sdb PV Name               /dev/sdX
VG Name               hdds VG Name               hdds
PV Size               <3.64 TiB / not usable <3.84 MiB PV Size               <3.64 TiB / not usable <3.84 MiB
Allocatable           yes (but full) Allocatable           yes (but full)
@@ -73,7 +75,7 @@ Allocated PE          953861
PV UUID               zHiPKx-t2BO-15r3-xPfQ-DPlB-7K40-YxIdM1 PV UUID               zHiPKx-t2BO-15r3-xPfQ-DPlB-7K40-YxIdM1
--- Physical volume --- --- Physical volume ---
PV Name               /dev/sdc PV Name               /dev/sdY
VG Name               hdds VG Name               hdds
PV Size               <3.64 TiB / not usable <3.84 MiB PV Size               <3.64 TiB / not usable <3.84 MiB
Allocatable           yes (but full) Allocatable           yes (but full)
@@ -117,7 +119,7 @@ lvdisplay
``` ```
--- Logical volume --- --- Logical volume ---
LV Path                /dev/hdds/datas LV Path                /dev/hdds/<volume_name>
LV Name                data LV Name                data
VG Name                hdds VG Name                hdds
LV UUID                qgdjwr-9Aau-p4mj-rksl-IeBB-SjD1-z6hede LV UUID                qgdjwr-9Aau-p4mj-rksl-IeBB-SjD1-z6hede
@@ -136,7 +138,7 @@ Block device           254:0
#### Format LV #### Format LV
```bash ```bash
sudo mkfs.ext4 /dev/hdds/datas sudo mkfs.ext4 /dev/hdds/<volume_name>
``` ```
### NFS ### NFS
@@ -175,7 +177,7 @@ sudo systemctl restart nfs-server
##### Get LVM's UUID ##### Get LVM's UUID
```bash ```bash
sudo blkid -s UUID -o value /dev/mapper/hdds-datas sudo blkid -s UUID -o value /dev/mapper/hdds-<volume_name>
``` ```
##### Mount LVM ##### Mount LVM
@@ -187,7 +189,7 @@ sudo vim /etc/fstab
``` ```
UUID=0c390345-ca52-45fd-9097-6e931d651a8f / ext4 defaults,x-systemd.growfs 0 1 UUID=0c390345-ca52-45fd-9097-6e931d651a8f / ext4 defaults,x-systemd.growfs 0 1
# LVM # LVM
/dev/hdds/datas /mnt/data ext4 defaults,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2 UUID=... /mnt/data ext4 defaults,nofail,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# NFS exports # NFS exports
/mnt/data/cloud /srv/nfs4/cloud none bind,nofail 0 0 /mnt/data/cloud /srv/nfs4/cloud none bind,nofail 0 0
/mnt/data/media /srv/nfs4/media none bind,nofail 0 0 /mnt/data/media /srv/nfs4/media none bind,nofail 0 0
+255
View File
@@ -0,0 +1,255 @@
## ZFS
### Update / Upgrade
```bash
sudo apt update && sudo apt upgrade -y
```
### Enable the contrib repository
```bash
sudo nano /etc/apt/sources.list
```
```bash
#deb cdrom:[Debian GNU/Linux 13.3.0 _Trixie_ - Official amd64 NETINST with firmware 20260110-10:59]/ trixie contrib main non-free-firmware
deb http://deb.debian.org/debian/ trixie main contrib non-free-firmware
deb-src http://deb.debian.org/debian/ trixie main contrib non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main contrib non-free-firmware
# trixie-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ trixie-updates main contrib non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-updates main contrib non-free-firmware
# This system was installed using removable media other than
# CD/DVD/BD (e.g. USB stick, SD card, ISO image file).
# The matching "deb cdrom" entries were disabled at the end
# of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.
```
### Refresh package index and install ZFS
```bash
sudo apt update && sudo apt install linux-headers-$(uname -r) zfsutils-linux -y
sudo modprobe zfs
sudo reboot
```
### Verify ZFS Installation
```bash
lsmod | grep zfs
zfs --version
zpool --version
```
### Creating and Using a ZFS Pool & Datasets
Once ZFS is installed, you can create pools (zpools) and datasets. Below is a typical example.
#### Identify disks / partitions
List available block devices:
```bash
lsblk
sudo blkid
```
Create a mirrored pool named *tank* using /dev/sda and /dev/sdb:
```bash
sudo zpool create \
-o ashift=12 \
-o autotrim=on \
tank mirror /dev/sda /dev/sdb
```
Explanation:
ashift=12 sets a 4KiB sector alignment (useful for modern drives/SSDs).
autotrim=on enables automatic trimming (on SSDs).
mirror defines redundancy — you could also use raidz, raidz2, etc.
You can also check pool properties:
```bash
sudo zpool get all tank
```
Within the pool, create datasets:
```bash
sudo zfs create tank/cloud
# sudo zfs create tank/data
# sudo zfs create tank/data/projects
# sudo zfs create tank/data/backups
```
Datasets behave like sub-filesystems; you can set properties on each.
Example: enable compression and disable atime:
```bash
sudo zfs set compression=lz4 tank/data
sudo zfs set atime=off tank/data
```
#### Mountpoints
> By default, datasets are mounted under /tank/..., but you can set mountpoint property:
```bash
sudo mkdir -p /mnt/cloud
sudo zfs set mountpoint=/mnt/cloud tank/cloud
```
To list datasets and their mountpoints:
```bash
zfs list
```
#### Using snapshots & rollbacks
```bash
sudo zfs snapshot tank/data@before-update
```
Roll back:
```bash
sudo zfs rollback tank/data@before-update
```
Send/receive snapshots for backups:
```bash
sudo zfs send tank/data@before-update | ssh user@backuphost "zfs receive backup/data"
```
#### Mounting, Autostart, and Integration
> ZFS datasets are managed by ZFS itself; the mount/unmount is handled automatically by the ZFS service at boot (once ZFS is loaded). Ensure that ZFS mounting is enabled via systemd or init scripts:
```bash
sudo systemctl enable zfs-zed
sudo systemctl enable zfs-mount
sudo systemctl enable zfs-import-cache
```
PS : on Debian, the installation of zfs-zed may already set up the necessary services.
You can configure /etc/zfs/zfs-list.cache (automatically generated) for faster mounting.
---
### Querying ZFS File System Information
The zfs list command provides an extensible mechanism for viewing and querying dataset information. Both basic and complex queries are explained in this section.
#### Listing Basic ZFS Information
You can list basic dataset information by using the zfs list command with no options. This command displays the names of all datasets on the system and the values of their used, available, referenced, and mountpoint properties. For more information about these properties, see [Introducing ZFS Properties](https://docs.oracle.com/cd/E18752_01/html/819-5461/gazsu.htmlgazss.html).
For example:
```
# <b>zfs list</b>
NAME USED AVAIL REFER MOUNTPOINT
pool 476K 16.5G 21K /pool
pool/clone 18K 16.5G 18K /pool/clone
pool/home 296K 16.5G 19K /pool/home
pool/home/marks 277K 16.5G 277K /pool/home/marks
pool/home/marks@snap 0 - 277K -
pool/test 18K 16.5G 18K /test
```
You can also use this command to display specific datasets by providing the dataset name on the command line. Additionally, use the \-r option to recursively display all descendents of that dataset. For example:
```
# <b>zfs list -r pool/home/marks</b>
NAME USED AVAIL REFER MOUNTPOINT
pool/home/marks 277K 16.5G 277K /pool/home/marks
pool/home/marks@snap 0 - 277K -
```
You can use the zfs list command with the mount point of a file system. For example:
```
# <b>zfs list /pool/home/marks</b>
NAME USED AVAIL REFER MOUNTPOINT
pool/home/marks 277K 16.5G 277K /pool/home/marks
```
The following example shows how to display basic information about tank/home/chua and all of its descendent datasets:
```
# <b>zfs list -r tank/home/chua</b>
NAME USED AVAIL REFER MOUNTPOINT
tank/home/chua 26.0K 4.81G 10.0K /tank/home/chua
tank/home/chua/projects 16K 4.81G 9.0K /tank/home/chua/projects
tank/home/chua/projects/fs1 8K 4.81G 8K /tank/home/chua/projects/fs1
tank/home/chua/projects/fs2 8K 4.81G 8K /tank/home/chua/projects/fs2
```
For additional information about the zfs list command, see [zfs(1M)](https://docs.oracle.com/cd/E18752_01/html/819-5461/gazsu.html../816-5166/zfs-1m.html#REFMAN1Mzfs-1m).
#### Creating Complex ZFS Queries
The zfs list output can be customized by using the \-o, \-t, and \-H options.
You can customize property value output by using the \-o option and a comma-separated list of desired properties. You can supply any dataset property as a valid argument. For a list of all supported dataset properties, see [Introducing ZFS Properties](https://docs.oracle.com/cd/E18752_01/html/819-5461/gazsu.htmlgazss.html). In addition to the properties defined, the \-o option list can also contain the literal name to indicate that the output should include the name of the dataset.
The following example uses zfs list to display the dataset name, along with the sharenfs and mountpoint property values.
```
# <b>zfs list -o name,sharenfs,mountpoint</b>
NAME SHARENFS MOUNTPOINT
tank off /tank
tank/home on /tank/home
tank/home/ahrens on /tank/home/ahrens
tank/home/bonwick on /tank/home/bonwick
tank/home/chua on /tank/home/chua
tank/home/eschrock on legacy
tank/home/moore on /tank/home/moore
tank/home/tabriz ro /tank/home/tabriz
```
You can use the \-t option to specify the types of datasets to display. The valid types are described in the following table.
**Table 6-2 Types of ZFS Datasets**
<table border="0" cellpadding="0" cellspacing="0" class="dkgrey1" width="100%"><tbody><tr><td><table border="0" cellpadding="0" cellspacing="1" width="100%" class="vatop"><colgroup><col width="29%"><col width="70%"></colgroup><tbody><tr><th class="columncaption" align="left" valign="top"><div class="headerpadding">Type</div></th><th class="columncaption" align="left" valign="top"><div class="headerpadding">Description</div></th></tr><tr class="yellow2"><td align="left" valign="top"><div class="pad5x10"><tt>filesystem</tt></div></td><td align="left" valign="top"><div class="pad5x10">File systems and clones</div></td></tr><tr class="yellow2"><td align="left" valign="top"><div class="pad5x10"><tt>volume</tt></div></td><td align="left" valign="top"><div class="pad5x10">Volumes</div></td></tr><tr class="yellow2"><td align="left" valign="top"><div class="pad5x10"><tt>snapshot</tt></div></td><td align="left" valign="top"><div class="pad5x10">Snapshots</div></td></tr></tbody></table></td></tr></tbody></table>
The \-t options takes a comma-separated list of the types of datasets to be displayed. The following example uses the \-t and \-o options simultaneously to show the name and used property for all file systems:
```
# <b>zfs list -t filesystem -o name,used</b>
NAME USED
pool 476K
pool/clone 18K
pool/home 296K
pool/home/marks 277K
pool/test 18K
```
You can use the \-H option to omit the zfs list header from the generated output. With the \-H option, all white space is replaced by the Tab character. This option can be useful when you need parseable output, for example, when scripting. The following example shows the output generated from using the zfs list command with the \-H option:
```
# <b>zfs list -H -o name</b>
pool
pool/clone
pool/home
pool/home/marks
pool/home/marks@snap
pool/test
```
+59 -69
View File
@@ -65,7 +65,7 @@ affine.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:3010 reverse_proxy bob:3010
} }
asm.delmar.bzh { asm.delmar.bzh {
@@ -74,7 +74,7 @@ asm.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:50154 reverse_proxy carlo:50154
} }
books.delmar.bzh { books.delmar.bzh {
@@ -83,7 +83,7 @@ books.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:10801 reverse_proxy carlo:10801
} }
borg.delmar.bzh { borg.delmar.bzh {
@@ -92,7 +92,7 @@ borg.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy carlo:8080 reverse_proxy patrick:8080
} }
cap.delmar.bzh { cap.delmar.bzh {
@@ -101,7 +101,7 @@ cap.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:11338 reverse_proxy carlo:11338
} }
cfy.delmar.bzh { cfy.delmar.bzh {
@@ -128,7 +128,7 @@ cloud.delmar.bzh {
X-Robots-Tag "noindex, nofollow" X-Robots-Tag "noindex, nofollow"
} }
reverse_proxy patrick:11000 { reverse_proxy bob:11000 {
header_up Host {upstream_hostport} header_up Host {upstream_hostport}
header_up X-Real-IP {remote_host} header_up X-Real-IP {remote_host}
} }
@@ -139,10 +139,18 @@ cloud.delmar.bzh {
} }
cloud.delmar.bzh:8443 { cloud.delmar.bzh:8443 {
reverse_proxy patrick:32772 { encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy bob:8080 {
transport http { transport http {
tls_insecure_skip_verify tls_insecure_skip_verify
} }
header_up Host {upstream_hostport}
header_up X-Real-IP {remote_host}
} }
} }
@@ -152,7 +160,7 @@ cnvrt.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:32770 reverse_proxy bob:32770
} }
crbn.delmar.bzh { crbn.delmar.bzh {
@@ -161,7 +169,7 @@ crbn.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:4000 reverse_proxy bob:4000
} }
cs.delmar.bzh { cs.delmar.bzh {
@@ -173,17 +181,6 @@ cs.delmar.bzh {
reverse_proxy patrick:49505 reverse_proxy patrick:49505
} }
cvs.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy patrick:54268 {
header_up Host {upstream_hostport}
}
}
dev.delmar.bzh { dev.delmar.bzh {
encode { encode {
zstd zstd
@@ -199,7 +196,7 @@ dia.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:53000 reverse_proxy patrick:8888
} }
draw.delmar.bzh { draw.delmar.bzh {
@@ -208,7 +205,7 @@ draw.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:24928 reverse_proxy carlo:24928
} }
gen.delmar.bzh { gen.delmar.bzh {
@@ -217,7 +214,7 @@ gen.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:32787 reverse_proxy carlo:32787
} }
git.delmar.bzh { git.delmar.bzh {
@@ -226,7 +223,7 @@ git.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:3001 reverse_proxy carlo:3001
} }
gotify.delmar.bzh { gotify.delmar.bzh {
@@ -235,7 +232,7 @@ gotify.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:41901 reverse_proxy carlo:41901
} }
homepage.delmar.bzh { homepage.delmar.bzh {
@@ -244,7 +241,7 @@ homepage.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:7575 reverse_proxy carlo:7575
} }
home-assistant.delmar.bzh { home-assistant.delmar.bzh {
@@ -262,7 +259,7 @@ imgs.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy karen:32774 reverse_proxy karen:8000
} }
inv.delmar.bzh { inv.delmar.bzh {
@@ -271,7 +268,7 @@ inv.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:7777 { reverse_proxy bob:7777 {
header_up X-Real-IP {remote_host} header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host} header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme} header_up X-Forwarded-Proto {scheme}
@@ -284,7 +281,7 @@ it.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:11404 reverse_proxy carlo:11404
} }
jellyfin.delmar.bzh { jellyfin.delmar.bzh {
@@ -323,38 +320,31 @@ kontadenn.delmar.bzh {
} }
} }
lai.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy patrick:16080
}
lnk.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy bob:3000
}
lud.delmar.bzh { lud.delmar.bzh {
encode { encode {
zstd zstd
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:3002 reverse_proxy carlo:3002
}
mail.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy patrick:10003 {
transport http {
proxy_protocol v2
}
header_up Host {upstream_hostport}
}
}
mailbear.delmar.bzh {
encode {
zstd
gzip
minimum_length 1024
}
reverse_proxy patrick:11234 {
header_up Host {upstream_hostport}
}
} }
mmgr.delmar.bzh { mmgr.delmar.bzh {
@@ -419,7 +409,7 @@ paperless.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:8000 reverse_proxy bob:8000
} }
pdf.delmar.bzh { pdf.delmar.bzh {
@@ -428,7 +418,7 @@ pdf.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:16080 reverse_proxy bob:16080
} }
penpot.delmar.bzh { penpot.delmar.bzh {
@@ -437,7 +427,7 @@ penpot.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:43735 reverse_proxy bob:43735
} }
pip.delmar.bzh { pip.delmar.bzh {
@@ -500,7 +490,7 @@ search.delmar.bzh
header @static Cache-Control "public, max-age=30, stale-while-revalidate=60" header @static Cache-Control "public, max-age=30, stale-while-revalidate=60"
header @imageproxy Cache-Control "public, max-age=3600" header @imageproxy Cache-Control "public, max-age=3600"
} }
reverse_proxy patrick:23485 reverse_proxy carlo:23485
} }
send.delmar.bzh { send.delmar.bzh {
@@ -509,7 +499,7 @@ send.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:53842 reverse_proxy carlo:53842
} }
shop.delmar.bzh { shop.delmar.bzh {
@@ -528,7 +518,7 @@ smk.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:10802 reverse_proxy carlo:10802
} }
stream.delmar.bzh { stream.delmar.bzh {
@@ -537,7 +527,7 @@ stream.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:1984 reverse_proxy carlo:1984
basic_auth / { basic_auth / {
admin $2a$14$Z5n.aZ3DVnl.DjE9h2WP4OcR21tROpN1dyv8hFxGU3AEbdcOssUKi admin $2a$14$Z5n.aZ3DVnl.DjE9h2WP4OcR21tROpN1dyv8hFxGU3AEbdcOssUKi
} }
@@ -567,7 +557,7 @@ trmx.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:32771 reverse_proxy carlo:32771
} }
twip.delmar.bzh { twip.delmar.bzh {
@@ -576,11 +566,11 @@ twip.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:12473 reverse_proxy carlo:12473
handle_errors { handle_errors {
rewrite * /{err.status_code} rewrite * /{err.status_code}
reverse_proxy patrick:12473 { reverse_proxy carlo:12473 {
header_up Host {upstream_hostport} header_up Host {upstream_hostport}
replace_status {err.status_code} replace_status {err.status_code}
} }
@@ -593,7 +583,7 @@ ugo.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:8090 reverse_proxy carlo:8090
} }
vault.delmar.bzh { vault.delmar.bzh {
@@ -602,7 +592,7 @@ vault.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:16081 reverse_proxy carlo:16081
} }
wizarr.delmar.bzh { wizarr.delmar.bzh {
@@ -644,7 +634,7 @@ xcd.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy patrick:32768 reverse_proxy carlo:32768
} }
zik.delmar.bzh { zik.delmar.bzh {
@@ -680,7 +670,7 @@ lghn.delmar.bzh {
gzip gzip
minimum_length 1024 minimum_length 1024
} }
reverse_proxy 192.168.1.23 reverse_proxy 192.168.1.21
basic_auth / { basic_auth / {
admin $2a$14$RsUJ13kC9DcRMoQa8hlmNOljcXGMSem.1XwYFeV1El8Drw7DIJbVu admin $2a$14$RsUJ13kC9DcRMoQa8hlmNOljcXGMSem.1XwYFeV1El8Drw7DIJbVu
} }
+4 -4
View File
@@ -31,19 +31,19 @@ https://go.dev/dl/
``` ```
```bash ```bash
wget https://go.dev/dl/go1.26.1.linux-arm64.tar.gz wget https://go.dev/dl/go1.26.3.linux-arm64.tar.gz
rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.1.linux-arm64.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.3.linux-arm64.tar.gz
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:/usr/local/go/bin
``` ```
```bash ```bash
mkdir ~/caddy mkdir ~/caddy && cd caddy
cd caddy
xcaddy build --with github.com/caddy-dns/ovh \ xcaddy build --with github.com/caddy-dns/ovh \
--with github.com/mholt/caddy-l4/modules/l4proxy \ --with github.com/mholt/caddy-l4/modules/l4proxy \
--with github.com/mholt/caddy-l4/modules/l4tls \ --with github.com/mholt/caddy-l4/modules/l4tls \
--with github.com/mholt/caddy-l4/modules/l4proxyprotocol --with github.com/mholt/caddy-l4/modules/l4proxyprotocol
sudo mv caddy /usr/bin sudo mv caddy /usr/bin
sudo chown root:root /usr/bin/caddy sudo chown root:root /usr/bin/caddy
sudo chmod 755 /usr/bin/caddy sudo chmod 755 /usr/bin/caddy
+2 -1
View File
@@ -47,7 +47,8 @@ sudo vim /etc/docker/daemon.json
"log-opts": { "log-opts": {
"max-size": "10m", "max-size": "10m",
"max-file": "3" "max-file": "3"
} },
"dns": ["8.8.8.8", "8.8.4.4"]
} }
``` ```
+839
View File
@@ -0,0 +1,839 @@
{
"hosts": [
{
"connectionType": "ssh",
"name": "patrick",
"ip": "192.168.1.18",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"c1x",
"docker",
"caddy",
"www"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": false,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": false,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": "",
"autoTmux": false
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "pearl",
"ip": "192.168.1.19",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3588",
"kubernetes",
"worker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "carlo",
"ip": "192.168.1.12",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"cm4",
"nfs_server",
"borg",
"docker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "gary",
"ip": "192.168.1.13",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3588",
"kubernetes",
"worker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": false,
"showServerStatsInSidebar": false,
"defaultPath": "~/",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "sandy",
"ip": "192.168.1.14",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3588",
"kubernetes",
"master"
],
"pin": true,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": false,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "krabs",
"ip": "192.168.1.15",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3566",
"nfs_server",
"borg"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": false,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "sheldon",
"ip": "192.168.1.16",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3588",
"kubernetes",
"worker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": false,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "bernie",
"ip": "192.168.1.17",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"rk3566",
"3D_printer",
"docker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": "{\"enabledWidgets\":[\"cpu\",\"memory\",\"disk\",\"network\",\"uptime\",\"system\",\"login_stats\"],\"statusCheckEnabled\":true,\"statusCheckInterval\":30,\"metricsEnabled\":true,\"metricsInterval\":30}",
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "bob",
"ip": "192.168.1.11",
"port": 22,
"username": "pleb",
"password": null,
"folder": "Off",
"tags": [
"rk3566",
"docker",
"caddy"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/home/pleb",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
},
{
"connectionType": "ssh",
"name": "karen",
"ip": "192.168.1.20",
"port": 22,
"username": "pleb",
"password": null,
"folder": "bikiniBottom",
"tags": [
"jetson",
"docker"
],
"pin": false,
"notes": null,
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\nQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQAAAJh+OtUGfjrV\nBgAAAAtzc2gtZWQyNTUxOQAAACBOsK/g1G3H1U5baFk+oGz0WN4HlGDYYDe/wi3DGjLtAQ\nAAAEAo2l96hGTQgWybH6qO8IhbHqnl8yJGT9zPnyYxzc3wCU6wr+DUbcfVTltoWT6gbPRY\n3geUYNhgN7/CLcMaMu0BAAAAD2VsaW90QHRvaWxlLXdpbgECAwQFBg==\n-----END OPENSSH PRIVATE KEY-----\n",
"keyPassword": null,
"keyType": "auto",
"credentialId": null,
"overrideCredentialUsername": false,
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": false,
"showTunnelInSidebar": false,
"showDockerInSidebar": true,
"showServerStatsInSidebar": false,
"defaultPath": "/",
"sudoPassword": null,
"tunnelConnections": [],
"jumpHosts": [],
"quickActions": [],
"statsConfig": {
"enabledWidgets": [
"cpu",
"memory",
"disk",
"network",
"uptime",
"system",
"login_stats"
],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"useGlobalStatusInterval": true,
"metricsEnabled": true,
"metricsInterval": 30,
"useGlobalMetricsInterval": true,
"disableTcpPing": false
},
"dockerConfig": null,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 14,
"fontFamily": "Caskaydia Cove Nerd Font Mono",
"letterSpacing": 0,
"lineHeight": 1,
"theme": "termix",
"scrollback": 10000,
"bellStyle": "none",
"rightClickSelectsWord": false,
"fastScrollModifier": "alt",
"fastScrollSensitivity": 5,
"minimumContrastRatio": 1,
"backspaceMode": "normal",
"agentForwarding": false,
"environmentVariables": [],
"startupSnippetId": null,
"autoMosh": false,
"moshCommand": "mosh-server new -s -l LANG=en_US.UTF-8",
"sudoPasswordAutoFill": false,
"sudoPassword": ""
},
"forceKeyboardInteractive": false,
"useSocks5": false,
"socks5Host": null,
"socks5Port": 1080,
"socks5Username": null,
"socks5Password": null,
"socks5ProxyChain": []
}
]
}