Docker를 사용하여 Vaultwarden을 설치하는 방법: 비밀번호를 자체 호스팅하는 완벽 가이드

최종 업데이트: 2026년 08월 31일

  • Rust로 구현된 경량 버전으로, 공식 Bitwarden 클라이언트와 완벽하게 호환됩니다.
  • Docker 컨테이너를 사용한 간편한 배포로 완벽한 개인정보 보호가 가능합니다.
  • 소형 서버 또는 라즈베리 파이에 필요한 최소 하드웨어 사양입니다.
Docker Compose를 사용하여 Vaultwarden을 설치하는 방법

Vaultwarden을 사용하면 Bitwarden 클라이언트와 호환되는 암호 관리자를 자체 서버에서 호스팅할 수 있습니다. 이를 통해 정보 저장 위치, 서비스 접근 권한, 백업 방법 등을 직접 결정할 수 있습니다.

처음부터 분명히 해야 할 점은 다음과 같습니다. Vaultwarden은 공식 Bitwarden 서버가 아닙니다.이는 Bitwarden의 API를 상당 부분 복제하는 Rust로 작성된 독립적인 커뮤니티 주도 구현체입니다. 따라서 Bitwarden의 공식 모바일 앱, 데스크톱 프로그램 및 확장 프로그램과 함께 사용할 수 있습니다.

서비스를 자체 호스팅하면 더 많은 제어 권한을 얻을 수 있지만, 그것이 자동으로 더 큰 보안을 보장하는 것은 아닙니다.그 순간부터 업데이트 설치, 접근 보안, 로그 검토, HTTPS 유지 관리, 백업 복원 보장 등은 모두 귀하의 책임입니다.

관련 기사:
최고의 비밀번호 관리자

Docker를 사용하여 Vaultwarden을 설치하는 데 필요한 사항

Docker를 사용하여 Vaultwarden을 설치하는 데 필요한 사항

시작하기 전에 비밀번호를 동기화할 때 전원이 켜져 있는 Docker 호환 시스템이 필요합니다. Linux 서버, NAS, 미니 PC 또는 이미지에서 지원하는 아키텍처를 갖춘 Raspberry Pi 등이 해당될 수 있습니다.

다음도 필요합니다:

  • 도커 엔진 설치 완료 및 정상 작동 중입니다.
  • 현재 추가 기능 Docker Compose.
  • 데이터를 영구적으로 저장할 수 있는 폴더.
  • Docker를 관리할 수 있는 권한이 있는 터미널에 접근해야 합니다.
  • 다른 기기에서 서비스를 이용할 경우 안전한 접속 방법입니다.

모든 설치 환경에 공통적으로 요구되는 메모리나 저장 공간은 없습니다. 사용량은 사용자 수, 연결된 장치, 저장 공간 크기, 그리고 같은 컴퓨터에서 실행 중인 다른 서비스에 따라 달라집니다. 가정용으로는 일반적으로 가벼운 애플리케이션이지만, 충분한 저장 공간을 확보해 두는 것이 좋습니다. 데이터 및 데이터 백업.

다음 명령어를 사용하여 설치 상태를 확인하세요.

docker --version
docker compose version

두 명령 모두 버전을 표시하면 계속 진행할 수 있습니다.

Docker Compose를 사용하여 Vaultwarden을 설치하는 방법

Docker를 사용하여 Vaultwarden을 설치하는 방법

전용 폴더를 만들고 그 안으로 들어가세요:

mkdir vaultwarden
cd vaultwarden

폴더 안에 라는 이름의 파일을 만드세요. compose.yml 다음과 같은 초기 설정으로:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

의회 ./vw-data:/data 필수적입니다. 폴더 /data 이 폴더에는 서버에서 사용하는 데이터베이스, 첨부 파일, 구성 및 키가 포함되어 있습니다. 이 폴더를 보존하지 않고 컨테이너를 삭제하면 저장된 정보가 손실됩니다.

주소 127.0.0.1 이 초기 설치는 서버 자체에서만 응답합니다. 네트워크에 포트를 노출하지 않고 Vaultwarden을 테스트하기에 적합한 구성입니다.

컨테이너를 시작하세요:

docker compose up -d

상태를 확인하세요:

