1. 项目概述
AList作为一款开源的网盘聚合工具,能够将市面上常见的网盘服务(如115、夸克等)整合到一个统一的界面中管理。对于需要频繁切换不同网盘服务的用户来说,这无疑是个效率神器。而Docker作为轻量级的容器化解决方案,其"一次构建,处处运行"的特性完美解决了环境依赖的痛点。
在实际工作中,我发现很多团队在部署AList时都会遇到环境配置复杂、依赖冲突等问题。通过Docker部署不仅能规避这些麻烦,还能实现快速迁移和版本回滚。本文将分享我在三台不同云服务商(阿里云、京东云、火山云)上部署AList的实战经验,包含从镜像选择到安全加固的全流程。
提示:本文操作基于CentOS 7.6系统,但同样适用于其他Linux发行版。所有命令均已实测通过,遇到报错可参考第4章的问题排查部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具选型
2.1 云服务器基础配置
建议选择至少1核2G的配置(阿里云t5实例实测流畅运行)。内存低于1G时,AList在加载大量文件时可能出现OOM错误。系统盘建议20G以上,因为Docker默认将镜像存储在系统分区。
对于网络环境:
- 国内服务器推荐阿里云/腾讯云(延迟低)
- 国际业务可选AWS Lightsail(带宽稳定)
- 测试环境可用京东云/华为云的体验套餐
bash复制# 查看系统资源(确认配置符合要求)
free -h
df -h
2.2 Docker安装与优化
不同Linux发行版的安装方式略有差异。以下是针对CentOS的优化安装步骤:
bash复制# 卸载旧版本(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像仓库(国内加速)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker-CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 配置镜像加速(必须)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:若出现"virtualization support not detected"错误,需进入BIOS开启VT-x/AMD-V虚拟化支持。云服务器通常已预开启,本地虚拟机需检查设置。
3. AList容器化部署实战
3.1 镜像选择与拉取
官方提供了两种镜像:
xhofe/alist:latest:最新版(可能不稳定)xhofe/alist:v3.x.x:稳定版本
推荐使用指定版本号的方式部署生产环境:
bash复制# 拉取稳定版镜像(以v3.16.0为例)
docker pull xhofe/alist:v3.16.0
# 查看镜像详情
docker inspect xhofe/alist:v3.16.0
3.2 数据持久化配置
AList需要持久化存储的数据包括:
- 配置文件:
/opt/alist/data/config.json - 数据库:
/opt/alist/data/data.db - 缓存文件:
/opt/alist/data/cache
推荐使用volume挂载方式:
bash复制# 创建数据目录
mkdir -p /opt/alist/data
# 设置目录权限(重要!)
chmod -R 777 /opt/alist/data
# 启动容器(基础版)
docker run -d \
--restart=always \
-v /opt/alist/data:/opt/alist/data \
-p 5244:5244 \
-e PUID=0 \
-e PGID=0 \
--name=alist \
xhofe/alist:v3.16.0
3.3 高级配置示例
3.3.1 绑定域名与HTTPS
配合Nginx实现域名访问:
nginx复制server {
listen 80;
server_name alist.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5244;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 证书配置(需先申请)
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
3.3.2 挂载额外存储
示例:挂载115网盘和本地NAS:
bash复制docker run -d \
--restart=always \
-v /opt/alist/data:/opt/alist/data \
-v /mnt/nas:/mnt/nas \
-p 5244:5244 \
-e PUID=0 \
-e PGID=0 \
--name=alist \
xhofe/alist:v3.16.0
然后在AList后台添加存储时,本地路径填写/mnt/nas即可。
4. 安全加固与性能调优
4.1 安全防护措施
4.1.1 防火墙配置
bash复制# 仅开放必要端口
iptables -A INPUT -p tcp --dport 5244 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
# 保存规则(CentOS 7)
service iptables save
4.1.2 定期备份方案
创建备份脚本/opt/alist/backup.sh:
bash复制#!/bin/bash
BACKUP_DIR="/opt/alist_backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 备份数据文件
cp /opt/alist/data/config.json $BACKUP_DIR/
cp /opt/alist/data/data.db $BACKUP_DIR/
# 打包并删除7天前备份
tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR
find /opt/alist_backup -type f -mtime +7 -exec rm -f {} \;
添加到crontab:
bash复制0 3 * * * /bin/bash /opt/alist/backup.sh
4.2 性能优化参数
调整容器运行参数:
bash复制docker update \
--memory 1g \
--memory-swap 1.5g \
--cpus 1 \
alist
AList配置文件中可调整:
json复制{
"cache": {
"enable": true,
"expiration": 3600,
"max_size": 100
}
}
5. 常见问题排查实录
5.1 容器启动失败
现象:docker logs alist显示权限错误
解决方案:
bash复制# 重新设置数据目录权限
chown -R 1000:1000 /opt/alist/data
chmod -R 755 /opt/alist/data
# 清理旧容器后重启
docker rm -f alist
docker run ...(原启动命令)
5.2 网盘挂载异常
现象:115网盘显示"刷新失败"
排查步骤:
- 检查AList后台的刷新令牌是否过期
- 确认服务器能访问
api.115.combash复制
curl -v https://api.115.com - 尝试更换API端点(有些地区需要特殊配置)
5.3 高并发下的稳定性问题
优化方案:
- 增加Nginx缓存:
nginx复制proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=alist_cache:10m inactive=60m; location / { proxy_cache alist_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; } - 启用AList的CDN配置
- 对静态资源启用浏览器缓存
6. 版本升级与维护
6.1 平滑升级步骤
bash复制# 停止旧容器
docker stop alist
# 备份数据
cp -r /opt/alist/data /opt/alist/data_backup
# 拉取新镜像
docker pull xhofe/alist:v3.17.0
# 启动新容器(使用相同参数)
docker run -d ...(与原命令一致,修改版本号)
# 验证服务
curl http://localhost:5244
6.2 回滚方案
bash复制# 停止当前容器
docker stop alist
# 恢复备份数据
rm -rf /opt/alist/data
cp -r /opt/alist/data_backup /opt/alist/data
# 启动旧版本容器
docker run -d ...(旧版本启动命令)
在实际运维中,我建议每次升级前使用docker tag保留旧镜像:
bash复制docker tag xhofe/alist:v3.16.0 xhofe/alist:backup
