diff --git a/CLAUDE.md b/CLAUDE.md index a6fc601..7f92411 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,6 +15,8 @@ Documentation and planning for a GNOME → Hyprland migration on Fedora 43. No b | Symlink target | `~/.config/hypr/` → symlinked via `stow hypr` | | Hyprland log | `~/.cache/hyprland/hyprland.log` | | Dotfiles remote | `git@forgejo.swansoncloud.com:jared/dotfiles.git` | +| Synology DS218plus access + backup paths | `docs/synology.md` | +| VPS inventory + access notes | `docs/vps-inventory.md` | ## Hyprland configuration @@ -33,14 +35,19 @@ Do NOT use `^(...)$` wrapping — Hyprland 0.51 rejects it as "Invalid rulev2". - `docs/window-manager/` — migration plan, phased progress log, keybindings cheatsheet - `docs/hyprland/` — version-aware Hyprland config reference; update these when Hyprland is upgraded +- `docs/synology.md` — DS218plus SSH alias, `/volume1/backup` map, restic repo commands, recovery notes +- `docs/vps-inventory.md` — VPS SSH aliases, Hyperthrive DO recovery notes, OVH target notes ## Project status Phases 0–3 complete (install, config, dotfiles integration). Phase 4 (first successful Hyprland login and smoke tests) is in progress. Phase 5 (tuning) is deferred. -Known workaround in place: `hyprpolkitagent` replaced with `lxpolkit` due to Qt 6 ABI issue on Fedora 43. +Known workarounds in place: +- `hyprpolkitagent` replaced with `xfce-polkit` due to Qt 6.9/6.10 private ABI mismatch in solopasha COPR (affects hyprland-qt-support, hyprland-qtutils). Revisit when COPR rebuilds against Qt 6.10. +- GDM Wayland→Hyprland cursor handoff leaves stale cursor ghost at login position. Fixed with `exec-once = sleep 1 && hyprctl dispatch movecursor 0 0` in hyprland.conf. If unreliable, fallback is `WaylandEnable=false` in /etc/gdm/custom.conf (makes GDM use X11 greeter for clean KMS handoff). +- `cursor { no_hardware_cursors = true; use_cpu_buffer = 1 }` set in dms/cursor.conf to prevent NVIDIA DRM (akmod-nvidia loaded for RTX 3060) from interfering with AMD Vega cursor plane rendering. ## Hardware - AMD Vega iGPU (primary display, Wayland) -- NVIDIA RTX 3060 dGPU (unused — `akmod-nvidia` intentionally not installed) +- NVIDIA RTX 3060 dGPU (no display connected — `akmod-nvidia` is installed and loads `nvidia_drm` at boot) diff --git a/docs/synology.md b/docs/synology.md new file mode 100644 index 0000000..773efdf --- /dev/null +++ b/docs/synology.md @@ -0,0 +1,132 @@ +# Synology DS218plus + +Operational notes for accessing and navigating the Synology NAS without rediscovering paths. + +## Connection + +- SSH config alias: `synology` +- Hostname/IP: `192.168.86.31` +- SSH user: `jared` +- SSH key from `~/.ssh/config`: `~/.ssh/id_ed25519_git` +- Verified NAS hostname: `DS218plus` + +Quick check: + +```bash +ssh synology 'hostname; id' +``` + +Expected identity: + +```text +DS218plus +uid=1026(jared) gid=100(users) groups=100(users),101(administrators),65536(family) +``` + +## Volume Paths + +Synology shared folders are mounted under `/volume1` over SSH. + +Important paths: + +| Purpose | SSH path | +| --- | --- | +| Main backup share | `/volume1/backup` | +| Fedora continuous restic repo | `/volume1/backup/fedora_desktop_backup_continuous` | +| Older May 2024 user backup | `/volume1/backup/jared_backup052124` | +| Older May 2024 Fedora backup | `/volume1/backup/fedora_backup052124` | +| October 2024 Fedora recovery folder | `/volume1/backup/fedora_recovery_oct2024` | + +List likely backup folders: + +```bash +ssh synology 'find /volume1/backup -maxdepth 2 -mindepth 1 -type d | sort' +``` + +## Restic Access + +Local `restic` is installed at `/usr/bin/restic`. Credentials are sourced from `~/.credentials`; do not print the file or password. + +The active backup script uses: + +```bash +source ~/.credentials +restic -r "sftp:${SYNOLOGY_HOST}:${SYNOLOGY_PATH}" snapshots --compact +``` + +As of 2026-05-14, `~/.credentials` has: + +```text +SYNOLOGY_HOST=synology +SYNOLOGY_PATH=/home/Backups/fedora-workstation +``` + +Note: that SFTP path is a virtual path for restic/SFTP access. Over an interactive SSH shell, the same repository is visible at: + +```text +/volume1/backup/fedora_desktop_backup_continuous +``` + +Repository structure confirmed on 2026-05-14: + +```text +config +data/ +index/ +keys/ +locks/ +snapshots/ +``` + +## Useful Restic Commands + +List snapshots: + +```bash +source ~/.credentials +restic -r "sftp:${SYNOLOGY_HOST}:${SYNOLOGY_PATH}" snapshots --compact +``` + +List a path in the latest snapshot: + +```bash +source ~/.credentials +restic -r "sftp:${SYNOLOGY_HOST}:${SYNOLOGY_PATH}" ls latest /home/jared/.ssh +``` + +Search snapshots for specific files: + +```bash +source ~/.credentials +restic -r "sftp:${SYNOLOGY_HOST}:${SYNOLOGY_PATH}" find /home/jared/.ssh/id_rsa /home/jared/.ssh/id_rsa.pub +``` + +Restore a specific file or directory to a temporary location: + +```bash +source ~/.credentials +mkdir -p /tmp/restic-restore +restic -r "sftp:${SYNOLOGY_HOST}:${SYNOLOGY_PATH}" restore latest \ + --target /tmp/restic-restore \ + --include /home/jared/path/to/file +``` + +## Snapshot State on 2026-05-14 + +The Fedora continuous repo is accessible and decrypts successfully. It had 17 snapshots from 2026-04-11 through 2026-05-11. + +Latest snapshot observed: + +```text +c4ec0c91 2026-05-11 01:58:03 host=fedora tag=fedora size=18.779 GiB +``` + +## SSH Key Recovery Findings + +Checked while investigating Hyperthrive VPS access on 2026-05-14: + +- Latest restic snapshot `.ssh` contains only `config`, `id_ed25519_git`, `id_ed25519_git.pub`, `id_ed25519_ovh_backup`, `id_ed25519_ovh_backup.pub`, `known_hosts`, and `known_hosts.old`. +- `restic find` did not find `/home/jared/.ssh/id_rsa`, `/home/jared/.ssh/id_rsa.pub`, `id_ed25519_forgejo`, or `id_ed25519_forgejo.pub`. +- `/volume1/backup/jared_backup052124/.ssh` exists but is empty. +- `/volume1/backup/fedora_backup052124/jared/.ssh` exists but is empty. +- No `.ssh` files were found under `/volume1/backup/fedora_backup052124` or `/volume1/backup/fedora_recovery_oct2024` in the checked paths. diff --git a/docs/vps-inventory.md b/docs/vps-inventory.md new file mode 100644 index 0000000..5775084 --- /dev/null +++ b/docs/vps-inventory.md @@ -0,0 +1,64 @@ +# VPS Inventory + +Operational notes for small VPS hosts. Keep secrets out of this file. + +## Hyperthrive DigitalOcean Docker Services + +- Local SSH alias: `hyperthrive-docker` +- Host/IP: `161.35.12.75` +- User: `jared` +- Local identity file: `~/.ssh/id_ed25519_git` +- Provider label seen in console: `hyperthrive-docker-services` +- OS observed on 2026-05-14: Ubuntu 24.04.4 LTS + +Quick access: + +```bash +ssh hyperthrive-docker +``` + +### 2026-05-14 Recovery Notes + +Problem: + +- SSH initially failed with `Permission denied (publickey)`. +- The old expected key was not recovered from local files, Synology restic snapshots, or older Synology backup folders. +- DigitalOcean web console login as `jared` worked. +- Root console login required a password change and disconnected during attempts. +- `/` was at 99.8% usage on a 48.27 GiB filesystem. + +Resolution: + +- Freed space from journald and apt cache. +- Started Docker. +- `sudo docker system df` showed Docker images using 25.48 GiB with 20.91 GiB reclaimable. +- Ran `sudo docker system prune -af`. +- Docker reclaimed 20.68 GiB. +- Added/confirmed `~/.ssh/id_ed25519_git.pub` in `jared`'s `authorized_keys`. +- Updated local SSH config so `hyperthrive-docker` uses `~/.ssh/id_ed25519_git`. +- SSH login works again with `ssh hyperthrive-docker`. + +### Decommissioning Plan + +Current intent: migrate any needed services from this DigitalOcean VPS to the OVH VPS, then shut down the DigitalOcean VPS. + +Before shutdown, capture: + +```bash +ssh hyperthrive-docker 'hostname; docker ps -a; docker volume ls; ls -la ~/services 2>/dev/null || true' +``` + +Avoid `docker system prune --volumes` until volumes have been inspected; stopped container volumes may contain application or database data. + +## OVH VPS + +- Local SSH alias: `ovh-vps` +- Host/IP: `15.204.247.153` +- User: `jared` +- Local identity file: `~/.ssh/id_ed25519_ovh_backup` + +Quick access: + +```bash +ssh ovh-vps +```