docker compose ps
docker compose logs --tail=100 vaultwarden

같은 기기에서 다음 앱들을 열 수 있습니다:

http://localhost:8080

접근 방법: localhost 이 단계는 초기 설정을 완료하는 데 사용됩니다. 다른 컴퓨터, 모바일 앱 또는 내선에서 연결하려면 HTTPS를 사용하여 보안 주소를 설정해야 합니다.

첫 계정 생성 및 등록 완료 방법

웹 인터페이스를 열고 첫 계정을 생성한 후 로그인이 가능한지 확인하세요. 길고, 고유하며, 기억하기 쉬운 마스터 비밀번호창고 전체에 대한 접근을 보호하기 때문입니다.

필요한 계정을 생성한 후 편집하세요. compose.yml 및 변경 사항:

SIGNUPS_ALLOWED: "true"

에 의해:

SIGNUPS_ALLOWED: "false"

컨테이너를 다시 생성하여 변경 사항을 적용하세요.

docker compose up -d

Vaultwarden은 기본적으로 익명 사용자가 계정을 생성할 수 있도록 허용합니다. 불필요하게 등록을 개방해 두면 제3자가 허가 없이 서버 공간을 차지하거나 서버를 사용하는 것이 더 쉬워집니다.

독점 콘텐츠 - 여기를 클릭하세요  BitLocker 복구 키는 어디에 저장되며 어떻게 찾을 수 있나요?

나중에 관리자 패널을 활성화하면 공개 등록이 비활성화된 경우에도 초대장을 보낼 수 있습니다.

Vaultwarden에 HTTPS가 필요한 이유

해당 웹 스토어는 브라우저의 웹 암호화 API를 사용합니다. 이러한 암호화 기능은 일반적으로 특정 환경에서만 사용 가능합니다. HTTPS 또는 localhost와 같은 보안 컨텍스트.

이러한 이유로, 개장 http://192.168.1.50:8080 다른 컴퓨터에서 접속할 경우, 컨테이너가 실행 중이더라도 오류가 표시될 수 있습니다. 네트워크에 포트를 공개하는 것은 HTTPS 구성을 대체하는 것이 아닙니다.

Vaultwarden을 사용하는 일반적인 방법은 세 가지입니다.

  • 서버 전용: 접근을 통해 localhost테스트에 유용합니다.
  • 개인 네트워크 또는 VPN에서: 접근은 제한되지만 유효한 HTTPS 인증서는 유지됩니다.
  • 인터넷에서 찾은 정보: 도메인, 리버스 프록시, 유효한 인증서 및 올바르게 구성된 방화벽이 필요합니다.

Vaultwarden을 집 밖에서 사용하기 위해 공개적으로 열 필요는 없습니다. VPN을 사용하면 승인된 기기만 접속할 수 있도록 제한할 수 있지만, 클라이언트가 사용하는 주소는 여전히 클라이언트가 인식하는 인증서를 보유해야 합니다.

Caddy에서 HTTPS를 설정하는 방법

Caddy에서 HTTPS를 설정하는 방법

Caddy는 ACME를 통해 인증서를 자동으로 요청하고 갱신할 수 있기 때문에 가장 간단한 옵션 중 하나입니다. 공개 인증서를 사용하려면 도메인이 서버로 확인되어야 하고 필요한 포트에 액세스할 수 있어야 합니다.

Vaultwarden과 Caddy를 함께 구성하는 데 이 파일을 사용할 수 있습니다. compose.yml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "false"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2
    container_name: vaultwarden-caddy
    restart: unless-stopped
    depends_on:
      - vaultwarden
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config

교체합니다 vault.example.com 실제 도메인에 해당하는 파일을 생성하세요. Caddyfile:

vault.example.com {
    reverse_proxy vaultwarden:80 {
        header_up X-Real-IP {remote_host}
    }
}

서비스 활성화:

docker compose up -d

Caddy는 Compose가 생성한 내부 네트워크를 통해 컨테이너로 요청을 보냅니다. 현재 구성은 동일한 대상을 통해 WebSocket 알림도 처리할 수 있으므로 별도의 Vaultwarden 포트를 공개할 필요가 없습니다.

