v0.26.0: Storage namespace felhom-data/ + test node wipe script
All felhom-managed data on external drives now lives under felhom-data/ subdirectory, cleanly separating controller data from user files. - backup/paths.go: add FelhomDataDir constant, update 8 path helpers - stacks/delete.go: add local felhomDataDir constant (circular import boundary), update ProtectedHDDPaths + GetStackBackupData - storage/migrate_drive.go: import backup pkg, fix conflict check, verify, rsync excludes (felhom-data/backups/*/restic/), size estimation - storage/migrate.go: import backup pkg, fix DB dump paths - web/handlers.go: fix legacy 'storage' path -> backup.AppDataDir() - storage/format_linux.go: create felhom-data/ instead of storage/ - storage/attach_linux.go: create felhom-data/ instead of storage/ - scripts/felhom-wipe.sh: new multi-level test node wipe script (soft/controller/full/nuclear) - CHANGELOG.md, controller/README.md, scripts/README.md: updated docs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -195,3 +195,65 @@ dprune='sudo docker system prune -af'
|
||||
|
||||
- **ctop** — Top-like interface for container metrics
|
||||
- **lazydocker** — Terminal UI for Docker management
|
||||
|
||||
---
|
||||
|
||||
## felhom-wipe.sh
|
||||
|
||||
**Test node cleanup script with 4 wipe levels.**
|
||||
|
||||
Removes felhom-managed data from a node in a controlled, repeatable way. Designed for test/demo nodes to reset state between testing cycles.
|
||||
|
||||
### Quick start
|
||||
|
||||
```bash
|
||||
# Preview what will be removed (dry run — default)
|
||||
sudo ./felhom-wipe.sh --level full
|
||||
|
||||
# Execute the wipe
|
||||
sudo ./felhom-wipe.sh --level full --yes
|
||||
```
|
||||
|
||||
### Wipe levels
|
||||
|
||||
| Level | What it removes |
|
||||
|-------|-----------------|
|
||||
| `soft` | Controller state files only: `settings.json`, `metrics.db`, `setup-state.json`, `update-state.json`, `session-data.json`, `snapshot-history.json` |
|
||||
| `controller` | Soft + all non-infra Docker containers, all Docker volumes (except `portainer_data`), all stack directories (skips protected stacks by default) |
|
||||
| `full` | Controller + `felhom-data/` on all storage drives (appdata, backups). Also removes old-style `appdata/` and `backups/` directories for pre-v0.26.0 compatibility. Restarts controller after cleanup. |
|
||||
| `nuclear` | Full + `controller.yaml`, all infra containers (controller, traefik, cloudflared, portainer), DR markers (`.felhom-infra-backup/` on all drives), `docker system prune -af --volumes` |
|
||||
|
||||
### CLI options
|
||||
|
||||
| Option | Description |
|
||||
|--------|-------------|
|
||||
| `--level <level>` | Required. One of: `soft`, `controller`, `full`, `nuclear` |
|
||||
| `--yes` | Execute the wipe. Default is dry-run (preview only). |
|
||||
| `--include-protected` | Also remove protected stacks (controller level only). |
|
||||
|
||||
### Path auto-detection
|
||||
|
||||
- Reads `stacks_dir` and `data_dir` from `/opt/docker/felhom-controller/controller.yaml` if present
|
||||
- Reads registered storage paths from `settings.json`
|
||||
- Also scans `/mnt/*/` for `felhom-data/` or legacy `appdata/` directories not in the registry
|
||||
|
||||
### What is preserved
|
||||
|
||||
- OS and system files
|
||||
- Infrastructure containers and config (unless `nuclear`)
|
||||
- User files: `Dokumentumok/`, `media/`, other non-felhom directories on drives
|
||||
- DR markers on drives (unless `nuclear`)
|
||||
|
||||
### Safety
|
||||
|
||||
- Dry-run by default — shows plan without deleting anything
|
||||
- Interactive `YES` confirmation prompt required even with `--yes`
|
||||
- Must run as root (`sudo`)
|
||||
- Checks Docker is running before proceeding
|
||||
- Protected stacks skipped by default (use `--include-protected` to override)
|
||||
|
||||
### Redeploy after nuclear wipe
|
||||
|
||||
```bash
|
||||
curl -fsSL https://gitea.dooplex.hu/admin/deploy-felhom-compose/raw/branch/main/scripts/docker-setup.sh | bash
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user