api: フロントエンドのAPI URLを本番ドメインにハードコード

シングルユーザー運用のため env フォールバックを廃止し、
APIオリジンを https://api.altdock.app.amania.jp に固定した。
- dashboard.ts / PublicSourceView.tsx の localhost:4000 フォールバックを削除
- API側 config.ts の PUBLIC_BASE_URL/WEB_ORIGIN デフォルトも本番ドメインに
- compose/web の NEXT_PUBLIC_API_BASE_URL 環境変数を削除(コード固定のため)
This commit is contained in:
amania-jailbreak
2026-08-05 14:07:18 +09:00
parent 236a08c865
commit 54cb335d66
5 changed files with 8 additions and 7 deletions
-1
View File
@@ -5,7 +5,6 @@ PORT=4000
# http://localhost:4000 instead. # http://localhost:4000 instead.
PUBLIC_BASE_URL=https://api.altdock.app.amania.jp PUBLIC_BASE_URL=https://api.altdock.app.amania.jp
WEB_ORIGIN=https://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 NEXT_PUBLIC_AUTH_MODE=demo
# Vite dev server Host allow-list (comma-separated, or * for any host). # 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 # On Coolify set this to your public domain, e.g. altdock.app.amania.jp
+3 -2
View File
@@ -31,7 +31,9 @@ export type Notice = {
export type Visibility = SourceRecord["visibility"]; 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 AUTH_MODE = process.env.NEXT_PUBLIC_AUTH_MODE || "demo";
export const DEMO_HEADERS = { "x-demo-user": "demo@altdock.local" }; export const DEMO_HEADERS = { "x-demo-user": "demo@altdock.local" };
@@ -102,4 +104,3 @@ export function flattenApps(dashboard: DashboardData) {
export function flattenReleases(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) }))); return dashboard.sources.flatMap((entry) => entry.releases.map((release) => ({ release, source: entry.source, app: entry.apps.find((app) => app.id === release.appId) })));
} }
+2 -1
View File
@@ -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 }> }>; 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) { function formatBytes(value: number) {
if (!value) return "0 B"; if (!value) return "0 B";
+2 -2
View File
@@ -14,8 +14,8 @@ const schema = z.object({
NODE_ENV: z.enum(["development", "test", "production"]).default("development"), NODE_ENV: z.enum(["development", "test", "production"]).default("development"),
HOST: z.string().default("0.0.0.0"), HOST: z.string().default("0.0.0.0"),
PORT: numberFromEnv.default(4000), PORT: numberFromEnv.default(4000),
PUBLIC_BASE_URL: z.string().url().default("http://localhost:4000"), PUBLIC_BASE_URL: z.string().url().default("https://api.altdock.app.amania.jp"),
WEB_ORIGIN: z.string().url().default("http://localhost:3001"), WEB_ORIGIN: z.string().url().default("https://altdock.app.amania.jp"),
DATABASE_URL: z.string().optional(), DATABASE_URL: z.string().optional(),
STORAGE_MODE: z.enum(["local", "s3"]).default("local"), STORAGE_MODE: z.enum(["local", "s3"]).default("local"),
LOCAL_STORAGE_DIR: z.string().default(".data/storage"), LOCAL_STORAGE_DIR: z.string().default(".data/storage"),
+1 -1
View File
@@ -113,7 +113,7 @@ services:
# vinext uses --hostname/--port (not vite's --host) to bind the dev server. # vinext uses --hostname/--port (not vite's --host) to bind the dev server.
command: npm run dev -- --hostname 0.0.0.0 --port 3001 command: npm run dev -- --hostname 0.0.0.0 --port 3001
environment: 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} NEXT_PUBLIC_AUTH_MODE: ${AUTH_MODE:-demo}
# Hosts allowed to reach the dev server (comma-separated, or * for any). # Hosts allowed to reach the dev server (comma-separated, or * for any).
VITE_ALLOWED_HOSTS: ${VITE_ALLOWED_HOSTS:-altdock.app.amania.jp} VITE_ALLOWED_HOSTS: ${VITE_ALLOWED_HOSTS:-altdock.app.amania.jp}