- 프로필 페이지 /u/:sabun 신설 (본인=비공개 포함, 타인=공개만). 헤더 "내 프로필", 카드·모달·댓글 작성자 클릭 시 프로필로 이동. - 프로필 사진 업로드: users.avatar(bytea) 저장, GET /avatar/:sabun (업로드본 없으면 identicon SVG 폴백), POST /profile/avatar(express.raw). 브라우저 canvas 크롭(256px webp) — 서버 이미지 라이브러리/멀터 불필요. identicon 6개 렌더 지점을 avatar() 헬퍼로 통일. - 상세 모달 폭 640→760px, 소유자 액션(비공개 전환·삭제)을 우측 그룹으로 묶어 한 줄 정렬. - 표시 이름을 한국식 성+이름(family_name+given_name)으로 교정. - .project-env.example ADMIN_ROLE→ADMIN_GROUP 정리. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.2 KiB
Plaintext
43 lines
2.2 KiB
Plaintext
# AI DEV 포털 설정 예시. 실제 값은 .project-env (git 제외) 또는 Kubero Env 에.
|
|
|
|
# --- 포털 ---
|
|
PORTAL_BRAND=AI DEV
|
|
PORT=3000
|
|
# 로컬: http://localhost:3000 / 배포: https://portal.bokdev.in
|
|
BASE_URL=http://localhost:3000
|
|
# 세션 서명 키 (배포 시 임의의 긴 문자열로 교체)
|
|
SESSION_SECRET=change-me-to-a-long-random-string
|
|
|
|
# --- DB (OpenEverest appdb, portal schema 전용 role) ---
|
|
# host 는 클러스터 내부 OpenEverest pgbouncer (워크스페이스/Kubero 양쪽 도달).
|
|
# 주의: pgbouncer 가 SSL 필수 → sslmode=require. node pg 최신은 require 를 verify-full 로 취급하므로
|
|
# 자체서명 인증서 통과를 위해 uselibpqcompat=true 동반 필요.
|
|
# search_path 는 portal_app role 기본값(ALTER ROLE ... SET search_path=portal)으로 고정돼 있어
|
|
# URL 의 options 파라미터는 불필요(pgbouncer 가 startup options 거부함).
|
|
DATABASE_URL=postgresql://portal_app:7e2950ce6ed0c5a1457ea5b5@postgresql-6ox-pgbouncer.everest.svc:5432/appdb?uselibpqcompat=true&sslmode=require
|
|
|
|
# --- Keycloak OIDC (realm bokdev, client portal) ---
|
|
OIDC_ISSUER=https://keycloak.bokdev.in/realms/bokdev
|
|
OIDC_CLIENT_ID=portal
|
|
OIDC_CLIENT_SECRET=REPLACE_WITH_PORTAL_CLIENT_SECRET
|
|
|
|
# --- 권한 ---
|
|
# 이 Keycloak 그룹(group)에 속한 사용자에게만 인프라 도구(OpenEverest/MinIO/Keycloak/LiteLLM) 노출.
|
|
# (portal 클라이언트의 group-membership 매퍼가 ID 토큰에 groups 클레임을 넣어줌)
|
|
ADMIN_GROUP=DevOps
|
|
|
|
# --- Gitea 언어 자동 판별 (선택) ---
|
|
# 프로젝트 등록 시 repo_url 이 Gitea 레포면 언어 통계 API 로 메인 언어를 자동으로 채운다.
|
|
# 공개 레포는 토큰 없이 동작. 비공개 레포까지 판별하려면 read:repository 권한 토큰 필요.
|
|
# GITEA_TOKEN=
|
|
|
|
# --- 도구 URL (기본값 있음 · 도메인/폐쇄망 대응으로 덮어쓰기) ---
|
|
# CODER_URL=https://coder.bokdev.in/api/v2/users/oidc/callback
|
|
# GITEA_URL=https://gitea.bokdev.in/user/oauth2/keycloak
|
|
# KUBERO_URL=https://kubero.bokdev.in
|
|
# HARBOR_URL=https://harbor.bokdev.in
|
|
# OPENEVEREST_URL=https://openeverest.bokdev.in
|
|
# MINIO_URL=https://minioc.bokdev.in
|
|
# KEYCLOAK_URL=https://keycloak.bokdev.in/admin
|
|
# LITELLM_URL=https://litellm.bokdev.in
|