created_at: 2026-06-04T20:25:06Z updated_at: 2026-06-05T16:53:50Z created_by: claude (opus-4.8) macbook-air modified_by: claude (opus-4.8) macbook-air
Data Center Infrastructure (V02)
Maintenance note: Server names, IP addresses, and ports are defined once in the reference tables at the top of each data-center section โ these tables are the single source of truth. The prose below each table refers to machines by their short alias (e.g.
fsdc-maestro,nws-nn12prod) rather than repeating concrete names or IPs. The SSH access config on the Mac (~/.ssh/config, see SSH access) mirrors these tables. When an address or port changes, edit the reference table and the matchingHostNameline in~/.ssh/configโ nowhere else.Naming convention: VMs are prefixed by data center โ
fsdc-= Fell Street Data Center,nws-= Nick Web Services (a subset of VMs in the Rochester Data Center).What changed from V01: Remote SSH access no longer uses the two-terminal tunnel +
localhost:PORTprocess. It now uses a single-command SSH ProxyJump setup (one terminal, jump through the maestro reverse proxy automatically). See SSH access. The internalfsdc-avatar08VM has been retired and replaced byfsdc-avatar09.
SSH access (ProxyJump)
All internal VMs sit behind a data center's public-facing maestro reverse proxy (Nginx), which is the single public entry point exposed on ports 22, 80, and 443. To reach an internal VM over SSH, the connection jumps through that data center's maestro host.
This is configured once in ~/.ssh/config on the Mac using OpenSSH's
ProxyJump directive. Each VM block names its data center's maestro as the jump
host, so a single command opens the connection in one terminal โ no separate
tunnel, no localhost:PORT second step:
ssh fsdc-avatar09 # FSDC VM, jumps through fsdc-maestro
ssh nws-nn12prod # RDC VM, jumps through nws-maestro
scp, rsync, and git-over-SSH to these host aliases route through the
matching maestro automatically as well.
~/.ssh/config
The HostName values below are the only place IPs are duplicated outside the
reference tables; keep them in sync with the tables. User is nick for all
hosts. No IdentityFile is pinned โ SSH falls back to the agent / default key.
# โโ FSDC โ jump through fsdc-maestro04 โโ
Host fsdc-maestro04
HostName 69.181.201.250
User nick
Host fsdc-avatar09
HostName 192.168.0.55
User nick
ProxyJump fsdc-maestro04
# โโ FSDC on-site (same LAN) โ direct, no jump (see "On-site access" below) โโ
Host fsdc-maestro04-local
HostName 192.168.0.59
User nick
Host fsdc-avatar09-local
HostName 192.168.0.55
User nick
# โโ RDC โ jump through nws-maestro06 โโ
Host nws-maestro06
HostName 69.207.163.8
User nick
Host nws-nn12prod
HostName 192.168.100.192
User nick
ProxyJump nws-maestro06
Host nws-nn12dev
HostName 192.168.100.217
User nick
ProxyJump nws-maestro06
Host nws-whatsticks13
HostName 192.168.100.222
User nick
ProxyJump nws-maestro06
Host nws-tastermonial
HostName 192.168.100.202
User nick
ProxyJump nws-maestro06
Host nws-kv23
HostName 192.168.100.193
User nick
ProxyJump nws-maestro06
Host nws-golightly-prod
HostName 192.168.100.154
User nick
ProxyJump nws-maestro06
Host nws-golightly-dev
HostName 192.168.100.214
User nick
ProxyJump nws-maestro06
On-site access (-local aliases)
When physically on the FSDC LAN (or on the FSDC WireGuard VPN), the Mac can
reach servers directly on their 192.168.0.x addresses without bouncing out to
the public IP and back through fsdc-maestro04. The *-local aliases do exactly
that โ same HostName LAN IP, but no ProxyJump:
ssh fsdc-maestro04-local # direct to 192.168.0.59 on the LAN
ssh fsdc-avatar09-local # direct to 192.168.0.55 on the LAN
Notes:
- The
-localaliases only work on the FSDC network. Off-site they hang or fail โ use the plainfsdc-maestro04/fsdc-avatar09aliases, which route through the public entry point. fsdc-maestro04-localconnects to maestro on its LAN IP, a different address than the public one, so SSH records a separateknown_hostsentry and prompts for the fingerprint on first connect (same server, same key, new address).- RDC has no
-localaliases โ those VMs live at a remote site, so they are always reached throughnws-maestro06.
Future option โ Tailscale
Tailscale (already running on fsdc-macmini) can later put every VM on a
private mesh network, allowing direct SSH by name without the maestro jump host.
This would be an overlay alongside โ not a replacement for โ maestro's public
web entry point (ports 80/443 and Nginx routing stay as-is). Two deployment
shapes: install Tailscale on each VM (best experience, stable per-VM names), or
run a subnet router on each maestro advertising the internal subnet (one install
per data center). Not yet adopted; recorded here as the planned next step.
Fell St Data Center (FSDC)
Reference โ FSDC hosts & addresses
| Alias | Concrete name | Address | Role / Notes |
| --- | --- | --- | --- |
| fsdc-maestro | maestro04 | Public: 69.181.201.250 (via router) ยท LAN: 192.168.0.59 | Reverse proxy (Nginx), Ubuntu. Single public entry point. On-site, reach it directly on the LAN IP. |
| fsdc-router | TP-Link AX6000 | App: http://192.168.0.1/ ยท Public IP: 69.181.201.250 | Wi-Fi 6 router, WireGuard VPN. |
| fsdc-modem | Xfinity XB8-T | โ | Modem/router in bridge mode. |
| fsdc-proxmox | Neosmay Mini PC | https://192.168.0.38:8006 | Proxmox VE host. |
| fsdc-avatar09 | Avatar09 | 192.168.0.55 | Ubuntu VM, SSH access (replaces retired Avatar08). |
| fsdc-macmini | Mac mini (M1) | macmini.the404api.dashanddata.com โ port 8000 | Accessible via TailScale. |
Overview
The Fell St Data Center consists of a home router (fsdc-router) forwarding all
inbound HTTP, HTTPS, and SSH traffic (ports 80, 443, and 22) directly to the
reverse proxy server fsdc-maestro. fsdc-maestro handles public exposure of
internal services and performs routing using Nginx. It runs Ubuntu. Remote SSH
to internal machines jumps through fsdc-maestro (see
SSH access).
Router and Internet access
The apartment has Xfinity internet using the fsdc-modem (Xfinity XB8-T
modem / router / wifi device) turned to bridge mode. The fsdc-router (TP-Link
AX6000 8-Stream Wi-Fi 6 Router) is what routes traffic to fsdc-maestro and all
other servers in the apartment. The fsdc-router displays the public IP address
listed in the reference table. The fsdc-router has WireGuard set up for users
to VPN into the home network. This allows access to the router app and to
fsdc-proxmox (see the reference table for addresses).
- The
fsdc-routerapp does not seem to have the ability to restrict SSH access by IP address. IP address restrictions occur onfsdc-maestrousing Nginx and Uncomplicated Firewall (UFW). - When users are on the VPN they cannot access the internet. It is not clear if
this is a setting that has not been fixed or if the
fsdc-routeris not permitting this.
Proxmox and Neosmay Mini PC
Proxmox Virtual Environment (fsdc-proxmox) runs on the Neosmay Mini PC.
- Model: AC8-N6005
- RAM: 16 Gb, DDR4
- SSD: M.2 2280 512 Gb SATA SSD
- CPU: Intel Pentium N6005
Mac Mini
fsdc-macmini runs on FSDC, accessible through TailScale.
- Model: M1, 2020
- RAM: 8 Gb
- SSD: 250 Gb
- CPU: Apple Silicon
Basic Architecture of Virtual Machines Behind fsdc-maestro
The VMs behind fsdc-maestro are Ubuntu OS that run mostly Node.js and Python
apps. Most of the apps are web facing. There is a user with admin sudo
privileges named nick (it has a group). There is also a limited_user user
that has a /home/limited_user/ directory but no login and no sudo privileges.
See General Server Architecture for details.
Machines on FSDC
Internal machines include:
fsdc-avatar09(Avatar09) โ Ubuntu VM accessible via SSH, used for additional hosted applications or development services. Reach it withssh fsdc-avatar09, which jumps throughfsdc-maestroautomatically.
fsdc-maestro serves as the single public entry point, proxying traffic to the
internal machines based on ports or hostnames (e.g. the fsdc-macmini
hostname for the Mac mini's port 8000 service). This setup centralizes exposure
of LAN-hosted services while keeping the internal network private.
Rochester Data Center (RDC)
The Rochester Data Center (RDC) is home to many VMs stored on my brother's
server. Its public-facing reverse proxy is nws-maestro. Most RDC VMs use the
nws- prefix (Nick Web Services). Like all my VMs they run Ubuntu 24.04 LTS.
Reference โ RDC hosts & addresses
| Alias | Concrete name | Address | Role / Notes |
| --- | --- | --- | --- |
| nws-maestro | maestro06 | Public: 69.207.163.8 | Reverse proxy (Nginx), Ubuntu 24.04 LTS. Single public entry point. |
| rdc-router | Unifi router | https://192.168.211.1/network/default/dashboard | VPN: L2TP over IPSec. Can restrict SSH/ports by IP. |
| rdc-vmware | VMware | https://192.168.211.100/ui/#/login | Accessible when on VPN. |
Reference โ RDC VMs (behind nws-maestro)
| Alias | Concrete name | Internal IP |
| --- | --- | --- |
| nws-nn12prod | nn12prod | 192.168.100.192 |
| nws-nn12dev | nn12dev | 192.168.100.217 |
| nws-whatsticks13 | WhatSticks13 | 192.168.100.222 |
| nws-tastermonial | tastermonial | 192.168.100.202 |
| nws-kv23 | Kv23 | 192.168.100.193 |
| nws-golightly-prod | go-lightly-prod | 192.168.100.154 |
| nws-golightly-dev | go-lightly-dev | 192.168.100.214 |
Access
Behind nws-maestro are many VMs (see the VM reference table). They are reached
over SSH by jumping through nws-maestro โ one command per VM, no tunnel:
ssh nws-nn12prod
ssh nws-golightly-dev
The ProxyJump configuration for each VM lives in ~/.ssh/config on the Mac
(see SSH access); each VM block uses its Internal IP
from the table above and names nws-maestro as the jump host.
RDC Router
The RDC uses a Unifi router app (rdc-router). This router app can be accessed
using the VPN. The VPN access uses L2TP over IPSec. When the user is on the VPN,
the router app is accessed at the address in the reference table. The Unifi
router allows restricting SSH and other ports by IP address.
The RDC uses VMware (rdc-vmware), accessible on the network when on the VPN
(see the reference table for the address).
General Server Architecture
The virtual machines in these data centers run Ubuntu 24.04 LTS server and use three users to separate administration from application runtime.
Users
nick
The primary admin user. Responsible for:
- configuring the server (packages, nginx, fail2ban, firewall, etc.)
- managing systemd service files in
/etc/systemd/system/ - managing sudoer permissions
- cloning repositories and setting up application directories
- running Claude Code and other dev tools
Nick's home directory is /home/nick/. The agent_resources/ folder inside it
contains documentation and reference files for the server's setup.
limited_user
A system user with no login shell. Runs all production applications via systemd
services. Its home directory at /home/limited_user/ is organized as follows:
applications/โ cloned app repositoriesenvironments/โ Python virtual environments, one per appdatabases/โ SQLite or other file-based databaseslogs/โ application log filesproject_resources/โ shared data or assets used by apps_config_files/โ app-specific config files
Service Files
Each application has a corresponding systemd service file in
/etc/systemd/system/. Services run as limited_user and reference paths inside
/home/limited_user/. Environment variables are loaded from a .env file inside
the application directory.
Key Principle
Nick configures the server; limited_user runs the apps. This separation limits
the blast radius of any compromised application process.