Seafile là một giải pháp tự lưu trữ và chia sẻ chạy trên hệ điều hành Linux. Đây là một dịch vụ lưu trữ tệp đám mây sử dụng để lưu trữ trên máy chủ trung tâm. Các tập tin được đồng bộ hóa với máy khách cá nhân hoặc thiết bị di động. Một tệp hoặc thư viện cũng có thể được mã hóa bằng mật khẩu được chọn của người dùng. Công cụ chia sẻ tệp Seafile cũng cho phép người dùng tạo nhóm và dễ dàng chia sẻ tệp thành các nhóm. Seafile quản lý các tập tin bằng thư viện và mỗi thư viện có chủ sở hữu. Chủ sở hữu có thể chia sẻ thư viện cho người dùng khác hoặc với các nhóm theo quyền chỉ đọc hoặc đọc-viết. Seafile là một giải pháp ứng dụng chia sẻ tệp hiệu suất cao và tốt nhất. Lưu trữ đám mây nguồn mở Seafile được viết bằng khung Python Django và chức năng của nó rất giống với các đám mây Dropbox và Google Drive. Nó có rất nhiều tính năng khác bao gồm mã hóa tệp, kiểm soát phiên bản, xác thực hai yếu tố, chỉnh sửa trực tuyến, khóa tệp, sao lưu, khôi phục dữ liệu và nhiều hơn nữa. Gói máy chủ Seafile dành cho Raspberry Pi. Được bảo trì bởi cộng đồng Seafile.
https://github.com/haiwen/seafile-rpi
Yêu cầu bao gồm:
- Python và các mô -đun của nó
- Ubuntu 20.04 lts
- Mysql hoặc mariadb
- Nginx hoặc apache
- Git
Một số tính năng chính được liệt kê dưới đây:
- CROSS Nền tảng đồng bộ hóa tệp nhanh.
- Đồng bộ hóa tệp với các thư mục hoặc máy chủ.
- Kiểm soát quyền chỉ đọc hoặc đọc-viết.
- Chia sẻ và hợp tác với người dùng hoặc nhóm.
- Truy cập các tệp trong đám mây thông qua ổ đĩa ảo.
- Kiểm soát phiên bản và ảnh chụp nhanh cho các thư mục.
- Mã hóa từ đầu đến cuối phía máy khách.
- Khóa tệp để ngăn chặn chỉnh sửa đồng thời.
- Chỉnh sửa đánh dấu trực tuyến.
- Thông báo thời gian thực.
- Kiểm soát tính năng dựa trên vai trò.
- Hỗ trợ tích hợp LDAP/AD.
- Sao lưu và khôi phục dữ liệu
- Mã nguồn mở
Cài đặt Seafile trên Ubuntu
Hướng dẫn này giải thích cách thiết lập và chạy máy chủ tệp biển từ gói được xây dựng trước với MySQL. Dưới đây các bước cài đặt giả định rằng tất cả các gói phụ thuộc của Đám mây Seafile được cài đặt và cập nhật trên hệ thống của bạn.
sudo apt update
sudo apt install python3 python3-{pip,pil,ldap,urllib3,setuptools,mysqldb,memcache,requests}
sudo apt install libpython3.8 ffmpeg
Tải xuống gói máy chủ Seafile mới nhất từ Tải xuống Seafile. Tại thời điểm cài đặt này, bản phát hành mới nhất của Seafile Server là 8.0,5 64bit:
sudo apt -y install wget
wget https://download.seadrive.org/seafile-server_8.0.5_x86-64.tar.gz
Xem bản pro chỉ cho 3 người dùng: https://download.seafile.com/d/6e5297246c/?p=/pro
Seafile PE yêu cầu tối thiểu 2 lõi và 2 GB RAM. Có thể sử dụng Seafile PE mà không cần giấy phép trả phí với tối đa ba người dùng.
Sau khi hoàn tất tải xuống tệp, trích xuất thư mục lưu trữ vào /opt:
sudo tar -xvf seafile-server_8.0.5_x86-64.tar.gz -C /opt
sudo mv /opt/seafile-server-8.0.5 /opt/seafile
Tiếp theo, chỉ cần chạy tập lệnh thiết lập.
cd /opt/seafile/
sudo ./setup-seafile-mysql.sh
Kịch bản này sẽ hướng dẫn bạn thiết lập máy chủ Seafile của bạn bằng MySQL. Máy chủ Seafile sẽ chạy trên cổng 8082 và giao diện người dùng web Seafile sẽ có thể truy cập được trên cổng 8000. Bây giờ hãy bắt đầu các dịch vụ Seafile bằng cách:
cd /opt/seafile
sudo ./seafile.sh start
Tiếp theo, bắt đầu dịch vụ Frontend trang web của Seahub Django.
sudo ./seahub.sh start
Khi bạn bắt đầu Seahub, tập lệnh sẽ nhắc bạn tạo tài khoản quản trị cho tài khoản máy chủ Seafile của bạn. Cổng mặc định là 127.0.0.1:8000. Vì vậy, chúng tôi khuyên bạn nên triển khai dịch vụ proxy ngược để người dùng khác có thể truy cập dịch vụ Seahub. Bạn có thể dừng trang web Seahub và quy trình Seafile với:
./seahub.sh stop
./seafile.sh stop
Chúc mừng! Bạn đã cài đặt thành công đồng bộ hóa tệp Seafile và chia sẻ nền tảng trên Ubuntu
Debian 12 và Ubuntu 24.04 hiện không khuyến khích cài đặt toàn hệ thống các mô-đun python bằng pip. Hiện tại, tốt hơn là cài đặt các mô-đun vào một môi trường ảo tách biệt với các tệp được cài đặt bởi trình quản lý gói hệ thống và cho phép cài đặt các phiên bản khác nhau cho các ứng dụng khác nhau. Với các môi trường ảo python này (gọi tắt là venv) hoạt động, bạn phải kích hoạt venv để các gói được cài đặt trong đó có sẵn cho các chương trình bạn chạy. Điều đó được thực hiện ở đây với “source python-venv/bin/activate”.
# Debian 12
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv
sudo apt-get install -y memcached libmemcached-dev
mkdir /opt/seafile
cd /opt/seafile
# create the vitual environment in the python-venv directory
python3 -m venv python-venv
# activate the venv
source python-venv/bin/activate
# Notice that this will usually change your prompt so you know the venv is active
# install packages into the active venv with pip (sudo isn’t needed because this is installing in the venv, not system-wide).
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
Cài đặt Java Runtime Environment.
Nếu elasticsearch được cài đặt trên cùng một máy chủ, yêu cầu tối thiểu là 4 lõi và 4 GB RAM. Java Runtime Environment (JRE) là yêu cầu bắt buộc để tìm kiếm toàn văn bản với ElasticSearch. Nó được sử dụng để trích xuất nội dung từ các tệp PDF và Office.
# Debian 10/Debian 11
sudo apt-get install default-jre -y
# Ubuntu 16.04/Ubuntu 18.04/Ubuntu 20.04/Ubuntu 22.04
sudo apt-get install openjdk-8-jre -y
sudo ln -sf /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java /usr/bin/
Tạo thư mục chương trình
Thư mục chuẩn cho các tập tin chương trình của Seafile là /opt/seafile. Tạo thư mục này và thay đổi vào đó:
mkdir /opt/seafile
cd /opt/seafile
Thư mục chương trình có thể thay đổi. Thư mục chuẩn /opt/seafileđược sử dụng cho phần còn lại của hướng dẫn này. Nếu bạn quyết định đặt Seafile vào thư mục khác, một số lệnh cần được sửa đổi cho phù hợp.
Tạo người dùng seafile
Elasticsearch, máy chủ lập chỉ mục, không thể chạy dưới dạng root. Nói chung, tốt nhất là không nên chạy ứng dụng dưới dạng root.
Tạo người dùng mới và làm theo hướng dẫn trên màn hình:
adduser seafile
Thay đổi quyền sở hữu thư mục đã tạo cho người dùng mới:
chown -R seafile: /opt/seafile
Tất cả các bước sau đây được thực hiện như người dùng seafile.
Thay đổi sang người dùng seafile:
su seafile
Đặt giấy phép Seafile PE¶
Lưu tệp giấy phép vào thư mục chương trình của Seafile /opt/seafile. Đảm bảo rằng tên là seafile-license.txt. (Nếu tệp có tên khác hoặc không thể đọc được, Seafile PE sẽ không khởi động.)
Tải xuống gói cài đặt
Trung tâm khách hàng Seafile cung cấp hai gói cài đặt cho mọi phiên bản (lấy Seafile PE 8.0.4 làm ví dụ):
seafile-pro-server_8.0.4_x86-64_Ubuntu.tar.gz , được biên dịch trong môi trường Ubuntu 18.04
seafile-pro-server_8.0.4_x86-64_CentOS.tar.gz , được biên dịch trong môi trường CentOS 7
Phiên bản trước phù hợp để cài đặt trên máy chủ Ubuntu/Debian, phiên bản sau phù hợp để cài đặt trên máy chủ CentOS.
Tải xuống gói cài đặt bằng wget
Giải nén gói. tar xf seafile-pro-server_8.0.4_x86-64_Ubuntu.tar.gz
Xem tree -L 2 /opt/seafile
Chạy tập lệnh thiết lập.
Quá trình thiết lập Seafile PE giống như Seafile CE. https://manual.seafile.com/deploy/using_mysql/
Thiết lập bộ nhớ đệm
Bộ nhớ đệm là bắt buộc đối với phiên bản pro. Bạn có thể sử dụng Memcached hoặc Reids làm máy chủ bộ nhớ đệm.
Sử dụng Memcached¶
Sử dụng các lệnh sau để cài đặt memcached và các thư viện tương ứng trên hệ thống của bạn:
# on Debian/Ubuntu 18.04+
apt-get install memcached libmemcached-dev -y
pip3 install –timeout=3600 pylibmc django-pylibmc
systemctl enable –now memcached
Thêm cấu hình sau vào seahub_settings.py.
CACHES = {
‘default’: {
‘BACKEND’: ‘django_pylibmc.memcached.PyLibMCCache’,
‘LOCATION’: ‘127.0.0.1:11211’,
},
}
Sử dụng Redis được hỗ trợ kể từ phiên bản 11.0.
Đầu tiên, hãy cài đặt Redis bằng trình cài đặt gói trong hệ điều hành của bạn. Sau đó tham khảo tài liệu của Django về cách sử dụng bộ đệm Redis để thêm cấu hình Redis vào seahub_settings.py https://docs.djangoproject.com/en/4.2/topics/cache/#redis
Nginx trên Debian/Ubuntu
Tạo tệp cấu hình cho seafile trong: nano /etc/nginx/sites-available/seafile.conf
Xóa các tập tin mặc định:
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default
Tạo liên kết tượng trưng: ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
Cấu hình Nginx
theo https://manual.seafile.com/deploy/https_with_nginx/
server {
listen 80;
server_name seafile.example.com;
rewrite ^ https://$http_host$request_uri? permanent; # Forced redirect from HTTP to HTTPS
server_tokens off;
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/cacert.pem; # Path to your cacert.pem
ssl_certificate_key /etc/ssl/privkey.pem; # Path to your privkey.pem
server_name seafile.example.com;
server_tokens off;
# HSTS for protection against man-in-the-middle-attacks
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains”;
# DH parameters for Diffie-Hellman key exchange
ssl_dhparam /etc/nginx/dhparam.pem;
# Supported protocols and ciphers for general purpose server with good security and compatability with most clients
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# Supported protocols and ciphers for server when clients > 5years (i.e., Windows Explorer) must be supported
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
#ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA;
#ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
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_set_header X-Forwarded-Proto https;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
proxy_read_timeout 1200s;
client_max_body_size 0;
}
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;
}
location /media {
root /home/user/haiwen/seafile-server-latest/seahub;
}
}
Cuối cùng, hãy đảm bảo seafile.conf của bạn không chứa lỗi cú pháp và khởi động lại Nginx để những thay đổi cấu hình có hiệu lực:
nginx -t
nginx -s reload
Tải lên tệp lớn
Mẹo để tải lên các tệp rất lớn (> 4GB): Theo mặc định, Nginx sẽ đệm phần thân yêu cầu lớn trong tệp tạm thời. Sau khi phần thân được nhận hoàn toàn, Nginx sẽ gửi phần thân đến máy chủ thượng nguồn (trong trường hợp của chúng tôi là seaf-server). Nhưng có vẻ như khi kích thước tệp rất lớn, cơ chế đệm không hoạt động tốt. Nó có thể dừng proxy phần thân ở giữa. Vì vậy, nếu bạn muốn hỗ trợ tải lên tệp lớn hơn 4GB, chúng tôi khuyên bạn nên cài đặt Nginx phiên bản >= 1.8.0 và thêm các tùy chọn sau vào tệp cấu hình Nginx:
location /seafhttp {
… …
proxy_request_buffering off;
}
Nếu bạn đã bật WebDAV, bạn nên thêm lệnh sau:
location /seafdav {
… …
proxy_request_buffering off;
}
Bài viết liên quan: