Files
obsidian/services/gitea.md
kappa c0e210990a chore: gitea.anvil.it.com → gitea.inouter.com 도메인 이전
Gitea 도메인을 inouter.com으로 통합. DNS, BunnyCDN, HTTPRoute,
Helm values, CoreDNS, 컨테이너 이미지 경로 모두 변경 완료.
2026-03-28 00:18:06 +09:00

3.0 KiB

title, updated
title updated
Gitea 서버 및 CI/CD 2026-03-27

서버

K3s 클러스터에서 Helm 차트(gitea/gitea 12.5.0)로 운영. 네임스페이스: gitea.

  • Gitea 1.25.4 + PostgreSQL 16 + Valkey
  • 도메인: gitea.inouter.com
  • 트래픽: BunnyCDN(iron-git, BlockNoneReferrer: false) → HAProxy → Traefik → gitea svc:3000
  • SSH 활성화, 외부 포트 2202 (relay4wd APISIX stream_route 경유: ssh -p 2202 git@git.inouter.com), MetalLB 192.168.9.54:22, SSH_DOMAIN: git.inouter.com
  • 스토리지: Git 저장소 Longhorn PVC 5Gi, 그 외 전부 R2 (패키지/LFS/첨부파일/아바타/아카이브/Actions)
  • R2 버킷: gitea-storage (APAC), Vault secret/cloud/r2-gitea, K8s Secret gitea-r2
  • 시크릿: Vault secret/apps/gitea
  • Deployment strategy: Recreate (RWO PVC 충돌 방지)
  • 메일: Mailgun SMTP (gitea@anvil.it.com, 도메인 anvil.it.com)

Helm 관리

# values 파일
~/k8s/gitea/values.yaml

# 업그레이드
helm upgrade gitea gitea-charts/gitea -n gitea -f ~/k8s/gitea/values.yaml

이전 (Synology)

2026-03-15 Synology NAS(192.168.9.100, SQLite)에서 K3s(PostgreSQL)로 이전 완료. Synology 패키지 중지됨 (데이터 보존 중).

이미지 레지스트리

모든 컨테이너 이미지는 gitea.inouter.com/kaffa/ 경로. R2 gitea-storage 버킷에 저장.

R2 스토리지 설정

항목
STORAGE_TYPE minio (S3 호환)
엔드포인트 d8e5997eb4040f8b489f09095c0f623c.r2.cloudflarestorage.com
버킷 gitea-storage
API 키 Vault secret/cloud/r2-gitea (access_key_id, secret_access_key)
K8s Secret gitea-r2 (gitea 네임스페이스)

R2에 저장되는 데이터: packages, lfs, attachments, avatars, repo-avatars, repo-archive, actions_log, actions_artifacts

BunnyCDN Pull Zone 분리 (2026-03-27)

Gitea는 iron-kr에서 iron-git (ID 5584382)으로 분리. 이유: iron-kr의 BlockNoneReferrer: true가 git 클라이언트(Referrer 없음)를 차단하여 git push/pull 403 에러 발생. iron-git은 BlockNoneReferrer: false로 설정.

Act Runner

Gitea Act Runner는 infra-hosts의 gitea-runner 컨테이너에서 실행 (act_runner daemon, systemd 서비스).

CI/CD 배포

On push to main branch, uses appleboy/ssh-action to SSH into incus-kr1 and execute 'git pull && docker compose up -d --build'

백업

K8s CronJob gitea-backup (매일 03:00 UTC):

  • gitea dump/backup/gitea-dump-*.tar.gz
  • 7일 보존, Longhorn PVC 10Gi
  • 매니페스트: ~/k8s/gitea/backup-cronjob.yaml

트러블슈팅

웹 로그인 안 될 때 비밀번호 리셋

curl -s -X PATCH "https://gitea.inouter.com/api/v1/admin/users/kaffa" \
  -H "Authorization: token <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"password":"<PASSWORD>","must_change_password":false,"login_name":"kaffa","source_id":0}'
  • API 토큰, 비밀번호: Vault secret/apps/gitea
  • 2026-03-17 웹 로그인 불가 → API로 비밀번호 리셋하여 해결