Cách cài đặt Seafile Self-Hosted Cloud Storage trên Debian 12

theanh

Administrator
Nhân viên
Seafile là một hệ thống lưu trữ tệp nguồn mở được viết bằng nền tảng web Django. Đây là phần mềm đa nền tảng cung cấp một bộ tính năng lưu trữ đám mây và cho phép người dùng lưu trữ, quản lý và chia sẻ tệp trong hệ sinh thái Seafile.

Trong Seafile, các tệp được lưu trữ trên máy chủ trung tâm và có thể được đồng bộ hóa với các máy khách trên nhiều thiết bị và điện thoại di động. Seafile là một giải pháp thay thế cho các dịch vụ lưu trữ tệp như Google Drive, Dropbox và Mega.nz. Với Seafile, bạn có thể xây dựng giải pháp chia sẻ tệp cho các ứng dụng đám mây riêng của mình.

Bài viết này sẽ hướng dẫn bạn cài đặt Seafile trên máy chủ Debian 12 với MariaDB làm cơ sở dữ liệu, Nginx làm proxy ngược và HTTPS thông qua Letsencrypt và UFW (Tường lửa đơn giản) để bảo mật Seafile.

Điều kiện tiên quyết​

Để bắt đầu với hướng dẫn này, hãy đảm bảo bạn có các yêu cầu sau:
  • Máy chủ Debian 12
  • Người dùng không phải root có quyền quản trị viên
  • Tên miền trỏ đến địa chỉ IP của máy chủ

Cài đặt các phần phụ thuộc​

Seafile được viết bằng nền tảng web Django, dựa trên Python. Để cài đặt Seafile, bạn phải đảm bảo Python đã được cài đặt. Ngoài ra, bạn sẽ cần các phần phụ thuộc như MariaDB/MySQL làm cơ sở dữ liệu, Nginx làm proxy ngược và Memcached hoặc Redis để quản lý phiên và bộ nhớ đệm. Trong phần này, bạn sẽ cài đặt các gói đó thông qua trình quản lý gói APT.

Trước tiên, hãy chạy lệnh bên dưới để cập nhật chỉ mục gói Debian của bạn.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22149%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để cài đặt các phần phụ thuộc như Python3, máy chủ MariaDB, máy chủ web Nginx, Memcached và một số thư viện bổ sung vào hệ thống của bạn.
Mã:
sudo apt install mariadb-server nginx python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv memcached libmemcached-dev
Nhập 'Y' để xác nhận cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22347%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy kiểm tra máy chủ MariaDB bằng lệnh bên dưới.
Mã:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
Trong kết quả đầu ra sau, bạn có thể thấy máy chủ MariaDB đã được bậtđang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22210%22%3E%3C/svg%3E


Bây giờ hãy kiểm tra dịch vụ Nginx bằng lệnh sau.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Bạn có thể thấy máy chủ web Nginx bên dưới đang chạyđược bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22185%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra dịch vụ Memcached để đảm bảo dịch vụ này đang chạy. Dịch vụ Memcached phải đang chạyđược bật.
Mã:
sudo systemctl is-enabled memcached
sudo systemctl status memcached

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22184%22%3E%3C/svg%3E

Thiết lập máy chủ MariaDB​

Bây giờ bạn đã cài đặt MariaDB, bước tiếp theo bạn sẽ cấu hình và bảo mật triển khai máy chủ MariaDB. Sau đó, bạn sẽ tạo một người dùng MariaDB mới với nhiều cơ sở dữ liệu sẽ được Seafile sử dụng. Bạn sẽ bảo mật MariaDB bằng lệnh 'mariadb-secure-installation' và sử dụng máy khách 'mariadb' để tạo người dùng và cơ sở dữ liệu mới.