변수 DOMAIN 정확한 외부 URL을 포함해야 합니다. https://주소가 잘못되면 첨부 파일, 링크, 인증 또는 클라이언트에 문제가 발생할 수 있습니다.

Bitwarden 공식 앱을 연결하는 방법

확장 프로그램의 로그인 화면, 모바일 앱 또는 데스크톱 프로그램에서 서버 선택기를 열고 해당 옵션을 선택하세요. 자체 호스팅.

전체 주소를 입력하세요:

https://vault.example.com

로그인하기 전에 설정을 저장하세요. 변경 사항이 올바르게 동기화되려면 각 클라이언트가 동일한 서버에 연결되어 있어야 합니다.

사설 인증기관에서 발급한 인증서를 사용하는 경우, 모든 장치에 해당 인증기관을 올바르게 설치하고 신뢰해야 합니다. 호환성 문제를 방지하려면 유효한 공개 인증서 또는 신뢰 체인을 제대로 관리할 수 있는 사설 인증서를 사용하는 것이 좋습니다.

클라이언트가 연결되면 다음 작업을 수행할 수 있습니다. Chrome 암호를 Vaultwarden으로 가져오기 그리고 모든 기기에서 제대로 표시되는지 확인하세요.

관리자 패널을 보호하는 방법

Vaultwarden은 선택 사양 패널을 제공합니다. /admin여기에서 사용자, 조직, 진단 및 특정 서버 옵션을 검토할 수 있습니다.

패널이 필요하지 않다면 가장 안전한 방법은 다음과 같습니다. 비활성화 상태로 두세요이를 활성화하려면 구성해야 합니다. ADMIN_TOKEN비밀번호를 평문으로 저장하는 대신 Argon2id 해시를 생성합니다.

docker run --rm -it vaultwarden/server /vaultwarden hash

해당 명령은 비밀번호를 두 번 입력하라는 메시지를 표시하고 다음으로 시작하는 문자열을 반환합니다. $argon2id$.

달러 기호($) 관련 문제를 피하는 편리한 방법은 파일에 저장하는 것입니다. .env 바로 옆에 위치해 있습니다 compose.yml:

VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=...'

그런 다음 서비스에 추가하세요.

environment:
  ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"

해시값을 직접 입력하는 경우 compose.yml각 달러 기호를 두 번씩 입력해야 합니다. $$ Docker Compose가 이를 변수로 해석하려고 시도하는 것을 방지하기 위해서입니다.

독점 콘텐츠 - 여기를 클릭하세요  사이버 보안 위협은 무엇입니까?

처리된 구성을 다음 명령어를 사용하여 확인하세요.

docker compose config

해당 패널은 HTTPS를 통해서만 접근해야 합니다. 가능하면 접근 경로를 로컬 네트워크, VPN 또는 특정 IP 주소로 제한하십시오.

옵션을 저장한 후에는 다음 사항을 참고하십시오. /admin볼트워든이 만듭니다 config.json해당 값은 환경 변수보다 우선순위가 높습니다. 이러한 우선순위 때문에 작성 모드를 편집해도 아무런 변화가 없는 것처럼 보이는 경우가 많습니다.

볼트워든을 보호하기 위한 필수 조치

HTTPS를 활성화하는 것만으로는 보안이 끝나지 않습니다. 최소한 다음 조치를 적용하십시오.

  • 열린 레지스트리를 비활성화하려면 다음을 사용하십시오. SIGNUPS_ALLOWED=false.
  • 고유하고 강력한 마스터 비밀번호를 사용하십시오.
  • 활동적인 2단계 인증 모든 계정에 적용됩니다.
  • 인증 복구 코드를 다른 안전한 장소에 저장하십시오.
  • 이미지와 호스트 시스템을 정기적으로 업데이트하십시오.
  • 컨테이너 내부에 불필요한 폴더나 Docker 소켓을 마운트하지 마십시오.
  • 방화벽을 사용하여 실제로 필요한 포트만 허용하도록 제한하십시오.
  • 데이터베이스나 폴더를 공개적으로 노출하지 마십시오. vw-data.

