# Homelab Documentation

# Basic Proxmox Configuration



# ZFS Storage

I use ZFS as filesystem for my backend storage, due to its seamless integration with Snapshots and the Proxmox Backup Server. It is decently performant compared to the likes of ext, but offers great resilience in RAID-like solutions, is flexible and easy to use. I recommend reading through the basic ZFS introduction to clarify terms and usecases before following this guide, as this only reflects a good usecase for me.

1. Create Pool
	1. ```Zpool create -o ashift=12 mirror POOL /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf```
	2. Hardening against reboot issues with /dev/sdX  nomenclature
		1. ```Zpool export POOL  ```
		2. ```Zpool import -d /dev/disk/dev-by-id  ```
		3. ```Zpool import -c /etc/zfs/zpool.cache  ```
		4. ```Zpool status ```
2. Set compression: ```zfs set compression=lz4 POOL```
3. Create datasets (+tuning)  
	1. ```zfs create pool/dataset-name```
	2. ```sudo zfs set recordsize=[size] data/media/series```
	3. No-snap für datenbanksets
		d. Set mountpoints for datasets
		e. ZFS Scrub
4. Set mountpoints for datasets
5. ZFS Scrub
6. 
<https://docs.oracle.com/cd/E24841_01/html/820-2313/gbbwa.html> 
<https://www.usenix.org/system/files/login/articles/login_winter16_09_jude.pdf>
<https://shatteredsilicon.net/blog/2020/06/05/mysql-mariadb-innodb-on-zfs/>         
<https://docs.oracle.com/cd/E24841_01/html/820-2313/gbbwa.html>
<https://unix.stackexchange.com/questions/288599/forcing-zpool-to-use-dev-disk-by-id-in-ubuntu-xenial>
<https://docs.oracle.com/cd/E19253-01/819-5461/gaynr/index.html>

# Wake-on-LAN

<https://www.jm.technology/post/proxmox-wol-mac-set_april-2019/>
<https://pve.proxmox.com/wiki/Proxmox_Node_Management>

# Disable Subscription Message

<https://johnscs.com/remove-proxmox51-subscription-notice/>
	
```sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service```

# Switch Repository to non-enterprise

The enterprise repository requires a bought key, hence the usage of Proxmox in a homelab usually lead to the usage of the non-production repository.

1. Comment out  everything with "#" in /etc/apt/sources.list/pve-enterprise.list
2. create new file in /etc/apt/sources.list/pve-no-enterprise.list
3. insert:

    ```deb http://download.proxmox.com/debian/pve buster pve-no-subscription```
4. replace "buster" with name of debian version corresponding to Proxmox version.
    
# Sources
<https://pve.proxmox.com/wiki/Package_Repositories>

# GPU Passthrough

1. Kernel  modules
2. Disable drivers (Intel for iGPU, Nvidia for dedicated)
3. Set up VMs accordingly
	1. <https://pve.proxmox.com/wiki/PCI(e)_Passthrough>
	2. <https://pve.proxmox.com/wiki/Pci_passthrough>
	3. <https://blog.quindorian.org/2018/03/building-a-2u-amd-ryzen-server-proxmox-gpu-passthrough.html/>  
<https://cetteup.com/216/how-to-use-an-intel-vgpu-for-plexs-hardware-accelerated-streaming-in-a-proxmox-vm/>

# Docker in LXC

Docker LXC
<https://kayomo.de/blog/docker-unter-proxmox-installieren/>

# Powersaving

### Powergoverons 

#### Required: -

#### Related: -

1. `apt install cpufrequtils`
2. Check available govenors with `cpufreq-info` or `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors`
3. apply governor on reboot in crontab with `echo "#NAMEOFGOVENOR" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor`

#### See also: -

#### Sources:
<https://wiki.debian.org/CpuFrequencyScaling>

# Networking



# Nginx in Docker

<https://nginxproxymanager.com/guide/#project-goal>

# Caddy

<https://docs.theme-park.dev/setup/#caddy>  
<https://caddy.community/t/caddy-reverse-proxy-nextcloud-collabora-vaultwarden-with-local-https/12052>  
<https://caddyserver.com/docs/install#debian-ubuntu-raspbian>

# Monitoring&Overview



# InfluxDB-Grafana-Telegraf