Thực hiện lệnh 'mariadb-secure-installation' bên dưới để bảo mật cài đặt máy chủ MariaDB của bạn.
Mã:
sudo mariadb-secure-installation
Bây giờ bạn sẽ được hỏi về các cấu hình sau:
  • Đối với cài đặt máy chủ MariaDB mặc định không có mật khẩu gốc, hãy nhấn ENTER khi được hỏi về mật khẩu.
  • Xác thực cục bộ cho người dùng gốc MariaDB được bảo mật theo mặc định, hãy nhập 'n' khi được yêu cầu thay đổi phương thức xác thực thành 'unix_socket'.
  • Nhập 'Y' để tạo mật khẩu gốc MariaDB mới. Sau đó, nhập mật khẩu mạnh cho người dùng gốc MariaDB của bạn và lặp lại.
  • Khi được yêu cầu tắt xác thực từ xa cho người dùng gốc MariaDB, hãy nhập 'Y' để đồng ý.
  • Nhập 'Y' để xóa 'test' cơ sở dữ liệu mặc định và xóa đặc quyền ẩn danh.
  • Cuối cùng, nhập 'Y' để xác nhận tải lại đặc quyền bảng.
Bây giờ bạn đã định cấu hình mật khẩu gốc MariaDB và bảo mật MariaDB, bạn sẽ tạo cơ sở dữ liệu mới và người dùng để cài đặt Seafile.

Chạy lệnh 'mariadb' bên dưới để đăng nhập vào máy chủ MariaDB. Nhập mật khẩu gốc MariaDB của bạn khi được nhắc.
Mã:
sudo mariadb -u root -p
Tạo người dùng mới 'seafile' bằng truy vấn sau. Hãy đảm bảo thay đổi mật khẩu sau bằng mật khẩu an toàn mới.
Mã:
create user 'seafile'@'localhost' identified by 'password';
Chạy các truy vấn sau để tạo cơ sở dữ liệu mới 'ccnet_db', 'seafile_db' và 'seahub_db'.
Mã:
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
Tiếp theo, chạy các truy vấn bên dưới để cho phép người dùng 'seafile' để truy cập cơ sở dữ liệu Seafile.
Mã:
GRANT ALL PRIVILEGES ON ccnet_db.* to seafile@localhost;
GRANT ALL PRIVILEGES ON seafile_db.* to seafile@localhost;
GRANT ALL PRIVILEGES ON seahub_db.* to seafile@localhost;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22388%22%3E%3C/svg%3E


Bây giờ hãy kiểm tra các đặc quyền cho người dùng 'seafile' để đảm bảo quyền truy cập và các đặc quyền cho cơ sở dữ liệu 'ccnet_db', 'seafile_db' và 'seahub_db'.
Mã:
SHOW GRANTS FOR seafile@localhost;
Cuối cùng, nhập 'quit' để thoát khỏi máy chủ MariaDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22286%22%3E%3C/svg%3E

Cài đặt các phụ thuộc Python​

Trong phần này, bạn sẽ tạo một người dùng hệ thống mới để chạy Seafile, tạo một thư mục cài đặt và môi trường ảo Python, sau đó cài đặt các phụ thuộc Python bằng lệnh 'pip'.

Trước tiên, hãy thêm một người dùng mới 'seafile' bằng lệnh sau.
Mã:
sudo adduser seafile

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22703%22%20height=%22421%22%3E%3C/svg%3E


Bây giờ hãy tạo một thư mục cài đặt mới '/opt/seafile' và di chuyển vào đó.
Mã:
mkdir -p /opt/seafile; cd /opt/seafile
Chạy lệnh bên dưới để tạo môi trường ảo Python 'venv' và kích hoạt nó. Sau khi kích hoạt, shell của bạn sẽ có dạng như sau '(venv) user@hostname #'.
Mã:
python3 -m venv venv
source venv/bin/activate

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22573%22%20height=%22204%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh 'pip3' bên dưới để cài đặt các phụ thuộc Python cho Seafile. Các gói đó phải được cài đặt bên trong môi trường ảo 'venv'.
Mã:
pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22343%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy thay đổi quyền sở hữu thư mục '/opt/seafile' thành người dùng 'seafile' bằng lệnh bên dưới.
Mã:
sudo chown -R seafile: /opt/seafile

Tải xuống và cài đặt Seafile​

Lúc này, bạn đã sẵn sàng cài đặt Seafile. Bây giờ, bạn sẽ tải xuống mã nguồn Seafile, cài đặt nó bằng MariaDB và Memcached, thêm tên miền Seafile thông qua cấu hình mặc định, sau đó bắt đầu quy trình Seafile theo cách thủ công.

