UnsplashFLY:D

Self-Hosted 암호관리 서버 Vaultwarden을 Docker-compose로 설치하기

컴퓨터, 소프트웨어 2023년 10월 25일

Self-Hosted의 유용함

Self-Hosted는 외부 서비스를 이용하지 않고 자신이 가진 기기에 직접 서버를 구성해서 사용하는 것을 말합니다. 유용한 외부 서비스도 많지만 언젠가 망하거나 유료화 되거나 기능에 제약이 생깁니다. 사용자가 많아 해킹에 대상이 되기도 합니다.

반면, Self-Hosted 소프트웨어는 대부분 오픈 소스이기 때문에 본인만 잘 관리한다면 유료에 준하는 기능을 무료로 이용가능합니다.

Self-Hosted 소프트웨어는 리눅스에서 Docker를 이용하는 것이 가장 활성화되어 있습니다. 파이류의 하드웨어나 Mini PC 등을 이용해 직접 서버를 돌리거나 무료로 이용가능한(가입 타이밍 각 재야 하지만) 오라클 클라우드 등을 이용해 운영할 수 있습니다. 저는 주로 오라클 클라우드 A1을 이용해 Self-Hosted 앱을 운영합니다.

Vaultwarden이란?

Vaultwarden은 암호를 관리하는 서버입니다. 본래 Bitwarden이라는 유료 암호 관리 앱에서 포크된 오픈소스 버전입니다. Vaultwarden은 리눅스 서버만 있으면 무료로 이용가능하며 Bitwarden, 1password같은 유료와 맞먹는 기능을 제공합니다. Bitwarden의 포크 버전이기 때문에 클라이언트(브라우저, 앱)에서는 Bitwarden용 확장기능이나 앱을 이용하면 됩니다.

GitHub - dani-garcia/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs - GitHub - dani-garcia/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as…

왜 암호 관리 서버가 필요한가?

요즘은 크롬, 에지, 파이어폭스 등의 웹브라우저에서도 암호를 온라인 저장합니다. 대기업 혹은 재단이라 해킹당할 위험은 크진 않지만 가능성이 아예 없진 않습니다. 또한, 브라우저상의 암호 저장방식은 브라우저간의 상호저장이 안되고 안드로이드 앱에서 사용하는 암호도 저장할 수 없습니다. 그래서 보안에 신경을 쓰는 사람이라면 Bitwarden, 1password같은 암호관리 서비스를 이용하기도 합니다.

  1. OS, 웹브라우저에 상관없이 암호 공유 및 관리 가능
  2. 앱에서 사용하는 암호도 관리가능
  3. OTP 코드도 관리 가능(휴대폰 분실시에도 OTP 접속 가능)

Docker-compose로 Vaultwarden 설치하기

저의 설치 환경은 오라클 클라우드 A1, 우분투 20.04 입니다. 도커, 도커컴포즈를 이용합니다. 리버스 프록시는 NPM(NginX Proxy Manager)를 사용합니다. SSL은 와일드카드 인증서입니다.

vaultwarden 폴더 및 도커 컴포즈 파일 생성

저는 도커로 설치하는 소프트웨어는 모두 /home/docker안에서 관리합니다.
# vaultwarden 폴더 생성
mkdir /home/docker/vaultwarden

# vaultwarden 폴더로 이동
cd /home/docker/vaultwarden

# docker-compose.yml 파일 생성 및 편집
nano docker-compose.yml

docker-compose.yml 파일의 내용

version: '3.1'

services:
  vaultwarden:
    container_name: ds-vaultwarden
    image: vaultwarden/server
    restart: always
    ports:
      - 8088:80
    volumes:
      - ./data:/data
    environment:
      - TZ=Asia/Seoul
      - ADMIN_TOKEN=examplepw1234 #관리자용암호
  • 포트는 직접 정해서 변경하면 됩니다. 저는 사용중인 포트가 많아서 비어 있는 8088 포트를 사용했습니다. 변경시 8088을 지우고 원하는 포트로 바꾸면 됩니다. 저는 OS에서 8088포트를 따로 열지는 않고 NginX Proxy Manager를 이용해 리버스 프록시로 접근합니다.
  • ip:port로 바로 접속하려면 OS상에서 포트를 열어줘야 합니다.(위의 예제에서는 8088)
  • ADMIN_TOKEN은 PW분실시 복구를 위한 마스터 암호입니다. examplepw1234를 지우고 자신이 정한 패스워드로 입력하면 됩니다.

vaultwarden 시작

docker-compose up -d

docker-compose.yml 파일을 올바르게 작성하고 저장한 후에 위의 명령을 이용해 도커를 시작하면 vaultwarden 서버가 구동됩니다.

NPM(NginX Proxy Manager)에서 리버스 프록시 설정