1. influx update breaks config !!! Apt hold influx (+grafana?)  
<https://schroederdennis.de/tutorial-howto/proxmox-monitoring-einrichten-installieren-influxdb-grafana/>  
<https://www.howtoforge.com/tutorial/how-to-install-tig-stack-telegraf-influxdb-and-grafana-on-ubuntu-1804/>  
<https://foldingforum.org/viewtopic.php?f=14&t=35660>
2. HDD Temps Telegraf (install hddtemp daemon!)
<https://wiki.ubuntuusers.de/hddtemp/>  
<https://github.com/influxdata/telegraf/tree/master/plugins/inputs/hddtemp>  
3. Add problematic smart stats manually:
<https://askubuntu.com/questions/474669/ssd-temperature-sensor-readout-with-hddtemp>  
<https://github.com/influxdata/telegraf/blob/master/plugins/inputs/disk/README.md>  
<https://stackoverflow.com/questions/45171907/influxdb-how-to-update-duration-of-an-existing-database>
4. Format Dircount as influx out:
<https://www.reddit.com/r/grafana/comments/os96l1/influxdbtelegraf_exec_display_issues/h6n6pc6/?context=3>  
5. add telegraf user to nextcloud group in order to be able to scan directories.
<https://du.nkel.dev/blog/2021-05-05_proxmox_influxdb/>  
<https://towardsdatascience.com/influxdb-data-retention-f026496d708f>
6. Delete old data in influx  
use DATABASE +  
<https://stackoverflow.com/questions/38587898/in-influxdb-how-to-delete-all-measurements>
7. Countdirectories  
Befehl in /usr/bin/countdirectories anlegen:

```
#!/bin/sh  
count=$(ls -l $1 | grep -c ^d)  
echo dircount,path=$1 value=$count
```

# OneUptime

Requirements:

-Docker and Docker compose 
-Node.js and NPM installed.


```git clone https://github.com/OneUptime/oneuptime.git```
```cd oneuptime```

Copy config.example.env to config.env
```cp config.example.env config.env```

Optional: change config.env
```npm run dev```






<https://github.com/OneUptime/oneuptime>

# Gaming Services



# MineOS

# Serveradministration
## Export aus Nitradoservern:
<https://wiki.nitrado.net/de/Map_herunterladen_bei_Minecraft>  
Dafür brauchst du zusätzlich den Client von Filezilla:
<https://filezilla-project.org/download.php?type=client>

Dabei sollte eine ZIP-Datei rauskommen, die du eventuell selber noch erstellen musst, indem du das Überverzeichnis manuell zipst, was heruntergeladen wird.

## Neuen Server aufsetzen

### Import bestehender Welten in MineOS

<https://minecraft.codeemo.com/mineoswiki/index.php?title=Importing_a_world>  

Eigentlich nur verkehrt herum wie beim Export. Ich empfehle Filezilla, damit hab ich es getestet. Logins sind wie folgt:  
Server: sftp://Serveradresse  
User: sftp_user  
Port: 15900  

Importieren kannst du, indem du mit Rechtsklick hoch- bzw runterladen entsprechende Dateien hin und her schiebst. Nach dem Import sieht es dann etwa so aus:

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/unknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/unknown.png)

Der Linke Teil ist dabei dein Rechner und funktioniert wie der Explorer. Rechts ist der Server. Du musst noch in den korrekten Importpfad auf dem Server navigieren, das sieht dann so aus:

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/1vxunknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/1vxunknown.png)

Eine Testdatei liegt zum Vergleich drin. Du kannst sie dir auch gerne runterladen und aufmachen, um zu vergleichen, wie deine Datei aussieht.
Wenn hier eure Welt als ZIP drin liegt, geht es auf der Verwaltungsebene weiter.

### Start eines Importservers

Mit der importierten ZIP kannst du jetzt einen neuen Server starten.

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/Msbunknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/Msbunknown.png)

```Create Server from Archive``` erstellt eine neue Standard Serverinstanz. Diese wird dann am oberen Bildschirmrand unter ```Currently Selected Servers``` ausgewählt.
Die Software ist so eingestellt, dass nur der erste Server aus dem Internet erreichbar ist, daher werden weitere Serverinstanzen zwar laufen, aber nicht erreichbar sein.
Sobald der Server ausgewählt ist, kannst du auf der linken Seite die Serversettings sehen. Alles andere sind Einstellungen für die Software, an denen bitte nicht rumspielen, weil es sonst evtl nicht mehr läuft (auch wenn ich das schnell zurücksetzen kann, falls doch mal was schief geht).

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/Znpunknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/Znpunknown.png)

### Vorbereitung MC-Server-Framework / Update MC-Server
Bevor der Server gestartet werden kann, muss eine MC-Server-Datei geladen werden.
#### Servertypen
##### Vanilla
Der Vanilla Minecraftserver ist in der aktuellsten Version immer unter Profiles downloadbar.  Danach entsprechend auf der Serverseite die zu benutzende Version umstellen und den Server neustarten.

##### Alternativ: Paper
Für alternative Server muss nur die neuste Paper-Datei statt der Vanilla-Datei heruntergeladen und analog zur Vanilla-Variante auf der Serverseite als JAR ausgewählt werden. Vorsicht, die neuste Version ist nicht immer oben! Danach den Server neustarten.
! Achtung !: Wenn Paper genutzt wird und man wieder zu Vanilla zurück will, müssen einige manuelle Änderungen am Save vorgenommen werden: <https://docs.papermc.io/paper/migration> Sektion From Paper to Vanilla.

[![Paper.png](https://wiki.ngl.cloud/uploads/images/gallery/2023-08/scaled-1680-/paper.png)](https://wiki.ngl.cloud/uploads/images/gallery/2023-08/paper.png)

##### Alternativ: Fabric
Vanilla-ähnlicher Server mit wenig Optimierungen. Farms und Exploits funktionieren wie in Vanilla auf Kosten von zusätzlichen Lags und schlechterer Performance im Vergleich zu Paper. Muss händisch eingerichtet werden. Siehe Fabric Dokumentation.

##### Revert einer Fabric/Spigot Welt zurück zu Vanilla
<https://serverminer.com/article/how-to-convert-a-paper-spigot-world-to-a-vanilla-world/>

#### Update Ablauf Quick-Checklist
1. Server stoppen
2. Vanilla bzw. Alternative herunterladen
3. Auf Serverseite "Accept EULA" und erst danach "Restart" anklicken

### Server Settings
Auf einem neuen Server sollten alle Einstellungen wie folgt sein:
Unter Server Actions:  
Change profile to: akutellste
Eventuell musst du einmal auf Accept EULA klicken, wenn es nicht starten, weil Java geupdated wurde, sollte aber im Normalfall nicht passieren.  
Broadcast to LAN: an  
Start server on boot: an  
Alles andere auf Standard lassen.  

### Java Settings
Change runnable to: Entweder minecraft-server-1.19 (nicht gemoddet) oder spigot 1.19 (für modded) bzw. die entsprechend aktuelle Version der Alternativen. Ich rate aus Performancegründen zu Paper.  
Memory Allocation:
XmX: 8192 (geht bis 9000, falls der Server langsam ist oder crasht, alles darüber lässt das System in der aktuellen Konfiguration abstürzen. Spiel ruhig damit rum und probiers aus, allerdings muss der Server nach jeder Änderung neu gestartet werden.)
Xms: 4096 (Bitte nicht ändern)
Additional Java Arguments und Additional Jar arguments auf Standard bei Problemen ansonsten siehe Paper-Dokumentation.

Alles andere ist für den Betrieb nicht relevant. 

## Backups
Unter Restore Points kannst du Sicherungen anlegen, falls ihr mal was Dummes machen wollt, die lassen sich danach per Knopfdruck einfach wieder einspielen. Archives erstellt die ZIP für einen Export direkt im Browser statt mit dem Umweg über Filezilla.

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/Znpunknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/Znpunknown.png)


Jetzt sollte der Server für alle unter Serveradresse erreichbar sein.

## Administration des laufenden Servers

Falls ihr rcon für Servercommands benutzt, ist die Adresse dafür Serveradresse:15889
Falls ihr die Serverkonsole braucht, um z.B. jemanden zum Admin zu machen oder den Gamemodus zu ändern, ist die unter Logging/logs/latest.log, was sichtbar ist, sobald man oben wieder einen Server ausgesucht hat.

[![unknown.png](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/scaled-1680-/TL5unknown.png)](https://wiki.ngl.cloud/uploads/images/gallery/2022-12/TL5unknown.png)


### Löschen
Um den Server zu löschen, einfach den Server stoppen, alle drei Haken unter Delete Server setzen und auf delete drücken. Danach kann z.B. ein alter Server importiert werden oder Server für eine neue Welt erstellt werden. 
Server importieren. Wenn du oben die Datei korrekt importiert hast, dann sollte jetzt, wenn du auf "Import a Server" klickst, deine ZIP dort auftauchen.

### Finetuning
Je nachdem, welchen Basisserver ihr nutzt (Vanilla, Spigot, Paper, etc.), entsprechende Guides und Settings nutzen.  
#### Minecraft-spezifisch
Schon etwas veraltet, aber immer noch applicable für die Basisoptionen:
<https://www.spigotmc.org/threads/guide-server-optimization%E2%9A%A1.283181/> 

Aktueller:  
<https://apexminecrafthosting.com/server-optimization/>

#### Java-spezifisch
<https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/>

#### Paper-spezifisch:
<https://docs.papermc.io/paper/aikars-flags>
<https://github.com/YouHaveTrouble/minecraft-optimization>
Für Exploits/Special Farming:
<https://shockbyte.com/billing/knowledgebase/495/How-to-Allow-Bedrock-Breaking-TNT-Duping-and-Other-Exploits-in-PaperMC-Servers.html>

Die entsprechende Datei lässt sich per SSH/Filezilla aufrufen/ändern.
# Host Administration
## Protected SFTP access
MineOS bindmount in crontab for sftp user, because no fstab in LXC:  
@reboot mount -o bind  /root/mineos-path/gamefiles/minecraft/import/ /home/sftp_user/minecraft-import-directory/

## Issues
### Server instance not starting - blocked port

<https://discourse.codeemo.com/t/cant-start-server-in-webui/5732>

1. Check usage of 25565 with ```netstat -tulpn | grep 25565```
2. Kill PID
3. Start instance in WebUI

### External Access Issues
1. Check accessibility at <https://mcsrvstat.us/>
2. Internal Portforwarding seems to make trouble on LXC setups, thus the standard ports have to be used. Make sure, 25565 is open and forwarded on TCP and UDP traffic in router.

### Server Profiles not refreshing
<https://wiki.codeemo.com/maint/webui.html>\
```supervisorctl restart mineos```

### Host OS Upgrade
Reinstall npm
Navigate to mineos root folder
run ```npm rebuild```

### Bootsettings reference:
```-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true```
<https://www.spigotmc.org/wiki/timings/>

### Vanilla-like experience in Paper
<https://docs.papermc.io/paper/vanilla/>

# Satisfactory Dedicated Server

<https://linuxgsm.com/servers/sfserver/>

Issues with Update 7 and changed binary names: <https://github.com/GameServerManagers/LinuxGSM/issues/4241>

# Gaming VM



# Default Audio Device resetting on reboot

<https://gist.github.com/ChriRas/b9aef9771a97249cb4620e0d6ef538c4>

# Media Services



# Jellyfin as LXC with onboard Graphics

# Configuration of Jellyfin as LXC with passthrough of onboard iGPU

Tested on AsRock J4105/J5005 and Intel i5 10400F.

There is two ways of running containers in need of the onboard GPU. The easiest way is as priviledged container, since this allows for direct access to the render device of the host without the hassle of right management. This however comes with security issues, because it allows access to parts of the hosts system as root. In a system not accessible from the outside, this likely isn't a concern, but it still can be mitigated by running Jellyfin as unpriviledged LXC with UID/GID mapping to only allow isolated access to render devices. Which option you chose depends on your usecase and stance of safety and isolation.

This setup requires the appropriate driver for your GPU to be installed on the host system and the LXC. A working driver should yield output with "vainfo".

Some instructions are for older versions, but persistent on newer systems, I will thus keep the older sources.

## General Installation of Jellyfin
<https://www.linuxcapable.com/how-to-install-jellyfin-media-server-on-ubuntu-20-04/>  
<https://cetteup.com/216/how-to-use-an-intel-vgpu-for-plexs-hardware-accelerated-streaming-in-a-proxmox-vm/>
### Priviledged:
<https://www.codetd.com/de/article/11969233>  
<https://blog.peterge.de/jellyfin/>
### Unpriviledged
#### UID/GID mapping for /dev/dri128 und /dev/render
<https://forum.jellyfin.org/t/installation-uid-and-gid/821>  
<https://pve.proxmox.com/wiki/Unprivileged_LXC_containers>  
<https://github.com/ahuacate/pve-medialab#203-create-a-ubuntu-1804-lxc-for-jellyfin---ubuntu-1804>
## Common Issues
### Jellyfin not upgrading:
<https://github.com/jellyfin/jellyfin/issues/5448>  
## Integration with other Services
## Encoding/Decoding Issues
Make sure, i965-shaders from the non-free repo is installed, not intel-media, and version of libva and driver are the same on host and guest. Intel-media-hd as driver for i5/i7 6th Gen. and higher instead of i965.
### Kodi
<https://github.com/jellyfin/jellyfin-kodi>

## Sources

# Photoprism

<https://docs.photoprism.app/getting-started/docker-compose/>  
Enable hardware transcoding for Intel GPUs  
<https://github.com/photoprism/photoprism/issues/1337>

Unlock features behind paywall:
<https://www.reddit.com/r/selfhosted/comments/13fj282/tutorial_build_your_own_unrestricted_photoprism_ui/>

transcoder settings
<https://docs.photoprism.app/getting-started/advanced/transcoding/>

# Navidrome

<https://www.navidrome.org/docs/installation/>

# yt-dlp(youtubedl) - Importing Youtube Shows

<https://github.com/yt-dlp/yt-dlp>

Pip install to segment from Jellyfin. On a separate machine, use repository for easier updating.

Default run with Metadata and Subtitles fit for Jellyfin:

# Automatic Ripping Machine

<https://b3n.org/automatic-ripping-machine/>

# Security Services



# Wireguard VPN LXC

Wireguard headless:

Vorher ausführen:  
```apt install resolvconf  ```

<https://apfelcast.com/die-einfachste-opensource-vpn-wireguard-installation-auf-proxmox-lxc/?cookie-state-change=1632921049297>  
<https://www.ckn.io/blog/2017/11/14/wireguard-vpn-typical-setup/>  
<https://github.com/EmbarkStudios/wg-ui>  
<https://stackoverflow.com/questions/46645910/docker-rootfs-linux-go-permission-denied-when-mounting-proc>  
<https://www.stavros.io/posts/how-to-configure-wireguard/>

Wireguard mit Webverwaltung:
<https://docs.firezone.dev/deploy/install-server#manual-install>

# Adguard LXC

<https://blog.wydler.eu/2021/02/21/adguard-home-im-netzwerk-implementieren/>  
<https://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux>  
Einrichtung auf Port 3000

# Miscellaneous Services



# Eclipse CHE

<https://coder.com/docs/code-server/latest/guide>  
<https://coder.com/docs/code-server/latest/install>  
listeningadress von localhost in config auf IP umstellen

# Bookstack

<https://www.bookstackapp.com/docs/admin/installation/#ubuntu-2004>  
edit /var/www/.env   change "appurl" http to https

# ioBroker

installation: <https://www.iobroker.net/#de/documentation/install/linux.md>

# Nextcloud

1. GID/UID Mapping für ZFS Passthrough
	1. <https://pve.proxmox.com/wiki/Unprivileged_LXC_containers>
    FIX für subuid/guid:  
    <https://lxc-users.linuxcontainers.narkive.com/KQxz7W3Z/uid-range-not-allowed>
	2. FIX für "nogroup"-Problem  
	<https://forum.proxmox.com/threads/unable-to-map-to-www-data-user-in-container.49695/>  
	```pct mount CTID```
    ```find /var/lib/lxc/CTID/rootfs -uid 100033 -exec chown 1005 '{}' \;```
    ```find /var/lib/lxc/CTID/rootfs -gid 100033 -exec chgrp 1005 '{}' \;```
	3. Verzeichnis auf ZFS umsetzen
		1. Apache in CT deaktivieren (stop +disable)
		2. Original Nextcloudfiles ordener kopieren
		3. CT abschalten und  mapping + mp0 mount auf ursprüngliches datenverzeichnis vornehmen
		4. CT anschalten kopie wieder in original ordner
		5. Enable + start apache
	4.  ```'skeletondirectory' => '',```
	5. Trusted domains -> reverse proxy ip eintragen
			
			
2. If you just want to remove the default skeleton (no files added on first launch), do the following:
	1. open config file with vi /app/config/config.php
	2. insert line 'skeletondirectory' => ''on a new line (i to enter insert mode)
	3. press esc, then :wq and \<enter> to write and save

# Overleaf

1. Setup according to manual: <https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md>
2. Install full-scheme dependencies in dockercontainer: <https://github.com/overleaf/overleaf/issues/876>\
3. Upgrading: <https://github.com/overleaf/toolkit/blob/master/doc/ce-upgrading-texlive.md#installing-packages>

```
tlmgr update --self\
tlmgr install scheme-full
```

Own script:
```
#!/bin/bash
docker exec -it sharelatex tlmgr --repository http://www.preining.info/tlgpg/ install tlgpg
docker exec -it sharelatex tlmgr install scheme-full
```

# Oddly specific issues



# NAS mit alter Samba Version per Konsole einbinden

<https://forum.proxmox.com/threads/cifs-issue-error-with-cfs-lock-file-storage_cfg-working-now-but-shows-question-mark.45962/>   
```pvesm add cifs extbackup --server 192.168.178.31 --share share --username server --password server --smbversion 2.0```

# Reimport old existing disks with LVM

1. Remove old LVM Volumes
2. lvremove OLDVOLUME
3. Delete old partition table (REMOVES ACCESS TO DATA !!!)  
```dd if=/dev/zero of=/dev/sda bs=512 count=1  ```

Recreate LVM-Thin

# Backup auf PBS ohne Disks zu verlieren

<https://forum.proxmox.com/threads/remove-vm-but-retain-disk.33939/>

# WD Red Fix for high load cycle count (LCC)

<https://withblue.ink/2016/07/15/what-i-learnt-from-using-wd-red-disks-to-build-a-home-nas.html>

# Renew SSL in Turnkey

<https://www.turnkeylinux.org/docs/confconsole>

# Certificate Issue after cluster removal

1. Remove keys as instructed by pve messages after re-entering node
2. Remove all remaints in softlinks in pve folder structure as well
3. ```pvecm updatecerts```

https://forum.proxmox.com/threads/cant-connect-to-destination-address-using-public-key-task-error-migration-aborted.42390/

# Migrate GPG Keys from deprecated keyring to gpg.d

1. ```apt update``` -> identify deprecated keys
2. ```apt-key list``` -> identify last 8 symbols of corresponding key signature. Remove spaces
3. ```apt-key export XXXXXXXX | gpg --dearmour -o /etc/apt/trusted.gpg.d/SERVICENAME.gpg```

# D128 Render device not showing up

nomodeset in grub disabled d128render device. Remove nomodeset.

# Upgrade MariaDB für NC30 und MariaDB > 10.5

1. Lege Backup an (siehe unten):
    >mysqldump -u root -p --opt --all-databases -r backup.sql

2. Entferne OS mysql-server* und mysql-server-core*
    >apt remove mysql-server* mysql-server-core*

3. Installiere MariaDB Repository (Korrigiere ggf. Version. aktuelle LTS 10.11)
    >curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.11"

    Mehr Infos unter <https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/>

4. Reinstalliere alle nötigen Pakete:
    >apt update && apt-get install mariadb-server mariadb-client mariadb-backup

5. ggf. default charset anpassen. (für nextcloud utf8mb4)
    >  mysql -uroot -p --default-character-set=utf8mb4
6. Restore:
    > mysql\
      > mysql> SET names 'utf8mb4';\
      > mysql> SOURCE backup.sql;\

    Aus: <https://stackoverflow.com/questions/9497869/export-and-import-all-mysql-databases-at-once>

7. ggf. MariaDB Security prüfen. i.e. Root PW gesetzt und alte DB Passwörter funktional.

# Documentation Template

### Intro-(What,Why):

#### Required: -

#### Related: -

TEXT TEXT TEXT TEXT

#### See also: -

#### Sources: -

# Hardware Architecture



# APC UPS

Basic Setup
<https://www.brunweb.de/konfiguration-einer-apc-usv-unter-proxmox/>

Master-Slave-Setup
<https://www.pontikis.net/blog/apc-ups-master-slave-setup-apcupsd>