Thực hiện lệnh sau để đăng nhập với tư cách là người dùng 'seafile' và đi đến thư mục '/opt/seafile'.
Mã:
su seafile
cd /opt/seafile
Tải xuống mã nguồn Seafile và giải nén bằng lệnh sau. Trong ví dụ này, bạn sẽ cài đặt Seafile 11, hãy đảm bảo kiểm tra trang tải xuống Seafile để tải phiên bản mới nhất.
Mã:
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.12_x86-64.tar.gz
tar xf seafile-server_11.0.12_x86-64.tar.gz
Bây giờ hãy kích hoạt môi trường ảo 'venv' bằng sau đây:
Mã:
source venv/bin/activate
Đi tới thư mục 'seafile-server-11.0.12' và thực thi tập lệnh 'setup-seafile-mysql.sh'. Với lệnh này, bạn sẽ cài đặt Seafile trên hệ thống của mình với MariaDB làm cơ sở dữ liệu.
Mã:
cd seafile-server-11.0.12
./setup-seafile-mysql.sh
Bây giờ, bạn sẽ được yêu cầu cấu hình Seafile sau:
  • Nhập tên máy chủ Seafile của bạn.
  • Nhập tên miền của bạn để cài đặt Seafile.
  • Nhập '2' để tích hợp Seafile với cơ sở dữ liệu MySQL/MariaDB hiện có và người dùng
  • Nhập thông tin chi tiết về máy chủ MariaDB, cổng, người dùng và mật khẩu
  • Nhập cơ sở dữ liệu cho ccnet là 'ccnet_db', seafile là 'seafile_db' và seahub dưới dạng 'seahub_db'
  • Nhấn ENTER để xác nhận cài đặt và hoàn tất cấu hình

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22545%22%20height=%22750%22%3E%3C/svg%3E



data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22605%22%20height=%22467%22%3E%3C/svg%3E


Sau khi cấu hình hoàn tất, bạn sẽ sửa đổi cấu hình Seafile để chạy nó dưới proxy ngược Nginx.

Đi đến thư mục '/opt/seafile/conf' và mở tệp 'seahub_settings.py' bằng trình chỉnh sửa 'nano'.
Mã:
cd /opt/seafile/conf
nano seahub_settings.py
Thêm tên miền của bạn vào tùy chọn 'SERVICE_URL' và đảm bảo bao gồm 'https' trong bắt đầu.
Mã:
SERVICE_URL = 'https://seafile.howtoforge.local'
Thêm tùy chọn 'FILE_SERVER_ROOT' như sau với tên miền của bạn.
Mã:
FILE_SERVER_ROOT = 'https://seafile.howtoforge.local/seafhttp'
Cuối cùng, thêm cài đặt 'CACHES' để tích hợp Seafile với bộ đệm Memcached hệ thống.
Mã:
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
},
}
Khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy quay lại thư mục '/opt/seafile/seafile-server-latest/' và chạy các tập lệnh 'seafile.sh' và 'seahub.sh' để chạy Seafile.
Mã:
cd /opt/seafile/seafile-server-latest/

./seafile.sh start
./seahub.sh start
Khi Seafile khởi động, bạn sẽ thấy thông báo 'Máy chủ Seafile đã khởi động'. Bạn cũng sẽ được yêu cầu thiết lập người dùng quản trị cho Seafile, vì vậy hãy đảm bảo nhập tên người dùng, email và mật khẩu của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22682%22%3E%3C/svg%3E

Thiết lập Nginx làm proxy ngược​

Bây giờ Seafile đã hoạt động với MariaDB và Memcached, bước tiếp theo là thiết lập Nginx làm proxy ngược cho Seafile. Vì vậy, hãy đảm bảo rằng bạn đã có tên miền sẵn sàng và được trỏ đến địa chỉ IP máy chủ của mình.

Tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/sites-available/seafile' bằng trình soạn thảo 'nano' sau.
Mã:
sudo nano /etc/nginx/sites-available/seafile
Chèn cấu hình bên dưới và đảm bảo thay đổi tùy chọn 'server_name' bằng tên miền của bạn.
Mã:
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';

