# Service Migration Session Notes

Migrated from HP Mini i5-6500T/7GB (192.168.50.150) → rayserver i7-10700K/14GB/GTX1050Ti (192.168.50.98) running Ubuntu 26.04, Docker 29.1.3, NVIDIA Driver 580 with CUDA 13.0.

## Services Migrated

| Service | Old Port | New Port | Notes |
|---------|----------|----------|-------|
| Immich v2.7.5 | 2283 | 2283 | GPU ML with -cuda image tag |
| Hermes Web UI | 8787 | 8787 | Same password, STATE_DIR required |
| Portainer CE | 9443 | 9443 | Volume data preserved |
| Heimdall | 8080 | 8080 | Volume data preserved |
| Scrutiny | 7272 | 7272 | Volume data preserved |
| Uptime Kuma | 3001 | 3001 | Volume data preserved |
| PiHole | 8090 | 8090 | Port 53 bound to specific IP |
| Watchtower | — | — | Replaced with cron.daily script |

## Volume Tar-Pipe Command

The working pattern for copying Docker volume data between machines:

```bash
sshpass -p '<pass>' ssh user@old-ip "sudo tar czf - -C /var/lib/docker/volumes/<src>/_data ." | ssh user@new-ip "sudo tar xzf - -C /var/lib/docker/volumes/<dst>/_data/"
```

Source volumes on old machine used hyphenated names (`uptime-kuma_uptime_kuma_data`, `dashboard_heimdall_config`). Destination volumes on new machine used simpler names (`uptime_kuma_data`, `heimdall_config`).

## PiHole Details

- PiHole password: `@89` (same suffix as the user's SSH password pattern)
- PiHole admin URL: `http://192.168.50.98:8090/admin`
- Port 53 bound to `192.168.50.98:53:53/tcp` and `.udp` (not `0.0.0.0:53`) due to systemd-resolved conflict on Ubuntu 26.04
- systemd-resolved on Ubuntu 26.04 listens on 127.0.0.53:53 (stub) AND 127.0.0.54:53 (proxy) — either can block Docker's `0.0.0.0:53`

## API Key Transfer

API keys were copied via piping `cat` over SSH:
```bash
sshpass -p '<pass>' ssh user@old-ip 'cat ~/.hermes/.env' | ssh user@new-ip 'cat > ~/.hermes/.env'
```

The terminal tool redacts secrets in output, making it hard to verify. Check by file byte count (`wc -c`) or hexdump the password field specifically.

## VERSION

*Last updated:* 2026-05-31
*Target:* Internal reference for selfhosted-migration skill
