콘텐츠로 이동

NPM에서 이전

NPM 가져오기는 NPM 설정을 Corvus로 복사합니다.

  • 프록시 호스트(사용자 지정 위치 포함), 리디렉션 호스트, 스트림
  • 인증서: Let's Encrypt 인증서와 직접 올린 인증서, Cloudflare DNS 토큰 포함
  • 접근 목록: 사용자와 IP 규칙

NPM의 파일과 데이터베이스를 읽기만 합니다. NPM은 변경되지 않으므로 언제든 되돌아갈 수 있습니다.

가져오지 않는 항목: 404 호스트, NPM 전용 변수를 쓰는 고급 설정. 미리보기에서 건너뛸 항목을 모두 보여 줍니다.

NPM 가져오기

1. NPM이 쓰는 데이터베이스 확인

NPM의 docker-compose.yml을 엽니다.

이렇게 보이면 NPM이 쓰는 DB
DB_MYSQL_* / DB_POSTGRES_* 변수가 없고 data/database.sqlite가 있음 SQLite (NPM 기본값)
DB_MYSQL_HOST, DB_MYSQL_USER, … 그리고 대개 별도의 db 서비스 MySQL / MariaDB
DB_POSTGRES_* PostgreSQL: 가져오기를 지원하지 않습니다. 콘솔에서 호스트를 다시 만드세요

2. NPM 폴더를 Corvus에 마운트

Corvus는 NPM의 data와 letsencrypt 폴더에서 인증서 파일을 읽습니다. 읽기 전용으로 마운트하고 CORVUS_IMPORT_DIR을 설정하세요.

services:
  corvus:
    image: 'ghcr.io/corvus-gateway/gateway:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '9443:9443'
    environment:
      CORVUS_IMPORT_DIR: /import
    volumes:
      - ./data:/data
      - /path/to/npm/data:/import/npm/data:ro
      - /path/to/npm/letsencrypt:/import/npm/letsencrypt:ro

NPM의 ./data, ./letsencrypt 볼륨의 호스트 경로를 사용하세요. NPM과 Corvus는 둘 다 80/443 포트가 필요하므로 동시에 실행할 수 없습니다.

3. 가져오기

cd /path/to/npm && docker compose down        # stop NPM (frees 80/443)
cd /path/to/corvus && docker compose up -d     # start Corvus with the mounts above

콘솔에서 NPM 가져오기를 열고 SQLite를 그대로 둔 채 미리보기를 누른 다음, 가져올 항목을 골라 선택 항목 가져오기를 누릅니다.

미리보기에 permission denied가 나오면 Corvus(uid 10001로 실행)가 파일을 읽을 수 있게 권한을 바꿔 주세요.

sudo chmod o+rx /path/to/npm/data && sudo chmod o+r /path/to/npm/data/database.sqlite

가져오는 동안 Corvus가 NPM 데이터베이스에 접속해야 하므로, NPM의 프록시 서비스만 멈추고 데이터베이스는 계속 실행해 둡니다.

cd /path/to/npm && docker compose stop app     # the NPM service that owns 80/443 (often "app")
cd /path/to/corvus && docker compose up -d

# connect Corvus to NPM's Docker network for the import
docker network ls | grep -i npm                # e.g. npm_default
docker network connect npm_default $(docker compose ps -q corvus)

NPM 가져오기에서 MySQL / MariaDB를 고르고 NPM 데이터베이스 정보를 입력합니다. 호스트는 데이터베이스 서비스 이름(대개 db), 포트는 3306, 그리고 DB_MYSQL_NAME, DB_MYSQL_USER, DB_MYSQL_PASSWORD 값을 넣습니다. 연결은 읽기 전용이며 비밀번호는 저장하지 않습니다. 그다음 미리보기 → 선택 항목 가져오기를 누릅니다.

가져오기가 끝나면 다음을 실행합니다.

docker network disconnect npm_default $(docker compose ps -q corvus)
cd /path/to/npm && docker compose down         # stop NPM's database too

가져온 항목은 바로 배포됩니다.

4. 가져온 뒤에

  • 가져온 호스트를 확인한 다음, CORVUS_IMPORT_DIR과 두 개의 /import 마운트를 지우고 docker compose up -d를 다시 실행합니다.
  • 인증서는 Corvus에서 계속 갱신됩니다. 지원하지 않는 DNS 업체를 쓰던 호스트는 자동 갱신 없이 가져오며, 미리보기에서 경고를 보여 줍니다.
  • 스트림: 브리지 네트워크에서는 스트림 포트마다 docker-compose.yml에서 포트를 공개해야 합니다(스트림 참고).
  • 되돌아가기: Corvus에서 docker compose down을 실행한 뒤 NPM에서 docker compose up -d를 실행합니다.

NPM 용어와 Corvus 용어

NPM Corvus
Proxy Hosts 프록시 호스트
Custom Locations 프록시 호스트 입력 화면의 사용자 지정 위치
Redirection Hosts 리디렉션 호스트
Streams 스트림
SSL Certificates 인증서
Access Lists 사용자와 IP 규칙을 함께 가져와 같은 호스트에 연결합니다. 새 호스트에는 프록시 호스트 입력 화면의 비밀번호 보호를, IP 제한에는 보안 규칙을 사용하세요
Advanced (사용자 지정 Nginx 설정) 고급 → 고급 nginx 설정
Settings → Default Site 차단·오류 페이지의 알 수 없는 호스트: 404와 Congratulations는 찾을 수 없음 페이지 (404)가 되고, No Response(444)와 Redirect는 그대로 가져옵니다. Custom Page(HTML)는 가져오지 않습니다