chore(docs+infra): add hardware setup logs, guidelines, and Minisforum MS-R1 documentation
- Updated `MASTER_ROADMAP_2026_Q1.md` to reflect delivery of Minisforum MS-R1 hardware and progress on infrastructure setup. - Added detailed documentation for Minisforum MS-R1, including specifications, host OS setup guide, and service configuration guide. - Logged DevOps setup session and curator's session with focus on hardware integration, SSH hardening, and networking adjustments (Macvlan workaround). - Included user manual for Minisforum MS-R1 and related assets (e.g., images).
@@ -2,7 +2,7 @@
|
|||||||
type: Roadmap
|
type: Roadmap
|
||||||
status: ACTIVE
|
status: ACTIVE
|
||||||
owner: Lead Architect
|
owner: Lead Architect
|
||||||
last_update: 2026-02-06
|
last_update: 2026-02-07
|
||||||
---
|
---
|
||||||
|
|
||||||
# MASTER ROADMAP Q1 2026: "Operation Tracer Bullet"
|
# MASTER ROADMAP Q1 2026: "Operation Tracer Bullet"
|
||||||
@@ -10,11 +10,12 @@ last_update: 2026-02-06
|
|||||||
**Strategisches Ziel:**
|
**Strategisches Ziel:**
|
||||||
Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service -> DB) anhand des **Ping-Service**. Dieser Service dient als **technischer Blueprint** (Vorlage) für alle kommenden Fach-Services. Er muss "Production Ready" gehärtet sein, bevor wir Fachlichkeit implementieren.
|
Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service -> DB) anhand des **Ping-Service**. Dieser Service dient als **technischer Blueprint** (Vorlage) für alle kommenden Fach-Services. Er muss "Production Ready" gehärtet sein, bevor wir Fachlichkeit implementieren.
|
||||||
|
|
||||||
**Aktueller technischer Stand (06.02.2026):**
|
**Aktueller technischer Stand (07.02.2026):**
|
||||||
* Build System: ✅ Grün (Gradle, Kotlin 2.3, Spring Boot 3.5.9, Spring Cloud 2025.0.1).
|
* Build System: ✅ Grün (Gradle, Kotlin 2.3, Spring Boot 3.5.9, Spring Cloud 2025.0.1).
|
||||||
* Code-Basis: ✅ `ping-service` existiert, Delta-Sync implementiert.
|
* Code-Basis: ✅ `ping-service` existiert, Delta-Sync implementiert.
|
||||||
* Infrastruktur: ✅ Docker Environment stabil (Valkey, Keycloak, Consul, Zipkin).
|
* Infrastruktur: ✅ Docker Environment stabil (Valkey, Keycloak, Consul, Zipkin).
|
||||||
* Frontend: ✅ Web-App & Desktop-App (KMP), Login funktioniert, Sync-Logik vorhanden.
|
* Frontend: ✅ Web-App & Desktop-App (KMP), Login funktioniert, Sync-Logik vorhanden.
|
||||||
|
* Hardware: ✅ Minisforum MS-R1 eingetroffen.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -70,7 +71,7 @@ Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service ->
|
|||||||
* Architektur-Entscheidung: Dezentraler Microservice (wegen Resource-Bursts).
|
* Architektur-Entscheidung: Dezentraler Microservice (wegen Resource-Bursts).
|
||||||
* Technologie-Evaluierung: JasperReports, Thymeleaf + Flying Saucer, etc.
|
* Technologie-Evaluierung: JasperReports, Thymeleaf + Flying Saucer, etc.
|
||||||
4. **Infrastructure Setup (Home-Server):**
|
4. **Infrastructure Setup (Home-Server):**
|
||||||
* Hardware: Minisforum MS-R1 (ARM64, 12 Cores, 10G LAN).
|
* Hardware: Minisforum MS-R1 (ARM64, 12 Cores, 10G LAN) ✅ **GELIEFERT (07.02.2026)**.
|
||||||
* OS: Debian 12 (Vendor Variant) als Host.
|
* OS: Debian 12 (Vendor Variant) als Host.
|
||||||
* Hypervisor: **Incus** (LXC/LXD Fork).
|
* Hypervisor: **Incus** (LXC/LXD Fork).
|
||||||
* Virtualization Strategy:
|
* Virtualization Strategy:
|
||||||
|
|||||||
@@ -0,0 +1,149 @@
|
|||||||
|
---
|
||||||
|
Betriebsanleitung Minisforum MS-R1
|
||||||
|
---
|
||||||
|
|
||||||
|
# MINISFORUM MS-R1
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
```
|
||||||
|
Copyright @ 2024-2025 Micro Computer (HK) Tech Limited.
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Haftungsausschluss Und Sicherheitshinweise
|
||||||
|
|
||||||
|
### Haftungsausschluss
|
||||||
|
|
||||||
|
1. Vielen Dank, dass Sie sich für das Produkt MS-R1 entschieden haben.
|
||||||
|
2. Die in diesem Haftungsausschluss genannten Inhalte beziehen sich auf Ihre Sicherheit, Ihre
|
||||||
|
gesetzlichen Rechte und Pflichten. Bitte beachten Sie alle Warn-, Vorsichts- und Aufmerksam-
|
||||||
|
keitszeichen auf den Bedienungsanleitung und Produktetiketten und installieren Sie es gemäß
|
||||||
|
den Bedienungsanleitung in der Anleitung.
|
||||||
|
3. Das Produkt ist relativ komplex und Benutzer müssen über grundlegende praktische
|
||||||
|
Installationsfähigkeiten und Sicherheitskenntnisse verfügen. Bei der Installation sollten Sie
|
||||||
|
vorsichtig sein.
|
||||||
|
4. Bevor Sie dieses Produkt verwenden, lesen Sie bitte die Bedienungsanleitung sorgfältig durch,
|
||||||
|
um sicherzustellen, dass das Produkt korrekt eingerichtet werden kann. Die Nichtbeachtung von
|
||||||
|
Anweisungen, Warnhinweisen, Vorsichtsmaßnahmen und Hinweisschildern kann zu
|
||||||
|
Produktschäden, Datenverlusten. In schwerwiegenden Fällen kann es zu Personen- und
|
||||||
|
Sachschäden kommen.
|
||||||
|
5. Wenn Sie dieses Produkt verwenden, wird davon ausgegangen, dass Sie den Hinweis-, Warn-,
|
||||||
|
Vorsichts-und Aufmerksamkeitsschilder sorgfältig gelesen, verstanden und akzeptiert haben. Sie
|
||||||
|
verpflichten sich, die volle Verantwortung für die Folgen der Verwendung dieses Produkts zu
|
||||||
|
übernehmen. Sie verpflichten sich, dieses Produkt nur für rechtmäßige Zwecke zu verwenden und
|
||||||
|
Sie stimmen den Bedingungen dieses Haftungsausschlusses und allen von MINISFORUM
|
||||||
|
aufgestellten Grundsätzen und Richtlinien zu.
|
||||||
|
6. Zusätzlich zu den Garantiebedingungen haftet MINISFORUM nicht für Schäden oder Verletzun-
|
||||||
|
gen, die sich direkt oder indirekt aus der Verwendung dieses Produkts ergeben, insbesondere für
|
||||||
|
Schäden, die sich aus der Nichtbeachtung der Sicherheitsrichtlinien ergeben, und der Benutzer
|
||||||
|
muss alle in dieser Erklärung und in der Bedienungsanleitung genannten Sicherheitsrichtlinien
|
||||||
|
befolgen.
|
||||||
|
7. Das letzte Auslegungsrecht dieser Erklärung liegt beim MINISFORUM.
|
||||||
|
|
||||||
|
### Vorsichtsmaßnahmen
|
||||||
|
|
||||||
|
1. Staub, Feuchtigkeit und starke Temperaturschwankungen können die Lebensdauer dieses
|
||||||
|
Produkts beeinträchtigen. Vermeiden Sie daher, das Produkt an diesen Orten aufzustellen.
|
||||||
|
2. Dieses Produkt sollte nur bei Temperaturen im Bereich von 0°C bis 35°C verwendet werden.
|
||||||
|
3. Die geeignete Temperatur für dieses Produkt und Zubehör beträgt 0°C bis 35°C.
|
||||||
|
4. Blockieren Sie nicht die Lüftungsöffnungen des Geräts. Halten Sie einen Abstand von
|
||||||
|
mindestens 10 cm ein, um eine ausreichende Belüftung zu gewährleisten.
|
||||||
|
5. Verwenden Sie das mitgelieferte Netzteil. Netzteile anderer Hersteller können das Gerät
|
||||||
|
beschädigen.
|
||||||
|
6. Wenn Sie ein Verlängerungskabel verwenden, stellen Sie sicher, dass die Gesamtstromstärke
|
||||||
|
aller angeschlossenen Geräte die zulässige Stromstärke des Kabels nicht überschreitet.
|
||||||
|
7. Wenn das Produkt längere Zeit nicht verwendet wird, ziehen Sie bitte den Netzstecker.
|
||||||
|
8. Bitte verwenden Sie keine Lösungsmittel wie Verdünner, Alkohol oder andere chemische
|
||||||
|
Lösungsmittel, um das Produkt zu reinigen. Verwenden Sie ein weiches Tuch, um das Produkt
|
||||||
|
zu reinigen.
|
||||||
|
9. Wenn das Produkt nass wird, schalten Sie es sofort aus und ziehen Sie den Netzstecker.
|
||||||
|
Wenden Sie sich an den Kundendienst.
|
||||||
|
10. Öffnen Sie das Gehäuse nicht, wenn das Gerät eingeschaltet ist. Es besteht die Gefahr eines
|
||||||
|
Stromschlags.
|
||||||
|
11. Wenn Sie das Gerät öffnen müssen, ziehen Sie zuerst den Netzstecker.
|
||||||
|
12. Wenn Sie das Gerät entsorgen, beachten Sie bitte die örtlichen Vorschriften zur Entsorgung
|
||||||
|
von Elektronikschrott.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Lieferumfang
|
||||||
|
|
||||||
|
| Bild | Name | Menge |
|
||||||
|
| :---: | :--- | :---: |
|
||||||
|
|  | MINISFORUM MS-R1 | 1 |
|
||||||
|
|  | Netzteil | 1 |
|
||||||
|
|  | HDMI Kabel | 1 |
|
||||||
|
|  | Befestigungsschraubensatz | 1 |
|
||||||
|
|  | Bedienungsanleitung | 1 |
|
||||||
|
|  | SSD Kühlkörper | 1 |
|
||||||
|
|  | U.2 zu M.2 Adapter | 1 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Schnittstellen
|
||||||
|
|
||||||
|
### Vorderseite
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. **Power Button:** Ein-/Ausschalter mit LED-Anzeige.
|
||||||
|
2. **USB 3.2 Gen2 Type-A:** Schnelle Datenübertragung (bis zu 10 Gbit/s).
|
||||||
|
3. **USB 2.0 Type-A:** Für Peripheriegeräte wie Maus und Tastatur.
|
||||||
|
4. **3.5mm Audio Jack:** Kombinierter Kopfhörer-/Mikrofonanschluss.
|
||||||
|
5. **USB4 / Type-C:** Unterstützt Daten, Video (DP Alt Mode) und Power Delivery (PD).
|
||||||
|
|
||||||
|
### Rückseite
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. **DC 19V:** Stromanschluss für das mitgelieferte Netzteil.
|
||||||
|
2. **2.5G LAN (RJ45):** Schnelle Netzwerkverbindung (Intel I226-V).
|
||||||
|
3. **10G SFP+:** Hochgeschwindigkeits-Netzwerkanschluss (für Glasfaser oder DAC).
|
||||||
|
4. **HDMI 2.1:** Videoausgang (bis zu 4K@144Hz / 8K@60Hz).
|
||||||
|
5. **USB 3.2 Gen2 Type-A:** Weitere schnelle USB-Anschlüsse.
|
||||||
|
6. **USB4 / Type-C:** Zweiter voll funktionsfähiger USB4-Port.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Installation
|
||||||
|
|
||||||
|
### SSD Installation
|
||||||
|
|
||||||
|
1. Entfernen Sie die Schrauben an der Unterseite des Gehäuses.
|
||||||
|
2. Heben Sie die Bodenplatte vorsichtig ab.
|
||||||
|
3. Lokalisieren Sie den M.2 Slot.
|
||||||
|
4. Setzen Sie die SSD im 30-Grad-Winkel ein.
|
||||||
|
5. Drücken Sie die SSD vorsichtig nach unten und befestigen Sie sie mit der Schraube.
|
||||||
|
6. Bringen Sie den Kühlkörper an (falls vorhanden).
|
||||||
|
|
||||||
|
### RAM Installation
|
||||||
|
|
||||||
|
1. Lokalisieren Sie die SO-DIMM Slots.
|
||||||
|
2. Setzen Sie das RAM-Modul im 30-Grad-Winkel ein.
|
||||||
|
3. Drücken Sie das Modul nach unten, bis die seitlichen Klammern einrasten.
|
||||||
|
|
||||||
|
### Montage
|
||||||
|
|
||||||
|
Das Gerät kann liegend betrieben oder mit einer VESA-Halterung an der Rückseite eines Monitors befestigt werden.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. BIOS Einstellungen
|
||||||
|
|
||||||
|
Um in das BIOS zu gelangen, drücken Sie beim Starten des Geräts wiederholt die **Entf**-Taste (Delete).
|
||||||
|
|
||||||
|
* **Boot Priority:** Legen Sie hier fest, von welchem Laufwerk gestartet werden soll.
|
||||||
|
* **Secure Boot:** Kann für bestimmte Betriebssysteme (z.B. Linux) deaktiviert werden müssen.
|
||||||
|
* **Power On after Power Loss:** Einstellung, ob das Gerät nach einem Stromausfall automatisch starten soll (Wichtig für Server-Betrieb!).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Treiber und Support
|
||||||
|
|
||||||
|
Treiber und weitere Informationen finden Sie auf der offiziellen Support-Seite von Minisforum:
|
||||||
|
[https://www.minisforum.com/support](https://www.minisforum.com/support)
|
||||||
|
|
||||||
|
Bei Problemen wenden Sie sich bitte an den Support: `support@minisforum.com`
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
# Setup Guide: Host OS (Minisforum MS-R1)
|
||||||
|
|
||||||
|
**Status:** DRAFT
|
||||||
|
**Date:** 2026-02-07
|
||||||
|
**Target:** Pre-installed Debian 12 (Vendor OS)
|
||||||
|
|
||||||
|
Dieses Dokument beschreibt die Schritte, um das vorinstallierte Betriebssystem des Minisforum MS-R1 für den Einsatz als **Meldestelle Home-Server** vorzubereiten.
|
||||||
|
|
||||||
|
## 0. SSH Verbindung herstellen
|
||||||
|
|
||||||
|
Da der Server bereits im Netzwerk ist, verbinden wir uns per SSH.
|
||||||
|
|
||||||
|
### IP-Adresse finden
|
||||||
|
Wenn du die IP-Adresse des Servers nicht kennst:
|
||||||
|
1. Schaue im Router (FritzBox o.ä.) nach einem Gerät namens `debian`, `minisforum` oder ähnlich.
|
||||||
|
2. Oder schließe kurz Monitor & Tastatur an und tippe `ip a` ein. Suche nach `inet 192.168.x.x`.
|
||||||
|
|
||||||
|
### Verbinden (von deinem Arbeitsrechner)
|
||||||
|
Öffne ein Terminal (PowerShell oder Bash) auf deinem Laptop/PC:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Syntax: ssh <user>@<ip-adresse>
|
||||||
|
# Der Standard-User bei Debian ist oft 'root' oder 'debian' oder 'user'.
|
||||||
|
# Das Passwort steht oft auf einem Zettel im Karton oder ist 'minisforum', 'password' oder leer.
|
||||||
|
|
||||||
|
ssh user@192.168.178.XX # (Ersetze XX mit der echten IP)
|
||||||
|
```
|
||||||
|
|
||||||
|
*Falls der Login klappt, fahre mit Schritt 1 fort.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Bestandsaufnahme & Update
|
||||||
|
|
||||||
|
Zuerst prüfen wir den Status des Systems und aktualisieren die Pakete.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# System-Infos anzeigen (Kernel, Architektur)
|
||||||
|
uname -a
|
||||||
|
cat /etc/debian_version
|
||||||
|
lscpu
|
||||||
|
|
||||||
|
# Prüfen, ob KVM (Virtualisierung) aktiv ist (Wichtig für Incus VMs!)
|
||||||
|
ls -l /dev/kvm
|
||||||
|
# Sollte crw-rw---- root kvm ... ausgeben.
|
||||||
|
|
||||||
|
# Paketquellen aktualisieren und System upgraden
|
||||||
|
sudo apt update && sudo apt full-upgrade -y
|
||||||
|
|
||||||
|
# Aufräumen
|
||||||
|
sudo apt autoremove -y
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Basis-Tools installieren
|
||||||
|
|
||||||
|
Wir benötigen einige Standard-Tools für die weitere Verwaltung.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install -y curl wget git htop vim nano ufw net-tools dnsutils
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Sicherheit (Hardening)
|
||||||
|
|
||||||
|
Da der Server im Netzwerk hängt, sichern wir den Zugang ab.
|
||||||
|
|
||||||
|
### 3.1 Neuer Admin-User (falls noch nicht geschehen)
|
||||||
|
Vermeide die Nutzung von `root` oder Standard-Usern wie `admin`/`user`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ersetze 'meldestelle-admin' mit deinem Wunschnamen
|
||||||
|
sudo adduser meldestelle-admin
|
||||||
|
sudo usermod -aG sudo meldestelle-admin
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 SSH Absichern
|
||||||
|
*Hinweis: Führe dies erst aus, wenn du dich mit dem neuen User erfolgreich eingeloggt hast!*
|
||||||
|
|
||||||
|
Editiere `/etc/ssh/sshd_config`:
|
||||||
|
```ssh
|
||||||
|
PermitRootLogin no
|
||||||
|
PasswordAuthentication yes # Später auf 'no' setzen, wenn SSH-Keys eingerichtet sind!
|
||||||
|
```
|
||||||
|
Neustart: `sudo systemctl restart ssh`
|
||||||
|
|
||||||
|
### 3.3 Firewall (UFW)
|
||||||
|
Wir erlauben vorerst nur SSH und später HTTP/HTTPS.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ufw default deny incoming
|
||||||
|
sudo ufw default allow outgoing
|
||||||
|
sudo ufw allow ssh
|
||||||
|
sudo ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Virtualisierung: Incus Installation
|
||||||
|
|
||||||
|
Wir nutzen **Incus** (Community Fork von LXD) für Container und VMs. Da Debian 12 Incus nicht in den Standard-Repos hat, nutzen wir das Zabbly-Repository (Standard für Incus).
|
||||||
|
|
||||||
|
### 4.1 Repository hinzufügen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Keyring Verzeichnis erstellen
|
||||||
|
sudo mkdir -p /etc/apt/keyrings/
|
||||||
|
|
||||||
|
# GPG Key herunterladen
|
||||||
|
sudo curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
|
||||||
|
|
||||||
|
# Repository hinzufügen
|
||||||
|
sudo sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
|
||||||
|
Enabled: yes
|
||||||
|
Types: deb
|
||||||
|
URIs: https://pkgs.zabbly.com/incus/stable
|
||||||
|
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
|
||||||
|
Components: main
|
||||||
|
Architectures: $(dpkg --print-architecture)
|
||||||
|
Signed-By: /etc/apt/keyrings/zabbly.asc
|
||||||
|
|
||||||
|
EOF'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y incus
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 User zur Gruppe hinzufügen
|
||||||
|
|
||||||
|
Damit du `incus` ohne `sudo` nutzen kannst:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo usermod -aG incus-admin meldestelle-admin
|
||||||
|
newgrp incus-admin
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.4 Initialisierung (Mit Workaround für Vendor Kernel)
|
||||||
|
|
||||||
|
⚠️ **ACHTUNG:** Der Vendor-Kernel (`6.6.10-cix-build-generic`) scheint wichtige Firewall-Module (`nf_tables`) zu vermissen. Das Standard-Setup von Incus schlägt daher fehl.
|
||||||
|
|
||||||
|
Wir müssen die Netzwerk-Brücke während der Initialisierung **deaktivieren** und später manuell konfigurieren.
|
||||||
|
|
||||||
|
Führe `incus admin init` erneut aus und antworte wie folgt:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Would you like to use clustering? (yes/no) [default=no]: no
|
||||||
|
Do you want to configure a new storage pool? (yes/no) [default=yes]: yes
|
||||||
|
Name of the new storage pool [default=default]: default
|
||||||
|
Name of the storage backend to use (dir, truenas) [default=dir]: dir
|
||||||
|
Where should this storage pool store its data? [default=/var/lib/incus/storage-pools/default]: (Enter drücken)
|
||||||
|
Would you like to create a new local network bridge? (yes/no) [default=yes]: no <-- WICHTIG!
|
||||||
|
Would you like the server to be available over the network? (yes/no) [default=no]: no
|
||||||
|
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: yes
|
||||||
|
Would you like a YAML "init" preseed to be printed? (yes/no) [default=no]: no
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.5 Netzwerk Konfiguration (Macvlan)
|
||||||
|
|
||||||
|
Da wir keine Bridge erstellen können, nutzen wir **Macvlan**. Das bedeutet, jeder Container bekommt eine eigene IP-Adresse direkt von deinem Router (FritzBox). Das ist für einen Home-Server oft sogar praktischer.
|
||||||
|
|
||||||
|
1. **Kernel-Modul laden (WICHTIG):**
|
||||||
|
Der Vendor-Kernel lädt `macvlan` nicht automatisch.
|
||||||
|
```bash
|
||||||
|
sudo modprobe macvlan
|
||||||
|
echo "macvlan" | sudo tee -a /etc/modules
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Netzwerk-Interface finden:**
|
||||||
|
Führe `ip -br a` aus. Suche das Interface mit deiner IP (z.B. `eth0`, `enP4p1s0` o.ä.). Ignoriere `lo`, `docker0` etc.
|
||||||
|
|
||||||
|
3. **Profil anpassen:**
|
||||||
|
Ersetze `<INTERFACE>` im folgenden Befehl mit dem Namen aus Schritt 2 (z.B. `eth0`).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Füge das Netzwerk-Device zum default Profil hinzu
|
||||||
|
incus profile device add default eth0 nic nictype=macvlan parent=<INTERFACE>
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Test:**
|
||||||
|
Starte einen Test-Container:
|
||||||
|
```bash
|
||||||
|
incus launch images:debian/12 test-container
|
||||||
|
incus list
|
||||||
|
# Sollte eine IP aus deinem Heimnetz (192.168.178.xxx) haben.
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Nächste Schritte
|
||||||
|
|
||||||
|
Nachdem der Host vorbereitet ist, werden wir gemäß Roadmap folgende Instanzen erzeugen:
|
||||||
|
|
||||||
|
1. **Gitea Container:** `incus launch images:debian/12 infra-gitea`
|
||||||
|
2. **Docker Host VM:** `incus launch images:debian/12 docker-host-prod --vm`
|
||||||
|
|
||||||
|
Bitte melde zurück, wenn Schritt 1-4 erfolgreich waren oder ob Fehler (z.B. fehlendes `/dev/kvm`) aufgetreten sind.
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
# Setup Guide: Infrastructure Services (Minisforum MS-R1)
|
||||||
|
|
||||||
|
**Status:** DRAFT
|
||||||
|
**Date:** 2026-02-07
|
||||||
|
**Context:** Host OS (Debian 12 ARM64) ist vorbereitet, Incus läuft mit Macvlan.
|
||||||
|
|
||||||
|
Dieses Dokument beschreibt die Installation der beiden Haupt-Komponenten:
|
||||||
|
1. **infra-gitea:** Ein leichtgewichtiger Git-Server (LXC Container).
|
||||||
|
2. **docker-host-prod:** Die Produktions-Umgebung für die Meldestelle-App (Incus VM).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Gitea Container (`infra-gitea`)
|
||||||
|
|
||||||
|
Wir nutzen einen LXC-Container, da Gitea sehr ressourcensparend ist.
|
||||||
|
|
||||||
|
### 1.1 Container starten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Starten des Containers
|
||||||
|
incus launch images:debian/12 infra-gitea
|
||||||
|
|
||||||
|
# Warten bis er eine IP hat
|
||||||
|
incus list infra-gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.2 Gitea Installation
|
||||||
|
|
||||||
|
Wir installieren Gitea manuell als Binary, um die volle Kontrolle zu haben.
|
||||||
|
|
||||||
|
1. **In den Container einloggen:**
|
||||||
|
```bash
|
||||||
|
incus shell infra-gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Abhängigkeiten installieren (im Container):**
|
||||||
|
```bash
|
||||||
|
apt update && apt install -y git wget gnupg2
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Git-User anlegen:**
|
||||||
|
```bash
|
||||||
|
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password git
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Gitea Binary herunterladen (ARM64):**
|
||||||
|
```bash
|
||||||
|
wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-arm64
|
||||||
|
chmod +x /usr/local/bin/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Verzeichnisse erstellen:**
|
||||||
|
```bash
|
||||||
|
mkdir -p /var/lib/gitea/{custom,data,log}
|
||||||
|
chown -R git:git /var/lib/gitea/
|
||||||
|
chmod -R 750 /var/lib/gitea/
|
||||||
|
mkdir /etc/gitea
|
||||||
|
chown root:git /etc/gitea
|
||||||
|
chmod 770 /etc/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Systemd Service anlegen:**
|
||||||
|
Erstelle die Datei `/etc/systemd/system/gitea.service`:
|
||||||
|
*(Inhalt siehe unten)*
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea (Git with a cup of tea)
|
||||||
|
After=syslog.target
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
RestartSec=2s
|
||||||
|
Type=simple
|
||||||
|
User=git
|
||||||
|
Group=git
|
||||||
|
WorkingDirectory=/var/lib/gitea/
|
||||||
|
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Service starten:**
|
||||||
|
```bash
|
||||||
|
systemctl enable --now gitea
|
||||||
|
systemctl status gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
8. **Setup abschließen:**
|
||||||
|
Öffne im Browser: `http://<IP-VON-INFRA-GITEA>:3000`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Docker Host VM (`docker-host-prod`)
|
||||||
|
|
||||||
|
Wir nutzen eine **VM** (Virtual Machine) statt eines Containers für Docker. Das bietet bessere Isolation und vermeidet Probleme mit "Docker-in-LXC" (Nesting, OverlayFS).
|
||||||
|
|
||||||
|
### 2.1 VM starten
|
||||||
|
|
||||||
|
*Hinweis: VMs brauchen etwas länger zum Starten als Container.*
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Starten der VM (mit 4 vCPUs und 8GB RAM als Startwert)
|
||||||
|
incus launch images:debian/12 docker-host-prod --vm -c limits.cpu=4 -c limits.memory=8GiB
|
||||||
|
|
||||||
|
# Warten bis sie eine IP hat (kann 1-2 Minuten dauern beim ersten Mal)
|
||||||
|
incus list docker-host-prod
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 Docker Installation
|
||||||
|
|
||||||
|
1. **In die VM einloggen:**
|
||||||
|
```bash
|
||||||
|
incus shell docker-host-prod
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Docker installieren (Offizielles Skript):**
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||||
|
sh get-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **User-Rechte:**
|
||||||
|
Da wir in der Incus-Shell als `root` sind, passt das erst mal. Für später (SSH-Zugriff) sollte man einen User anlegen.
|
||||||
|
|
||||||
|
4. **Test:**
|
||||||
|
```bash
|
||||||
|
docker run --rm hello-world
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. DNS / Erreichbarkeit (Optional aber empfohlen)
|
||||||
|
|
||||||
|
Da wir Macvlan nutzen, haben die Instanzen IPs aus dem Heimnetz (z.B. `10.0.0.x`).
|
||||||
|
Es empfiehlt sich, im Router (FritzBox) einzustellen:
|
||||||
|
* "Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen."
|
||||||
|
* Ggf. lokale DNS-Namen vergeben (z.B. `gitea.local`, `docker.local`).
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Spezifikation
|
||||||
|
|
||||||
|
| CPU | CP8180, 12 Cores/12 Threads, 2.6Ghz |
|
||||||
|
|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| GPU | Arm Immortalis-G720 MC10 |
|
||||||
|
| Memory Types | LPDDR5(LinkECC&Inline ECC Supported) |
|
||||||
|
| Max Memory Size | 64GB 5500Mhz |
|
||||||
|
| ECC Memory Supported | YES |
|
||||||
|
| Storage | 1×M.2 2280/22110 NVME SSD Slot (up to 8TB)(PCIe4.0x4) |
|
||||||
|
| Wireless | YES |
|
||||||
|
| Bluetooth | YES |
|
||||||
|
| Video Output | HDMI2.0 x1 (Up to 4K@60Hz) Type-C(Alt DP 1.4) x 2(Up to 4K@120Hz) |
|
||||||
|
| Audio Output | HDMI х 1 3.5mm Combo Jack 4 in 1 х 1 |
|
||||||
|
| Audio Input | 3.5mm Combo Jack 4 in 1 х 1 |
|
||||||
|
| Ports & Buttons | 3.5mm Combo Audio Jack 4 in 1 х 1 <br> USB Type A(USB3.2 Gen2) х 1 <br> USB Type A(USB2.0) х 2 <br> Type-C(Alt DP1.4, USB3.2 Gen2,100w PD-IN,15W PD-OUT )x 2 <br> HDMI2.0 х 1 <br> 10G LAN(RJ45)(RTL8127) х 2 <br> USB Type A(USB2) х 2 <br> USB Type A(USB3.2 Gen2) х 2 <br> 40PIN GPIO x 1 <br> Power Loss Switch x 1 <br> BIOS FLASH PIN & UART1 PIN x 1 <br> UART2 PIN x 1 <br> eDP x 1 <br> Power Button With LED х 1 |
|
||||||
|
| PCIe Expansion | PCIEx16(PCIE4.0x8) |
|
||||||
|
| Power | DC 19V 180W/Type-C 20V 100W |
|
||||||
|
| Support System | Debian12 |
|
||||||
|
| Product Dimension | 196x189x48 mm |
|
||||||
|
| Net Weight | 1.35KG |
|
||||||
|
| Launch Date | 2025/9 |
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
type: Log
|
||||||
|
agent: Curator
|
||||||
|
date: 2026-02-07
|
||||||
|
status: COMPLETED
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧹 Session Log: 07. Februar 2026
|
||||||
|
|
||||||
|
## Zusammenfassung
|
||||||
|
Heute wurde der neue Home-Server (Minisforum MS-R1) in Betrieb genommen. Der Fokus lag auf der Einrichtung des Host-Betriebssystems (Debian 12 ARM64) und der Virtualisierungs-Plattform (Incus).
|
||||||
|
|
||||||
|
## Erreichte Meilensteine
|
||||||
|
1. **Hardware-Integration:**
|
||||||
|
* Dokumentation für Minisforum MS-R1 erstellt (Handbuch, Specs).
|
||||||
|
* Roadmap aktualisiert (Hardware-Status: GELIEFERT).
|
||||||
|
2. **Host-Setup:**
|
||||||
|
* SSH-Zugang und Basic Hardening (User, Firewall) durchgeführt.
|
||||||
|
* **Incus Installation:** Erfolgreich auf dem Vendor-Kernel (`6.6.10-cix-build-generic`) installiert.
|
||||||
|
* **Netzwerk-Fix:** Da dem Vendor-Kernel Module für Bridges fehlen, wurde erfolgreich auf **Macvlan** umgestellt. Container erhalten nun IPs direkt aus dem Heimnetz (`10.0.0.x`).
|
||||||
|
3. **Infrastructure Services:**
|
||||||
|
* `infra-gitea` (LXC Container) wurde erstellt und gestartet.
|
||||||
|
* Gitea Binary installiert.
|
||||||
|
|
||||||
|
## Offene Punkte / Blocker
|
||||||
|
* **Gitea Service:** Der `gitea.service` startet nicht sauber (`exit-code 1`). Es gibt Probleme mit der Konfiguration (`app.ini`) oder Dateirechten, speziell im Zusammenhang mit Pfaden (`/usr/local/bin/data` vs `/var/lib/gitea`).
|
||||||
|
* *Nächster Schritt:* Manuelles Debugging im Vordergrund (`su - git -c ...`), um die genaue Fehlermeldung zu sehen.
|
||||||
|
* **Docker Host:** Die VM `docker-host-prod` wurde noch nicht erstellt. Dies ist der nächste logische Schritt nach dem Gitea-Fix.
|
||||||
|
|
||||||
|
## Dokumentation
|
||||||
|
* Neu: `docs/01_Architecture/Minisforum-MS-R1/Setup_Guide_Host_OS.md` (Fertig)
|
||||||
|
* Neu: `docs/01_Architecture/Minisforum-MS-R1/Setup_Guide_Services.md` (In Arbeit)
|
||||||
|
* Update: `docs/01_Architecture/MASTER_ROADMAP_2026_Q1.md`
|
||||||
|
|
||||||
|
## Ausblick
|
||||||
|
Die nächste Session sollte sich auf die Stabilisierung von Gitea und die Einrichtung der Docker-VM konzentrieren, um die Plattform für die Meldestelle-App bereit zu machen.
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
type: Log
|
||||||
|
agent: DevOps Engineer
|
||||||
|
date: 2026-02-07
|
||||||
|
status: IN_PROGRESS
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🐧 Log: Hardware Setup Minisforum MS-R1
|
||||||
|
|
||||||
|
## Kontext
|
||||||
|
Der neue Home-Server (Minisforum MS-R1) ist eingetroffen. Dies ist die Ziel-Hardware für den "Offline-First" Betrieb der Meldestelle.
|
||||||
|
Wir haben die Dokumentation (Handbuch & Specs) erhalten und beginnen mit der Integration in die Architektur-Dokumentation.
|
||||||
|
|
||||||
|
## Hardware Specs (Zusammenfassung)
|
||||||
|
* **Modell:** Minisforum MS-R1
|
||||||
|
* **CPU:** CP8180 (12 Cores / 12 Threads, 2.6 GHz) - ARM64 Architektur? (Muss verifiziert werden, Specs sagen "Arm Immortalis-G720" GPU, deutet auf ARM SoC hin).
|
||||||
|
* **RAM:** Max 64GB LPDDR5 5500MHz (ECC Supported).
|
||||||
|
* **Storage:** 1x M.2 NVMe (PCIe 4.0 x4).
|
||||||
|
* **Network:** 2x 10G LAN (SFP+ via RTL8127?). *Korrektur aus Specs:* "10G LAN(RJ45)(RTL8127) x 2".
|
||||||
|
* **OS Support:** Debian 12 (Vendor Image vorhanden).
|
||||||
|
|
||||||
|
## Actions
|
||||||
|
1. [x] Dokumentation (Handbuch, Specs) gesichtet.
|
||||||
|
2. [ ] `MASTER_ROADMAP` aktualisieren (Hardware-Details bestätigen).
|
||||||
|
3. [ ] Systemabbild sichern (bereits vom User erledigt).
|
||||||
|
|
||||||
|
## Nächste Schritte
|
||||||
|
* Verifizierung der CPU-Architektur (ARM64 vs x86). Die Roadmap ging von ARM64 aus. Die Specs nennen "CP8180" und "Arm Immortalis", was dies bestätigt.
|
||||||
|
* Planung der Virtualisierung (Incus auf Debian 12).
|
||||||