클라우드 저장소를 그려 달랬더니 이런 걸 그려줬네요.

Self-Hosted 저장소 관리앱 AList를 Docker-compose로 설치하기

컴퓨터, 소프트웨어 2024년 6월 22일

이 글의 대상은...

개인 서버를 구동하고 도커를 사용하는 분들을 대상으로 하는 글입니다. 예제는 리눅스(우분투)로 작성되었으며 맥이나 PC에서 도커를 사용하는 분들은 자신의 환경에 맞게 적용해야 합니다. 도커를 사용하지 않고 Alist를 설치하는 방법도 있습니다.

AList란?

Alist는 다양한 저장소를 한 곳에서 접근할 수 있도록 도와주는 앱입니다. 구글 드라이브, 원드라이브, 드롭박스, Mega, Yandex Disk, InfiniCloud, Pikpak 등 수많은 저장소를 지원합니다.

뿐만 아니라 Aliyun, Baidu, Tencent, 115 등 중국 저장소들도 지원합니다. 아마도 중국 개발자가 만든 앱으로 보입니다.

Storage
Find the description of the network disk you need to mount in the left directory list by yourself

AList 지원 저장소 목록

AList 장점

다양한 저장소를 지원하면서 웹UI를 사용할 수 있다는 점이 가장 큰 장점입니다. 뿐만 아니라 가격대비 용량이 큰 중국 저장소들을 지원한다는 점도 장점입니다.

보통 중국 앱들은 영어를 지원하지 않는데 AList는 앱은 물론 홈페이지에 영어 설명도 있어 사용에 불편이 없습니다.

AList 활용, 사용이유

집에 있는 미니 PC에서 이전에는 Rclone을 이용해서 위의 사진의 왼쪽처럼 사용하고 있었습니다. 지금은 오른쪽 사진과 같은 형태로 사용합니다. 다양한 저장소를 AList에 연결하고 AList의 webdav만 Rclone으로 마운트해서 사용하고 있습니다.

A:인 AList 내부 폴더

AList를 클릭하면 위와 같이 여러 저장소가 나옵니다. AList가 구동되는 서버는 오라클 클라우드입니다.

속도 이점

집의 인터넷은 느리지만 오라클 클라우드의 네트워크는 상당히 빠르기 때문에 AList를 오라클 서버에서 구동하면 속도에 이점이 있습니다.

Alist에서 Aria2나 qBittoreent를 이용한 다운로드도 지원하기 때문에 파일을 다운로드 할 때도 오라클 클라우드 네트워크만을 이용하기 때문에 훨씬 빠릅니다.

게다가 구글이, 원드라이브, 드롭박스처럼 API를 지원하는 경우 개인의 API 키를 이용할 수 있기 때문에 최상의 속도를 낼 수 있습니다.

리소스 이점

작업실 PC는 사양이 좋아서 다수의 rclone 프로세스가 돌아가도 큰 상관은 없지만 집에 있는 미니PC나 작업실에 있는 RK3399 서버는 사양이 딸립니다. 이런 저사양 기기에서 프로세스 수를 줄이고 메모리를 적게 사용할 수 있다는 장점도 있습니다.

저처럼 오라클 클라우드를 사용하지 않는 분이라 하더라도 여러 기기에서 리소소를 사용하는 것을 한 군데로 몰아서 사용하면 나머지 기기의 리소스를 조금이나마 줄일 수 있습니다.

AList 설치(도커 컴포즈)

저의 설치 환경 및 평소 사용하는 어플은 다음과 같습니다.

오라클 클라우드 A1, 우분투 20.04
리버스 프록시 : NginX Proxy Manager(NPM)
도커 어플 경로 : `/home/docker`
사용하는 에디터 : nano
도메인 : 다수

AList 설치 과정은 다음과 같습니다. 각자 상황에 맞게 변경해서 적용하시면 됩니다.

도메인 설정

💡
도메인 안쓰는 분은 당연히 설정할 필요없습니다.

도메인 네임서버 설정하는 곳(저의 경우는 클라우드 플레어)원하는 도메인의 도메인 A레코드를 수정합니다. 도메인은 alist.aaa.com, 서버 IP는 123.123.123.123으로 예를 들겠습니다.

alist.aaa.com → 123.123.123.123

NPM 설정

💡
http://IP:port 로 접속하실 분들은 리버스 프록시 설정 필요없습니다.
NPM 프록시 설정

NPM에서 위와 같이 설정합니다. 172.17.0.1은 도커 브릿지 네트워크의 게이트웨이입니다. IP가 다른 분은 각자 상황에 맞게 수정하면 됩니다.

5244는 AList가 사용하는 포트입니다. 만약 5244를 다른 앱이 쓰고 있다면 다른 포트를 사용하면 됩니다. 뒤에 Docker-compse.yml 명령에서도 변경해줘야 합니다.

