## Dienste
Auf dem Container läuft [Home Assistant](https://www.home-assistant.io/), eine Home Automation Software, in einem Docker-Container
Nach Außen ist der Port 8123 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# Neue Seite
# Container 102 - Caddy
## Technische details
CPU
4
RAM
2G
HDD
4G
OS
Ubuntu 22.04
IP
192.168.0.253/24
Domain
-
Ports
80, 443
## Dienste
Auf dem Container läuft [Caddy](https://caddyserver.com/v2), ein Web Reverse-Proxy. Er schirmt die internen Dienste ab, und bietet eine allgemeine Schnittstelle für die Ports 80/443 (HTTP/HTTPS).
Die Ports 80/443 vom Internetanschluss werden von der Kabelbox an Caddy weitergeleitet, somit kümmert sich Caddy um alle einkommenden Web-Anfragen und leitet sie entsprechend weiter.
Eine weitere Aufgabe von Caddy ist die [automatische](https://caddyserver.com/docs/automatic-https) Beantragung und Erneuerung (alle 3 Monate) von SSL Zertifikaten über den freien Dienst Let's Encrypt.
# Container 103 - Vaultwarden
## Technische details
CPU
1
RAM
1G
HDD
4G
OS
Ubuntu 22.04
IP
192.168.168.35/24
Domain
[pw.oberlab.de](https://pw.oberlab.de/)
Ports
80
## Dienste
Auf dem Container läuft [Vaultwarden](https://github.com/dani-garcia/vaultwarden), eine freie Implementierung und resourcenschonende Variante von [Bitwarden](https://bitwarden.com/) als Docker-Container. Vaultwarden implementiert dabei die API eines Bitwarden-Servers und ist damit mit allen [Bitwarden Clients](https://bitwarden.com/download/) kompatibel
Nach Außen ist der Port 80 erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/intern/obermox/container_102), der die Umsetzung nach HTTPS vornimmt.
Vaultwarden benötigt zwingend eine HTTPS Verbindung, ansonsten kommt nur eine Seite mit einer Fehlermeldung ("Please access this site over HTTPS")
# VM 104 - MQTT
## Technische details
CPU
2
RAM
1G
HDD
8G
OS
Debian 11.3
IP
192.168.0.251/24
Domain
.
Ports
1883, 8883
## Dienste
Auf dem Container läuft [Eclipse Mosquitto](https://mosquitto.org/), ein open-source MQTT Server, in einem Docker-Container
Nach Außen sind die Ports 1883 (unverschlüsselt) und 8883 (TLS-Verschlüsselt) offen
Der Zugang zum MQTT Server ist nur mittels Login/Passwort möglich, anonyme Verbindung sind nicht möglich. Dies gilt sowohl für Devices, die Daten senden wollen, als auch für Dienste, die Daten abonnieren wollen.
## MQTT User anlegen
`docker-compose exec mosquitto mosquitto_passwd -b /mosquitto/config/mosquitto.passwd username`
## MQTT mitlesen
`docker-compose exec mosquitto mosquitto_sub -u username -P passwort -t "#"`
## MQTT Topics
Um einen beliebigen Wildwuchs and MQTT Topics zu verhindern sollten hier alle Topics aufgelistet und neue entsprechend des Schemas angelegt werden.
Kategorie
Topic
Beschreibung
Kontaktperson
Projekte
projects/connecting\_peaks/<device>/+
Connecting Peaks
Joel
projects/trackhoki/<device>/+
Track Hoki
Joel
Lab
gmund/hass/heizung/<device>/+
Home Automation im Gmunder Lab
Joel/John
# VM 105 - Kimai
## Technische details
CPU
4
RAM
2/4G
HDD
8G
OS
Debian 11.3
IP
192.168.168.8/24
Domain
personal.oberlab.de
Ports
1883, 8883
## Dienste
Auf dem Container läuft [Kimai](https://www.kimai.org), eine Zeiterfassungssoftware, in einem Docker-Container
# VM 106 - Minecraft
## Technische details
CPU
6
RAM
4/8G
HDD
12G /
8G /home
OS
Ubuntu 22.04 Server
IP
192.168.0.249/24
Domain
minecraft.oberlab.de
oberlab.chickenkiller
Ports
8000, 9000, 9443, 25565
## Dienste
Auf der VM läuft ein Minecraft von Julian/Konsti. Administriert wird der Container mittels [Portainer](https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux).
Nach Außen sind die Ports 8000, 9000, 9443 von Portainer erreichbar.
Minecraft verwendet den Port 25565.
# Container 107 - Listmonk
## Technische details
## Dienste
Auf dem Container läuft [ListMonk](https://listmonk.app/), eine freie Mailinglisten Verwaltungssoftware als Docker-Container.
Nach Außen ist der Port 9000 erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# Container 108 - ptrackhoki
### Technische details
CPU
4
RAM
2G
HDD
8G
OS
Ubuntu 22.04
IP
192.168.168.4/24
Domain
trackhoki.oberlab.de
Ports
3000, 8086
## Dienste
Auf dem Container laufen Telegraf, Influxdb und Grafana
Nach Außen ist der Port 3000 von Grafana erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
Der Port 8086 von Influxdb ist verfügbar um auf die Datenbank z.B. per Skript zuzugreifen, wir aber für den Betrieb von Grafana nicht verwendet (Grafana benutzt das interne Docker-Netzwerk)
## Dienste
Auf dem Container laufen Telegraf, Influxdb und Grafana
Nach Außen ist der Port 3000 von Grafana erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
Der Port 8086 von Influxdb ist verfügbar um auf die Datenbank z.B. per Skript zuzugreifen, wir aber für den Betrieb von Grafana nicht verwendet (Grafana benutzt das interne Docker-Netzwerk)
## Setup
### Grafana
in grafana.ini, den domain-Eintrag anpassen und Container neu starten
### Influxdb
Passwörter für admin, grafana und telegraf ändern
### Telegraf
Format der MQTT Pakete anpassen
Passwörter für MQTT & InfluxDB anpassen
# Container 11 - bikesensor & messi
## Technische details
## Dienste
### [Bikesensor](https://wiki.oberlab.de/books/verschiedene-projekte/page/openbikesensor "OpenBikeSensor") Projekt
Der Webserver für das OpenBikeSensor Projekt läuft auf Port 8000, wird über ein Systemd-Service gestartet
Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
### [Messi](https://wiki.oberlab.de/books/verschiedene-projekte/page/messis-im-oberland "Messis im Oberland") Projekt
Auf dem Container laufen Influxdb und Grafana sowie ein [cherrypy](https://cherrypy.dev/) Webserver
Nach Außen ist der Port 3000 von Grafana erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
Der Port 8086 von Influxdb ist verfügbar um auf die Datenbank z.B. per Skript zuzugreifen, wir aber für den Betrieb von Grafana nicht verwendet (Grafana benutzt das interne Docker-Netzwerk)
Der Port 80 wird von cherrypy verwendet, um die Nachrichten von [TTN](https://wiki.oberlab.de/books/allgemeines-wissen/page/lora-ttn "LoRa & TTN") per WebPush zu empfangen
Die passende Software liegt unter [https://gitlab.com/oberlab/p\_messi.git](https://gitlab.com/oberlab/p_messi.git)
# VM 112 - Proxmox Backup Server
## Technische details
## Dienste
Auf dem Container läuft [proxmox backup server](https://www.proxmox.com/de/proxmox-backup-server). Dessen Web-Oberfläche ist über den Port 8007 erreichbar
Nach Außen ist der Port 3000 von Grafana erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
## Zweite Platte
Die zweite Platte beinhaltet die Backups. Sie ist unter /mnt/datastore/oberlab gemountet
# VM 117 - Oberlogin
## Technische details
## Dienste
Auf dem Container läuft [Keycloak](https://www.keycloak.org/), eine User Management Software, die für das SSO zuständig ist.
Nach Außen ist der Port 8080 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# VM 118 - Obercloud
## Technische details
## Dienste
Auf dem Container läuft [Nextcloud](https://nextcloud.com/), eine Cloud Software. Passend dazu ebenfalls [Collabora Office](https://www.collaboraoffice.com/) um
Nach Außen sind die Ports 80 und 9980 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# VM 119 - old Wiki
## Technische details
## Dienste
Auf dem Container läuft [Wiki.js](https://js.wiki/), eine Wiki Software.
Nach Außen ist der Port 3000 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# VM 120 - Wiki
## Technische details
## Dienste
Auf dem Container läuft [BookStack](https://www.bookstackapp.com/), eine Wiki Software.
Nach Außen ist der Port 80 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# VM 121 - Paperless
## Technische details
## Dienste
Auf dem Container läuft [Paperless-ngx](https://docs.paperless-ngx.com/), ein Dokument Mangement System.
Ferner läuft ein Samba-Server auf Ports 139/445, womit ein Upload von Dokumenten (zB direkt aus dem Scanner/Drucker im Lab) möglich ist.
Nach Außen ist der Port 80 der Standard-Weboberfläche erreichbar. Angesteuert wird der Port vom [Caddy Container](https://wiki.oberlab.de/books/server-gmund/page/container-102-caddy "Container 102 - Caddy"), der die Umsetzung nach HTTPS vornimmt.
# Server
# Administration
## Remote Zugriff
Geht über [Tailscale](https://tailscale.com/). Damit muss kein dedizierter Port nach Außen freigegeben werden. Der Hauptserver hat die IP 100.91.45.38 (siehe [Obermox](https://wiki.oberlab.de/intern/obermox/obermox))
Zugriff auf die Container/VMs geht auch remote über SSH wenn man den Proxmox Hauptserver als Jumphost verwendet:
`ssh -J root@100.91.45.38 root@host`
Ebenso kann man Dateien direkt auf die Container/VMs übertragen wenn man den Proxmox Hauptserver als Jumphost verwendet:
`scp -rp -J root@100.91.45.38 file root@host:/path`
## Backups
Täglich um 3:00 werden alle Container und VMs heruntergefahren, ein Archiv gezogen, und wieder neu gestartet. Die Konfiguration des Backups erfolgt in Proxmox.
Die Backups liegen lokal auf der dedizierten 750GB SATA Festplatte.
Remote-Kopien werden zusätzlich täglich angelegt werden (bei Joel)
## DynDNS
Per [ddclient](https://ddclient.net/) wird die IP Adresse des Internet-Anschlusses überwacht, und bei Bedarf der DNS-Eintrag für gmund.oberlab.de aktualisiert. Dieser Eintrag hat eine TTL von 5 Minuten, das wäre die Zeit wo ggf noch die alte IP Adresse vom DNS Server zurückgeliefert würde.
Ein evtl. DynDNS Update seitens der Kabelbox ist davon komplett unabhängig.
## Installation / Konfiguration
Die meisten Aufgaben nach der Grundinstallation von Proxmox (mittels [ISO Image](https://www.proxmox.com/en/downloads/category/iso-images-pve) der Distribution) wird über [Ansible](https://www.ansible.com/)-Skripte gesteuert. Sie sind im [Gitlab](https://gitlab.com/oberlab/p_server_gmund) abgelegt.
Die Skripte können ebenfalls eine Grundkonfiguration einzelner Container oder VMs vornehmen.
Ferner sind im Gitlab die Docker Konfigurationsdaten für die verschiedenen Services abgelegt, die in den Container/VMs betrieben werden.
Weitere Anpassungen bleiben unabhängig davon möglich. Man sollte allerdings vermeiden Dateien zu ändern, die von Ansible verwaltet werden - sie werden beim nächsten Lauf zurückgesetzt !
# IP Addressen
# Bereich 192.168.0.x - routebare Addressen
**!!! IP Addressen 192.168.0.10-208 sind für DHCP reserviert, 192.168.0.1-10 für Infrastruktur !!! - siehe [Kabelbox](https://wiki.oberlab.de/books/infrastruktur/page/kabelbox "Kabelbox")**
# Hardware
## Server
DELL Poweredge T320
[Bedienungsanleitung](https://wiki.oberlab.de/obermox/poweredge-t320_owners-manual_de-de.pdf)
## CPU
Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz
6 Kerne, 12 Threads
## RAM
36GB :
3x 8GB ECC RAM 10600 9-11-E2 (Micron)
3x 4GB ECC RAM 10600 9-10-E1 (Hynix)
## HDD
8-Port SAS RAID Controller + 2-Port SATA Controller
(+ 2 SD Kartenslots... war wohl bei VMWare das Mittel zum Booten, sollte man jetzt nciht mehr benutzen)
## Physische Platten
- Slot 0 : 600GB SAS 15k 2.5" DELL
- Slot 1 : 600GB SAS 15k 2.5" DELL
- Slot 2 : 600GB SAS 15k 2.5" DELL
- Sata0 : 750GB 2.5" Platte
## Logische Platten
- RAID5 1.2TB : Platten #0,1,2
- RAID0 120GB : Platte #7
- Standalone 750GB Platte
## Netzwerk
2x Gigabit Ports "1" und "2"
LAN auf Port "2"
Port "1" unbenutzt
## iDrac - integrated DELL Remote Admin Console
Dedizierter Netzwerk Port
Oberfläche nur über HTTPS verfügbar - mit unbekannten DELL SSL Zertifikat -> Ausnahme im Browser bestätigen
# Software
## Intro
Auf dem Server läuft die Virtualisierungssoftware [Proxmox](https://pve.proxmox.com/pve-docs/pve-admin-guide.html). Sie basiert auf Debian Linux, und kann sowohl Virtuelle Maschinen (VMs) als auch LXC Container verwalten. Damit lassen sich getrennte Dienste betreiben, und beliebige Test-Umgebungen aufsetzen.
## Netzwerk
IP 192.168.0.254/24
Gateway 192.168.0.1
DNS 192.168.0.1
## Proxmox Web-Oberfläche
Im Lab : [https://192.168.0.254:8006](https://192.168.0.254:8006/)
Über Tailscale : [https://100.91.45.38:8006](https://100.91.45.38:8006/)
## Tailscale
[Tailscale](https://tailscale.com/) ist eine VPN Lösung um remote auf den Server zugreifen zu können
Der Server hat die IP 100.91.45.38
Nur Mitglieder des Tailscale Rings des Oberlabs und eingeladene Gäste können auf die IP Adresse zugreifen
# Proxmox
## Login
Erfolgt über Login/Passwort **+ TOTP** (liegen im Vaultwarden)
## Netze
### vmbr0
Ist mit der Netzwerkschnittstelle eno2 (Port 2 am Case) verbunden.
IP 192.168.0.254/24
### vmbr168
Ist eine virtuelle Schnittstelle innerhalb vom Server, für Dienste die keine direkte Verbindung nach Außen haben und somit abgeschottet sind.
IP 192.168.168.1/24
### eno1
Nicht verwendet, ist aber vor-konfiguriert
IP 192.168.24.240/24
## Storage
### local
Root-Filesystem von Proxmox auf dem RAID5 Cluster → /var/lib/vz
ISO-Images und Container-Templates
Backups (über gemountete 750G Festplatte in /etc/fstab - transparent für Proxmox) in /var/lib/vz/dump
### local-lvm
LVM-Thin auf dem RAID5-Cluster
Storage für die VMs und Container
### storage2
140G Platte aus dem Raid0
Unbenutzt (wird ggf gelöscht/ersetzt)