Seafile được biết đến là một hệ thống phần mềm lưu trữ file đa nền tảng, có mã nguồn mở. Các file được lưu trữ trên máy chủ trung tâm, dễ dàng đồng bộ hóa với máy tính và thiết bị di động qua ứng dụng. Các file trên máy chủ Seafile cũng có thể được truy cập trực tiếp qua giao diện web của máy chủ. Bài viết này sẽ hướng dẫn bạn cách đồng bộ và chia sẻ tệp bằng Seafile trên Ubuntu 20.04.
Yêu cầu để đồng bộ và chia sẻ tệp bằng Seafile trên Ubuntu 20.04
Trước khi bắt đầu bạn cần có:
- Một máy chủ Ubuntu 20.04 với ít nhất 2GB RAM. Một tài khoản non-root sudo và một tường lửa.
- Một máy chủ cơ sở dữ liệu MariaDB đã được cài đặt và cấu hình.
- Một máy chủ web Apache với một máy chủ ảo được cấu hình cho tên miền đã đăng ký.
- Một chứng chỉ SSL trên máy chủ của bạn.
- Một tên miền được đăng ký đầy đủ. Trong bài viết này sẽ sử dụng
your_domain.
- Thiết lập 2 bản ghi DNS cho máy chủ:
- Bản ghi A với
your_domain
trỏ đến địa chỉ IP công khai trên máy chủ của bạn. - Bản ghi A với
www.your_domain
trỏ đến địa chỉ IP công khai trên máy chủ của bạn.
- Bản ghi A với
Nếu chưa có máy chủ và tên miền để thực hiện cài đặt Seafile theo hướng dẫn, bạn có thể tham khảo đăng ký dịch vụ VPS và tên miền tại Vietnix.
Hiện tại, Vietnix cung cấp nhiều gói VPS có tốc độ cao, đảm bảo ổn định với cấu hình đa dạng, hỗ trợ nhiều hệ điều hành khác nhau (bao gồm cả Ubuntu). Nếu bạn cần cấu hình tối thiểu 2GB RAM thì có thể lựa chọn các gói Cloud VPS Giá Rẻ 2, VPS BASIC 2, VPS PREMIUM 2, VPS NVME 2 trở lên. Liên hệ ngay với Vietnix để tìm hiểu thêm.
Bước 1: Tạo cơ sở dữ liệu cho các thành phần của Seafile
Để Seafile hoạt động đúng cách cần có ba thành phần sau đây:
- Seahub: Đây là giao diện web của Seafile, được viết bằng Python sử dụng khung Django. Hỗ trợ người dùng truy cập, quản lý và chia sẻ file bằng trình duyệt web.
- Máy chủ Seafile: Tiến trình dịch vụ dữ liệu quản lý việc tải lên, tải xuống và đồng bộ hóa file ban đầu. Bạn không cần tương tác trực tiếp với máy chủ mà sử dụng một trong các chương trình từ máy client hoặc giao diện web Seahub.
- Máy chủ Ccnet: Tiến trình dịch vụ RPC để kích hoạt giao tiếp nội bộ giữa các thành phần khác nhau của Seafile.
Mỗi thành phần sẽ có cách lưu trữ dữ liệu riêng biệt trong từng cơ sở dữ liệu. Ở bước này, bạn sẽ tạo ba cơ sở dữ liệu MariaDB và một tài khoản trước khi tiến hành cài đặt máy chủ.
Trước tiên, SSH bằng máy chủ với tên tài khoản và địa chỉ IP của bạn:
ssh sammy@your_server_ip
Để kết nối đến máy chủ cơ sở dữ liệu MariaDB với vai trò là một quản trị viên (root):
sudo mariadb
Ở MariaDB, bạn có thể sử dụng lệnh SQL sau để tạo cơ sở dữ liệu của tài khoản:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Tạo các cơ sở dữ liệu sau để lưu trữ dữ liệu của ba thành phần Seafile:
ccnetdb
cho máy chủ Ccnet.seahubdb
cho giao diện web Seahub.seafiledb
cho máy chủ tệp Seafile.
Tạo các cơ sở dữ liệu của bạn tại MariaDB.
CREATE DATABASE `ccnetdb` CHARACTER SET = 'utf8';
CREATE DATABASE `seafiledb` CHARACTER SET = 'utf8';
CREATE DATABASE `seahubdb` CHARACTER SET = 'utf8';
Sau đó, cấp cho tài khoản cơ sở dữ liệu của Seafile tất cả các đặc quyền, để truy cập và thực hiện thay đổi trong các cơ sở dữ liệu này:
GRANT ALL PRIVILEGES ON `ccnetdb`.* to `sammy`@localhost;
GRANT ALL PRIVILEGES ON `seafiledb`.* to `sammy`@localhost;
GRANT ALL PRIVILEGES ON `seahubdb`.* to `sammy`@localhost;
Để thoát gõ lệnh sau:
exit
Bước 2: Cài đặt dependencies và tải xuống Seafile
Một số phần của Seafile được viết bằng Python, do đó cần phải bổ sung những yêu cầu cho các module và chương trình Python để nó hoạt động. Trong bước này, bạn sẽ cài đặt các dependencies cần thiết này trước khi tải xuống và giải nén gói máy chủ Seafile.
Trước tiên, cài đặt pip – trình quản lý gói Python. Gói tương ứng trên Debian được gọi là python3-pip
. Bạn có thể cài đặt nó bằng lệnh apt
:
sudo apt install -y python3-pip
Sau khi cài đặt pip, bạn có thể cài đặt các dependencies bổ sung từ Chỉ mục gói Python (PyPI) bằng lệnh pip3
:
pip3 install Pillow captcha django-simple-captcha
Lưu ý: Không cần thiết phải sử dụng sudo
với lệnh cài đặt pip3
ở trên. Những gói này sẽ được cài đặt trong thư mục home của user (ví dụ: sammy
) tại đường dẫn /home/sammy/.local/lib/python3.8/site-packages
và cũng không yêu cầu quyền root.
Seafile sẽ yêu cầu Pillow
, một thư viện thuộc Python để xử lý hình ảnh, captcha
và django-simple-captcha
để cung cấp capcha hỗ trợ cho việc xác thực.
Sau khi bạn đã cài đặt independencies cần thiết, bạn có thể tải xuống gói máy chủ Seafile.
Seafile sẽ tạo các thư mục bổ sung trong quá trình thiết lập. Để dễ sắp xếp, bạn tạo một thư mục mới và chuyển vào đó:
mkdir seafile
cd seafile
Bạn tải phiên bản mới nhất (7.1.4)
của máy chủ Seafile từ trang web bằng cách chạy lệnh sau:
wget https://download.seadrive.org/seafile-server_7.1.4_x86-64.tar.gz
Seafile sẽ điều phối việc tải xuống dưới dạng một tập tin nén tar, nghĩa là bạn cần phải giải nén trước khi tiếp tục. Để giải nén tập tin này, bạn có thể sử dụng lệnh tar
:
tar -zxvf seafile-server_7.1.4_x86-64.tar.gz
Chuyển đến thư mục đã được giải nén:
cd seafile-server-7.1.4
Bước 3: Cấu hình máy chủ Seafile
Seafile cần một số thông tin về cài đặt của bạn trước khi bạn bắt đầu dịch vụ lần đầu tiên. Điều này bao gồm các chi tiết như tên miền và cấu hình cơ sở dữ liệu. Để bắt đầu chuỗi câu hỏi để cung cấp thông tin này, bạn có thể chạy script setup_seafile_mysql.sh
, được bao gồm trong file nén mà bạn giải nén ở bước trước.
Chạy script bằng lệnh bash
:
bash setup-seafile-mysql.sh
Nhấn ENTER
để tiếp tục.
Script sẽ yêu cầu bạn trả lời một loạt các câu hỏi. Nhấn phím ENTER
để sử dụng giá trị đó.
Bài viết này sử dụng Seafile
làm tên máy chủ, nhưng nếu cần thiết bạn có thể thay đổi nó.
What is the name of the server?
It will be displayed on the client. 3 - 15 letters or digits
[ server name ] Seafile
Tiếp theo, hãy nhập tên miền cho ví dụ về Seafile này.
What is the ip or domain of the server?.
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] your_domain
Đối với cổng fileserver, nhấn ENTER
để nhận giá trị mặc định.
Which port do you want to use for the seafile fileserver?
[ default "8082" ]
Nó sẽ xuất hiện thông báo cho phép bạn xác nhận cấu hình cơ sở dữ liệu. Bạn có thể tạo cơ sở dữ liệu mới hoặc sử dụng các cơ sở dữ liệu hiện có để cài đặt. Vì bạn đã tạo các cơ sở dữ liệu cần thiết trong Bước 1, bây giờ hãy chọn tùy chọn 2 ở đây.
-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------
[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
[ 1 or 2 ] 2
Các câu hỏi còn lại sẽ liên quan đến máy chủ cơ sở dữ liệu MariaDB. Bạn chỉ cần cung cấp tên người dùng và mật khẩu của tài khoản mariadb mà bạn đã tạo trong Bước 1. Nhấn ENTER
để nhận các giá trị mặc định cho host
và port
.
What is the host of mysql server?
[ default "localhost" ]
What is the port of mysql server?
[ default "3306" ]
Which mysql user to use for seafile?
[ mysql user for seafile ] sammy
What is the password for mysql user "seafile"?
[ password for seafile ] password
Sau khi cung cấp mật khẩu, script sẽ yêu cầu tên các cơ sở dữ liệu Seafile. Bạn nên sử dụng ccnetdb
, seafiledb
và seahubdb
. Sau đó, script sẽ xác minh xem có kết nối thành công đến cơ sở dữ liệu trước khi tiếp tục hiển thị tóm tắt về cấu hình ban đầu.
Enter the existing database name for ccnet:
[ ccnet database ] ccnetdb
verifying user "sammy" access to database ccnetdb ... done
Enter the existing database name for seafile:
[ seafile database ] seafiledb
verifying user "sammy" access to database seafiledb ... done
Enter the existing database name for seahub:
[ seahub database ] seahubdb
verifying user "sammy" access to database seahubdb ... done
---------------------------------
This is your configuration
---------------------------------
server name: Seafile
server ip/domain: your_domain
seafile data dir: /home/sammy/seafile/seafile-data
fileserver port: 8082
database: use existing
ccnet database: ccnetdb
seafile database: seafiledb
seahub database: seahubdb
database user: sammy
--------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------
Nhập ENTER
để xác nhận.
Output
Generating ccnet configuration ...
done
Successly create configuration dir /home/sammy/seafile/ccnet.
Generating seafile configuration ...
done
Generating seahub configuration ...
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ... done
-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------
run seafile server: ./seafile.sh { start | stop | restart }
run seahub server: ./seahub.sh { start <port> | stop | restart <port> }
-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------
port of seafile fileserver: 8082
port of seahub: 8000
When problems occur, Refer to
https://github.com/haiwen/seafile/wiki
for information.
Vì bạn sẽ khởi chạy Apache trước Seafile, nên việc mở cổng 8082
và 8000
trong tường lửa là không cần thiết, vì vậy bạn có thể bỏ qua phần này của Output.
Bước 4: Cấu hình máy chủ Web Apache
Bạn cần thực hiện cấu hình máy chủ web Apache để chuyển tiếp tất cả các yêu cầu đến Seafile. Sử dụng Apache theo cách này cho phép bạn sử dụng URL mà không cần số cổng. Bên cạnh đó còn cho phép kết nối HTTPS đến Seafile và sử dụng chức năng caching mà Apache cung cấp để tăng hiệu suất.
Để bắt đầu chuyển tiếp yêu cầu, bạn cần kích hoạt module proxy_http
trong cấu hình Apache. Module này cung cấp các tính năng để chuyển tiếp yêu cầu HTTP và HTTPS. Lệnh sau sẽ kích hoạt module:
sudo a2enmod proxy_http
Lưu ý: Trong cài đặt này, rewrite module của Apache và ssl cũng là yêu cầu bắt buộc. Bạn đã kích hoạt các module này trong cấu hình Let’s Encrypt ở bài hướng dẫn Apache thứ hai được nhắc đến trong phần yêu cầu.
Tiếp theo, cập nhật cấu hình máy chủ ảo của your_domain
để chuyển tiếp yêu cầu đến tập tin của máy chủ Seafile và giao diện web Seahub.
Mở tệp cấu hình trong trình chỉnh sửa văn bản:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
Các dòng từ ServerAdmin
đến SSLCertificateKeyFile
là một phần yêu cầu cho cấu hình Apache và Let’s Encrypt ban đầu, mà bạn đã thiết lập ở phần yêu cầu trước đó. Thêm nội dung được đánh dấu, bắt đầu từ Alias
và kết thúc với chỉ thị ProxyPassReverse
:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@your_domain
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain/html
ErrorLog ${APACHE_LOG_DIR}/your_domain-error.log
CustomLog ${APACHE_LOG_DIR}/your_domain-access.log combined
SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Alias /media /home/sammy/seafile/seafile-server-latest/seahub/media
<Location /media>
Require all granted
</Location>
# seafile fileserver
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteEngine On
RewriteRule ^/seafhttp - [QSA,L]
# seahub web interface
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>
</IfModule>
Alias sẽ chỉ thị đường dẫn URL your_domain/media đến một đường dẫn cục bộ trong hệ thống file mà Seafile sử dụng. Sau đó chỉ thị Location
cho phép truy cập vào nội dung trong thư mục này.
Các chỉ thị ProxyPass
và ProxyPassReverse
khiến Apache hoạt động như một máy chủ reverse proxy cho máy chủ này. Nó sẽ chuyển tiếp các yêu cầu đến / và /seafhttp
đến giao diện web và máy chủ tệp Seafile đang chạy trên cổng máy chủ cục bộ lần lượt là 8000
và 8082
. Chỉ thị RewriteRule
chuyển tiếp tất cả các yêu cầu đến /seafhttp
không ngừng thay đổi và xử lý các quy tắc khác ( [QSA,L]
).
Lưu và thoát file.
Kiểm tra xem có bất kỳ lỗi cú pháp nào trong cấu hình máy chủ ảo không bằng cách chạy lệnh:
sudo apache2ctl configtest
Nếu nó hiện lên "Syntax OK"
thì cấu hình của bạn hoạt động bình thường. Khởi động lại Apache để các thay đổi có hiệu lực:
sudo systemctl restart apache2
Bước 5: Cập nhật cấu hình Seafile và khởi động các dịch vụ
Khi bạn sử dụng Apache để chuyển tiếp tất cả các yêu cầu đến Seafile, bạn sẽ cần cập nhật các URL trong các tệp cấu hình của Seafile tại thư mục conf
bằng trình chỉnh sửa văn bản trước khi bạn bắt đầu dịch vụ Seafile. Mở ccnet.conf
trong trình chỉnh sửa văn bản:
nano /home/sammy/seafile/conf/ccnet.conf
Chỉnh sửa cài đặt SERVICE_URL
trong tệp để trỏ đến địa chỉ HTTPS mới mà không cần số cổng, ví dụ:
SERVICE_URL = https://your_domain
Sau khi bạn đã nhập nội dung, lưu và thoát file.
Mở tệp seahub_settings.py
trong trình chỉnh sửa văn bản:
nano /home/sammy/seafile/conf/seahub_settings.py
Bạn hiện có thể thêm cài đặt FILE_SERVER_ROOT
trong tệp, để chỉ định đường dẫn nơi máy chủ tệp đang nghe để tải lên và tải xuống tệp:
SECRET_KEY = "..."
FILE_SERVER_ROOT = 'https://your_domain/seafhttp'
Lưu và thoát file seahub_settings.py
.
Bắt đầu dịch vụ Seafile và giao diện Seahub:
cd /home/sammy/seafile/seafile-server-7.1.4
./seafile.sh start
./seahub.sh start
Vì đây là lần đầu tiên bạn khởi động dịch vụ Seahub, nó sẽ yêu cầu bạn tạo một tài khoản cho quản trị viên. Nhập một địa chỉ email hợp lệ và một mật khẩu cho tài khoản quản trị viên này:
Output
What is the email for the admin account?
[ admin email ] admin@your_domain
What is the password for the admin account?
[ admin password ] password-here
Enter the password again:
[ admin password again ] password-here
----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started
Done.
Mở trình duyệt web và truy cập vào https://your_domain
, sau đó đăng nhập bằng địa chỉ email và mật khẩu quản trị viên tại Seafile của bạn.
Sau khi đăng nhập thành công, bạn có thể truy cập giao diện quản trị hoặc tạo tài khoản mới.
Khi đã xác minh được giao diện web hoạt động đúng cách, bạn có thể bật các dịch vụ này ở chế độ tự động bắt đầu khi khởi động hệ thống ở bước tiếp theo.
Bước 6: Kích hoạt Seafile Server để bắt đầu khi khởi động hệ thống
Để kích hoạt máy chủ tập tin và giao diện web tự động khởi chạy khi khởi động máy. Bạn sẽ cần tạo các tệp dịch vụ systemd
tương ứng và kích hoạt chúng.
Để tạo file dịch vụ systemd
cho máy chủ tập tin Seafile, bạn có thể làm theo các bước sau:
- Mở trình soạn thảo văn bản như Vim hoặc Nano.
- Tạo một tệp mới và đặt tên là seafile.service.
- Thêm nội dung sau vào file:
sudo nano /etc/systemd/system/seafile.service
Thêm nội dung sau vào file:
[Unit]
Description=Seafile
After=network.target mariadb.service
[Service]
Type=forking
ExecStart=/home/sammy/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/sammy/seafile/seafile-server-latest/seafile.sh stop
User=sammy
Group=sammy
[Install]
WantedBy=multi-user.target
Để bắt đầu, các dòng ExectStart
và ExecStop
chỉ ra các lệnh được chạy và dừng dịch vụ Seafile. Dịch vụ sẽ khởi chạy đối với Group
và User
là sammy
. Dòng After
cho biết rằng dịch vụ Seafile
sẽ bắt đầu sau khi dịch vụ mạng và MySQL đã được khởi động.
Lưu file seafile.service
và thoát.
Tạo một file dịch vụ systemd
cho giao diện web Seahub:
sudo nano /etc/systemd/system/seahub.service
Điều này giống như dịch vụ Seafile. Sự khác biệt duy nhất ở đây là giao diện web được khởi động sau dịch vụ Seafile. Bạn hãy thêm nội dung sau vào tệp này:
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/sammy/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/sammy/seafile/seafile-server-latest/seahub.sh stop
User=sammy
Group=sammy
[Install]
WantedBy=multi-user.target
Lưu tệp seahub.service
và thoát.
Cuối cùng, bạn hãy khởi động hệ thống để cho phép dịch vụ Seafile và Seahub khởi động tự động, để làm điều đó bạn cần chạy các lệnh sau:
sudo systemctl enable seafile.service
sudo systemctl enable seahub.service
Khi máy chủ được khởi động lại, Seafile sẽ tự động khởi động.
Bước 7: Kiểm tra tính năng đồng bộ và chia sẻ tệp
Trong bước này, bạn sẽ thử nghiệm chức năng đồng bộ hóa, chia sẻ tệp tin trên máy chủ mà bạn đã thiết lập và đảm bảo chúng hoạt động đúng. Để làm điều này, bạn cần cài đặt chương trình khách ở Seafile trên một máy tính khác hoặc một thiết bị di động.
Truy cập download trên website của Seafile và làm theo hướng dẫn để cài đặt phiên bản mới nhất của chương trình trên máy tính của bạn. Các chương trình client Seafile có sẵn cho các bản phân phối Linux khác nhau (Ubuntu, Debian, Fedora, CentOS / RHEL, Arch Linux), MacOS và Windows. Các chương trình client ở di động có sẵn cho các thiết bị Android và iPhone / iPad từ các cửa hàng ứng dụng tương ứng.
Sau khi đã cài đặt chương trình khách ở Seafile, bạn có thể thử nghiệm chức năng đồng bộ hóa và chia sẻ tệp tin.
Mở chương trình khách ở Seafile trên máy tính hoặc thiết bị của bạn. cho thư mục Seafile là vị trí mặc định thư mục Seafile và nhấp vào Next.
Tiếp theo, nhập địa chỉ máy chủ, tên người dùng và mật khẩu, sau đó nhấp vào Login.
Tại trang chủ, nhấp chuột phải vào My library và nhấp vào Sync this library. Chấp nhận giá trị mặc định cho vị trí trên máy tính hoặc thiết bị của bạn.
Thêm một tệp tin, ví dụ như tài liệu hoặc ảnh, vào thư mục My library. Sau một thời gian, tệp tin sẽ được tải lên máy chủ. Ảnh chụp màn hình sau đây hiển thị tệp photo.jpg đã được sao chép vào thư mục My Library folder.
Bây giờ, đăng nhập vào giao diện web tại https://your_domain
và xác nhận rằng tệp của bạn đã có trên máy chủ.
Nhấn vào nút Share ở bên cạnh tệp để tạo ra một liên kết tải xuống cho tệp này. Trong đó bạn có thể chia sẻ.
Bạn đã đồng bộ hóa tệp và nó đang hoạt động đúng. Ngoài ra, bạn có thể sử dụng Seafile để đồng bộ hóa và chia sẻ tệp và thư mục từ nhiều thiết bị khác nhau.
Bạn cũng có thể tìm hiểu thêm về cách cài đặt Matomo Web Analytics trên Ubuntu 20.04. Matomo là một nền tảng phân tích web rất mạnh mẽ và đa chức năng, cho phép bạn theo dõi và phân tích lưu lượng truy cập trang web của mình một cách chính xác và hiệu quả.
Lời kết
Trên đây là các bước hướng dẫn thực hiện đồng bộ và chia sẻ tệp bằng Seafile trên Ubuntu 20.04. Việc sử dụng Seafile sẽ giúp cho việc quản lý và chia sẻ tệp trở nên dễ dàng và hiệu quả hơn trong môi trường làm việc. Cảm ơn bạn đã theo dõi bài viết. Nếu có điều gì chưa rõ trong quá trình thao tác, bạn có thể để lại bình luận bên dưới để được hỗ trợ.