Mình có một NAS mini ChainedBox L1 Pro chạy Armbian (RK3328, RAM 1GB) và muốn dựng một web đơn giản để upload/download file qua trình duyệt, có tài khoản riêng cho bạn bè upload mà không cần SSH hay dùng dòng lệnh. Yêu cầu là phải nhẹ, chạy tốt trên box yếu.
Giải pháp phù hợp nhất là File Browser.
Vì sao chọn File Browser thay vì Nextcloud?
Nextcloud hoặc các giải pháp cloud đầy đủ thường yêu cầu RAM từ 2-4GB, cần database (MariaDB/Postgres), và CPU mạnh hơn. Với box chỉ 1GB RAM, các giải pháp đó rất dễ lag hoặc crash.
File Browser nhẹ hơn rất nhiều, phù hợp cho NAS cá nhân.
1. Chuẩn bị ổ cứng HDD
Giả sử HDD đã mount tại /mnt/hdd, tạo một thư mục riêng cho cloud storage:
sudo mkdir -p /mnt/hdd/cloud
Lưu ý: Không mount toàn bộ HDD vào web để tránh lộn xộn và an toàn hơn khi tạo user cho bạn bè.
2. Tạo thư mục service File Browser
Đặt các container service trong /opt (chuẩn Linux):
sudo mkdir -p /opt/filebrowser
cd /opt/filebrowser
3. Tạo Docker Compose cho File Browser
Tạo file compose:
sudo nano docker-compose.yml
Nội dung:
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
ports:
- '9099:80'
volumes:
- /mnt/hdd/cloud:/srv
- ./filebrowser.db:/database/filebrowser.db
restart: unless-stopped
Giải thích:
- Port web: 9099
- Folder upload nằm trong:
/mnt/hdd/cloud - Database user/password lưu ở:
/opt/filebrowser/filebrowser.db
4. Lỗi quan trọng nhất: filebrowser.db bị tạo nhầm thành thư mục
Lúc đầu mình gặp lỗi container restart liên tục:
docker ps -a
Output hiện Restarting (1). Check log:
docker logs filebrowser
Error: open /database/filebrowser.db: is a directory
Nguyên nhân là Docker tự tạo filebrowser.db thành folder thay vì file.
Check:
ls -l /opt/filebrowser
Nếu thấy drwxr-xr-x filebrowser.db thì sai.
Cách fix
Trước tiên, phải vào folder chứa compose:
cd /opt/filebrowser
Stop container:
sudo docker compose down
Xóa folder sai:
sudo rm -rf filebrowser.db
Tạo file database đúng:
sudo touch filebrowser.db
sudo chmod 666 filebrowser.db
Check lại phải ra dạng file:
ls -l filebrowser.db
# -rw-rw-rw- filebrowser.db
5. Start File Browser
Chạy container:
sudo docker compose up -d
Check:
docker ps
Nếu thấy 0.0.0.0:9099->80/tcp là OK.
6. Truy cập Web UI
Mở trình duyệt:
http://IP_NAS:9099
Ví dụ: http://192.168.1.197:9099
Login mặc định thường là admin. Password được in trong log:
docker logs filebrowser --tail=100
Sau khi login xong, nên đổi password ngay.
7. Fix lỗi không tạo được folder trong Web UI (Permission)
Khi tạo folder trong File Browser mà không thấy xuất hiện, nguyên nhân thường là quyền ghi.
Check permission:
ls -ld /mnt/hdd/cloud
Nếu thấy root root và drwxr-xr-x thì container không ghi được.
Fix:
sudo chown -R cee:cee /mnt/hdd/cloud
sudo chmod -R 775 /mnt/hdd/cloud
Giờ File Browser sẽ upload/create folder bình thường.
8. Tạo user cho bạn bè upload file
Mình muốn bạn bè chỉ upload vào folder riêng, không thấy dữ liệu khác.
8.1 Tạo thư mục riêng cho từng user
sudo mkdir -p /mnt/hdd/cloud/share/friend1
sudo mkdir -p /mnt/hdd/cloud/share/friend2
8.2 Tạo user trong File Browser
Vào web: Settings > Users > Add User
Ví dụ user friend1:
- Username: friend1
- Password: (tự đặt)
- Scope:
/share/friend1 - Permissions: Read, Write (không bật Admin)
User login sẽ chỉ thấy đúng folder của họ.
8.3 Tạo user upload-only (khuyến nghị)
Nếu muốn bạn bè chỉ upload mà không xóa file, bật Upload/Create và tắt Delete/Rename.
Kết quả
Sau setup, mình có:
- Web upload nhẹ chạy ngon trên box RAM 1GB
- File nằm trong
/mnt/hdd/cloud - Truy cập web tại
http://IP_NAS:9099 - Bạn bè có account riêng, folder riêng, không thấy dữ liệu khác