Fail2ban은 로그인 시도 실패 횟수가 누적된 주소를 차단할 수 있지만, 리버스 프록시가 있는 경우 신중하게 구성해야 합니다. Caddy 또는 Nginx는 실제 IP 주소를 전송해야 합니다. 그렇지 않으면 Fail2ban이 프록시 자체의 주소를 차단할 수 있습니다.

암호 힌트 표시를 비활성화할 수도 있습니다. 이러한 힌트는 서버에 공개적으로 접근할 수 있는 경우 암호 추측 공격을 용이하게 할 수 있습니다.

이러한 관행에 대해 더 자세히 알아보려면 다음을 참조하십시오. 비밀번호 관리자를 안전하게 사용하세요.

이메일 알림 설정 방법

SMTP 설정을 통해 초대, 인증 및 알림을 보낼 수 있습니다. 이메일 서비스에서 제공하는 서버, 발신자, 포트, 보안 방식 및 자격 증명을 지정해야 합니다.

SMTP 이메일을 금고 백업으로 착각하지 마세요. 또한 SMTP 이메일을 계정 복구의 유일한 수단으로 의존해서도 안 됩니다. 마스터 비밀번호를 잊어버렸고 다른 복구 방법을 설정해 놓지 않았다면 암호화된 데이터에 접근할 수 없게 될 수 있습니다.

설정을 저장한 후 테스트 메시지를 보내보고, 메시지가 도착하지 않으면 로그를 확인하세요. 스팸 폴더와 SMTP 제공업체의 제한 사항도 확인해 보시기 바랍니다.

Vaultwarden의 전체 백업을 만드는 방법

SQLite 데이터베이스는 사용자, 항목, 장치 및 조직을 저장하지만, 모든 파일이 포함되어 있지는 않습니다.첨부 파일 및 특정 제출물은 별도의 디렉토리에 저장됩니다.

완전한 사본에는 다음 내용이 포함되어야 합니다.

  • db.sqlite3 또는 데이터베이스의 일관된 복사본.
  • 폴더 attachments.
  • 폴더 sends만약 그 파일들을 보관하고 싶다면요.
  • 파일 config.json패널을 사용하시는 경우입니다.
  • 파일들 rsa_key*.
  • Compose 파일, Caddy 및 해당 변수들.

간편하고 안정적인 백업을 위해 Vaultwarden을 일시적으로 중지하고 폴더를 아카이브할 수 있습니다.

docker compose stop vaultwarden
tar -czf vaultwarden-backup-$(date +%F).tar.gz vw-data compose.yml Caddyfile .env
docker compose start vaultwarden

해당 파일에는 관리자 토큰과 SMTP 자격 증명이 포함될 수 있습니다. 복사하기 전에 암호화하세요 다른 컴퓨터 또는 원격 저장 장치로.

서비스를 중지하고 싶지 않다면 Vaultwarden에는 SQLite 복사 메커니즘을 사용하는 명령이 포함되어 있습니다.

docker exec vaultwarden /vaultwarden backup

이 명령은 데이터베이스를 보호하지만, 첨부 파일, 구성 파일 및 키는 별도로 백업해야 합니다. 백업을 자동화하고, 최소 한 개 이상의 백업을 서버 외부에 보관하며, 주기적으로 복원 테스트를 수행하십시오.

독점 콘텐츠 - 여기를 클릭하세요  Discord에서 의심스러운 활동으로 계정이 차단되는 이유와 예방 방법:

Docker를 사용하여 Vaultwarden을 업데이트하는 방법

업데이트하기 전에 검증된 사본을 생성하세요. 그런 다음 다음 명령을 실행하세요.

docker compose pull
docker compose up -d

상태 및 최신 메시지를 확인하세요:

docker compose ps
docker compose logs --tail=100 vaultwarden

Docker는 이미지를 다운로드하고 컨테이너를 다시 생성하여 보존합니다. vw-data전역 정리 명령을 사용하기 전에 어떤 컨테이너, 이미지 및 네트워크가 제거될지 먼저 확인하십시오.

설치 안정성이 매우 중요한 경우, 기본 이미지를 항상 사용하는 대신 특정 버전의 이미지를 고정하여 사용할 수 있습니다. latest이렇게 하면 릴리스 노트를 검토하고 각 업데이트를 언제 적용할지 결정할 수 있습니다.

Docker를 사용하여 Vaultwarden을 설치할 때 흔히 발생하는 오류

