Hệ thống lưu trữ đám mây viết trên Python – Seafile

Nội dung

    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;
    }

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *