back

gitea migration domains

개요

Gitea에서 외부 저장소를 미러링할 때 발생하는 도메인 허용 설정 오류를 해결하는 방법을 다룹니다. ALLOWED_DOMAINS 설정을 통해 특정 호스트에서 레포지토리를 가져올 수 있도록 허용하는 과정을 설명합니다.

--- title: Gitea Repository Migration Architecture --- flowchart LR subgraph "VPC" direction LR subgraph "GHES EC2" r["`Repository to sync`"] end subgraph "Kubernetes" gt["`Pod gitea`"] end end d["Developers"] d --Commit and Push--> r gt e1@--Migration (mirror)--> r style gt fill:darkorange, color:white e1@{ animate: true }

환경

설정 방법

GHES에 저장된 레포를 Gitea에서 10분 간격으로 미러 싱크해서 가져와야 하는 요구사항이 있었습니다.

Gitea에는 빌트인 마이그레이션(미러링) 기능이 있습니다. 단, 동기화 간격은 최소 10분으로 제한되며 그보다 짧은 간격으로는 설정할 수 없습니다.

아래와 같이 /repo/migrate URL로 접근하면 쉽게 미러링 구성을 할 수 있습니다.

https://gitea.example.com/repo/migrate

GHES의 레포를 풀링해오는 미러링(Migration) 구성시 발생하는 에러 메세지:

You cannot import from disallowed hosts, please ask the admin to check ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS settings.

이 에러는 Gitea v1.22.0부터 보고된 버그(#31733)로, 외부 호스트에서의 저장소 마이그레이션이 기본적으로 차단되기 때문입니다. 이전 버전(v1.21.4)에서는 문제가 없었지만, v1.22.0부터는 명시적으로 ALLOWED_DOMAINS 설정이 필요합니다.

참고:

gitea 차트 설정:

# helm/gitea/values_example.yaml
gitea:
  config:
    migrations:
      ALLOWED_LOCALNETWORKS: "true"
      ALLOWED_DOMAINS: "*" 

실제 gitea 파드의 설정파일에 반영된 Gitea 세부 설정:

# cat /data/gitea/conf/app.ini
[migrations]
ALLOWED_LOCALNETWORKS = true
ALLOWED_DOMAINS = *

관련자료