chore(release): 0.1.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4f9c5bdc1d
commit
87fda7bc94
+31
-1
@@ -8,6 +8,35 @@ Die Version steht an genau einer Stelle: `src/netmover/__init__.py`.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.1] – 2026-10-10
|
||||
|
||||
Korrekturen aus dem ersten Praxistest auf einer Debian-13-VM mit echten
|
||||
SMB-, NFS- und SFTP-Servern.
|
||||
|
||||
### Behoben
|
||||
- **systemd-Unit:** `ProtectSystem`, `PrivateTmp` und `ProtectControlGroups`
|
||||
gaben dem Dienst einen eigenen Mount-Namespace. Die Mounts waren für das System
|
||||
und andere Programme unsichtbar und verschwanden bei jedem Neustart des Dienstes
|
||||
(`MountFlags=shared` half nicht). Jetzt nur noch Härtungen ohne Namespace.
|
||||
- **Stabilitätsprüfung:** CIFS lieferte per `stat()` sekundenlang eine veraltete
|
||||
Größe einer noch wachsenden Datei. Gemessen wird jetzt per `open()` + `fstat()`,
|
||||
das erzwingt frische Attribute. Gesperrte Dateien gelten als „in Benutzung“.
|
||||
(Die zweite Sicherung, die Byte-Zählung beim Kopieren, hatte den Fall bereits
|
||||
abgefangen; es kam keine unvollständige Datei an.)
|
||||
- **Ausfall länger als die Wiederherstellung (z. B. NAS-Neustart, Stromausfall):**
|
||||
Von NetMover selbst ausgehängte Anbindungen mit „automatisch einhängen“ werden
|
||||
jetzt jede Minute erneut eingehängt, auch wenn das Einhängen schon beim
|
||||
Dienststart scheiterte. Entwarnung per Webhook. Von außen ausgehängte Anbindungen
|
||||
bleiben weiterhin unangetastet.
|
||||
- Bei einer Zeitüberschreitung von `mount` wird die ganze Prozessgruppe beendet, damit
|
||||
`mount.nfs` nicht später doch noch einhängt.
|
||||
- Hinweistexte zu `mount`-Fehlern werden nicht mehr mitgeschwärzt.
|
||||
- `install.sh` ohne `debconf`-Warnungen, wenn kein Terminal angeschlossen ist.
|
||||
|
||||
### Dokumentation
|
||||
- Fehlersuche: verzögert sichtbare Dateien auf CIFS → `nohandlecache`.
|
||||
- README erklärt, warum die Unit keine Namespace-Härtung nutzt.
|
||||
|
||||
## [0.1.0] – 2026-10-10
|
||||
|
||||
Erste Version.
|
||||
@@ -99,5 +128,6 @@ Erste Version.
|
||||
- Löschen von Zugangsdaten, die noch von einem Mount benutzt werden, trennt den
|
||||
Mount nicht mehr stillschweigend ab, sondern wird von der Datenbank abgelehnt.
|
||||
|
||||
[Unreleased]: https://git.wilde-server.de/florian.wilde/netmover/compare/v0.1.0...HEAD
|
||||
[Unreleased]: https://git.wilde-server.de/florian.wilde/netmover/compare/v0.1.1...HEAD
|
||||
[0.1.1]: https://git.wilde-server.de/florian.wilde/netmover/compare/v0.1.0...v0.1.1
|
||||
[0.1.0]: https://git.wilde-server.de/florian.wilde/netmover/releases/tag/v0.1.0
|
||||
|
||||
@@ -13,10 +13,55 @@ Zeiten in Ortszeit (Europe/Berlin).
|
||||
| 2026-10-10 | 19:10 | 19:17 | 0:07 | 4 | Scheduler, Protokoll, Benachrichtigung |
|
||||
| 2026-10-10 | 19:18 | 19:34 | 0:16 | 5 | Weboberfläche und Anmeldung |
|
||||
| 2026-10-10 | 19:40 | 19:50 | 0:10 | 6 | Deployment, README, Release 0.1.0 |
|
||||
| **Summe** | | | **1:06** | | |
|
||||
| 2026-10-10 | 21:36 | 22:05 | 0:29 | – | Praxistest auf VM, Release 0.1.1 |
|
||||
| **Summe** | | | **1:35** | | |
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-10 · 21:36–22:05 · Praxistest auf der Debian-13-VM, Release 0.1.1
|
||||
|
||||
**Umgebung**
|
||||
- KVM-VM `srv-rz-netmover` (10.0.10.223), Debian 13, Python 3.13, 2 GB RAM.
|
||||
- Installation per `deploy/install.sh` aus einem `git archive` (VM ohne Gitea-Zugang).
|
||||
- Vorübergehende Testserver auf der VM: Samba (nur `lo`), NFS-Exporte für
|
||||
`127.0.0.1` (mit/ohne Root-Squash), SFTP-Benutzer `paperless` mit Schlüssel
|
||||
`restrict,command="/usr/lib/openssh/sftp-server"`.
|
||||
- Auf Wunsch `NETMOVER_HOST=0.0.0.0`, damit die Oberfläche im LAN erreichbar ist.
|
||||
|
||||
**Bestanden**
|
||||
- Ersteinrichtung mit Code aus dem Log, Cookie-Flags.
|
||||
- CIFS (Passwort mit Komma/Ausrufezeichen, Credentials-Datei danach weg), NFS 4,
|
||||
NFS 3, Root-Squash-Erkennung mit Synology-Hinweis, SFTP mit TOFU (Fingerabdruck
|
||||
= `ssh-keygen -lf`), echtes OpenSSH liefert `statvfs`.
|
||||
- Probelauf, Kollision `scan001-1.pdf`, `.txt`/`.part` ignoriert, keine `.part`-Reste,
|
||||
Eigentümer `paperless` im SFTP-Ziel.
|
||||
- Langsam wachsende Datei (20 × 50 KB/s): erst nach Ende verschoben, Prüfsumme gleich.
|
||||
- Kopiermodus rekursiv mit Eigentümer/Modus; zweiter Lauf „2 bereits übertragen“.
|
||||
- Samba gestoppt: Lebenszeichen 15 s → gestört → 3 Versuche → Fehler, `/healthz` 503,
|
||||
nichts angefasst. NFS-Server gestoppt (hängender `hard`-Mount): Oberfläche und
|
||||
andere Regel liefen weiter, Rückkehr automatisch.
|
||||
- Mounts überstehen Stopp/Start des Dienstes (gleiche Mount-IDs).
|
||||
- Neustart der VM: NFS sofort, SMB per Neuversuch nach ~1 min, Regel läuft weiter.
|
||||
|
||||
**Gefunden und behoben (v0.1.1)**
|
||||
1. **systemd-Unit mit eigenem Mount-Namespace** (ProtectSystem/PrivateTmp/…):
|
||||
Mounts nur im Dienst sichtbar, `shared,slave`. Härtung ohne Namespace.
|
||||
2. **CIFS-Attribut-Cache**: `stat()` meldete 3 s lang eine veraltete Größe einer
|
||||
wachsenden Datei; die Byte-Zählung beim Kopieren fing das ab. Jetzt
|
||||
`open()` + `fstat()` für beide Messungen.
|
||||
3. **Nach drei gescheiterten Versuchen endgültig aufgegeben** – zu kurz für einen
|
||||
NAS-Neustart, und beim Booten vor dem NAS kam die Freigabe nie zurück.
|
||||
Jetzt minütlicher Neuversuch (nur für von NetMover selbst ausgehängte
|
||||
Anbindungen mit `auto_mount`) plus Scheduler-Job.
|
||||
4. `mount`-Zeitlimit beendete nur `mount`, nicht `mount.nfs` → später doch
|
||||
eingehängt. Jetzt ganze Prozessgruppe.
|
||||
5. Hinweistext wurde mitgeschwärzt; `debconf`-Warnungen in `install.sh`.
|
||||
|
||||
**Nicht nachstellbar**
|
||||
- Einmalig 46 s Verzögerung direkt nach dem Booten (CIFS-Verzeichnis-Cache bei
|
||||
lokal statt per SMB angelegter Datei). Messungen danach 9–11 s, mit und ohne
|
||||
`nohandlecache`. Als Hinweis in die Fehlersuche aufgenommen.
|
||||
|
||||
## 2026-10-10 · 19:40–19:50 · Schritt 6: Deployment, README, Release 0.1.0
|
||||
|
||||
**Erledigt**
|
||||
|
||||
@@ -340,6 +340,7 @@ findmnt -R /mnt/netmover # was ist wirklich eingehängt?
|
||||
| „Hostschlüssel … hat sich geändert“ (SFTP) | Wurde der Zielserver neu aufgesetzt? Dann bei der Anbindung „Hostschlüssel zurücksetzen“ und neu testen. Sonst **nicht** verbinden. |
|
||||
| SFTP: „Anmeldung abgelehnt“ | Öffentlicher Schlüssel fehlt in `authorized_keys`, oder Rechte von `~/.ssh` stimmen nicht (700/600, Eigentümer). |
|
||||
| Paperless bemerkt neue Dateien nicht | Ältere Paperless-Versionen: `PAPERLESS_CONSUMER_POLLING=10` setzen. |
|
||||
| Neue Dateien erscheinen erst nach bis zu 30 s | Der CIFS-Client speichert Verzeichnislisten zwischen. Gelangen Dateien nicht per SMB aufs NAS (z. B. per FTP vom Scanner), erfährt er nichts davon. Abhilfe: Zusatzoption `nohandlecache`. |
|
||||
| Regel gelb „länger als 3 × Intervall“ | Seit dem Dreifachen des Intervalls kein erfolgreicher Lauf; Protokoll der Regel ansehen. |
|
||||
| Einrichtungscode verloren | `systemctl restart netmover` erzeugt einen neuen. |
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
services:
|
||||
netmover:
|
||||
build: .
|
||||
image: netmover:0.1.0
|
||||
image: netmover:0.1.1
|
||||
container_name: netmover
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
"""NetMover – NFS/SMB-Mounts verwalten und Dateien zeitgesteuert verschieben."""
|
||||
|
||||
__version__ = "0.1.0"
|
||||
__version__ = "0.1.1"
|
||||
|
||||
Reference in New Issue
Block a user