Cài đặt Alist trên Docker

Ý tưởng ban đầu của mình về bài này là cấu hình Alist SSL tự động qua Caddy, không sử dụng Cloudflare proxy để tránh giới hạn upload file 100MB khi upload thẳng lên Alist

Sau 1 thời gian sử dụng, mình thấy nhu cầu cần upload thẳng lên Alist không nhiều, đa phần mình cũng chỉ upload các file 1-5MB, cần upload gì vào thẳng tài khoản Google Drive, OneDrive upload còn nhanh hơn 😛

Quan trọng, ông nào dùng Alist thì thường share các thứ không có bản quyền cả, để lộ trần IP VPS khá là rủi ro (dù thực tế trên VPS không chứa bất cứ cái gì)

Nên cuối cùng, chốt lại, hiệu quả, an toàn nhất, vẫn là cấu hình Alist chạy trên Docker, sử dụng Cloudflare Tunnels làm proxy

Các cấu hình cài đặt bên dưới dựa trên VPS Oracle VM.Standard.E2.1.Micro, OS Ubuntu 22.04

Cài đặt VPS

sudo apt update && sudo apt upgrade -y

locale-gen en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

sudo apt remove iptables-persistent -y
sudo ufw disable
sudo iptables -F

timedatectl set-timezone Asia/Ho_Chi_Minh
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
sudo systemctl start docker
sudo systemctl enable docker
apt install docker-compose -y

sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/NeverIdle-Oracle/master/VM.Standard.E2.1.Micro.sh -O /usr/local/bin/bypass_oracle.sh
chmod +x /usr/local/bin/bypass_oracle.sh
nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- &
crontab -l > bypass_oracle
echo "@reboot nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- &" >> bypass_oracle
crontab bypass_oracle

Các bước bao gồm cập nhập Ubuntu, tắt firewall, tạo 4G RAM ảo, cài đặt docker, docker-compose và bypass Oracle

Nếu bạn dùng VPS hãng khác, đã cài docker, docker-compose thì không cần làm bước trên 

Cài đặt Alist Docker

  • Nên cài đặt Alist vào 1 thư mục con, để sau này backup, restore cho tiện
mkdir alist
cd alist
nano docker-compose.yaml
  • Nội dung bên trong điền vào
version: '3.3'
services:
    alist:
        restart: always
        volumes:
            - './data:/opt/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        container_name: alist
        image: 'xhofe/alist:latest'
  • Ctrl+O -> Enter -> Ctrl+X để save và exit.

Tiếp theo chạy lệnh bên dưới để hoàn thành cài đặt

docker-compose up -d --build --remove-orphans --force-recreate

Cấu hình mình đang để ở trên mặc định sẽ dùng phiên bản Alist ổn định mới nhất ‘xhofe/alist:latest‘ (đoạn code dòng 14) , trong trường hợp bạn muốn dùng 1 phiên bản cụ thể nào đó, thì chỉ cần sửa latest sang mã khác

Ví dụ ‘xhofe/alist:v3.26.0‘ hoặc ‘xhofe/alist:main

Phiên bản latest mới nhất ở thời điểm mình viết lại bài này là v3.29.1, không rõ ngon hơn bản cũ không, bản mình dùng nhiều tháng nay là v3.26.0, chạy rất ổn định

  • Để lấy password admin, chạy lệnh bên dưới
docker exec -it alist ./alist admin random
INFO[2023-08-12 20:37:19] admin user has been updated:
INFO[2023-08-12 20:37:19] username: admin
INFO[2023-08-12 20:37:19] password: Ij0bAUPI
  • Cloudflare Zero Trust ->Networks -> Tunnels -> Create a tunnel -> đặt 1 tên cho dễ nhớ (FILE.BIBICA.NET) -> Install and run a connector
  • Sau đó tạo Public hostnames file.bibica.net tới localhost:5244

Cài đặt Alist trên Docker

Lúc này bạn có thể truy cập vào file.bibica.net với tài khoản username: admin, password: Ij0bAUPI

Việc cấu hình storage thì bạn có thể tham khảo thêm tại bài viết gốc 😀

Upgrade

Mặc định khi bạn dùng 1 phiên bản thấy tốt, có thể tiếp tục duy trì, nếu thấy bản mới có 1 số tính năng cần hay sửa các lỗi bảo mật …. chạy ít lệnh bên dưới để cập nhập là được

cd alist/
docker compose pull && docker compose up -d

Backup và Restore

Cấu hình docker bên trên đã tự đưa data Alist vào bên trong thư mục alist

Cài đặt Alist trên Docker

Backup hàng ngày, chỉ cần copy nguyên cái thư mục alist về là xong

Muốn chuyển sang server mới thì upload thư mục alist lên rồi chạy lại docker và Cloudflare Tunnels là xong, rất tiện

Tùy chỉnh kích thước phụ đề

Mặc định Alist hỗ trợ xem video với phụ đề đi kèm

Cài đặt Alist trên Docker

Đặt tên file phụ đề trùng với với file video là nó tự hiểu để auto load ra, vấn đề là Alist lại không quản lý kích thước phụ đề, đâm ra coi ở màn hình nhỏ thì cũng được, chứ phóng full size màn hình ra thì lại bé tẹo

Ơn trời là trong thảo luận của Alist cũng có người gặp tình huống này, nên làm theo là được

Từ Settings -> Global -> Customize head thêm vào đoạn css bên dưới

<style>
/* Căn giữa video trên trang */
.art-video {
  display: block;
  margin-left: auto;
  margin-right: auto;
  max-width: 100%; /* Đảm bảo video không vượt quá chiều rộng của màn hình */
  position: relative; /* Để phụ đề có thể căn theo vị trí */
}

/* Phụ đề sẽ căn giữa và có khoảng cách dưới video */
.art-subtitle {
  text-align: center; /* Căn giữa phụ đề */
  position: absolute;
  bottom: 10%; /* Điều chỉnh khoảng cách từ đáy video */
  width: 100%;
  color: white;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); /* Thêm bóng đổ cho chữ dễ đọc */
}
</style>

<script>
  // Hàm để cập nhật font-size phụ đề dựa trên chiều rộng của video
  function updateSubtitleFontSize() {
    const videoElement = document.querySelector('.art-video');
    const subtitleElement = document.querySelector('.art-subtitle');

    if (videoElement && subtitleElement) {
      // Lấy chiều rộng của .art-video
      const videoWidth = videoElement.offsetWidth;

      // Tính toán font-size phụ đề dựa trên chiều rộng của .art-video (tỷ lệ 3%)
      const fontSize = videoWidth * 0.03;  // Font size là 3% chiều rộng video

      // Áp dụng font-size vào phụ đề
      subtitleElement.style.fontSize = fontSize + 'px';
    }
  }

  // Cập nhật kích thước phụ đề khi trang được tải và khi thay đổi kích thước cửa sổ
  function onResize() {
    requestAnimationFrame(updateSubtitleFontSize);  // Đảm bảo cập nhật mượt mà khi thay đổi kích thước
  }

  // Đảm bảo kích thước được cập nhật khi trang tải xong và khi thay đổi kích thước cửa sổ
  window.addEventListener('load', updateSubtitleFontSize);
  window.addEventListener('resize', onResize);
</script>

Không hẳn là quá hoàn hảo ở mọi tình huống thay đổi kích thước màn hình, tạm khi coi ở thiết bị to hay nhỏ, font của phụ đề nó cũng đủ nhìn


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!