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

Kiểm tra PicoShare và upload lên file đầu tiên

Mở trình duyệt web, sau đó điều hướng đến subdomain để load trang đích PicoShare.

PicoShare đang chạy trên VPS.
PicoShare đang chạy trên VPS.

Nhấp vào nút Log In ở góc trên bên phải của trang.

Cung cấp giá trị “PS_SHARED_SECRET” trên hộp văn bản Passphrase, sau đó nhấp vào Authenticate để đăng nhập.

Lời nhắc đăng nhập cho PicoShare.
Lời nhắc đăng nhập cho PicoShare.

Kiểm tra xem bạn có thể lưu dữ liệu trên máy chủ PicoShare của mình hay không bằng cách nhấp vào nút Upload, sau đó chọn file mẫu qua menu chọn.

Nút Upload trong trang tổng quan
Nút Upload trong trang tổng quan

Sao chép liên kết đầu tiên mà máy chủ trả về cho người dùng mà bạn muốn chia sẻ file của mình.

Liên kết có thể chia sẻ đầu tiên trong phiên bản PicoShare.
Liên kết có thể chia sẻ đầu tiên trong phiên bản PicoShare.

Cho phép người dùng ẩn danh upload file trên PicoShare

Ngoài các nội dung upload lên do người dùng gửi, bạn cũng có thể tạo các liên kết tạm thời cho phép người dùng ẩn danh upload các file riêng lẻ trên máy chủ. Điều này có thể hữu ích nếu có ai đó cần chia sẻ file với bạn nhưng không thể upload file lên dịch vụ đám mây thông thường.

Bắt đầu bằng cách nhấp vào danh mục Guest Links trên trang chủ của PicoShare.

Danh mục "Guest Links" trong trang tổng quan PicoShare.
Danh mục "Guest Links" trong trang tổng quan PicoShare.

Nhấp vào nút Create New ngay phía trên bảng tổng quan liên kết trống.

Cung cấp các chi tiết cơ bản cho liên kết upload dành cho khách. Trường hợp ví dụ sẽ gắn nhãn nó là “MakeTechEasier” và đặt thời hạn sử dụng là Never với giới hạn kích thước file là 100MB và giới hạn tổng thể là 10 lần upload.

Biểu mẫu Create guest link đã hoàn thành.
Biểu mẫu Create guest link đã hoàn thành.

Nhấp vào Create để tạo liên kết khách tạm thời cho phiên bản PicoShare của bạn.

Nhấp vào biểu tượng copy ở phía bên phải của liên kết dành cho khách, sau đó gửi nội dung trong clipboard đến người nhận dự định.

Biểu tượng copy trên màn hình Guest Links
Biểu tượng copy trên màn hình Guest Links

Triển khai và bảo mật PicoShare để chia sẻ file trực tuyến bằng Linux chỉ là bước đầu tiên để lấy lại quyền riêng tư kỹ thuật số trực tuyến của bạn. Tìm hiểu cách bạn có thể tự bảo vệ mình hơn nữa bằng cách host email alias server của riêng bạn bằng SimpleLogin.

Thứ Ba, 25/06/2024 08:12
55 👨 140
0 Bình luận
Sắp xếp theo
    ❖ Linux