Hướng dẫn cài đặt Seafile Self-Hosted bằng Docker trên Ubuntu 24.04
Hướng dẫn cài đặt Seafile Self-Hosted bằng Docker trên Ubuntu 24.04
Có khá nhiều lựa chọn để triển khai hệ thống chia sẻ và đồng bộ tệp tin tự host, trong đó phổ biến nhất là Nextcloud và ownCloud.
Cá nhân tôi thấy hai nền tảng này khá nặng và cung cấp nhiều tính năng mà tôi không sử dụng. Nếu chỉ cần đồng bộ và chia sẻ tệp đơn giản, tôi thích Seafile hơn. Vì vậy trong bài viết này chúng ta sẽ thiết lập Seafile.
Tài liệu chính thức của Seafile cung cấp hướng dẫn rất tốt để triển khai bằng Docker, vì vậy chúng ta sẽ làm theo phương pháp này. Tuy nhiên trước tiên cần thực hiện một số bước chuẩn bị ban đầu.
1. Thiết lập ban đầu (Initial Setup)
Trước tiên, cập nhật hệ thống Ubuntu 24.04:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
Sau đó khởi động lại hệ thống:
sudo reboot
2. Cài đặt Docker
Chúng ta cần Docker và Docker Compose (plugin tích hợp) để chạy Seafile.
Trước tiên hãy đảm bảo hệ thống không còn các gói Docker không chính thức:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Tiếp theo, thiết lập repository chính thức của Docker:
# Thêm GPG key chính thức của Docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Thêm repository vào danh sách nguồn apt
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Sau đó cài đặt Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kiểm tra Docker hoạt động bình thường:
sudo docker run hello-world
Cho phép chạy Docker không cần sudo
Nếu không muốn phải dùng sudo mỗi lần chạy Docker, hãy thêm user hiện tại vào docker group:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
Nếu thấy cảnh báo:
groupadd: group ‘docker’ already exists
bạn có thể bỏ qua cảnh báo này.
Thử chạy lại container:
docker run hello-world
Nếu chưa hoạt động, hãy logout và login lại để cập nhật quyền.
Cài đặt AWS CLI (tùy chọn)
Vì môi trường đang chạy trên AWS nên nên cài AWS CLI:
sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
3. Thiết lập Seafile
Tạo thư mục lưu cấu hình Seafile.
Trong hướng dẫn này Seafile sẽ được cài trực tiếp trong /home/ubuntu.
mkdir -p seafile
cd seafile
Tải file cấu hình docker-compose.yml cho Seafile Community Edition 11 (CE11):
wget -O "docker-compose.yml" "https://manual.seafile.com/11.0/docker/docker-compose/ce/11.0/docker-compose.yml"
Mở file bằng trình soạn thảo yêu thích:
nano docker-compose.yml
Cấu hình mặc định sẽ có dạng:
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=db_dev
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql
networks:
- seafile-net
memcached:
image: memcached:1.6.18
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:11.0-latest
container_name: seafile
ports:
- "80:80"
# - "443:443"
volumes:
- /opt/seafile-data:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=db_dev
- TIME_ZONE=Etc/UTC
- SEAFILE_ADMIN_EMAIL=me@example.com
- SEAFILE_ADMIN_PASSWORD=asecret
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
4. Cập nhật cấu hình
Bạn cần chỉnh các thông số sau:
- SEAFILE_ADMIN_EMAIL=me@example.com
- SEAFILE_ADMIN_PASSWORD=asecret
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
Cập nhật:
- Email quản trị
- Mật khẩu admin
- Domain thực tế
Nếu sử dụng SSL với Let’s Encrypt, đổi:
SEAFILE_SERVER_LETSENCRYPT=true
Bật cổng HTTPS
Bỏ comment dòng sau:
- "443:443"
Kết quả:
ports:
- "80:80"
- "443:443"
Đổi mật khẩu MySQL
Tìm giá trị mặc định:
db_dev
và thay bằng mật khẩu mạnh hơn ở cả hai vị trí.
5. Khởi động Seafile
Từ thư mục chứa docker-compose.yml, chạy:
docker compose up -d
Docker sẽ:
- khởi tạo container
- cài đặt Seafile
- yêu cầu chứng chỉ Let’s Encrypt
Chờ khoảng 1–2 phút, sau đó truy cập:
https://seafile.yourdomain.com
Bạn sẽ thấy màn hình đăng nhập Seafile.

Đăng nhập bằng email và mật khẩu admin đã cấu hình trong docker-compose.yml.
6. Tự động khởi động khi reboot
Mặc định các container không tự khởi động lại khi reboot.
Bật chế độ restart:
docker update --restart always $(docker ps -q)
Điều này giúp Seafile tự chạy lại khi server khởi động lại.

7. Reset mật khẩu admin
Nếu bị khóa tài khoản admin, có thể reset bằng lệnh:
docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh
Sau đó bạn có thể thiết lập email và mật khẩu quản trị mới.

