주의 ! : 이미, Docker가 설치된 경우, Docker 설정이 Linux container 형태로 동작할 수 있어야 한다. 만일 설치시 Windows container 기반인 경우 Linux container로 전환해야 하며, 안된다면 이 작업은 수행할 수 없다.

확인하는 방법은 Tray Icon 중 Docker 아이콘에 대한 메뉴를 띄운 뒤, 반드시 “Switch to Windows Containers…” 라고 나와 있어야 한다.


1. Docker 설치.

Windows 용 Docker는 https://hub.docker.com/editions/community/docker-ce-desktop-windows/ 의 페이지에서 다운로드 받으면 된다.

이 Docker가 동작하려면, 먼저 PC 자체가 Virtualization 기능(VT-d)  같은 설정이 될 수 있어야 한다. 보통은 바이오스 안에 있다. 그리고 Windows 운영체제는 반드시 Windows 10 이상이여야 하며, Hyper-V 를 지원해야 한다.

(만일 지원되지 않는다면, Linux에 Docker를 설치하는 방법 밖에는 없다.)


일단, Windows 10 Pro 이상에 Hyper-V까지 모두 설정했다면, 위에서 다운 받은 Docker 설치 프로그램을 설치하면 된다. 설치 할 때, 체크 하는 내용 중, Windows container로 사용하겠다는 체크는 절대 하지 않는다.(기본 값은 체크 안된 상태임)


정상적으로 docker가 설치되었다면, Powershell 상에서 docker 라는 명령을 넣으면 다음과 같이 표시 된다.


2. Docker 이미지 위치 설정.

현재 상태로 Docker 내 가상이미지를 설치하게 되면, 설정 파일은 C:\ProgramData\Microsoft\Windows\Hyper-V 에 담기고 가상 하드 디스크는 C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks 에 저장된다.

설정 파일은 사이즈가 커봐야 1M도 안하지만, 문제는 가상 하드 디스크는 Docker 이미지에 따라 사이즈가 좀 된다. 만일 그대로 쓴다면 C: 드라이브의 사이즈가 많이 줄어들게 되므로, 가급적 Hyper-V 관리자를 띄워 저장소 위치를 변경해주도록 한다.

( 왼편 트리에서 Hyper-V Manager > PC이름  아이콘 위에서 Context 메뉴를 띄워 Hyper-V Settings에 들어간 뒤, Virtual Hard Disks 부분에 설정된 경로를 적당히 변경한다. 필자는 D: 드라이브에 구성했다.)


3. Bitwarden 데이터를 위한 폴더 구성.

Bitwarden는 기본적으로 Docker 이미지를 기반으로 동작한다. 이 때 실제 실행되어 나오게 되는 데이터들은 Docker 이미지 내에 저장하지 않고 외부 폴더에 빠지게 구성된다. 이 외부 폴더가 위치할 폴더를 생성한다.

필자의 경우 D:\Dockers\Bitwarden 이라는 폴더를 만들었다.


4. Powershell 띄우기.

Windows에서 Bitwarden을 설치할 때는 Powershell을 이용한다. Powershell 스크립트(ps1)을 실행하는데, 기본적으로 Powershell 에서는 ps1 실행을 막고 있다.

관리자 권한으로 Powershell을 띄운 뒤, “Set-ExecutionPolicy”를 입력한다.
그리고 다음 입력에서는 Bypass라고 입력한다. 최종적으로 정말 실행할지 여부를 묻는데 여기서 “Y”를 입력하면 된다.

5. Bitwarden 설치 스크립트 받기

앞서 만든 폴더로 이동한다(cd D:\Dockers\Bitwarden)
그리고 다음 명령을 입력한다. (주의! 아래 내용은 한 줄 짜리임)

Invoke-RestMethod -OutFile bitwarden.ps1 -Uri https://go.btwrdn.co/bw-ps

그리고 다음 명령을 입력한다. (주의! 아래 내용은 한 줄 짜리임)

Invoke-RestMethod -OutFile run.ps1 -Uri "https://raw.githubusercontent.com/bitwarden/server/master/scripts/run.ps1"

그러면 폴더 안에 bitwarden.ps1 과 run.ps1 이 생긴다.

먼저 bitwarden.ps1 파일을 연다.
약 39번째번 줄에 있는 문장을 주석 처리한다. 문장 맨 앞에 # 표시하면 된다.

#Invoke-RestMethod -OutFile $scriptsDir\run.ps1 -Uri "${githubBaseUrl}/scripts/run.ps1"

그리고 그 줄 바로 위에 다음 문장을 추가한다.

Copy-Item .\run.ps1 $scriptsDir\run.ps1


다음은 run.ps1 파일을 연다.

63번째 줄 즈음에 보면, $certbotExp 내용 중, certonly{0} 이라는 부분이 있는데, {0}을 없애도록 한다.


137번째 줄 즈음에 보면, 마찬가지로 $certbotExp 내용 중, renew{0} 이라는 부분이 있는데, {0}을 없애도록 한다.

위의 작업을 하지 않으면, certbot 이 제대로 동작하지 않아, SSL 기반의 인증서가 생성되지 않는다. 그렇게 되면 nginx가 제대로 실행되지 않게 된다. (물론 http로만 설정하거나, 개별 인증서를 보유하고 있다면 상관 없지만, 여기서는 certbot을 이용하여 lets encrypt를 이용하기 때문에 반드시 필요하다)


6. Windows 방화벽 설정.

Windows 방화벽에서 80 포트와 443 포트를 열어두도록 한다.


7. 80포트 노출 처리.

만일 외부 공개 IP 면 상관 없지만, 만일 공유기나 방화벽이 있다면, 80포트에 대해서 이 서버와 연결되도록 해야 한다. Let's Encrypt 에서는 URL 확인 작업을 위해 80 포트로 연결을 시도한다. 최종적으로 Bitwarden 설치가 완료되면 다시 80포트를 닫아도 무방하지만, 최초 설치는 반드시 열어두도록 한다.


8. 설치

Powershell 에서 "bitwarden.ps1 -install" 을 실행한다.

첫번째 질문에서는 이 서비스에 접속하기 위한 URL을 입력한다. 반드시 URL이 필요하다! IP 주소로는 해본적이 없어서;;;;

두번째 질문에서는 Let's Encrypt를 사용할 것인지를 묻는데, Y를 입력한다.

세번째 질문에서는 추후 변경  사항을 전달받기 위한 이메일 주소를 요구하는데 자신의 이메일 주소를 입력한다.

그러면 자동으로 무언가 동작하며 설치가 완료된다.


9. 시작.

모든게 완료되었다면, "bitwarden.ps1 -start" 을 실행한다.

실행했으면, Docker의 Dashboard를 띄운 뒤, 다음과 같이 모두 정상적으로 실행되었는지만 확인한다.


10. 최종적으로 자신이 정한 URL로 접속을 한 뒤, 계정 등록을 해서 이용한다.

2020. 6. 12. 오후 5:41

728x90

+ Recent posts