Cách host và chia sẻ file lớn trực tuyến với PicoShare trong Linux

Picoshare là một ứng dụng web chia sẻ file nhẹ và có khả năng truy cập cao dành cho Linux. Nó cung cấp một giao diện dễ sử dụng, nơi bạn có thể upload và chia sẻ file từ máy chủ của riêng mình. Bài viết này sẽ hướng dẫn bạn cách cài đặt Picoshare và chia sẻ file trực tuyến bằng Docker trong Ubuntu Linux.

Cài đặt các điều kiện tiên quyết cho PicoShare

Giả định: Hướng dẫn này được thực hiện trên máy Ubuntu 24.04 có ít nhất 2GB RAM và 50GB dung lượng ổ đĩa. Bạn sẽ cần phải có một tên miền để có thể tạo bản ghi “A” cho domain đó. Cuối cùng, bài viết này sẽ sử dụng DigitalOcean Spaces cho backend lưu trữ đối tượng tương thích với S3.

Lưu ý: Mặc dù các hướng dẫn ở đây dành cho Ubuntu nhưng chúng cũng áp dụng được cho hầu hết các bản phân phối Linux.

Bước đầu tiên trong việc cài đặt PicoShare là chuẩn bị cả Docker và Nginx cho hệ thống máy chủ (đối với các bản phân phối Linux khác, đây là cách cài đặt Docker trên hệ thống Linux). Để bắt đầu, hãy lấy signing key cho kho lưu trữ của dự án Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Tạo file kho lưu trữ apt mới bằng trình soạn thảo văn bản yêu thích:

sudo nano /etc/apt/sources.list.d/docker.list

Dán dòng code sau vào file kho lưu trữ mới:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

Lưu file kho lưu trữ, sau đó cập nhật cả danh sách kho lưu trữ của hệ thống và các gói hiện tại của nó:

sudo apt update && sudo apt upgrade

Cài đặt Docker, Docker Compose và Nginx bằng apt trong Ubuntu:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx

Tạo bản sao lưu lưu trữ đám mây cho PicoShare

Đi tới nhà cung cấp bộ nhớ đám mây tương thích với S3, sau đó tạo bucket bộ nhớ mới. Trường hợp này đang sử dụng DigitalOcean Spaces nên hãy nhấp vào Create -> Spaces Object Storage trên màn hình bảng điều khiển.

Vị trí của mục menu "Spaces Object Storage" trong bảng điều khiển DigitalOcean.
Vị trí của mục menu "Spaces Object Storage" trong bảng điều khiển DigitalOcean.

Chọn vị trí Datacenter cho bộ lưu trữ tương thích với S3, sau đó đánh dấu vào hộp kiểm Enable CDN.

Cấu hình vị trí Spaces Bucket và liệu nhóm có sử dụng CDN của DigitalOcean hay không.
Cấu hình vị trí Spaces Bucket và liệu nhóm có sử dụng CDN của DigitalOcean hay không.

Đặt tên cho Spaces Bucket mới, sau đó nhấp vào Create a Spaces Bucket để khởi tạo nhóm đó.

Lời nhắc trong hộp văn bản về tên Spaces và vị trí của nút "Create a Spaces Bucket".
Lời nhắc trong hộp văn bản về tên Spaces và vị trí của nút "Create a Spaces Bucket".

Nhấp vào Copy Icon trên hộp văn bản Origin Endpoint và dán nó vào một file văn bản riêng.

Copy Icon trên trang tổng quan của Spaces.
Copy Icon trên trang tổng quan của Spaces.

Cuộn qua thanh bên trái của bảng điều khiển DigitalOcean, sau đó nhấp vào danh mục API.

Danh mục API trong trang tổng quan.
Danh mục API trong trang tổng quan.

Nhấp vào tab Spaces Keys, sau đó chọn Generate New Key.

Cung cấp tên cho key mới, sau đó nhấp vào Create Access Key.

Sao chép cả “Access Key” và “Secret Key” từ trang và dán vào file văn bản.

Vị trí của Access Key và Secret Key cho Spaces Bucket.
Vị trí của Access Key và Secret Key cho Spaces Bucket.

Cài đặt và chạy PicoShare

Tạo một thư mục mới cho PicoShare bên trong thư mục chính của người dùng, sau đó vào bên trong thư mục đó:

mkdir ~/picoshare && cd ~/picoshare

Sử dụng trình soạn thảo văn bản yêu thích để tạo file Compose cho PicoShare:

nano ./docker-compose.yml

Dán block code sau vào file .yml mới:

version: "3.2"
services:
  picoshare:
    image: mtlynch/picoshare
    environment:
      - PORT=4001
      - PS_SHARED_SECRET=RANDOM PASSWORD HERE
      - LITESTREAM_BUCKET="YOUR BUCKET NAME"
      - LITESTREAM_ENDPOINT="YOUR ORIGIN ENDPOINT HERE"
      - LITESTREAM_ACCESS_KEY_ID="YOUR BUCKET ACCESS ID HERE"
      - LITESTREAM_SECRET_ACCESS_KEY="YOUR BUCKET SECRET HERE"
    ports:
      - 4001:4001
    command: -db /data/store.db
    volumes:
      - ./data:/data

Thay thế giá trị của biến “PS_SHARED_SECRET” bằng mật khẩu ngẫu nhiên và đủ dài. Đây sẽ dùng làm mật khẩu cho giao diện web của PicoShare.

Mật khẩu chia sẻ được tạo ngẫu nhiên cho phiên bản PicoShare.
Mật khẩu chia sẻ được tạo ngẫu nhiên cho phiên bản PicoShare.

Lưu ý: Bạn có thể tạo mật khẩu ngẫu nhiên của riêng mình bằng cách chạy: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1 trên một phiên cuối riêng biệt.

Thay đổi giá trị của biến “LITESTREAM_BUCKET” bằng tên của Spaces Bucket.

Hiển thị giá trị phù hợp cho nhóm tương thích với S3.
Hiển thị giá trị phù hợp cho nhóm tương thích với S3.

Sao chép phần vùng và tên miền của endpoint, sau đó dán phần đó làm giá trị của biến “LITESTREAM_ENDPOINT”.

Định dạng phù hợp cho biến endpoint tương thích với S3.
Định dạng phù hợp cho biến endpoint tương thích với S3.

Thay thế giá trị của cả hai biến “LITESTREAM_ACCESS_KEY_ID” và “LITESTREAM_SECRET_ACCESS_KEY_ID” bằng Access Key và Secret Key của DigitalOcean Spaces bucket.

Access Key và Secret Key cho phiên bản Spaces PicoShare.
Access Key và Secret Key cho phiên bản Spaces PicoShare.

Lưu file docker-compose.yml, sau đó chạy lệnh sau để build và chạy phiên bản PicoShare:

sudo docker compose up -d

Một lưu ý phụ: Bạn cũng có thể sử dụng Docker và Docker Compose để nhanh chóng host máy chủ Minecraft trên Linux.

Bảo mật PicoShare bằng SSL Reverse Proxy

Tại thời điểm này, bạn đã có PicoShare chạy ở cổng 4001 trên máy cục bộ. Để truy cập nó một cách an toàn trên Internet, bạn cần đảm bảo rằng tất cả các kết nối với nó đều được mã hóa qua SSL.

Bắt đầu bằng cách tạo bản ghi “A” mới cho tên miền trỏ đến địa chỉ IPv4 của máy chủ PicoShare. Trường hợp này sẽ tạo bản ghi “A” với giá trị “picoshare”.

Bản ghi DNS "A" cho máy chủ PicoShare.
Bản ghi DNS "A" cho máy chủ PicoShare.

Cài đặt gói snap “core” trên hệ thống Ubuntu:

sudo snap install core

Lấy gói snap certbot từ Electronic Frontier Foundation (EFF):

sudo snap install certbot --classic

Tạo file cấu hình trang Nginx mới bằng trình soạn thảo văn bản yêu thích:

sudo nano /etc/nginx/sites-available/picoshare

Dán block code sau vào file cấu hình trang web:

server {
 
        server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;
 
        location / {
                proxy_pass http://127.0.0.1:4001;
                proxy_http_version 1.1;
                proxy_redirect off;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                client_max_body_size 0m;
        }
}

Lưu file cấu hình trang web, sau đó tạo một symbol link từ thư mục “/etc/nginx/sites-available/” tới thư mục “/etc/nginx/sites-enabled/”:

sudo ln -s /etc/nginx/sites-available/picoshare /etc/nginx/sites-enabled/

Kiểm tra kỹ file cấu hình Nginx xem có lỗi nào không, sau đó khởi động daemon webserver Nginx bằng systemctl:

nginx -t
sudo systemctl enable --now nginx.service
Xác minh cấu hình và lệnh systemctl để khởi động webserver Nginx.
Xác minh cấu hình và lệnh systemctl để khởi động webserver Nginx.

Đăng ký máy chủ PicoShare bằng tiện ích certbot của EFF:

sudo certbot register --agree-tos -m YOUR-EMAIL@ADDRESS.HERE

Tạo chứng chỉ SSL mới trỏ đến tên miền máy chủ:

sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN
Thứ Ba, 25/06/2024 08:10
55 👨 106
0 Bình luận
Sắp xếp theo
    ❖ Linux