Seafile là phần mềm đám mây riêng cung cấp các tính năng tương tự như Dropbox, mega.co.nz và các tính năng khác, chỉ được lưu trữ trên máy chủ của riêng bạn. Seafile dựa trên ngôn ngữ lập trìnhpython và được phát hành theo giấy phépmã nguồn mở để bạn có thể tạo đám mây riêng của mình và đám mây này sẽ an toàn hơn nhiều.
Seafile hỗ trợ mã hóa để lưu trữ dữ liệu của bạn một cách an toàn. Để mã hóa các tệp trong thư viện lưu trữ, bạn cần đặt mật khẩu khi tạo thư viện. Mật khẩu sẽ không được lưu trữ trong đám mây Seafile. Vì vậy, ngay cả người quản trị máy chủ cũng không thể xem dữ liệu được mã hóa của bạn nếu không có mật khẩu.
Trong hướng dẫn này, tôi sẽ cài đặt Seafile trên CentOS 7 với máy chủ web Nginx và MariaDB làm máy chủ cơ sở dữ liệu.
Chỉnh sửa tệp cấu hình SELinux bằng vim.
Thay thế giá trị 'enforcing' bằng 'disabled'.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Khởi động lại máy chủ để áp dụng thay đổi của chính sách SELinux.
Chờ máy chủ khởi động lại, sau đó đăng nhập lại vào máy chủ của bạn với tư cách là người dùng root.
Kiểm tra selinux bằng lệnh bên dưới:
Bạn sẽ thấy 'Disabled' là kết quả.
Trong bước này, chúng ta sẽ cài đặt một số gói python, MariaDB và Nginx. Chúng ta bắt đầu bằng việc cài đặt kho lưu trữ EPEL trên máy chủ CentOS của mình.
Tiếp theo, cài đặt python các gói MariaDB và Nginx.
Chờ cho đến khi tất cả các gói được cài đặt.
Khởi động MariaDB và cấu hình mật khẩu gốc bằng các lệnh bên dưới:
Nhập mật khẩu gốc của bạn.
Mật khẩu root của MariaDB đã được định cấu hình và chúng ta có thể đăng nhập vào shell mysql ngay bây giờ.
Lưu ý: Shell dòng lệnh MariaDB có tên là mysql.
Chúng ta sẽ tạo 3 cơ sở dữ liệu cho seafile:
Đăng nhập vào shell mysql bằng máy khách mysql.
Chạy các truy vấn mysql bên dưới để tạo cơ sở dữ liệu và người dùng cho cài đặt seafile.
Thay yourpassword trong các lệnh trên bằng mật khẩu của riêng bạn.
Chúng ta sẽ cài đặt seafile dưới người dùng nginx trong thư mục '/var/www/seafile', tạo thư mục đó và nhập vào bằng lệnh cd.
Tải xuống Seafile bằng lệnh wget và giải nén tệp đã tải xuống.
Đổi tên thư mục thành 'seafile-server' và chuyển đến thư mục đó.
Thực thi tệp 'setup-seafile-mysql.sh' để cấu hình cơ sở dữ liệu.
Nhấn Enter và bạn sẽ được yêu cầu cung cấp thông tin bên dưới:
Bây giờ chúng ta có thể khởi động các dịch vụ seafile và seahub.
Khi tệp seahub.sh được thực thi, chúng ta sẽ được yêu cầu cấu hình quản trị viên.
Nhập email và mật khẩu quản trị viên của bạn, sau đó dịch vụ seahub sẽ chạy.
Seafile đã được cài đặt và đang chạy, chúng ta có thể truy cập Seafile từ trình duyệt web với IP máy chủ trên cổng 8000 (trong trường hợp của tôi - 192.168.1.115:8000), nhưng chúng ta sẽ không thực hiện ngay bây giờ vì chúng ta sẽ sử dụng proxy ngược cho máy chủ seafile và chúng ta sẽ chạy seafile với tệp dịch vụ systemd.
Vì vậy, chúng ta cần dừng dịch vụ seafile và seahub ngay bây giờ.
Tiếp theo, hãy chuyển đến thư mục systemd và tạo tệp seafile.service bằng vim:
Dán cấu hình dịch vụ seafile bên dưới:
Lưu và thoát.
Bây giờ hãy tạo tệp seahub.service mới.
Và dán cấu hình bên dưới.
Lưu và thoát.
Tải lại dịch vụ systemd và khởi động seafile và seahub bằng systemctl.
Đảm bảo không có lỗi và kiểm tra xem dịch vụ seafile và seahub có đang chạy trên cổng 8082 và 8000 không.
Tạo thư mục ssl.
Tạo các tệp chứng chỉ tự ký và tệp dhparam bằng lệnh bên dưới:
Trả lời các chi tiết chứng chỉ theo yêu cầu của OpenSSL như tên, tiểu bang, email, tên miền, v.v. Sau đó, thay đổi quyền của thư mục và tệp chứng chỉ.
Các tệp chứng chỉ SSL đã được tạo.
Đi tới thư mục cấu hình nginx và tạo tệp máy chủ ảo mới cho seafile.
Dán cấu hình máy chủ ảo bên dưới:
Lưu và thoát.
Tôi sẽ sử dụng 'cloud.natsume.co' làm tên miền. Vui lòng thay thế bằng tên miền của riêng bạn trong cấu hình ở trên.
Bây giờ hãy kiểm tra cấu hình Nginx và đảm bảo rằng không có lỗi nào.
Khởi động Nginx bằng lệnh systemctl:
Đảm bảo rằng cổng 80 và 443 có sẵn trong danh sách mà netstat cung cấp:
Tiếp theo, chúng ta phải thêm tên miền vào cấu hình seafile. Vào thư mục seafile và chỉnh sửa tệp cấu hình.
Thay đổi URL dịch vụ thành tên miền của bạn.
Lưu và thoát.
Chỉnh sửa tệp cấu hình seahub.
Ở dòng thứ hai, thêm cấu hình bên dưới:
Thay thế tên miền bằng tên miền của bạn tại đây một lần nữa. Lưu và thoát.
Khởi động lại seafile và thêm tất cả các dịch vụ để bắt đầu khi khởi động:
Khởi động firewalld.
Thêm cổng HTTP và HTTPS vào cấu hình tường lửa bằng lệnh firewall-cmd bên dưới:
Tải lại cấu hình tường lửa và kiểm tra danh sách cổng.
Nhập email và mật khẩu quản trị của bạn và nhấp vào 'Đăng nhập'.
Bảng điều khiển quản trị Seafile:
Xem tệp Seafile.
Seafile với Nginx làm Proxy ngược và SSL đã được cài đặt thành công trên máy chủ CentOS 7.
Seafile hỗ trợ mã hóa để lưu trữ dữ liệu của bạn một cách an toàn. Để mã hóa các tệp trong thư viện lưu trữ, bạn cần đặt mật khẩu khi tạo thư viện. Mật khẩu sẽ không được lưu trữ trong đám mây Seafile. Vì vậy, ngay cả người quản trị máy chủ cũng không thể xem dữ liệu được mã hóa của bạn nếu không có mật khẩu.
Trong hướng dẫn này, tôi sẽ cài đặt Seafile trên CentOS 7 với máy chủ web Nginx và MariaDB làm máy chủ cơ sở dữ liệu.
Điều kiện tiên quyết
- Máy chủ CentOS 7
- Quyền root
Bước 1 - Chuẩn bị CentOS cho Seafile
Đăng nhập vào máy chủ centOS bằng mật khẩu root ssh của bạn.
Mã:
ssh [emailprotected]
NHẬP MẬT KHẨU CỦA BẠN
Mã:
vim /etc/sysconfig/selinux
Mã:
SELINUX=disabled
Khởi động lại máy chủ để áp dụng thay đổi của chính sách SELinux.
Mã:
khởi động lại
Kiểm tra selinux bằng lệnh bên dưới:
Mã:
getenforce
Bước 2 - Cài đặt Các phụ thuộc của Seafile
Seafile dựa trên python, vì vậy chúng ta cần cài đặt python để cài đặt trước. Seafile hỗ trợ SQLite và cơ sở dữ liệu MySQL/MariaDB, tôi sẽ sử dụng MariaDB làm cơ sở dữ liệu cho seafile ở đây vì nó cung cấp hiệu suất tốt hơn SQLite. Nginx được sử dụng làm proxy ngược cho Seafile và Seahub.Trong bước này, chúng ta sẽ cài đặt một số gói python, MariaDB và Nginx. Chúng ta bắt đầu bằng việc cài đặt kho lưu trữ EPEL trên máy chủ CentOS của mình.
Mã:
yum -y install epel-release
Mã:
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Bước 3 - Cấu hình MariaDB
Ở bước 2, chúng ta đã cài đặt máy chủ MariaDB, chúng ta chỉ cần khởi động dịch vụ và cấu hình mật khẩu gốc ngay bây giờ.Khởi động MariaDB và cấu hình mật khẩu gốc bằng các lệnh bên dưới:
Mã:
systemctl start mariadb
mysql_secure_installation
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
Mã:
Xóa người dùng ẩn danh? [Y/n] Y
Không cho phép đăng nhập root từ xa? [Y/n] Y
Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Lưu ý: Shell dòng lệnh MariaDB có tên là mysql.
Chúng ta sẽ tạo 3 cơ sở dữ liệu cho seafile:
- ccnet_db
- seafile_db
- seahub_db
Đăng nhập vào shell mysql bằng máy khách mysql.
Mã:
mysql -u root -p
NHẬP MẬT KHẨU CỦA BẠN
Mã:
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user seacloud@localhost defined by 'yourpassword';
cấp tất cả các quyền trên ccnet_db.* cho seacloud@localhost defined by 'yourpassword';
cấp tất cả các quyền trên seafile_db.* cho seacloud@localhost defined by 'yourpassword';
cấp tất cả các quyền trên seahub_db.* cho seacloud@localhost defined by 'yourpassword';
cấp tất cả các quyền trên seahub_db.* cho seacloud@localhost defined by 'yourpassword';
flush privileges;
exit
Bước 4 - Cài đặt Seafile
Trong bước này, chúng ta sẽ cài đặt Seafile. Seafile sẽ được thực thi dưới người dùng nginx để chúng ta có thể sử dụng nginx làm proxy ngược cho các dịch vụ seafile và seahub.Chúng ta sẽ cài đặt seafile dưới người dùng nginx trong thư mục '/var/www/seafile', tạo thư mục đó và nhập vào bằng lệnh cd.
Mã:
mkdir -p /var/www/seafile
cd /var/www/seafile
Mã:
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
Mã:
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Mã:
./setup-seafile-mysql.sh
- tên máy chủ - Tôi sẽ sử dụng tên máy chủ 'natsume'
- ip hoặc tên miền của máy chủ - địa chỉ ip của máy chủ, trong trường hợp của tôi là '192.168.1.115'
- thư mục dữ liệu mặc định - chỉ cần nhấn Enter
- cổng mặc định - nhấn Enter
- Bây giờ đối với cấu hình cơ sở dữ liệu, hãy chọn số 2
- sử dụng máy chủ bị lỗi - localhost
- cổng mặc định - 3306
- người dùng mysql - 'seacloud'
- và mật khẩu là 'yourpassword'
- cơ sở dữ liệu ccnet là 'ccnet_db'
- cơ sở dữ liệu seafile là 'seafile_db'
- cơ sở dữ liệu seahub là 'seahub_db'
Bây giờ chúng ta có thể khởi động các dịch vụ seafile và seahub.
Mã:
./seafile.sh start
./seahub.sh start
Nhập email và mật khẩu quản trị viên của bạn, sau đó dịch vụ seahub sẽ chạy.
Seafile đã được cài đặt và đang chạy, chúng ta có thể truy cập Seafile từ trình duyệt web với IP máy chủ trên cổng 8000 (trong trường hợp của tôi - 192.168.1.115:8000), nhưng chúng ta sẽ không thực hiện ngay bây giờ vì chúng ta sẽ sử dụng proxy ngược cho máy chủ seafile và chúng ta sẽ chạy seafile với tệp dịch vụ systemd.
Vì vậy, chúng ta cần dừng dịch vụ seafile và seahub ngay bây giờ.
Mã:
./seafile.sh stop
./seahub.sh stop
Bước 5 - Cấu hình dịch vụ Seafile và Seahub
Chúng ta sẽ chạy seafile với tư cách là người dùng nginx, vì vậy chúng ta cần thay đổi chủ sở hữu của thư mục cài đặt seafile và thư mục seahub_cache thành người dùng nginx:
Mã:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Mã:
cd /etc/systemd/system/
vim seafile.service
Mã:
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Bây giờ hãy tạo tệp seahub.service mới.
Mã:
vim seahub.service
Mã:
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Tải lại dịch vụ systemd và khởi động seafile và seahub bằng systemctl.
Mã:
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Mã:
netstat -plntu
Bước 6 - Tạo tệp chứng chỉ SSL
Đối với hướng dẫn này, chúng tôi sẽ chạy seafile qua proxy Nginx và Nginx sẽ cung cấp kết nối an toàn (HTTPS) để bảo mật dữ liệu. Chúng tôi có thể sử dụng tệp chứng chỉ SSL miễn phí hoặc chứng chỉ SSL trả phí, điều này không quan trọng đối với cấu hình. Ở bước này, tôi sẽ tạo một tệp chứng chỉ SSL tự ký bằng OpenSSL trong thư mục '/etc/nginx/ssl'.Tạo thư mục ssl.
Mã:
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Mã:
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Mã:
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
Bước 7 - Cấu hình Nginx làm Proxy ngược
Trong bước này, chúng ta sẽ cấu hình Nginx làm proxy ngược cho seafile-server trên cổng 8000 và 8002.Đi tới thư mục cấu hình nginx và tạo tệp máy chủ ảo mới cho seafile.
Mã:
cd /etc/nginx/
vim conf.d/seafile.conf
Mã:
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AE S256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256: DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES 256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param TỆP_KỆ_KỆ_TẬP_TIN_KỸ THUẬT $document_root$fastcgi_script_name;
fastcgi_param THÔNG TIN_ĐƯỜNG_DỮ_LỆNH_CHỦ_TÀI_LỆNH_SERVER $server_protocol;
fastcgi_param CHUỖI_HỎI $query_string;
fastcgi_param PHƯƠNG THỨC_YÊU_CẦU $request_method;
fastcgi_param KIỂU_NỘI_DUNG $content_type;
fastcgi_param CHIỀU DÀI_NỘI_DUNG $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Proxy ngược cho seahub
vị trí /seafhttp {
viết lại ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000 giây;
proxy_read_timeout 36000 giây;
proxy_send_timeout 36000 giây;
send_timeout 36000 giây;
}
#ĐỔI ĐƯỜNG DẪN NÀY BẰNG THƯ MỤC RIÊNG CỦA BẠN
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Tôi sẽ sử dụng 'cloud.natsume.co' làm tên miền. Vui lòng thay thế bằng tên miền của riêng bạn trong cấu hình ở trên.
Bây giờ hãy kiểm tra cấu hình Nginx và đảm bảo rằng không có lỗi nào.
Mã:
nginx -t
Mã:
systemctl start nginx
Mã:
netstat -plntu
Tiếp theo, chúng ta phải thêm tên miền vào cấu hình seafile. Vào thư mục seafile và chỉnh sửa tệp cấu hình.
Mã:
cd /var/www/seafile/
vim conf/ccnet.conf
Mã:
SERVICE_URL = https://cloud.natsume.co
Chỉnh sửa tệp cấu hình seahub.
Mã:
vim conf/seahub_settings.py
Mã:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Khởi động lại seafile và thêm tất cả các dịch vụ để bắt đầu khi khởi động:
Mã:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Bước 8 - Cấu hình FirewallD
Ở bước 7, chúng tôi đã cấu hình Nginx để sử dụng cổng HTTP và HTTPS. Bây giờ chúng ta phải mở các cổng đó trong Tường lửa bằng cách thêm chúng vào firewalld.Khởi động firewalld.
Mã:
systemctl start firewalld
systemctl enable firewalld
Mã:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Mã:
firewall-cmd --reload
firewall-cmd --list-all
Bước 9 - Kiểm tra Seafile
Mở trình duyệt của bạn, nhập tên miền seafile, trong trường hợp của tôi làcloud.natsume.co và bạn sẽ được chuyển hướng đến kết nối https.Nhập email và mật khẩu quản trị của bạn và nhấp vào 'Đăng nhập'.
Bảng điều khiển quản trị Seafile:
Xem tệp Seafile.
Seafile với Nginx làm Proxy ngược và SSL đã được cài đặt thành công trên máy chủ CentOS 7.