본문으로 건너뛰기
Berth

Docker로 Berth 설치하기

2026년 10월 27일 업데이트

Berth는 컨테이너 하나 ghcr.io/joveptesg/berth이며 amd64와 arm64용으로 빌드돼요. Linux 서버나 VPS, NAS, Raspberry Pi에서 실행되고 모든 것을 데이터 폴더 하나에 보관해요. 설정은 몇 분이면 끝나요.

준비물

Docker Compose로 실행

./data에는 데이터베이스와 백업, 로컬 저장소, secret.key가 들어 있어요.

mkdir berth && cd berth
curl -fsSLO https://raw.githubusercontent.com/joveptesg/berth/main/docker-compose.yml
docker compose up -d              # http://localhost:8080, data in ./data
docker compose logs berth         # the setup code is in the log

secret.key의 사본은 백업과 따로 보관하세요. 이 파일이 없으면 데이터베이스에 있는 저장소 키를 읽을 수 없어요.

브라우저에서 처음 설정하기

  1. 브라우저에서 서버 주소를 여세요: http://<server>:8080 또는 호스팅에서 할당한 도메인.
  2. 로그의 server is not set up: … enter the setup code K7P2-9QXM 줄에서 설정 코드를 찾으세요. 설정을 마칠 때까지 재시작할 때마다 코드가 바뀌어요.
  3. 코드를 입력하고 관리자를 만드세요. 지금 연 주소가 휴대폰 QR 코드의 홈 네트워크 주소 또는 인터넷 주소가 돼요. 나중에 설정 → 서버에서 바꿀 수 있어요.
  4. 첫 책을 업로드하세요: 폴더나 파일을 관리자로 끌어다 놓으면 Berth가 태그, 챕터, 표지를 읽어요. 확인한 뒤 책을 라이브러리에 추가하세요.

일반 Docker, NAS, Raspberry Pi

일반 Docker를 쓰거나 NAS 화면에서 이미지 이름을 물어볼 때:

docker run -d --name berth --restart unless-stopped \
  -p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth                 # the setup code is in the log

업데이트와 롤백

1 태그는 모든 1.x 릴리스를 따라가고, 1.0은 1.0의 수정 버전을 따라가며, 1.0.1 같은 정확한 태그는 절대 바뀌지 않아요. Watchtower 같은 자동 업데이트 도구에는 latest를 쓰지 마세요. 새 메이저 버전까지 따라가요.

새 버전은 데이터베이스 스키마를 바꾸기 전에 사본을 ./data/backups에 저장해요(최근 3개 보관). 롤백하려면 docker-compose.yml에서 이전 버전을 고정하고 그 사본을 복원하세요:

  1. docker compose stop berth
  2. docker compose run --rm berth admin restore /data/backups/auto-<time>.sqlite
  3. docker compose up -d
docker compose pull && docker compose up -d

인터넷에서 접속하기

Berth는 일반 HTTP로 동작하며, 집에서는 그걸로 충분해요. 외부에서 접속하려면 앞단에 HTTPS 리버스 프록시를 두세요. 예를 들어 Caddy는 이렇게 해요:

books.example.com {
	reverse_proxy localhost:8080
}

그다음 관리자의 설정 → 인터넷 주소에 https://books.example.com을 입력하면 휴대폰용 QR 코드에 포함돼요. 앱은 홈 네트워크 주소와 인터넷 주소를 알아서 전환해요.

백업

자주 묻는 질문

Berth는 어떤 포트를 쓰나요?

컨테이너 안에서는 8080이에요. 호스트에서는 원하는 포트로 열 수 있어요. 예: -p 9000:8080.

책은 어디에 저장되나요?

기본적으로 ./data 안의 로컬 저장소에 저장돼요. 나중에 관리자에서 S3 호환 저장소를 추가하고 새 책의 기본 저장소로 지정할 수 있어요. S3 저장소를 참고하세요.

Berth를 소스에서 빌드할 수 있나요?

네. 저장소를 클론한 뒤 docker-compose.yml에서 build: .의 주석을 해제하고 docker compose up -d --build를 실행하세요.