diff --git a/.env.example b/.env.example index 5dafbd0..a16a424 100644 --- a/.env.example +++ b/.env.example @@ -5,7 +5,6 @@ PORT=4000 # http://localhost:4000 instead. PUBLIC_BASE_URL=https://api.altdock.app.amania.jp WEB_ORIGIN=https://altdock.app.amania.jp -NEXT_PUBLIC_API_BASE_URL=https://api.altdock.app.amania.jp NEXT_PUBLIC_AUTH_MODE=demo # Vite dev server Host allow-list (comma-separated, or * for any host). # On Coolify set this to your public domain, e.g. altdock.app.amania.jp diff --git a/app/lib/dashboard.ts b/app/lib/dashboard.ts index fe5ae45..b185e92 100644 --- a/app/lib/dashboard.ts +++ b/app/lib/dashboard.ts @@ -31,7 +31,9 @@ export type Notice = { export type Visibility = SourceRecord["visibility"]; -export const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:4000"; +// Single-user deployment: hard-code the public API origin. The API is served +// at api.altdock.app.amania.jp; there is no per-environment fallback anymore. +export const API_BASE = "https://api.altdock.app.amania.jp"; export const AUTH_MODE = process.env.NEXT_PUBLIC_AUTH_MODE || "demo"; export const DEMO_HEADERS = { "x-demo-user": "demo@altdock.local" }; @@ -102,4 +104,3 @@ export function flattenApps(dashboard: DashboardData) { export function flattenReleases(dashboard: DashboardData) { return dashboard.sources.flatMap((entry) => entry.releases.map((release) => ({ release, source: entry.source, app: entry.apps.find((app) => app.id === release.appId) }))); } - diff --git a/app/sources/[slug]/PublicSourceView.tsx b/app/sources/[slug]/PublicSourceView.tsx index 647ddfc..fca6aa5 100644 --- a/app/sources/[slug]/PublicSourceView.tsx +++ b/app/sources/[slug]/PublicSourceView.tsx @@ -12,7 +12,8 @@ type SourceDocument = { apps: Array<{ name: string; bundleIdentifier: string; developerName: string; subtitle?: string; localizedDescription: string; iconURL?: string; category: string; versions: Array<{ version: string; buildVersion: string; date: string; downloadURL: string; size: number }> }>; }; -const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:4000"; +// Single-user deployment: hard-code the public API origin. +const API_BASE = "https://api.altdock.app.amania.jp"; function formatBytes(value: number) { if (!value) return "0 B"; diff --git a/apps/api/src/config.ts b/apps/api/src/config.ts index a3061b2..387c018 100644 --- a/apps/api/src/config.ts +++ b/apps/api/src/config.ts @@ -14,8 +14,8 @@ const schema = z.object({ NODE_ENV: z.enum(["development", "test", "production"]).default("development"), HOST: z.string().default("0.0.0.0"), PORT: numberFromEnv.default(4000), - PUBLIC_BASE_URL: z.string().url().default("http://localhost:4000"), - WEB_ORIGIN: z.string().url().default("http://localhost:3001"), + PUBLIC_BASE_URL: z.string().url().default("https://api.altdock.app.amania.jp"), + WEB_ORIGIN: z.string().url().default("https://altdock.app.amania.jp"), DATABASE_URL: z.string().optional(), STORAGE_MODE: z.enum(["local", "s3"]).default("local"), LOCAL_STORAGE_DIR: z.string().default(".data/storage"), diff --git a/docker-compose.yml b/docker-compose.yml index 5a8298d..8effb52 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -113,7 +113,7 @@ services: # vinext uses --hostname/--port (not vite's --host) to bind the dev server. command: npm run dev -- --hostname 0.0.0.0 --port 3001 environment: - NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL:-https://api.altdock.app.amania.jp} + # API origin is hard-coded in app/lib/dashboard.ts (single-user deploy). NEXT_PUBLIC_AUTH_MODE: ${AUTH_MODE:-demo} # Hosts allowed to reach the dev server (comma-separated, or * for any). VITE_ALLOWED_HOSTS: ${VITE_ALLOWED_HOSTS:-altdock.app.amania.jp}