Ubuntu 24.04에 Passbolt 팀 비밀번호 관리자 배포

발행: (2026년 5월 27일 AM 12:20 GMT+9)
4 분 소요
원문: Dev.to

출처: Dev.to

Passbolt CE는 팀을 위해 설계된 오픈소스 엔드‑투‑엔드 암호화 비밀번호 관리자이며, 브라우저 확장 프로그램과 웹 인터페이스를 통해 안전하게 자격 증명을 공유할 수 있습니다. 이 가이드는 Docker Compose를 사용해 MariaDB 백엔드와 함께 Passbolt을 배포하고, Traefik이 자동 HTTPS를 처리하도록 설정하며, 첫 번째 관리자를 등록하는 과정을 안내합니다. 완료되면 Passbolt이 도메인에서 안전하게 실행되고 첫 관리자 계정이 준비됩니다.

디렉터리 구조 설정

1. 프로젝트 디렉터리 구조 만들기

mkdir -p ~/passbolt/{db,gpg,letsencrypt}
sudo chown -R 33:33 ~/passbolt/gpg
cd ~/passbolt

2. 환경 파일 만들기

nano .env

다음 변수를 추가합니다(플레이스홀더는 본인 값으로 교체하세요):

DOMAIN=passbolt.example.com
LETSENCRYPT_EMAIL=admin@example.com

MYSQL_USER=passbolt
MYSQL_PASSWORD=STRONG_DB_PASSWORD
MYSQL_DATABASE=passbolt

Docker Compose로 배포

1. 현재 사용자를 Docker 그룹에 추가

sudo usermod -aG docker $USER
newgrp docker

2. Docker Compose 매니페스트 만들기

nano docker-compose.yml

아래 내용을 붙여넣으세요:

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    environment:
      DOCKER_API_VERSION: "1.44"
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--certificatesresolvers.le.acme.httpchallenge=true"
      - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}"
      - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt

  db:
    image: mariadb:latest
    container_name: passbolt-db
    restart: unless-stopped
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    volumes:
      - ./db:/var/lib/mysql

  passbolt:
    image: passbolt/passbolt:latest-ce
    container_name: passbolt
    restart: unless-stopped
    depends_on:
      - db
    environment:
      - APP_FULL_BASE_URL=https://${DOMAIN}
      - DATASOURCES_DEFAULT_HOST=db
      - DATASOURCES_DEFAULT_USERNAME=${MYSQL_USER}
      - DATASOURCES_DEFAULT_PASSWORD=${MYSQL_PASSWORD}
      - DATASOURCES_DEFAULT_DATABASE=${MYSQL_DATABASE}
    volumes:
      - ./gpg:/etc/passbolt/gpg
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.passbolt.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.passbolt.entrypoints=websecure"
      - "traefik.http.routers.passbolt.tls=true"
      - "traefik.http.routers.passbolt.tls.certresolver=le"
      - "traefik.http.services.passbolt.loadbalancer.server.port=80"

3. 서비스 시작

docker compose up -d

4. 서비스가 정상적으로 실행됐는지 확인

docker compose ps

첫 번째 관리자 만들기

컨테이너 내부에서 Passbolt CLI를 이용해 첫 관리자 계정을 등록합니다:

docker compose exec passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u admin@example.com -f FIRSTNAME -l LASTNAME -r admin" -s /bin/sh www-data

명령이 출력하는 일회성 설정 URL을 브라우저에서 열고, Passbolt 브라우저 확장 프로그램을 설치한 뒤 계정 생성 과정을 완료합니다.

다음 단계

  • 팀원을 초대하고 자격 증명을 공유 그룹으로 정리합니다.
  • 초대 및 알림 이메일을 위해 SMTP를 설정합니다.
  • 관리자와 팀 계정에 MFA( TOTP, YubiKey, Duo 등)를 활성화합니다.

전체 가이드와 추가 팁은 **Vultr Docs**의 원문을 참고하세요.

0 조회
Back to Blog

관련 글

더 보기 »