도커로 나만의 웹 아카이브 저장소 만들기

2022. 12. 15. 17:59프로그래밍/Docker

도커로 뭘 할 수 있는가 뒤적거리면서 찾아봤는데

archiveBox 컨테이너가 있었습니다.

 

https://archive.org/

아카이브.org와 같은 특정 웹을 스냅샷 찍어지는 서비스인데 이걸 로컬에서도 돌릴 수 있습니다.

 

저는 시놀로지 DSM7에서 Docker를 설치하여 진행했습니다.

도커를 사용하시면 얼추 비슷할거에요.


1. 컨테이너 다운로드

도커 - 레지스트리 - 검색에 "archivebox" 를 입력 후 "archivebox/archivebox" 이미지를 다운로드합니다.

용량이 약 2GB 정도 되니 느긋하게 기다려줍니다.

 

1-1. 도커에서 사용할 폴더 생성하기

이렇게 원하는 이름 폴더를 생성해줍니다.(이름은 자유롭게)

 

2. 컨테이너 설정

환경 설정

 

다운로드한 이미지를 더블클릭하여 설정을 진행해줍니다.

컨테이너 이름 : 원하는 거

고급설정 :

    ㄴ 환경 -> TZ : Asia/Seoul

 

여기서는 딱히 설정해줄 게 없습니다.

 

도커에 설치된 브라우저 엔진은 기본적으로 크로미움이 들어있습니다.

 


여기에 크롬 유저 프로필을 설정하려면 몇 가지 설정을 해주셔야 합니다. (선택)

0. 기본 설정만 진행 후 컨테이너 실행한 다음 아래 명령어로 크로미움 버전을 확인합니다.

chromium-browser --version

 

 

1. 1-1. 에서 설정한 폴더에 "chromium" 폴더를 생성해주시면 됩니다.

 

2. 아래 링크에서 크로미움 버전과 같은 드라이버를 다운로드 및 ../chromium 폴더에 넣어줍니다.

https://chromium.cypress.io/

 

Chromium Downloads Tool

 

chromium.cypress.io

https://forums.raspberrypi.com/viewtopic.php?t=200590 

 

Using Chromuim Browser under VNC server - Raspberry Pi Forums

Sat Dec 23, 2017 4:43 pm We need a little more information to be able to help you. What operating system are you running on the Pi? Do you have a "civilian" (non-root) account created on the Pi? How are you starting VNC on the Pi? I am running Ubuntu Mate

forums.raspberrypi.com

위 링크를 참고하여 설정을 진행해줍니다. (저도 아직 안 해봐서 링크로 대신했습니다)

 

3. 아래 2가지를 환경설정에 추가로 설정해주시면 됩니다.

CHROME_USER_DATA_DIR=/data/chromium/.config/chromium

CHROME_BINARY=/data/chromium/chrome

 

4. chromium 디렉토리 권한 설정 (실행 중인 컨테이너 더블클릭 -> 터미널 -> 생성 후 bash에서 아래 코드 진행)

이 부분은 전부 설정하고 정상 접속되는지 확인 후 진행

chown -R archivebox:archivebox /data/chromium/
chmod -R ugo+rwx /data/chromium

포트 설정

archivebox는 기본적으로 컨테이너 포트는 8000포트를 사용합니다.

굳이 수정하지 말고 로컬 포트를 수정해줍니다.

그리고 포워딩까지 해주시면 됩니다.

 

볼륨 설정

1-1 에서 생성한 폴더를 선택해줍니다.

 

 

마운트 경로 : /data

로 설정

 

위 과정을 전부 하셨다면 완료를 누르고 실행을 해봅니다.

 

접속은

localhost:설정한 포트

or

domainName:설정한 포트

입니다.

 

정상적으로 됐다면

이렇게 정상적으로 보입니다.(테스트로 아카이브 떠서 이미 존재함.)

 

3. 관리자 계정 설정

archiveBox에서 root계정을 사용해 CLI로 커맨드를 입력하게 되면 보안 때문에 일반 유저 권한으로 실행하라고 합니다.

이미 도커엔 일반 유저가 생성이 되어있어 간단하게 접근이 가능합니다.

 

터미널 접근

실행 중인 archiveBox 더블클릭 -> 터미널 -> 생성 ->  bash 클릭

 

이후 아래 커맨드 입력

su - archivebox							# 계정 변경
cd /data
archivebox manage createsuperuser

이후 관리자 계정과 비밀번호 입력하라는 안내가 나옵니다.

잘 설정하시고 로그인하시면 됩니다.

 

4. 유저 추가

이게 참.... webui가 너무 허술합니다.

계정 생성 시 내장 db에 평문으로 저장이되서 생성 후 로그인 시 해쉬값과 db에 저장되어 있는 평문 비밀번호를 비교하여

로그인에 실패합니다.

 

계정 생성시 내장 db에 평문으로 통신한다는 거부터 잘못됐지만 어쩔 수 없습니다.

수정해서 쓰거나 그대로 쓰거나입니다.

 

해당 글에서는 web에서 계정 생성 후 cli에서 비밀번호를 해쉬값을 변경해주는 작업 순으로 진행합니다.

 

유저 추가

archivebox주소/admin/auth/user/add/

위 주소로 들어가 알맞게 입력해줍니다.

 

여기서 유저 권한은

주고 싶은 권한을 컨트롤 혹은 커맨드 키를 눌러 하나하나 선택해줘야 합니다.

겁나 이상해...

 

유저 추가가 완료됐다면 다시 도커의 터미널에서 archive 계정으로 접속하여(위에 su - 뭐시기가 로그인하는 커맨드)

아래 커맨드를 입력합니다.

su - archivebox
cd /data
archivebox manage changepassword 변경할 계정명

이후 하라는 데로 하면 됩니다.

 

그리고 로그인 시도해보면 정상적으로 됩니다!

 

 

5. 로그인했을 때만 아카이브 목록 볼 수 있게 하기

도커의 터미널에서 archive 계정으로 접속하여 아래 커맨드를 입력합니다.

archivebox config --set PUBLIC_INDEX=False
archivebox config --set PUBLIC_SNAPSHOTS=False
archivebox config --set PUBLIC_ADD_VIEW=False

입력 후 컨테이너 재시작하면 무조건 로그인 해야만 아카이브 리스트를 볼 수 있습니다.

 

https://docs.archivebox.io/en/dev/Publishing-Your-Archive.html#use-the-built-in-webserver

 

Publishing Your Archive — ArchiveBox 0.6.3 documentation

There are two ways to publish your archive: using the archivebox server or by exporting and hosting it as static HTML. Security Concerns Re-hosting other people’s content has security implications for any other sites sharing your hosting domain. Make sur

docs.archivebox.io

요기에 설명 나와있어요!