## 1. Transfer & Build

- [x] 1.1 rsync `admin/Dockerfile`, `admin/docker-compose.yml`, `admin/app/` (exclude vendor, node_modules, .env, storage/logs) → `sam@192.168.20.13:/home/sam/Docker/Containers/wherewoof-admin/`
- [x] 1.2 On .13: `docker compose build` (php:8.3 image) + `composer install` via container

## 2. Configure & Run

- [x] 2.1 Write `.env` on .13 (DB 192.168.20.13:5434, APP_KEY generated, SESSION_DRIVER=file); add `restart: unless-stopped` to compose
- [x] 2.2 `docker compose up -d` → verify `localhost:3030` on .13 returns 200 (login page)

## 3. Caddy / Firewall

- [ ] 3.1 User: open port 3031 on .13 NixOS firewall (3030 = Langfuse; admin now on 3031)
- [x] 3.2 Caddy block updated to .13:3031, Host-header test 200 (public cert pending DNS+firewall)

## 4. Verification

- [x] 4.1 Smoke: admin login on .13 works (shared DB admin user); resources render
- [x] 4.2 `openspec validate deploy-admin`; commit