ip:port로 직접 접근하는 분들은 해당되지 않는 내용이니 그냥 넘어가시면 됩니다. 저는 도메인 여러개 가지고 있어서 리버스 프록시로 vaultwarden에 접근합니다.

NPM에서 vaultwarden 리버스 프록시

저는 도커의 게이트웨이가 IP가 172.17.0.1이라 그걸 넣었습니다. 다른 분은 IP가 저랑 다를 수 있습니다. 보통은 도커의 Bridge부분 IPV4 IPAM Gateway를 넣어주면 됩니다. 인증서를 사용하는게 좋은데 저는 와일드카드 인증서라 딱히 보여줄 건 없고 SSL 말고는 다른 건 딱히 건드릴게 없습니다.

Vaultwarden 접속 및 최초설정

NPM에서 설정한 도메인으로 접속하거나 ip:port로 접속해서 계정을 만듭니다. 이후에 관리자 페이지에 접속해서 최초설정을 해야 합니다. 당연한 거지만 마스터 암호(Admin Token)가 필요합니다.

도메인인 경우

도메인을 pw.domain.com이라고 가정하면 pw.domain.com/admin으로 접속합니다.

ip:port인 경우

ip:port/admin으로 접속합니다.

관리자 페이지에서 최초 설정

Vaultwarden 관리자 설정

관리자 설정에서는 General setting 일부와 SMTP Email setting 정도만 해주면 됩니다.

  1. url 을 사용한다면 General setting에서 Domain URL을 수정합니다.
    e.g.) https://pw.domain.com/
  2. 다른 사람이 가입하지 못하도록 General setting에서 Allow new signup을 체크 해제 합니다. 새로운 사용자는 초대 형식으로 추가할 수 있습니다.
  3. SMTP Email 설정 : SMTP Email설정은 본인이 사용하는 메일에 맞게 넣어주면 됩니다. 메일마다 주소와 포트가 다를 수 있습니다. SMTP를 지원하지 않는 메일도 있습니다. 저는 Zoho 도메인 메일을 사용하기 때문에 다음과 같이 설정했습니다. 설정 저장 후에 Test SMTP에서 메일이 제대로 전송되는지 확인할 수 있습니다.
vaultwarden 관리자 - SMTP 메일 설정

Vaultwarden 관리자에서 사용자 추가

vaultwarden 관리자 - 사용자 관리

관리자 화면의 Users 탭에서 원하는 만큼 사용자를 추가하고 초대할 수 있습니다.

Vaultwarden 사용하기

Vaultwarden 서버 설정이 끝났으면 이제 PC, 맥의 웹브라우저, 안드로이드, 아이폰 등의 앱에서 사용할 수 있습니다. 사용법은 별로 어렵지 않습니다. bitwarden용 앱이나 확장프로그램을 이용하면 됩니다.

관리자 설정의 접속주소는 https://pw.domain.com/admin이지만 일반 사용시의 접속주소는 https://pw.domain.com이 됩니다. 도메인과 SSL을 사용하지 않는다면 http://ip:port입니다.

웹브라우저(크롬, 파이어폭스, 에지)

크롬 확장프로그램

Bitwarden - 무료 비밀번호 관리자
당신의 모든 기기에서 사용할 수 있는, 안전한 무료 비밀번호 관리자입니다.

파이어폭스 확장기능

Bitwarden - 무료 비밀번호 관리자 – 🦊 Firefox용 확장 기능 (ko)
Firefox용 Bitwarden - 무료 비밀번호 관리자 부가 기능을 다운로드하세요. 당신의 모든 기기에서 사용할 수 있는, 안전한 무료 비밀번호 관리자

에지 추가기능

Bitwarden - Free Password Manager - Microsoft Edge Addons
Make Microsoft Edge your own with extensions that help you personalize the browser and be more productive.

안드로이드 및 아이폰OS

  • 앱스토어에서 bitwarden 검색 후 설치
  • 계정 및 설정 입력(캡처를 못하겠네요.)
  • OS의 권한 설정(자동완성 서비스, 접근성, 다른 앱 위의 그리기 등)

마치며...

이제 vaultwarden을 이용해 일년에 $10인 bitwarden의 서비스를 이용할 수 있습니다.(무료 버전도 있긴합니다. OTP 지원안함) 적고 보니 생각보다 얼마 안하는 가격이네요...; vaultwarden돌리려고 웹서버 굴리는 건 수지 타산이 안맞고 서버 돌리는 김에 vaultwarden도 쓰고 싶은 분들에게 추천합니다.

개인적으로 폰 분실에 대비해서 OTP를 관리할 수 있는게 가장 마음에 듭니다.

태그

BoniK

협업, 의뢰, 레슨 등 문의 : mail@bonik.me, open.kakao.com/me/bonik