IvyLabs Wiki
언어: 한국어

Docker Compose로 배포하기

머신 한 대에서 BostonIvy 전체를 실행합니다. PostgreSQL, 서버, BostonIvy Web의 구성은 bostonivy-os 저장소의 deploy/compose.yaml에 정의되어 있습니다. 가장 빨리 시작하는 방법이며, 가족이나 작은 팀이라면 이것으로 충분합니다.

시작하기 전에

echo "$GITHUB_TOKEN" | docker login ghcr.io -u <GitHub 사용자 이름> --password-stdin

BostonIvy 시작하기

  1. 예제에서 설정 파일을 만듭니다.

    cd deploy
    cp .env.example .env
    
  2. 서버 시크릿을 생성하고 .env의 BOSTONIVY_AUTH_SECRET에 붙여 넣습니다.

    docker compose run --rm --no-deps bostonivy keygen
    
  3. 모든 서비스를 시작합니다.

    docker compose up -d
    
  4. http://localhost:8080 을 열고 계정을 만듭니다. 새 데이터베이스에서는 첫 번째 계정이 관리자가 됩니다. 그 뒤 다른 사람이 가입할 수 있는지는 auth.open_registration과 관리자 패널의 설정에 따라 정해집니다.

docker compose ps에서 세 서비스가 모두 healthy로 보이면 됩니다. 서버는 시작할 때마다 데이터베이스를 마이그레이션하므로 따로 실행할 것은 없습니다.

예제 .env는 BOSTONIVY_COOKIE_SECURE=false로 되어 있으며, 이는 http://localhost에서만 동작합니다. 다른 사람이 사용하기 전에 HTTPS를 설정하고(아래 참고) 값을 true로 바꾸세요.

설정

모든 설정은 deploy/.env에 있습니다.

변수 의미
BOSTONIVY_AUTH_SECRET 필수. 모든 서명 키와 암호화 키가 여기서 파생됩니다. 잃어버리면 모두 다시 로그인해야 하고, 암호화해 저장한 TOTP와 webhook 시크릿도 복호화할 수 없습니다. 꼭 백업하세요
BOSTONIVY_URL 사용자가 여는 주소. 메일 속 링크와 공유 링크에 쓰입니다
BOSTONIVY_PORT 이 머신에서 여는 포트. 기본값은 8080
BOSTONIVY_COOKIE_SECURE 운영 환경에서는 true(HTTPS 필요). false는 http://localhost에서 체험할 때만 쓰세요. 그렇지 않으면 페이지를 새로 고칠 때 로그인이 풀립니다
BOSTONIVY_SMTP_URL, BOSTONIVY_MAIL_FROM 메일 설정. 예: smtps://user:password@smtp.example.com과 BostonIvy <noreply@example.com>. 비워 두면 메일을 보내지 않고, log로 두면 메일을 서버 로그에 기록하므로 체험할 때 편리합니다
POSTGRES_PASSWORD 데이터베이스 비밀번호
BOSTONIVY_VERSION 이미지 태그. latest는 최신 릴리스를 따릅니다
BOSTONIVY_SITE Caddy의 사이트 주소. 아래 HTTPS를 참고하세요

그 밖의 서버 설정(요청 제한, Redis, webhook, 오브젝트 스토리지, 계정 삭제 유예 기간 등)은 BOSTONIVY_<섹션>__<키> 형식의 환경 변수로 지정할 수 있습니다. 예: BOSTONIVY_STORAGE__KIND=s3. compose.yaml의 bostonivy.environment 아래에 추가하면 됩니다. 전체 항목은 bostonivy-os의 bostonivy.example.toml에 있습니다.

HTTPS

둘 중 하나를 고르세요.

백업과 업그레이드

백업할 것은 세 가지입니다.

업그레이드는 새 이미지를 받아 다시 시작하면 됩니다.

docker compose pull && docker compose up -d

새 버전은 시작할 때 데이터베이스를 마이그레이션합니다. 마이그레이션은 추가만 하고 삭제하지 않으므로, 백업과 함께라면 이전 버전으로 되돌릴 수 있습니다.

명령줄

docker compose exec bostonivy bostonivy admin promote <사용자 이름>   # 관리자로 지정
echo "새 비밀번호" | docker compose exec -T bostonivy bostonivy admin set-password <사용자 이름>
docker compose exec bostonivy bostonivy health                       # 상태 확인

이미지 직접 빌드하기

bostonivy-web을 bostonivy-os 옆에 체크아웃하거나 .env의 BOSTONIVY_WEB_SOURCE로 위치를 지정합니다. 웹 앱은 비공개 BostonIvy 디자인 패키지를 사용하므로, 빌드하려면 IvyLabsApp의 비공개 저장소를 읽을 수 있는 토큰이 필요합니다. 토큰은 빌드 시크릿으로만 쓰이고 이미지에는 남지 않습니다.

cd deploy
GITHUB_TOKEN=$(gh auth token) docker compose build
docker compose up -d