Files
egbim_qa_platform/GITEA_VARIABLES.md
T
root 33453ecc55
Deploy staging / deploy (push) Failing after 6s
Initial deployment setup
2026-08-31 16:45:24 +09:00

12 KiB

Gitea 스테이징 등록 변수

BARON User Feedback와 secretary-api를 172.16.10.175:3030으로 배포할 때 Gitea에 등록할 환경변수와 Secret 정리입니다.

1. 스테이징 기본값

Variables

이름 등록값 용도
APP_ENV staging 실행 환경
WEB_PORT 3030 외부 웹 포트
API_PORT 4000 Docker 내부 API 포트 (host에 공개하지 않음)
SECRETARY_API_PORT 8010 Docker 내부 FastAPI 포트 (host에 공개하지 않음)
MYSQL_PORT 등록 불필요 prod Compose는 DB host port를 공개하지 않음
MYSQL_SECRETARY_PORT 등록 불필요 prod Compose는 DB host port를 공개하지 않음
NEXT_PUBLIC_API_BASE_URL http://172.16.10.175:3030 Web reverse proxy를 통한 브라우저 API 주소
ADMIN_WEB_URL http://172.16.10.175:3030 관리자 웹 주소 및 OAuth 기준 주소
BASE_URL http://172.16.10.175:3030 Web reverse proxy를 통한 API 기준 주소
SMTP_ENABLED false (현재 SSO 전용) 또는 true (SMTP 사용) 이메일 기능 활성화 여부
SMTP_HOST 사내 SMTP 호스트 메일 서버
SMTP_PORT 25 또는 사내 SMTP 포트 메일 서버 포트
SMTP_SENDER 사내 발신 이메일 메일 발신자
SMTP_TLS false 또는 true SMTP TLS 사용 여부
SMTP_CIPHER_SPEC 사내 SMTP 정책값 TLS cipher 설정
SMTP_OPPORTUNISTIC_TLS false 또는 true SMTP opportunistic TLS
ACCESS_TOKEN_EXPIRED_TIME 10m Access Token 만료시간
REFRESH_TOKEN_EXPIRED_TIME 1h Refresh Token 만료시간
AUTO_MIGRATION true API 시작 시 마이그레이션
OPENSEARCH_USE false OpenSearch 사용 여부
OPENSEARCH_NODE 빈 값 OpenSearch 미사용
OPENSEARCH_USERNAME 빈 값 OpenSearch 미사용
OPENSEARCH_PASSWORD 빈 값 OpenSearch 미사용

스테이징 DB는 외부 host port를 사용하지 않습니다. 컨테이너 내부에서는 mysql:3306, mysql-secretary:3306으로 접근합니다. 외부 DB 접속이 필요하면 SSH 터널을 사용합니다. | SSO_ISSUER | https://sso.hmac.kr/oidc | secretary-api용 SSO issuer | | SSO_CLIENT_ID | 838cd69d-e722-41da-9f79-b3c42a509ef2 | BARON-SSO Client ID |

INTERNAL_API_BASE_URL, SUPPORT_API_BASE_URL, ABC_API_BASE_URL는 Docker 내부 주소이므로 Gitea에 별도 등록하지 않습니다.

INTERNAL_API_BASE_URL=http://api:4000
SUPPORT_API_BASE_URL=http://secretary-api:8010
ABC_API_BASE_URL=http://api:4000

다음 값도 Compose에 고정되어 있으므로 Gitea에 별도 등록하지 않습니다.

이름 고정값
APP_NAME secretary-api
APP_HOST 0.0.0.0
APP_PORT 8010
UPLOAD_ROOT_DIR /app/uploads
MYSQL_PRIMARY_URL mysql://userfeedback:userfeedback@mysql:3306/userfeedback
DATABASE_URL mysql+pymysql://baron_support:baron_support@mysql-secretary:3306/baron_support

다음은 선택 기능을 사용할 때만 추가합니다.

이름 등록값
MYSQL_SECONDARY_URLS 보조 MySQL URL JSON 배열
AUTO_FEEDBACK_DELETION_ENABLED false
AUTO_FEEDBACK_DELETION_PERIOD_DAYS 자동 삭제 사용 시 보존 일수

2. Gitea Secrets

API 및 관리자 인증

이름 등록값
JWT_SECRET 긴 무작위 문자열
MASTER_API_KEY ABC 전체 API 관리용 무작위 키
INITIAL_SUPER_ADMIN_PHONE_NUMBER 선택값: 초기 SUPER 관리자 자동 지정용 BARON-SSO 전화번호
ADMIN_CANDIDATE_EMAILS 관리자 후보 이메일 목록을 쉼표로 연결

예시:

ADMIN_CANDIDATE_EMAILS=admin1@example.com,admin2@example.com

현재 로컬에 등록된 후보 이메일은 다음과 같습니다. 스테이징에서도 동일하게 사용할 때만 등록합니다.

cyhan@samaneng.com,hsmoon@hanmaceng.co.kr,hikim2@samaneng.com,thlee3@samaneng.com

SMTP

이름 등록값
SMTP_USERNAME SMTP 계정
SMTP_PASSWORD SMTP 비밀번호

SMTP를 인증 없이 사용하면 두 값은 빈 값으로 둡니다.

