# Deploy Palace Ring to stable.palacering.com **Linear:** MAN-84 — https://linear.app/manglasabang/issue/MAN-84/deploy-palace-ring-to-stablepalaceringcom **Status:** Done **Project:** default ## Description Deploy the [palacering app (]()`/code`) to [stable.palacering.com]() on palacestableserver VM (5.78.153.101) so Junwon can use it as his stable instance. [palacering.com]() remains the development environment on his Mac. ## Architecture * `/code` (the app) runs on palacestableserver VM (5.78.153.101) * `palaces/manglasabang/` (Junwon's data) stays on his Mac — never moved * The VM connects to the Mac via Tailscale (Mac at 100.100.65.72) to read palace data via SSHFS read-only mount at `/mnt/palacering` * [`REPO_ROOT=/mnt/palacering` — all path resolution works without code changes]() ## What Was Done * Installed Tailscale on VM, joined Junwon's network (VM hostname: palacestableserver, IP: 100.105.207.39) * SSHFS mount: `ace@100.100.65.72:/Users/ace/palacering` → `/mnt/palacering` (read-only, persistent via fstab) * Rsynced `/code` to `/opt/palacering/code/` on VM; build on Mac → rsync dist → restart pattern * Redis running as Docker container on 127.0.0.1:6399 * [Systemd services: `palacering.service` (port 6572), `palacecode.service` (port 6573)]() * Caddy on VM serving [stable.palacering.com]() with automatic HTTPS * [Claude Code installed at `/usr/bin/claude`, Junwon's OAuth credentials at `/root/.claude/`]() * Fixed 3 pages with infinite redirect loops (travel, examiner, join) — all 16 app tiles verified working * Fixed diary/health date redirect to use client-side `new Date()` — timezone-correct for any user * Linear sync fixed to write to `palaces/manglasabang/secretariat/` instead of `code/palaceplatform/secretariat/` * Added Palace Timezone setting to `/config`, backed by `secretariat/config.json` * Renamed: [pre.palacering.com]() → [stable.palacering.com](), prepalacering VM → palacestableserver ## Checks - [X] [stable.palacering.com]() loads palacering home screen - [X] Diary shows Junwon's existing entries (read from Mac over Tailscale) - [X] Health log works - [X] Notebook works - [X] All 16 app tiles load without errors - [X] Butler responds (claude -p running on VM with Junwon's OAuth)