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:
@@ -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
|
||||||
|
|||||||
@@ -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) })));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user