Hướng dẫn cài đặt FileRun trên Ubuntu với Docker Compose
FileRun là một ứng dụng web tự lưu trữ để đồng bộ và chia sẻ file, tương tự như Google Drive hay Nextcloud, cho phép bạn quản lý file từ bất kỳ đâu thông qua trình duyệt web hoặc ứng dụng di động. FileRun tương thích với các ứng dụng desktop và mobile của Nextcloud, đồng thời hỗ trợ giao thức WebDAV để truy cập file.
Yêu cầu hệ thống
Phần cứng tối thiểu
- RAM: 512MB (đủ cho hầu hết trường hợp sử dụng)
- Ổ cứng: 2GB cho FileRun và các phần mềm liên quan
- CPU: Bất kỳ kiến trúc x86_64 hoặc ARM
Phần mềm cần thiết
- Ubuntu 20.04 trở lên
- Docker và Docker Compose
- Kết nối internet ổn định
Bước 1: Cài đặt Docker và Docker Compose
Cài đặt các gói phụ thuộc
sudo apt-get update -y
sudo apt-get install curl git build-essential apt-transport-https ca-certificates software-properties-common -y
Thêm Docker GPG key và repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cài đặt Docker và Docker Compose
sudo apt update -y
sudo apt install docker-ce docker-compose-plugin -y
Kiểm tra phiên bản Docker Compose
docker compose version
Bạn sẽ thấy output tương tự: Docker Compose version v2.24.7
Khởi động Docker service
sudo systemctl enable docker
sudo systemctl start docker
Bước 2: Tạo cấu trúc thư mục cho FileRun
Tạo thư mục chính cho FileRun và các thư mục con cần thiết:
mkdir ~/filerun
cd ~/filerun
mkdir html user-files db
Nếu bạn muốn sử dụng đường dẫn tuyệt đối, có thể tạo tại /filerun
:
sudo mkdir /filerun /filerun/html /filerun/user-files /filerun/db
Bước 3: Tạo file Docker Compose cơ bản
Tạo file docker-compose.yml
với cấu hình cơ bản:
nano docker-compose.yml
Dán nội dung sau vào file:
version: '3.8'
services:
db:
image: mariadb:10.5
container_name: filerun_mariadb
environment:
MYSQL_ROOT_PASSWORD: your_strong_root_password
MYSQL_USER: filerun_user
MYSQL_PASSWORD: your_strong_password
MYSQL_DATABASE: filerundb
volumes:
- ./db:/var/lib/mysql
restart: always
web:
image: filerun/filerun:8.1
container_name: filerun_web
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306
FR_DB_NAME: filerundb
FR_DB_USER: filerun_user
FR_DB_PASS: your_strong_password
APACHE_RUN_USER: www-data
APACHE_RUN_USER_ID: 33
APACHE_RUN_GROUP: www-data
APACHE_RUN_GROUP_ID: 33
depends_on:
- db
links:
- db
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
- ./user-files:/user-files
restart: always
Bước 4: Cấu hình nâng cao với Elasticsearch và Tika (tùy chọn)
Để sử dụng tính năng tìm kiếm toàn văn và OCR, bạn có thể tạo file docker-compose.yml
mở rộng:
version: '3.8'
services:
db:
image: mariadb:10.5
container_name: filerun_mariadb
environment:
MYSQL_ROOT_PASSWORD: your_strong_root_password
MYSQL_USER: filerun_user
MYSQL_PASSWORD: your_strong_password
MYSQL_DATABASE: filerundb
volumes:
- ./db:/var/lib/mysql
restart: always
web:
image: filerun/filerun:8.1
container_name: filerun_web
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306
FR_DB_NAME: filerundb
FR_DB_USER: filerun_user
FR_DB_PASS: your_strong_password
APACHE_RUN_USER: www-data
APACHE_RUN_USER_ID: 33
APACHE_RUN_GROUP: www-data
APACHE_RUN_GROUP_ID: 33
depends_on:
- db
links:
- db
- tika
- elasticsearch
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
- ./user-files:/user-files
restart: always
tika:
image: apache/tika
container_name: filerun_tika
restart: always
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23
container_name: filerun_search
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
mem_limit: 1g
volumes:
- ./esearch:/usr/share/elasticsearch/data
restart: always
Chuẩn bị thư mục cho Elasticsearch
mkdir esearch
chmod g+rwx esearch
sudo chgrp 1000 esearch
Tăng giới hạn memory map cho Elasticsearch
sudo nano /etc/sysctl.conf
Thêm dòng sau vào cuối file:
vm.max_map_count = 262144
Để áp dụng ngay mà không cần khởi động lại:
sudo sysctl -w vm.max_map_count=262144
Bước 5: Tải và cài đặt FileRun
Tải file ứng dụng FileRun
Để sử dụng FileRun, bạn cần tải file ứng dụng từ trang chủ:
- Truy cập https://filerun.com/client-area/client-area-orders
- Đăng nhập vào tài khoản FileRun của bạn
- Tải phiên bản dành cho PHP 8.1
- Upload file zip vào thư mục
html
trên server - Giải nén file trong cùng thư mục đó
Thiết lập quyền truy cập
sudo chown www-data:www-data -R ./html/system/data
Bước 6: Khởi chạy FileRun
Khởi động containers
docker compose up -d
Kiểm tra trạng thái containers
docker compose ps
Tất cả containers sẽ hiển thị trạng thái “Up”.
Bước 7: Cấu hình ban đầu qua giao diện web
Truy cập FileRun
Mở trình duyệt và truy cập http://your-server-ip:8080
. Bạn sẽ thấy màn hình cài đặt ban đầu.
Các bước cài đặt
- Kiểm tra yêu cầu hệ thống: Nhấn “Next” nếu tất cả đều đạt yêu cầu
- Cấu hình database: Điền thông tin database đã cấu hình trong docker-compose.yml
- Database name:
filerundb
- Username:
filerun_user
- Password:
your_strong_password
- Database name:
- Hoàn tất cài đặt: Ghi nhận thông tin đăng nhập superuser được cung cấp
Đăng nhập và cấu hình cơ bản
- Đăng nhập bằng tài khoản superuser
- Thay đổi mật khẩu mặc định trong Account Settings
- Thiết lập đường dẫn home folder thành
/user-files
Bước 8: Cấu hình tính năng nâng cao (nếu có Elasticsearch và Tika)
Cấu hình Elasticsearch
- Truy cập Control Panel > Files > Searching
- Nhập URL Elasticsearch:
http://elasticsearch:9200
- Nhấn “Test server” để kiểm tra kết nối
Cấu hình Apache Tika
- Nhập hostname:
tika
- Nhập port:
9998
- Bật tùy chọn “OCR PDF Files” và “OCR image files”
- Nhấn “Test server” để kiểm tra
Thiết lập tìm kiếm theo nội dung
Thay đổi “Default search criteria” từ “Name” thành “Contents”.
Bước 9: Cấu hình SSL/HTTPS với Nginx Reverse Proxy
Tạo file cấu hình Nginx
sudo nano /etc/nginx/sites-available/filerun
Nội dung cấu hình:
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Kích hoạt cấu hình
sudo ln -s /etc/nginx/sites-available/filerun /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Bước 10: Sao lưu và bảo trì
Sao lưu FileRun
Để sao lưu FileRun, bạn cần backup cả database và file dữ liệu:
# Backup database
docker exec filerun_mariadb mysqldump -u root -p filerundb > filerun_backup.sql
# Backup user files
tar -czf user-files-backup.tar.gz ./user-files
# Backup application files
tar -czf html-backup.tar.gz ./html
Cập nhật FileRun
cd ~/filerun
docker compose down --remove-orphans
docker compose pull
docker compose up -d
Khôi phục từ backup
# Khôi phục database
docker exec -i filerun_mariadb mysql -u root -p filerundb < filerun_backup.sql
# Khôi phục user files
tar -xzf user-files-backup.tar.gz
# Khôi phục application files
tar -xzf html-backup.tar.gz
Bảo mật FileRun
Các biện pháp bảo mật cơ bản
- Thay đổi mật khẩu mặc định: Đặt mật khẩu mạnh cho tài khoản superuser
- Sử dụng SSL/HTTPS: Luôn truy cập FileRun qua HTTPS
- Cập nhật thường xuyên: Đăng ký license để nhận cập nhật bảo mật
- Giới hạn quyền truy cập database: Xóa quyền ALTER và DROP khỏi user MySQL
- Bảo mật file cấu hình: Không cho phép web server ghi vào file ứng dụng
Cấu hình tường lửa
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Xử lý sự cố thường gặp
Container không khởi động
# Kiểm tra logs
docker compose logs
# Kiểm tra tài nguyên hệ thống
docker stats
Lỗi permission denied
# Thiết lập lại quyền
sudo chown -R www-data:www-data ./html
sudo chown -R www-data:www-data ./user-files
FileRun không thể kết nối database
- Kiểm tra thông tin database trong docker-compose.yml
- Đảm bảo container database đã khởi động
- Kiểm tra network connectivity giữa containers
Desktop sync app tải lại toàn bộ file
Thêm cấu hình sau vào FileRun:
$config['system']['webdav']['skip_device_id_for_etag'] = true;
FileRun là một giải pháp self-hosted mạnh mẽ để quản lý và chia sẻ file. Với Docker Compose, việc cài đặt và bảo trì FileRun trở nên đơn giản hơn nhiều. Để đảm bảo an toàn và hiệu suất tối ưu, hãy luôn sử dụng SSL, thiết lập backup định kỳ, và cập nhật phần mềm thường xuyên.