TL;DR
- File Browser는 단일 Go 바이너리와 내장 React 앱으로 제공되는 웹 파일 브라우저이며, 선택적 계정 기능을 통해 파일 관리와 비공개 폴더를 제공함
- 누구나 파일을 탐색·업로드·다운로드할 수 있고, 계정 사용 시 생성·이름 변경·이동·삭제 기능이 추가됨
- 계정 데이터는 SQLite 데이터베이스에 저장되고 파일은 일반 파일시스템에 유지됨
- Docker Compose 또는 Go 1.26+와 Bun을 이용한 소스 빌드를 지원하며, 기본 접속 주소는 http://localhost:8080임
- React 19·TypeScript·Vite·Tailwind CSS 프런트엔드와 표준 라이브러리 기반 Go 1.26+ 백엔드로 구성되고 BSD 3-Clause 라이선스를 적용함
File Browser
- 단일 Go 바이너리와 내장 React 앱으로 제공되는 웹 파일 브라우저임
- 누구나 파일을 탐색·업로드·다운로드할 수 있음
- 선택적 계정 기능으로 파일 생성·이름 변경·이동·삭제와 비공개 폴더 관리가 가능함
- 계정 데이터는 SQLite 데이터베이스에 저장되고 파일은 일반 파일시스템에 유지됨
빠른 시작
Docker Compose 권장
- 다음 구성으로
ghcr.io/skidoodle/filebrowser:latest이미지를 사용하고, 컨테이너 이름을filebrowser로 지정하며, 중단 후 자동 재시작을 설정함 - 호스트의
8080포트를 컨테이너의8080포트에 연결함 ./data를/data에,./db를/db에 연결함docker compose up -d로 서비스를 시작함- 시작 후 http://localhost:8080을 열면 첫 방문 시 관리자 계정 생성 화면이 제공됨
사용자 ID·그룹 ID 지정
- 컨테이너는 기본적으로
1000:1000으로 실행됨 - 호스트 볼륨이 다른 사용자 소유인 경우
PUID와PGID를 설정함 - 예시 구성은
PUID=1001,PGID=1001을 사용하고/mnt/nas/files를/data에,./db를/db에 연결함 - 엔트리포인트는 권한을 낮추기 전에
/data,/cache,/db의 소유권을 자동으로 수정함 /data아래에 여러 파일시스템을 바인드 마운트하는 구성도 지원함/mnt/ssd/documents를/data/documents에 연결함/mnt/hdd/media를/data/media에 연결함./db를/db에 연결함- Compose에서
PUID·PGID대신user: "1001:1001"을 사용하면 엔트리포인트가 소유권 수정을 건너뛰고 직접 실행함 - 이 경우 볼륨이 해당 UID로 이미 쓰기 가능한 상태인지 확인해야 함
소스에서 빌드
- Go 1.26+와 Bun이 필요함
just build로 빌드하고FILEBROWSER_ROOT=./data ./bin/filebrowser로 실행함
구성
- 모든 설정은 환경 변수에서 가져옴
PUID: 기본값1000, 프로세스가 실행되는 사용자 ID이며 Docker에서만 적용됨PGID: 기본값1000, 프로세스가 실행되는 그룹 ID이며 Docker에서만 적용됨FILEBROWSER_ROOT: 기본값./data, 방문자에게 제공하는 디렉터리임FILEBROWSER_DATABASE: 기본값./filebrowser.db, SQLite 데이터베이스 경로임FILEBROWSER_ADDRESS: 기본값0.0.0.0:8080, 수신 대기 주소임FILEBROWSER_BASEURL: 기본값 없음, 앱이 마운트되는 하위 경로임FILEBROWSER_ACCESS_POLICY: 기본값public, 접근 정책임public은 익명 방문자의 업로드를 허용함readonly는 탐색만 허용함private는 모든 작업에 로그인을 요구함FILEBROWSER_MAXUPLOAD: 기본값10GiB, 단일 업로드의 최대 크기임FILEBROWSER_CACHEDIR: 기본값 시스템 임시 디렉터리, 썸네일과 기타 폐기 가능한 데이터의 저장 디렉터리임FILEBROWSER_MAXTEXTSIZE: 기본값10MiB, 텍스트 유형 감지를 중단하는 기준 크기임FILEBROWSER_GUARD: 기본값true, 악용 방지 체인의 활성화 여부임FILEBROWSER_TRUSTEDPROXIES: 기본값 없음,X-Forwarded-For에 사용할 쉼표로 구분된 프록시 CIDR 목록임FILEBROWSER_REQUESTRATE: 기본값60, IP별 초당 API 요청 수임FILEBROWSER_DOWNLOADRATE: 기본값200MiB, IP별 초당 다운로드 바이트 수임FILEBROWSER_POWDIFFICULTY: 기본값4, 작업 증명 난이도이며0이면 비활성화됨FILEBROWSER_SECRET: 기본값 없음, 기능 서명 키이며 기본적으로 캐시 디렉터리에 저장되는 키를 사용함FILEBROWSER_INSECURE: 기본값false, 인증을 비활성화하고 모든 방문자에게 전체 접근 권한을 부여하는 설정임FILEBROWSER_ADMIN_PASSWORD: 기본값 없음, 관리자 비밀번호를 초기 설정하거나 재설정하는 값임FILEBROWSER_DEBUG: 기본값false, 상세 로깅 설정임
개발
just dev는:8080에서 API를,:5173에서 Vite 개발 서버를 실행함just test는 레이스 감지기를 사용해 Go 테스트를 실행함just lint는golangci-lint를 실행함just fmt는gofmt와go vet를 실행함just build는 SPA가 내장된 프로덕션 바이너리를 빌드함- 나머지 명령은
just --list로 확인함 - 백엔드는 표준 라이브러리 기반 Go 1.26+로 구성됨
- 프런트엔드는 React 19, TypeScript, Vite, Tailwind CSS로 구성되고 Bun으로 빌드됨
라이선스
- BSD 3-Clause 라이선스를 적용함
- 자세한 내용은 LICENSE에서 확인 가능함
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요