Vaultwarden: 자체 비밀번호 관리자를 VPS에 설치하기
Vaultwarden을 사용하면 비밀번호를 자신의 서버에 저장하고 컴퓨터, 휴대전화, 브라우저 사이에서 동기화할 수 있습니다. 공식 Bitwarden 애플리케이션과 확장 프로그램을 그대로 사용하며, 그 안에 자신의 서버 주소를 지정합니다.
아래에서는 Vaultwarden에 어떤 VPS가 필요한지, Docker Compose를 사용해 Ubuntu에서 실행하는 방법, 신규 가입을 비활성화하는 방법, HTTPS 연결과 백업을 설정하는 방법을 살펴보겠습니다.
다섯 단계로 Vaultwarden 시작하기
최소한의 시작 절차는 다음과 같습니다.
- Ubuntu가 설치된 VPS를 만들고
vault.example.com과 같은 하위 도메인을 연결합니다. - Docker와 Docker Compose를 설치합니다.
- 자동 HTTPS를 위해 Vaultwarden과 Caddy를 함께 실행합니다.
- 첫 번째 계정을 만든 뒤 신규 가입을 비활성화합니다.
- 2단계 인증, 업데이트, 백업을 활성화합니다.
개인용 보관함이나 소규모 가족용이라면 내장 SQLite 데이터베이스로 충분합니다. 별도의 PostgreSQL 서버는 일반적으로 필요하지 않습니다.
Vaultwarden이란
Vaultwarden은 Rust로 작성된 비공식 Bitwarden API 서버 구현체로, 셀프 호스팅 배포를 위해 설계되었습니다. 웹 인터페이스, 모바일 및 데스크톱 애플리케이션, 브라우저 확장 프로그램, CLI 등 공식 Bitwarden 클라이언트와 호환됩니다.
보관함 데이터는 서버로 전송되기 전에 사용자의 기기에서 암호화됩니다. VPS는 암호화된 데이터베이스를 동기화하지만 마스터 비밀번호를 알지 못하며, 마스터 비밀번호를 분실했을 때 복구할 수도 없습니다.
Vaultwarden은 Bitwarden의 공식 제품이 아닙니다. 업데이트, 가용성, HTTPS, 백업, VPS 보안은 소유자가 직접 책임져야 합니다.
Vaultwarden과 Bitwarden의 차이
| 항목 | Bitwarden Cloud | Vaultwarden |
|---|---|---|
| 서버 | Bitwarden 인프라 | 자신의 VPS 또는 홈 서버 |
| 애플리케이션 | Bitwarden 클라이언트 | Self-hosted 모드의 동일한 클라이언트 |
| 유지 관리 | 제공업체가 담당 | 소유자가 담당 |
| 백업 제어 | 서비스의 제한을 받음 | 완전한 제어 |
| 시작 방식 | 계정 등록 | 도메인, Docker, VPS 설정 |
Vaultwarden은 서버 측을 직접 통제하고 싶고 Linux 업데이트와 백업 검증을 수행할 준비가 된 사용자에게 적합합니다. 시스템 관리를 하고 싶지 않다면 클라우드 서비스가 더 실용적입니다. 셀프 호스팅이 시스템을 자동으로 안전하게 만드는 것은 아니며, 책임을 소유자에게 이전하는 것입니다.
Vaultwarden 서버 요구 사항
개인 사용을 위한 합리적인 시작 구성은 다음과 같습니다.
- 1 vCPU;
- 1–2 GB RAM;
- 10–20 GB SSD 또는 NVMe;
- Ubuntu 24.04 LTS;
- 공인 IP와 도메인;
- 개방된 80번 및 443번 포트.
이는 Ubuntu, Docker, Caddy, 업데이트를 위한 실용적인 여유분이며 프로젝트의 엄격한 최소 사양은 아닙니다. 사용자 수가 수십 명이거나 첨부 파일이 많거나 여러 컨테이너를 실행한다면 2 GB 이상의 RAM을 선택하는 것이 좋습니다.
VPS에 Vaultwarden을 설치하는 방법
이 예시에서는 Ubuntu 24.04와 vault.example.com 하위 도메인을 사용합니다. 모든 파일에서 이를 자신의 주소로 바꾸십시오.
1. DNS를 설정하고 Ubuntu 준비하기
VPS의 IPv4 주소를 가리키는 DNS A 레코드를 만듭니다. 그런 다음 SSH로 접속합니다.
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable새 연결이 정상적으로 작동하는지 확인할 때까지 현재 SSH 세션을 닫지 마십시오.
2. Docker와 Docker Compose 설치하기
Docker 공식 저장소를 추가합니다.
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. 구성 만들기
mkdir -p /opt/vaultwarden
cd /opt/vaultwardencompose.yaml을 만듭니다.
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2-alpine
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/configCaddyfile 파일을 만듭니다.
vault.example.com {
reverse_proxy vaultwarden:80
}외부에 노출되는 것은 Caddy뿐입니다. Vaultwarden 컨테이너는 Docker 네트워크 내부에서 접근할 수 있고, 데이터는 /opt/vaultwarden/vw-data에 저장됩니다. 현재 구성에서는 WebSocket용 별도 포트가 필요하지 않습니다.
4. Vaultwarden 시작하기
docker compose up -d
docker compose ps
docker compose logs --tail=100 caddyhttps://vault.example.com을 엽니다. DNS가 이미 VPS를 가리키고 80번과 443번 포트에 접근할 수 있다면 Caddy가 TLS 인증서를 자동으로 발급받습니다. 사이트가 열리지 않으면 DNS, 방화벽, 해당 포트에서 다른 웹 서버가 실행 중인지 확인하십시오.
5. 계정을 만들고 신규 가입 비활성화하기
첫 번째 계정을 등록합니다. 길고 고유한 마스터 비밀번호를 사용하고 Vaultwarden 외부에 비상용 사본을 보관하십시오. 서버 관리자는 마스터 비밀번호를 재설정하거나 복구할 수 없습니다.
등록한 뒤 compose.yaml에서 다음과 같이 변경합니다.
SIGNUPS_ALLOWED: "false"설정을 적용합니다.
docker compose up -d이제 다른 사람은 계정을 만들 수 없습니다. 새 사용자를 추가하려면 가입을 일시적으로 활성화하거나 초대를 설정할 수 있습니다.
Bitwarden 애플리케이션 연결 방법
별도의 Vaultwarden 클라이언트를 설치할 필요가 없습니다. Bitwarden 애플리케이션이나 확장 프로그램의 로그인 화면에서 Self-hosted를 선택하고 다음 주소를 입력합니다.
https://vault.example.com컴퓨터, 휴대전화, 브라우저에서 이 주소를 사용합니다. 이전하려면 기존 비밀번호 관리자에서 내보낸 파일을 가져오십시오. 암호화되지 않은 CSV 또는 JSON 파일은 이전 직후 삭제하고 이메일이나 공개 링크로 보내지 마십시오.
Vaultwarden 보안 설정
시작 후 다음 작업을 수행하십시오.
- TOTP 또는 WebAuthn을 활성화하고 복구 코드는 별도로 보관합니다;
SIGNUPS_ALLOWED를 비활성화 상태로 유지합니다;- SSH 키를 사용하고 Ubuntu를 정기적으로 업데이트합니다;
- Vaultwarden 컨테이너의 내부 포트를 공개하지 않습니다;
- 같은 VPS에서 의심스러운 컨테이너를 실행하지 않습니다;
- 백업을 실제로 복원할 수 있는지 확인합니다.
개인용 보관함에는 일반적으로 /admin 패널이 필요하지 않습니다. 활성화한다면 Argon2 해시 형태의 긴 토큰을 사용하고, 가능하면 IP 주소나 VPN으로 접근을 제한하십시오. 평문 ADMIN_TOKEN을 저장하는 것은 바람직하지 않습니다.
업데이트 전에 백업을 만든 후 다음 명령을 실행합니다.
cd /opt/vaultwarden
docker compose pull
docker compose up -d서버는 정기적으로 업데이트해야 합니다. Bitwarden 클라이언트는 독립적으로 출시되므로 Vaultwarden 버전이 지나치게 오래되면 호환성을 잃을 수 있습니다.
Vaultwarden 백업
주 SQLite 데이터베이스는 vw-data/db.sqlite3에 있으며 첨부 파일은 별도의 파일로 저장됩니다. 실행 중인 데이터베이스를 일반 cp 명령으로 복사하지 마십시오. 그 순간 쓰기가 발생하면 복사본의 일관성이 깨질 수 있습니다.
내장 명령으로 안전한 스냅샷을 만듭니다.
docker exec vaultwarden /vaultwarden backup데이터 디렉터리에 별도의 db_.sqlite3 파일이 생성됩니다. 이 파일과 함께 attachments, sends, 생성되어 있다면 config.json, 그리고 rsa_key 파일을 저장하십시오.
같은 VPS에 있는 백업은 서버 삭제나 디스크 고장으로부터 보호하지 못합니다. 사본을 다른 기기 또는 별도의 객체 스토리지로 자동 전송하고, 가능하면 추가로 암호화하십시오. 주기적으로 복원 테스트도 수행하십시오.
Vaultwarden에 어떤 VPS를 선택해야 하는가
개인용 또는 가족용 보관함에는 2 GB RAM이 있는 기본 Linux VPS면 충분합니다. 이 용량은 Ubuntu, Docker, Caddy, 업데이트, 자동 백업을 위한 여유를 제공합니다.
tropic.host의 입문형 VPS에서 Vaultwarden을 실행하고, 나중에 같은 서버에 다른 셀프 호스팅 서비스를 추가하면 리소스를 늘릴 수 있습니다. 비밀번호 관리자에는 추가 CPU 코어보다 안정적인 네트워크, 고정 공인 주소, 신뢰할 수 있는 디스크가 더 중요합니다.
홈 서버도 사용할 수 있지만 외부 접근, HTTPS, 안정적인 전원, 장애 후 복구를 직접 마련해야 합니다. 어떤 네트워크에서든 보관함을 사용해야 한다면 VPS가 일반적으로 더 간단합니다.
결론
Vaultwarden은 Bitwarden 클라이언트를 계속 사용하면서 서버 측을 자신의 인프라에 두고 싶은 사람에게 편리한 셀프 호스팅 비밀번호 관리자입니다. 소형 VPS, 도메인, Docker Compose, Caddy만 있으면 시작할 수 있습니다.
핵심적인 책임은 설치 후부터 시작됩니다. 가입을 차단하고, 2FA를 활성화하고, 컨테이너를 업데이트하며, 검증된 백업을 서버 외부에 보관해야 합니다.
FAQ
도메인 없이 Vaultwarden을 설치할 수 있나요?
기술적으로는 로컬 주소를 사용할 수 있지만 웹 보관함에는 안전한 HTTPS 환경이 필요합니다. 여러 기기에서 접근하려면 도메인과 TLS 인증서를 사용하는 편이 더 간단합니다.
Vaultwarden에는 RAM이 얼마나 필요한가요?
한 명 또는 몇 명이 사용할 경우 일반적으로 1 GB RAM이면 충분합니다. 2 GB RAM이 있는 VPS는 시스템, Docker, Caddy, 업데이트를 위해 더 넉넉한 여유를 제공합니다.
Vaultwarden은 Bitwarden 모바일 애플리케이션과 작동하나요?
예. 로그인 화면에서 셀프 호스팅 서버를 선택하고 자신의 Vaultwarden 전체 HTTPS 주소를 입력하십시오.
VPS를 일시적으로 사용할 수 없으면 어떻게 되나요?
이전에 동기화된 데이터는 일반적으로 클라이언트의 로컬 암호화 캐시에 남아 있습니다. 하지만 서버가 복구될 때까지 동기화, 새 기기에서의 로그인, 변경 사항 수신은 작동하지 않습니다.
잊어버린 마스터 비밀번호를 /admin에서 복구할 수 있나요?
아니요. 관리자는 서버와 계정을 관리할 수 있지만 사용자 보관함의 복호화 키를 가지고 있지 않습니다. 마스터 비밀번호와 복구 코드는 별도로 보관해야 합니다.
