diff --git a/.env.example b/.env.example
index 326e6d5..1c5bb89 100644
--- a/.env.example
+++ b/.env.example
@@ -1,6 +1,6 @@
APP_ENV=development
SERVER_HOST=0.0.0.0
-SERVER_PORT=4040
+SERVER_PORT=5050
DATABASE_PATH=./data/app.db
APP_ENCRYPTION_KEY=change-me-for-production
ARTWORK_CACHE_DIR=./data/artwork
diff --git a/SUBSONIC_SERVER_BLUEPRINT.md b/SUBSONIC_SERVER_BLUEPRINT.md
index 4175219..7dd8005 100644
--- a/SUBSONIC_SERVER_BLUEPRINT.md
+++ b/SUBSONIC_SERVER_BLUEPRINT.md
@@ -680,9 +680,9 @@ Responsibilities:
- [x] Persistent DB volume
- [x] Persistent cache volume
- [x] Music folder mount strategy
-- [ ] Single public HTTPS port for web UI and Subsonic clients
-- [ ] Reverse proxy example
-- [ ] HTTPS deployment notes
+- [x] Single app port for web UI and Subsonic clients
+- [x] Reverse proxy example
+- [x] HTTP/reverse proxy deployment notes
- [ ] Backup/restore notes
## Nice-to-Have After MVP
diff --git a/apps/web/src/components/app-shell.tsx b/apps/web/src/components/app-shell.tsx
index 3e635fa..dc45a98 100644
--- a/apps/web/src/components/app-shell.tsx
+++ b/apps/web/src/components/app-shell.tsx
@@ -38,6 +38,7 @@ export function AppShell({ children }: { children: React.ReactNode }) {
const username = useSessionStore((state) => state.username)
const clearSession = useSessionStore((state) => state.clearSession)
const fullPlayerOpen = usePlayerStore((state) => state.fullPlayerOpen)
+ const currentOrigin = typeof window !== 'undefined' ? window.location.origin : ''
const [settingsOpen, setSettingsOpen] = useState(false)
const [userMenuOpen, setUserMenuOpen] = useState(false)
const [paletteOpen, setPaletteOpen] = useState(false)
@@ -87,7 +88,7 @@ export function AppShell({ children }: { children: React.ReactNode }) {
{username ?? 'demo'}
-
https://music.daemonlord.ru
+
{currentOrigin || 'https://music.example.com'}