connect tailscale node status through platform gateway
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-07-08 17:51:16 +09:00
parent 90a22c098c
commit 38fe8bf098
17 changed files with 655 additions and 649 deletions
+10 -126
View File
@@ -18,6 +18,15 @@ export const navGroups = [
label: '플랫폼',
items: [
{ label: '대시보드', icon: LayoutDashboard, active: true },
{
label: '공통앱',
icon: ServerCog,
children: [
{ label: '소스 관리', view: 'commonSources' },
{ label: '빌드 관리', view: 'commonBuilds' },
{ label: '구성요소', view: 'commonComponents' }
]
},
{
label: '런처',
icon: Rocket,
@@ -26,7 +35,6 @@ export const navGroups = [
{ label: '빌드 관리', view: 'launcherBuilds' },
{ label: '버전 관리' },
{ label: '구성요소', view: 'launcherComponents' },
{ label: '공통 설정' },
{ label: '앱 연결' }
]
},
@@ -51,8 +59,7 @@ export const navGroups = [
children: [
{ label: '노드 현황' },
{ label: '라우트' },
{ label: 'ACL' },
{ label: '연결 진단' }
{ label: 'ACL' }
]
},
{
@@ -118,129 +125,6 @@ export const launcherVersions = [
}
];
export const launcherCommonSettings = [
{
name: '공통 인증 서버',
key: 'AUTH_BASE_URL',
value: 'http://localhost:4100',
type: 'endpoint',
status: '활성',
description: 'atnmy-stdo-auth. 로그인, 토큰 갱신, 사용자 프로필, handoff 토큰을 제공하는 공통 인증 API'
},
{
name: '인증 DB',
key: 'AUTH_DATABASE_URL',
value: 'postgres://atnmy_auth:***@auth-postgres:5432/atnmy_auth',
type: 'database',
status: '활성',
description: 'users, refresh_tokens, handoff_tokens, licenses, user_app_roles, organizations 저장소'
},
{
name: '인증 Redis',
key: 'AUTH_REDIS_URL',
value: 'redis://auth-redis:6379',
type: 'cache',
status: '활성',
description: '이메일 인증 코드, 비밀번호 재설정 코드, 로그인 실패 제한 상태를 저장'
},
{
name: 'JWT Issuer',
key: 'AUTH_JWT_ISSUER',
value: 'atnmy-stdo-auth',
type: 'security',
status: '활성',
description: '공통 인증 서버가 발급하는 access token issuer'
},
{
name: 'Refresh Cookie',
key: 'AUTH_REFRESH_COOKIE_NAME',
value: 'atnmy_refresh',
type: 'security',
status: '활성',
description: 'refresh token 저장용 HttpOnly 쿠키 이름. SameSite=Lax, Path=/ 기준'
},
{
name: 'Handoff Token',
key: 'AUTH_HANDOFF_TOKEN_TTL_SECONDS',
value: '60',
type: 'security',
status: '활성',
description: '런처에서 앱으로 인증 상태를 넘길 때 사용하는 일회성 토큰 TTL'
},
{
name: 'CORS Origins',
key: 'AUTH_CORS_ORIGINS',
value: '5173,5174,5175,5176,4200,4300,4400',
type: 'cors',
status: '활성',
description: '런처와 앱 개발 포트에서 인증 API 호출을 허용하는 origin 목록'
},
{
name: '인증 메일',
key: 'AUTH_SMTP_HOST',
value: 'smtp.gmail.com:587',
type: 'email',
status: '활성',
description: '회원가입 이메일 인증 코드와 비밀번호 재설정 코드 발송'
},
{
name: '플랫폼 게이트웨이',
key: 'PLATFORM_GATEWAY_BASE_URL',
value: 'https://platform-gateway.autonomystudio.local',
type: 'endpoint',
status: '활성',
description: '런처가 클러스터, 테일스케일, 원격 실행 상태를 조회할 때 거치는 공통 게이트웨이'
},
{
name: '런처 API',
key: 'LAUNCHER_API_BASE_URL',
value: 'https://launcher-api.autonomystudio.local',
type: 'endpoint',
status: '활성',
description: '앱 목록, 런처 버전, 공지, 다운로드 정보를 제공하는 API'
},
{
name: '플랫폼 Gitea',
key: 'PLATFORM_GITEA_BASE_URL',
value: 'https://gitea.autonomystudio.local',
type: 'repository',
status: '활성',
description: '런처와 앱별 소스, 버전 태그, 릴리즈 산출물 기준 저장소. 앱 내부 업무용 저장소와 분리'
},
{
name: '플랫폼 Gitea 토큰',
key: 'PLATFORM_GITEA_TOKEN_REF',
value: 'secret/platform-gitea-readonly',
type: 'secret',
status: '활성',
description: '앱 버전별 소스 조회와 릴리즈 메타데이터 수집에 사용하는 읽기 권한 토큰'
},
{
name: '테일스케일 연결',
key: 'TAILSCALE_STATUS_PROVIDER',
value: 'platform-gateway/tailscale',
type: 'integration',
status: '활성',
description: '런처가 테일스케일 세부 설정을 직접 관리하지 않고 게이트웨이에서 연결 상태만 조회'
},
{
name: '파일 서버',
key: 'DOWNLOAD_BASE_URL',
value: 'https://testfile.autonomystudio.net/media/platform',
type: 'storage',
status: '활성',
description: '런처와 앱 설치 파일을 제공하는 다운로드 베이스 URL'
},
{
name: '라이센스 검증',
key: 'LICENSE_CHECK_MODE',
value: 'online',
type: 'policy',
status: '활성',
description: '런처 앱 실행 전 라이센스와 앱 권한 검증 방식'
}
];
export const authApiEndpoints = [
{ group: '상태', method: 'GET', path: '/health', purpose: '서비스 및 Redis 상태 확인', auth: '없음' },
{ group: '인증', method: 'POST', path: '/auth/login', purpose: 'access token 발급 및 refresh cookie 설정', auth: '없음' },