꽃삽질 : Bitwarden_rs 설치/설정.

오랜만에 제목에 꽃삽질을 붙였다. 그만큼 여기까지 오는데 길이 험난했음을 뜻한다.

일단은 Bitwarden 과 Bitwarden_rs 에 대해 간단하게 설명을 해야겠다.
Bitwarden 은 오픈소스로 작성된 비밀번호 관리자이다. 현재, 대부분 운영체제에서 사용할 수 있다. 웹브라우저로 접속이 가능하니 어느 환경에서나 접속이 가능하다고 볼 수 있겠다.
그에 더해, OS 별 전용프로그램도 있고, 여기엔 당당하게 리눅스도 포함돼 있다. Electron 기반이므로, 결국 크로뮴기반 웹애플리케이션이라 볼 수도 있지만, 아무튼 리눅스용도, MS 윈도우용도, macOS 용도 지원하는 고마운 기획이라 할 수 있겠다.

무료로 사용할 수도 있지만, 유료도 있는데, 이게 (적어도 아직까지는) 값도 싸다. 1년에 $10. 이 정도면 부담없이 사용할 수 있는 수준이긴 한데..


문제는, 이른바 개인 서버(On premises Hosting : 클라우드가 아닌 사내 서버를 의미. premise 는 단수명사로는 ‘전제’라는 뜻이지만, 복수가 되면 사업체의 구내를 뜻한다. )를 사용하려면 Docker 로 제공되는 이미지를 설치해야만 한다.

그런데.. 여기서 한가지 큰 문제가 생긴다. 비밀번호를 다루는 특성상, 통신은 https 로 이뤄지기에 반드시 인증과정이 필요한데, 도메인이 없이 직접 IP 로 접속해야하는 개인 환경에선 이게 큰 문제가 된다.

인증서를 Android/iOS 에 따로 설치하면 되긴 하지만, 우분투 데스크탑에선 계속 오류만 발생할 뿐, 접근을 하지 못했다. 하여 Bitwarden Desktop 쪽에 문의를 했지만, 답은 아직까진 없는 상태.

이 와중에, 다른 접근방법을 알아냈다. 그것이 이름하여 Bitwarden_RS. 왜 뒤에 RS 가 붙었는지는 모르겠지만, 아마도 RuSt 라는 언어로 개발했기 때문이 아닐지..??

어떻게 다르고, 어떤 단점이 있는지는 잘 모르지만, 적어도 제작진이 주장하는 바로는, 공식 서버는 자원 소모가 많고 무겁지만, RS 는 개인용으로 사용하기엔 완벽하다고 한다.

그리고, 적어도 내가 아주 살짝 써 본 바로는, 공식 서버에서 문제가된 SSL 문제도 없다.
아직 본격 사용은 전이라 뭐라 평가하기는 이르지만..


설치

공식문서를 참고하여 설치법을 정리해본다.

Docker / Docker Compose 설치

Docker /Docker Compose 문서를 그대로 따라하면 된다.

다만, 2020년 8월 말 현재, Ubuntu Focal armhf 저장소는 비어있다. 저장소를 focal 이 아닌 eoan 으로 바꾸면 사용이 가능하다. 아직까지 정비가 안된 모양이다.

Docker:

sudo apt install docker-ce docker-ce-cli containerd.io  

Docker Compose:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Docker 이미지 설치

sudo docker pull bitwardenrs/server:latest

이미지에도 몇가지가 있는데, 그 중 SQLite 를 사용한 최신 안정판을 설치한다.

Docker 컨테이너 실행

도메인이 없이 특정 IP 로 직접 접속하려면, 다음과 같이 IP 를 명시해준다.
(IP 가 192.168.0.2 라고 가정)

sudo docker run -d --name bitwarden -v /bw-data/:/data/ -p 192.168.0.2:80:80 bitwardenrs/server:latest

끝.

현재는 http 상황인데, 우분투 데스크탑과 Android 에선 아무 이상없이 접속이 된다.
각종 브라우저(크롬/파이어폭스)와 iOS 용에서는 Secure Connection 이 필요하다고 하며 접속이 되지 않는다.

이 문제는 Reverse Proxy 로 풀 수 있다고는 하는데.. 이런 저런 방법으로 시도해보고는 있지만, 아직 쉬운 해법은 찾지 못했다. 이렇게까지 문제에 부딪힌 적은 처음인 듯 한데..

안녕하세요. 글 남겨주셔서 고맙습니다.