카테고리 없음

[홈서버 만들기 #5] VaultWarden (BitWarden) 설치하기 (on proxmox)

Dr CK 2025. 12. 20. 16:22

비밀번호 관리 프로그램을 1password 사용하였으나 유료구독제로 바뀐 뒤, 애플의 기본 암호 앱으로 넘어왔다. 하지만 애플의 암호앱은 기능이 적고, 또한 윈도우나 안드로이드 등 다른 플랫폼과의 연결이 불편하다. 자꾸만 구독하는 앱들의 개수가 많아지며 고정지출이 늘어나는 가운데, 무료 비밀번호관리 앱중에 Bitwarden 이라는 오픈소스 프로그램이 있다는것을 알았다. 그리고 이것을 홈서버에 설치하여 내 기기에서 직접 관리할 수 있다는것도 알았다. Bitwarden의 개인서버 버전을 Vaultwarden이라고 하는데, 이를 홈서버에 설치해보고자 한다.

 

1. VaultWarden 설치하기

VaultWarden의 설치도 역시 proxmox helper script 를 통해서 한다.

 

 

Proxmox VE Helper-Scripts

The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 400+ scripts to help you manage your Proxmox Virtual Environment.

community-scripts.github.io

 

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/vaultwarden.sh)"

 

이 문장을 proxmox shell에 입력하면 그걸로 끝이다.

 

 

설치가 끝나면 연결 URL 을 알려준다. 접속포트는 보통 8000 이다.

 

 

접속을 하게되면 로그인 창을 확인 할 수 있다. 개인서버니 계정을 아무렇게나 만들고 로그인을 하면 된다.

 

2. Cloudflare tunnel 연결하기

외부에서도 사용이 필요할 수 있어 cloudflare 를 연결하고자 한다. 사실 이렇게 보안이 필요한 영역을 외부에 노출하는것은 좋은 생각이 아니긴 하지만, 다른 방법으로 보안을 강화해보자.

 

다른 프로그램과 똑같이 터널을 만들어 뚫어보자.

Service는 HTTP 로 설정하면 된다.

 

이후에 주소를 입력하여 접속을 하게되면... Error code 502의 Bad gateway error가 발생한다.

왜 이런 오류가 발생하는지는 Proxmox Helper Script로 설치한 Vaultwarden는 기본값이 HTTPS + self-signed 인증서이지만, Vaultwarden가 HTTPS만 제공하는 상태에서 Cloudflare Tunnel이 HTTP/HTTPS를 번갈아 시도하면서, 프로토콜 불일치, self-signed 인증서 검증 실패, 결과적으로 cloudflared 로그에 TLS/HTTP 오류 발생하여 이 에러가 뜨는 것이다.

 

이에 Vaultwarden의 내부 HTTPS 를 비활성화 해야한다.

이를 위해서는 내부 설정값을 수정해 줘야한다.

 

proxmox의 vaultwarden LXC 콘솔에서 다음 명령어를 입력한다.

nano /opt/vaultwarden/.env

 

그러면 다음과 같은 창이 뜨는데, 여기서 3번째 줄 ROCKET_TLS 부분을 맨 앞에 # 을 입력하여 전체 주석처리 해준다.

 

이후 ctrl+o → Enter → ctrl+x 를 입력하여 저장후 빠져나가 준다.

 

이후 다음 명령어를 입력하여 재시작을 해준다.

systemctl status vaultwarden

 

그렇게 되면 cloudflare에서 입력했던 주소를 통하여 접속을 할 수 있게된다.

 

 

3. VaultWarden 초기설정

보안관련 설정을 추가로 해주려고 한다.

 

이를 위해서는 똑같이 설정부분을 수정해줘야 한다.

nano /opt/vaultwarden/.env

 

여기서 먼저 할 일은 관리자 페이지를 보호하는 것이다. 처음 열었던 그 화면에서 맨 위의 ADMIN_TOKEN='' 부분이 암호를 입력하는 부분이다. 여기 ' ' 사이에 암호를 입력을 하자. 여기서의 암호는 매우 중요한 암호이므로 항상 사용하는 암호보다, 기억하기 어렵고 알수 없는 완전 랜덤한 문자를 추천한다. (9sL!f9q#EwR@1ZxA8mPq!92 와 같은)

 

이후 저장하고 재시작을 하게되면 vaultwarden주소.com/admin 을 통해서 관리자 페이지에 접속이 가능해진다. 이 페이지에서 현재 등록된 사용자가 누구가 있는지 등을 알고 설정할 수 있다.

 

그리고 추가 회원가입을 막고자 한다. 위에 env 파일 맨 아래에 아래 문장을 추가하면 된다.

SIGNUPS_ALLOWED=false

 

로그인 횟수도 제한을 하려고 한다. 마찬가지로 env 파일 맨 아래에 아래 문장을 추가한다.

LOGIN_RATELIMIT_MAX_BURST=5
LOGIN_RATELIMIT_SECONDS=60

 

최종적인 env 파일은 아래처럼 된다.

ADMIN_TOKEN='여기에암호화토큰을입력하면됩니다'
ROCKET_ADDRESS=0.0.0.0
#ROCKET_TLS='{certs="/opt/vaultwarden/ss1-cert-snakeoil.pem"‚key="/opt/vaultwarden/ss1-cert-snakeoil.key"}
DATA_FOLDER=/opt/vaultwarden/data
DATABASE_MAX_CONNS=10
WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault
WEB VAULT ENABLED=true
SIGNUPS_ALLOWED=false
LOGIN_RATELIMIT_MAX_BURST=5
LOGIN_RATELIMIT_SECONDS=60

 

그외에 2차 인증 등등 다른 설정들은 웹UI 를 통하여 설정이 가능하다.

반응형