인증서 설정은 패스하겠습니다. ssl 인증서 적용해서 https로 접속가능하다고 가정합니다.

추가로 Adanced에서 다음 라인을 추가합니다. 대용량 파일 업로드시 필요한 옵션 등입니다.

proxy_pass_header Authorization;
proxy_pass_header Server;
proxy_buffering off;
proxy_redirect off;
client_max_body_size 0;
proxy_read_timeout 36000s;

대용량 업로드를 위한 추가 옵션

NPM Advanced 설정

Docker-compose.yml 파일 작성

다음도커 컴포즈 파일 작성입니다.

우선, docker-compose.yml 파일을 보관할 폴더를 만들고 해당 경로로 이동합니다. 저의 경우는 `/home/docker/alist`입니다.

mkdir -p /home/docker/alist
cd /home/docker/alist

다음은 docker-compose.yml 파일을 작성합니다.

nano docker-compose.yml

docker-compose.yml 파일 내용

services:
    alist:
        image: 'xhofe/alist:latest'
        container_name: alist
        volumes:
            - '.:/opt/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        restart: unless-stopped

docker-compose.yml 파일 내용

여기서 5244포트가 사용중이라서 5245포트를 쓰고 싶다면 `5245:5244`이런식으로 왼쪽만 바꿔주면 됩니다.

볼륨의 경로도 본인 상황에 맞게 수정하면 됩니다.

AList 실행

도커 컴포즈 실행

docker compose up -d

도커 데몬으로 실행 명령어

위의 명령어를 입력하고 도커를 실행합니다.

도커 컨테이너 접속해서 AList 관리자 계정 생성

docker exec -it alist ./alist admin set adminpw

컨테이너 접속해서 alist 관리자 계정 생성

위와 같이 명령어를 입력하면 AList의 관리자 계정이 생성됩니다.

💡
ID : admin
PW : adminpw

AList 접속

Alist 웹 접속

이제 웹브라우저에서 Alist에 접속후에 관리자 id, pw를 입력하면 됩니다. 관리자 ID, PW는 로그인 후에 바꾸면 됩니다.

아이피:포트로 접속

서버에서 TCP 5244포트를 연 후에 http://123.123.123.123:5244로 접속하면 됩니다. IP는 당연히 본인 서버 IP로 바꿔서 적으셔야 합니다.

도메인으로 접속

처음에 설정한 도메인 https://alist.aaa.com으로 접속하면 됩니다.

AList에 새 저장소 등록

관리자 로그인 후에 Manage-Storage에서 저장소를 관리할 수 있습니다.

AList에서 저장소 추가

저장소 종류가 많아서 자세한 저장소 등록은 생략합니다. 개인 API를 이용하는 경우나 토큰을 발급받아야 하는 경우는 조금 복잡할 수 있습니다.

그럴 때는 구글에서 'alist pikpak', 'alist onedrive' 같은식으로 검색하면 AList의 공식 설명을 볼 수 있습니다. 스토리지 종류에 따라 조금 어려운 경우도 있을 수 있습니다.

다른 기기에서 AList 접근

웹 접속

브라우저를 통한 웹 접속은 위에서 설명했기 때문에 생략합니다.

AList Webdav

AList의 webdav주소는 도메인 접속시 https://alist.aaa.com/dav입니다. 웹 접속 주소의 뒤에 /dav를 붙이면 됩니다. 아이디, 비번은 관리자 계정의 ID, PW를 입력하면 됩니다.

저는 AList Webdav를 PC에서 Rclone으로 마운트해서 씁니다.

그 밖의 AList 기능

그 밖에도 다양한 기능이 많습니다. UI도 좋고, 개인적으로 정말 잘 만든 앱이라고 생각합니다.

Webdav Proxy

Webdav시 프록시를 이용할 수 있습니다.

Preview 설정

어떤 파일을 Preview할건지 설정할 수 있습니다.

인덱스 기능

파일 목록을 검사해서 DB로 저장하는 기능이 있습니다. 저는 구글클라우드만 해도 120TB가 넘어서 최소한으로만 사용하고 있습니다. 오라클 클라우드에 남은 용량이 얼마 없어서 최대로는 못쓰고 있는데 인덱스 없이 써도 괜찮습니다.

S3, LDAP, Single Sign-on

요런 기능들도 있습니다.

Offline Download

Aria2, qBittoreent로 다운로드를 지시할 수 있습니다.

Users

유저를 추가하고 권한 설정할 수 있습니다.

Bakcup & Restore

저장소 설정을 백업, 복원할 수 있습니다. 데이터 자체를 백업하는 기능은 아닙니다.

태그

BoniK

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