78 lines
3.2 KiB
Markdown
78 lines
3.2 KiB
Markdown
# Seattle
|
|
|
|
Contabo cloud VPS in Seattle, US. Public internet-facing host for services that need a stable external IP, plus Tailscale exit node / DERP relay for the mesh.
|
|
|
|
## Specs
|
|
|
|
| | |
|
|
|---|---|
|
|
| Hostname | `vmi2076105` |
|
|
| OS | Ubuntu 24.04.4 LTS (Noble) |
|
|
| Public IP | YOUR_WAN_IP |
|
|
| Tailscale IP | 100.82.197.124 (Headscale node ID:2) |
|
|
| RAM | 62 GB |
|
|
| Disk | 290 GB root (~110 GB free) |
|
|
| Tailscale | 1.96.4 |
|
|
|
|
SSH aliases (see `~/.ssh/config`): `seattle` (public IP, Contabo SSH), `seattle-tailscale` (via Tailscale IP).
|
|
|
|
## Role
|
|
|
|
- **Public exit node** for Tailscale mesh
|
|
- **DERP relay** (`derper`) — self-hosted DERP, advertised to Headscale
|
|
- **Stoatchat** (Revolt fork) full stack — see `docs/admin/stoatchat-operational-status.md`
|
|
- **AI coding workstation** (HolyClaude, :3059)
|
|
- **Personal productivity** (Obsidian remote, Wallabag, KeeWeb, Padloc)
|
|
- **Matrix / LiveKit** signalling + TURN for video calls
|
|
- **DDNS updaters** for `*.vish.gg` records pointing to this VPS
|
|
|
|
## Running services
|
|
|
|
All managed via `docker compose`. Twenty containers as of 2026-04-18.
|
|
|
|
| Container | Purpose | Ports |
|
|
|---|---|---|
|
|
| `holyclaude` | Web UI for Claude Code via [coderluii/holyclaude](https://github.com/coderluii/holyclaude) | `100.82.197.124:3059 → 3001` |
|
|
| `derper` | Tailscale DERP relay | `:3478/udp`, `:8444/tcp` |
|
|
| `livekit` | WebRTC SFU for Matrix calls | `:7880-7881/tcp`, `:50000-50100/udp` |
|
|
| `fluxer_server` | Fluxer backend | `127.0.0.1:8088` |
|
|
| `nats-core` | NATS messaging | internal |
|
|
| `nats-jetstream` | NATS persistence | internal |
|
|
| `elasticsearch` | Stoatchat search | `:9200` |
|
|
| `valkey` | Redis-compatible cache (Stoatchat) | internal |
|
|
| `meilisearch` | Full-text search | `:7700` |
|
|
| `padloc-nginx` / `padloc-server` / `padloc-pwa` | Padloc password manager | `:5500` |
|
|
| `keeweb` | KeeWeb password vault | `:8443` |
|
|
| `obsidian` | Headless Obsidian via LinuxServer image | `127.0.0.1:3000-3001` |
|
|
| `wallabag` | Read-later service | `127.0.0.1:8880` |
|
|
| `dozzle-agent` | Remote log agent | `:7007`, `:8080` |
|
|
| `diun` | Docker image update notifier | — |
|
|
| `ddns-ddns-seattle-derp-1` | Cloudflare DDNS for DERP DNS | — |
|
|
| `ddns-ddns-seattle-proxied-1` | Cloudflare DDNS for proxied records | — |
|
|
| `ddns-ddns-seattle-stoatchat-1` | Cloudflare DDNS for Stoatchat | — |
|
|
|
|
Nginx runs on the host (not in Docker) on `:80/:443` with Let's Encrypt and terminates SSL for all public-facing services.
|
|
|
|
## Networking
|
|
|
|
- `eth0` — Contabo public IP (YOUR_WAN_IP)
|
|
- `tailscale0` — 100.82.197.124, advertises as exit node
|
|
- Firewall: Contabo panel + ufw; ports 80, 443, 2222 (SSH), 7880-7881, 50000-50100/udp, 8444, 5500, 3478/udp open
|
|
- DDNS: three Cloudflare DDNS containers keep DNS records synced to the public IP
|
|
|
|
## Related docs
|
|
|
|
- [HolyClaude service](../services/individual/holyclaude.md)
|
|
- [Stoatchat operational status](../admin/stoatchat-operational-status.md)
|
|
- [Seattle monitoring update (Feb 2026)](../admin/monitoring-update-seattle-2026-02.md)
|
|
- [Headscale](../services/individual/headscale.md) — DERP relay advertisement
|
|
|
|
## Host access
|
|
|
|
```sh
|
|
ssh seattle # public IP, port 2222
|
|
ssh seattle-tailscale # via Tailscale (100.82.197.124)
|
|
```
|
|
|
|
SSH login is `root` (key-based); no password auth.
|