BARON-SSO

이름 등록값
SSO_CLIENT_SECRET BARON-SSO Client Secret

BARON-SSO에 다음 Redirect URI도 등록해야 합니다.

http://172.16.10.175:3030/api/auth/baron-sso/callback

3. ABC API Key와 workspace 매핑

Gitea에는 ABC API Key와 내부 매핑 조회용 MASTER_API_KEY를 Secret으로 등록합니다. 프로젝트·채널 ID는 Gitea 변수나 수동 SQL로 관리하지 않고, 로그인 시 API가 ABC DB의 프로젝트·채널을 workspace code 기준으로 조회하여 baron_support.workspace_channel_mappings에 자동 등록·갱신합니다.

SECRETARY_ABC_API_KEY=<스테이징 ABC API Key>
MASTER_API_KEY=<API와 secretary-api가 공유하는 내부 인증 키>

자동 매핑 대상은 다음 조건을 만족해야 합니다.

  • workspace code와 동일한 이름의 ABC 프로젝트가 정확히 1개일 것
  • 해당 프로젝트의 채널이 정확히 1개이거나, workspace code/프로젝트 이름과 일치하는 채널이 정확히 1개일 것
  • 조건을 만족하면 기존 매핑은 보완하고, 매핑 행이 없으면 새로 INSERT할 것

현재 매핑 확인:

SELECT
    w.id,
    w.workspace_code,
    w.workspace_name,
    m.id AS mapping_id,
    m.abc_project_id,
    m.abc_channel_id,
    m.is_active
FROM workspaces w
LEFT JOIN workspace_channel_mappings m
    ON m.workspace_id = w.id
WHERE w.is_active = 1
ORDER BY w.id, m.id;

배포 후 사용자가 로그아웃/로그인하거나 /api/access/me를 호출하면 EGBIM, TOVA 등의 누락 매핑이 자동으로 채워집니다. 프로젝트·채널 이름이 여러 개로 모호하면 잘못된 연결을 막기 위해 자동 등록하지 않으므로, 이 경우 ABC DB의 이름을 확인해야 합니다.

4. DB 접속값

Docker 내부 서비스 간 접속값은 다음과 같습니다.

# ABC 내장 DB
MYSQL_PRIMARY_URL=mysql://userfeedback:userfeedback@mysql:3306/userfeedback

# secretary-api 구축 DB
DATABASE_URL=mysql+pymysql://baron_support:baron_support@mysql-secretary:3306/baron_support

현재 docker-compose.prod.yml에는 DB 계정과 비밀번호가 직접 작성되어 있습니다.

ABC DB: userfeedback / userfeedback
구축 DB: baron_support / baron_support

운영 배포 전에는 다음 값을 Gitea Secret으로 분리하고 Compose에서 참조하도록 변경하는 것을 권장합니다.

MYSQL_ROOT_PASSWORD
MYSQL_PASSWORD
SECRETARY_MYSQL_ROOT_PASSWORD
SECRETARY_MYSQL_PASSWORD

5. CI/CD 배포용 변수

Gitea Actions에서 SSH 배포 방식을 사용할 경우 다음 값을 등록합니다.

Variables

이름 등록값
STAGING_HOST 172.16.10.175 (미등록 시 workflow 기본값 사용)
STAGING_PORT 22 (미등록 시 workflow가 기본값으로 사용)
STAGING_APP_DIR /home/user/baron_qa (미등록 시 workflow 기본값 사용)
STAGING_COMPOSE_FILE docker/docker-compose.prod.yml (미등록 시 workflow 기본값 사용)
STAGING_WEB_PORT 3030

Secrets

이름 등록값
STAGING_USER 스테이징 서버 SSH 사용자
STAGING_SSH_PRIVATE_KEY 배포용 SSH private key
STAGING_SSH_KNOWN_HOSTS 스테이징 서버의 known_hosts

Docker Registry를 사용하는 경우 추가로 등록합니다.

REGISTRY_URL
REGISTRY_USERNAME
REGISTRY_PASSWORD

6. 등록 전 확인사항

  • 현재 스테이징은 SMTP_ENABLED=false로 등록하면 SMTP 없이 BARON-SSO 로그인과 권한 분기만 검증할 수 있습니다. 추후 SMTP 정보를 확보하면 true로 변경합니다.
  • Gitea Secret에는 API Key, MASTER_API_KEY, JWT Secret, SMTP 비밀번호, SSO Client Secret을 등록합니다.
  • ABC 프로젝트·채널 매핑은 로그인 시 ABC DB와 자동 동기화되며, 이름이 모호한 경우에만 ABC DB의 프로젝트·채널 이름을 확인합니다.
  • INITIAL_SUPER_ADMIN_PHONE_NUMBER는 선택값입니다. 등록하면 해당 BARON-SSO 전화번호 사용자를 초기 SUPER 관리자로 자동 승격하며, 미등록 시에도 API는 정상 기동합니다.
  • 외부 공개 포트는 Web 3030 하나이며, Web이 Docker 내부 api:4000secretary-api:8010으로 reverse proxy합니다.
  • 로컬 Compose에 존재하는 API Key와 DB 비밀번호를 스테이징에 재사용하지 말고 스테이징용 Secret을 별도로 발급합니다.