Docker를 사용하여 Vaultwarden을 설치할 때 흔히 발생하는 오류

해당 인터페이스는 로컬 호스트에서는 작동하지만 다른 컴퓨터에서는 작동하지 않습니다.

해당 항구는 다음으로 제한됩니다. 127.0.0.1 또는 브라우저가 HTTP를 통해 접속할 때 암호화 기능을 거부할 수 있습니다. 다른 기기에서 서비스를 사용하기 전에 HTTPS 주소를 구성하십시오.

공식 클라이언트가 서버에 연결할 수 없습니다.

환경을 선택하세요 자체 호스팅 정확한 주소를 입력하세요 https://인증서, DNS, 프록시 및 변수를 확인하세요. DOMAIN.

컨테이너는 시작되지만, 다시 생성될 때 데이터가 사라집니다.

볼륨 조절 장치가 제대로 설치되지 않았습니다. 다음 사항을 확인해 주세요. ./vw-data:/data 설정에 나타나고 예상 폴더에서 Compose를 실행하고 있는지 확인하십시오.

다른 계정을 만들 수 없습니다.

Si SIGNUPS_ALLOWED 에 있습니다 false해당 동작은 정상입니다. 관리자 패널에서 초대장을 보내거나, 계정을 생성하는 동안에만 일시적으로 회원가입을 허용하도록 설정하세요.

ADMIN_TOKEN 해시가 작동하지 않습니다.

부호의 보간을 확인하세요 $파일을 사용하세요 .env 문자열을 작성 창에 직접 입력하는 경우 작은따옴표 또는 큰따옴표를 사용하십시오.

환경 변수는 무시되는 것으로 보입니다.

존재하는지 확인하십시오 vw-data/config.json패널에서 저장된 옵션은 정의된 변수를 재정의할 수 있습니다. compose.yml.

인증서는 웹 브라우저에서는 작동하지만 모바일 기기에서는 작동하지 않습니다.

해당 장치가 전체 인증서 체인을 신뢰하지 않을 수 있습니다. 공인된 기관을 사용하거나 자체 인증서 발급 기관 및 해당 인증서를 올바르게 설치하십시오.

첨부 파일이 실패했습니다.

확인해 보세요 DOMAIN 외부 주소가 일치하는지 확인하고 프록시가 필요한 요청 크기를 허용하는지 확인하십시오. 또한 사용 가능한 공간과 권한도 확인하십시오. vw-data.

Vaultwarden은 vw-data 내부에 쓰기 작업을 수행할 수 없습니다.

호스트 폴더의 권한이 호환되지 않습니다. 로그에 표시된 오류를 바탕으로 소유자와 권한을 확인하십시오. 사용하지 마십시오. chmod 777 영구적인 해결책으로.

Fail2ban은 잘못된 주소를 차단합니다.

프록시가 실제 IP 주소를 전송하지 않거나, Fail2ban이 잘못된 필드를 읽고 있습니다. 설정을 올바르게 구성하십시오. X-Real-IP 또는 사용 중인 프록시에 해당하는 헤더입니다.

복원된 사본에는 첨부 파일이 포함되어 있지 않습니다.

SQLite 파일만 백업되었습니다. 폴더도 함께 복원해 주세요. attachments y sendsRSA 구성 및 키 외에도 추가 정보가 필요합니다.

Vaultwarden을 사용하면 조직 및 컬렉션을 활용하여 가족 비밀번호를 공유하세요 호환되는 클라이언트를 사용하십시오. 사용자를 추가하기 전에 HTTPS, 2단계 인증 및 백업이 올바르게 작동하는지 확인하십시오.

결과적으로 빠르고, 개인 정보 보호가 철저하며, 적응성이 뛰어난 암호 관리자가 탄생할 수 있지만, 그 보안은 유지 관리에 달려 있습니다. 서버에 대한 제어는 업데이트, 접근 제한, 그리고 검증된 복구 전략이 뒷받침될 때 비로소 이점이 됩니다.

파일을 보내지 않고도 가족과 비밀번호를 안전하게 공유하는 방법
관련 기사:
파일을 보내지 않고도 가족과 비밀번호를 안전하게 공유하는 방법