note
개인적으로 사용하는 간이 NAS 입니다.
파일 관리를 위해 webdav api 와 웹 client 를 구현하였고 추가로 미디어 서버용 jellyfin 과 다운로드용 qbitborrent 를 함께 구성하였습니다.
download
webdav/*
webdav 스팩에 맞게 구현 된 apis 모듈
webdavcli/*
별도의 client 가 없더라도 웹 환경에서 사용하기 위한 file borwser 모듈
보안을 위한 로그인, 폴더 생성/삭제, 파일 업로드/삭제/다운로드, 파일 및 폴더 이름 변경, 파일 및 폴더 drag&drop 이동 등 기본적으로 파일 관리에 필요한 기능을 제공 함


docker-compose.yml
webdav apis 와 webdav filebrowser client 는 하나의 user, password 를 사용하도록 구현되어 있으므로 WEBDAV_USER, WEBDAV_PASS 환경 변수는 동일하게 맞춰서 설정하여야 함
추가로 미디어 서버를 위한 jellyfin 과 다운로드를 위한 qbittorrent 를 함께 포함하였음
services:
webdav:
build: webdav/.
image: nas:webdav
container_name: nas_webdav
restart: always
ports:
- 10001:8888
environment:
- PUID=1000
- PGID=1000
- WEBDAV_USER=admin
- WEBDAV_PASS=password
volumes:
- ./config/webdav:/app/config
- /home/shared:/app/data
webdavcli:
build: webdavcli/.
image: nas:webdavcli
container_name: nas_webdavcli
restart: always
ports:
- 10002:8888
environment:
- PUID=1000
- PGID=1000
- WEBDAV_USER=admin
- WEBDAV_PASS=password
- WEBDAV_BASE_URL=http://webdav:8888
depends_on:
- webdav
jellyfin:
image: jellyfin/jellyfin
container_name: nas_jellyfin
restart: always
ports:
- 1900:1900/udp
- 7359:7359
- 7359:7359/udp
- 10003:8096
volumes:
- ./config/jellyfin:/config
- /home/shared/media:/media
depends_on:
- webdav
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: nas_qbittorrent
restart: always
ports:
- 10004:8080
- 6881:6881
- 6881:6881/udp
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- WEBUI_PORT=8080
volumes:
- ./config/qbittorrent:/config
- /home/shared/downloads:/downloads
depends_on:
- webdav
run.sh
#!/bin/bash
docker compose down
docker image rm nas:webdav
docker image rm nas:webdavcli
docker compose up -d 