server {
listen 80;
server_name seafile.howtoforge.local;

proxy_set_header X-Forwarded-For $remote_addr;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_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-Host $server_name;
proxy_read_timeout 1200s;

# used for view/edit office files via Office Online Server
client_max_body_size 0;

access_log /var/log/nginx/seahub.access.log seafileformat;
error_log /var/log/nginx/seahub.error.log;
}

location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;

send_timeout 36000s;

access_log /var/log/nginx/seafhttp.access.log seafileformat;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}
Lưu và thoát khỏi tệp khi hoàn tất.

Bây giờ hãy chạy lệnh bên dưới để kích hoạt khối máy chủ 'seafile' và xác minh cú pháp Nginx của bạn. Bạn sẽ thấy đầu ra 'cú pháp ok - thử nghiệm thành công' khi bạn đã cấu hình Nginx đúng.
Mã:
sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
sudo nginx -t
Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại máy chủ web Nginx và áp dụng các thay đổi của bạn.
Mã:
sudo systemctl restart nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22163%22%3E%3C/svg%3E

Bảo mật Seafile bằng UFW và HTTPS​

Sau khi bạn đã cấu hình Nginx làm proxy ngược, bạn sẽ bảo mật Seafile bằng HTTPS và UFW (Tường lửa đơn giản). Bạn sẽ cài đặt UFW và Certbot, mở các dịch vụ như SSH, HTTP và HTTPS, sau đó tạo chứng chỉ SSL mới bằng Certbot từ Letsencrypt.

Đầu tiên, hãy chạy lệnh bên dưới để cài đặt các gói 'ufw' và 'certbot'.
Mã:
sudo apt install ufw certbot -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22344%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh bên dưới để kích hoạt cấu hình 'OpenSSH' và 'Nginx Full'. Hồ sơ 'OpenSSH' sẽ mở cổng SSH mặc định '22' và hồ sơ 'Nginx Full' sẽ cho phép cả kết nối HTTPHTTPS đến máy chủ.
Mã:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
Tiếp theo, chạy lệnh sau để khởi động và kích hoạt UFW. Nhập 'y' để xác nhận và bạn sẽ thấy thông báo 'Tường lửa đang hoạt động và được bật khi khởi động hệ thống'.
Mã:
sudo ufw enable

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22208%22%3E%3C/svg%3E


Cuối cùng, giờ đây bạn có thể tạo chứng chỉ SSL và bảo mật cài đặt Seafile của mình bằng Lệnh 'certbot' bên dưới. Đảm bảo thay đổi tên miền và địa chỉ email bằng thông tin của bạn.
Mã:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [emailprotected] -d seafile.howtoforge.local
Sau khi quá trình hoàn tất, Seafile của bạn sẽ được bảo mật bằng HTTPS và chứng chỉ của bạn sẽ có sẵn tại thư mục '/etc/letsencrypt/live/domain.com'.

Truy cập Seafile​

Mở trình duyệt web của bạn và truy cập tên miền Seafile của bạn như https://seafile.howtoforge.local. Nếu cài đặt thành công, bạn sẽ được nhắc đến trang đăng nhập Seafile.

Nhập địa chỉ email và mật khẩu quản trị của bạn, sau đó nhấp vào 'Đăng nhập'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22622%22%20height=%22509%22%3E%3C/svg%3E


Nếu bạn có thông tin đăng nhập quản trị chính xác, bạn có thể thấy bảng điều khiển Seafile sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22210%22%3E%3C/svg%3E


Bây giờ bạn có thể thử tải tệp lên Seafile để đảm bảo cài đặt thành công.

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt Seafile Self-Hosted Cloud Storage trên máy chủ Debian 12. Bạn đã chạy Seafile với máy chủ cơ sở dữ liệu MariDB và Nginx làm proxy ngược. Bạn cũng đã bảo mật Seafile bằng UFW (Uncomplicated Firewall) và SSL thông qua Certbot và Letsencrypt. Bây giờ Seafile đã được cài đặt, bạn có thể tích hợp Seafile với các ứng dụng khác như ONLYOFFICE Document Server hoặc LibreOffice Online (Colllabora Online).
 
Back
Bên trên