专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

返回博客首页
OPENLIST Docker 容器化部署指南
2025/12/3Docker,OPENLIST轩辕镜像团队约 23 分钟阅读

OPENLIST Docker 容器化部署指南

OPENLIST是一款基于Gin后端和SolidJS前端开发的多存储文件列表程序,作为AList的分支项目,它继承了文件管理的核心功能并可能提供额外特性。该程序支持多种存储后端集成,包括本地文件系统、云存储服务等,适用于个人或企业构建轻量级文件管理解决方案。

openlistdocker部署教程

本文使用的 Docker 镜像

openlistteam/openlist

🔖 TL;DR(5分钟速览,给有经验的使用者)

  • 测试环境:单容器 docker run + latest 标签,快速验证功能

  • 生产环境:Docker Compose + 固定版本(vX.Y.Z)+ 非特权用户,保障可控性

  • 数据安全:优先用 Docker Volume 持久化,搭配定期规范备份,避免数据丢失

  • 网络策略:Nginx 反向代理 + HTTPS 加密,不直接暴露容器端口到公网,降低攻击面

  • 升级规范:严格遵循「备份 → 停止 → 拉取 → 启动 → 验证」流程,涉及业务需灰度验证

谁适合阅读本文

  • 具备基础 Docker 使用经验的开发者

  • 需要自部署轻量级文件管理服务的中小团队

  • 对数据可控性、服务合规性与可维护性有要求的企业技术人员

定位说明:本文为企业级部署规范说明书,适用于企业内 Wiki、官方镜像文档、技术博客「生产级实践」场景,不适合作为小白入门的「一键部署教程」。

概述

OPENLIST是一款基于Gin后端和SolidJS前端开发的多存储文件列表程序,作为AList的分支项目,继承了文件管理核心功能并提供额外特性。该程序支持本地文件系统、云存储服务等多种存储后端集成,适用于个人或企业构建轻量级文件管理解决方案。

通过Docker容器化部署OPENLIST可实现环境一致性、快速部署和版本隔离等优势。本文档基于「测试环境快速验证+生产环境稳定运行」双视角,详细介绍OPENLIST的Docker部署流程,包括环境准备、镜像拉取、容器配置、功能验证及生产环境优化建议,兼顾新手友好性与企业级规范。

环境准备

Docker环境安装

部署OPENLIST前需确保服务器已安装Docker环境,推荐使用轩辕云提供的一键安装脚本,该脚本适用于主流Linux发行版(Ubuntu/Debian/CentOS/RHEL等):

bash

bash <(wget -qO- https://xuanyuan.cloud/docker.sh)

执行脚本后,系统将自动完成Docker Engine、Docker Compose的安装及配置,无需手动干预。安装完成后,可通过以下命令验证Docker是否正常运行:

bash

docker --version  # 验证Docker引擎版本
docker compose version  # 验证Docker Compose版本
systemctl status docker  # 检查Docker服务状态

镜像准备

镜像信息确认

  • 镜像名称:openlistteam/openlist

  • 标签策略(重要):

    • 测试/体验环境:latest(包含最新功能,可能存在未验证变更,仅用于测试)

    • 生产环境:vX.Y.Z(固定版本标签,如v1.0.0,避免不可控变更,推荐生产使用)

  • 标签列表参考:OPENLIST镜像标签列表

  • 功能描述:多存储支持的文件列表程序,基于Gin后端和SolidJS前端,AList分支项目

镜像拉取命令

测试环境拉取(latest)

bash

docker pull xxx.xuanyuan.run/openlistteam/openlist:latest

生产环境拉取(固定版本,示例)

bash


docker pull xxx.xuanyuan.run/openlistteam/openlist:v4.1.9

验证拉取结果:

拉取完成后,可通过以下命令检查本地镜像:

bash

docker images | grep openlistteam/openlist

预期输出示例:

bash


xxx.xuanyuan.run/openlistteam/openlist   v4.1.9    abc12345   2 weeks ago   500MB
xxx.xuanyuan.run/openlistteam/openlist   latest    def67890   1 day ago    505MB

容器部署

运行用户说明(关键)

OPENLIST镜像默认以root用户运行容器:

  • 测试/内网环境:可直接使用默认配置,简化部署流程;

  • 生产环境:强烈建议使用非特权用户运行,需提前规划宿主机UID/GID(如1001:1001),并确保挂载目录权限与容器用户匹配。

部署模式说明

部署模式适用场景核心特点
单容器直出测试/内网轻量使用快速部署、明文HTTP、无额外依赖
反向代理+HTTPS生产环境加密传输、网络隔离、权限控制、可维护性强

模式一:单容器直出(测试/内网)

基础部署命令(端口重要说明)

⚠️ 注意:OPENLIST的实际监听端口以镜像内EXPOSE配置或官方文档为准,不可仅参考AList默认端口。本文示例使用5244仅作演示,首次启动后需通过docker logs openlist确认实际端口。

bash

docker run -d \
  --name openlist \
  --restart always \
  -p 5244:5244 \  # 宿主机端口:容器端口(需以实际监听端口为准)
  -v /data/openlist:/app/data \  # 持久化存储目录(配置文件、数据等)
  xxx.xuanyuan.run/openlistteam/openlist:latest  # 测试环境用latest,生产需替换为固定版本

参数说明:

  • -d:后台运行容器

  • --name openlist:指定容器名称,便于管理

  • --restart always:容器退出时自动重启,确保服务持续运行

  • -p 5244:5244:端口映射(若容器实际端口非5244,需同步修改)

  • -v /data/openlist:/app/data:持久化挂载,避免数据丢失

自定义配置(可选,环境变量说明)

⚠️ 注意:

以下环境变量仅用于说明 Docker 环境变量的配置方式,截至本文撰写时,OPENLIST 是否支持这些变量需以官方文档为准。若镜像未声明支持,请勿配置,否则可能导致容器启动失败。

bash

docker run -d \
  --name openlist \
  --restart always \
  -p 5244:5244 \
  -v /data/openlist:/app/data \
  -e ADMIN_PASSWORD="your_secure_password" \  # 示例:自定义管理员密码
  -e LOG_LEVEL="info" \  # 示例:日志级别
  xxx.xuanyuan.run/openlistteam/openlist:latest

模式二:生产环境部署(Docker Compose + 反向代理)

1. Docker Compose配置(生产推荐,优化资源限制、健康检查与端口安全)

生产建议:请将docker-compose.yml纳入Git版本管理,并通过CI/CD流水线控制服务部署与升级,避免人工操作失误。

相比docker run,Compose支持版本化管理、配置审计和一键启停,更适合生产环境。创建docker-compose.yml文件:

yaml


version: '3.8'

# 自定义网络,隔离服务
networks:
  openlist-net:
    driver: bridge

# 持久化数据卷
volumes:
  openlist-data:
    driver: local

services:
  openlist:
    image: xxx.xuanyuan.run/openlistteam/openlist:v4.1.9  # 生产环境固定版本
    container_name: openlist
    restart: always
    networks:
      - openlist-net
    volumes:
      - openlist-data:/app/data  # 使用Docker Volume替代宿主机目录,更安全
      # 如需挂载本地存储,需确保权限匹配:- /data/local-storage:/mnt/local:rw
    user: 1001:1001  # 非特权用户运行(需宿主机存在UID/GID=1001的用户)
    # 如仅通过反向代理访问,可删除ports配置,避免服务暴露到宿主机,降低攻击面
    ports:
      - "5244:5244"  # 仅对内网开放,外网通过反向代理访问
    # 资源限制(非Swarm模式兼容写法,替代原deploy.resources)
    mem_limit: 2g
    cpus: 1.0
    # 健康检查(不依赖nc命令,使用原生TCP检测,适配极简镜像)
    healthcheck:
      test: ["CMD-SHELL", "echo > /dev/tcp/localhost/5244 || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
    environment:
      - TZ=Asia/Shanghai  # 必选环境变量,统一时区
      # 其他环境变量需确认镜像支持后添加
      # - ADMIN_PASSWORD="your_secure_password"

  # Nginx反向代理(生产环境HTTPS必备)
  nginx:
    image: nginx:alpine
    container_name: openlist-nginx
    restart: always
    networks:
      - openlist-net
    ports:
      - "80:80"   # 仅用于ACME证书申请,生产可关闭
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d  # 反向代理配置
      - ./nginx/ssl:/etc/nginx/ssl        # HTTPS证书
    depends_on:
      - openlist  # 依赖openlist服务启动

2. Nginx反向代理配置(补充关键Header)

创建./nginx/conf.d/openlist.conf文件:

nginx

server {
  listen 443 ssl http2;
  server_name file.yourdomain.com;  # 替换为你的域名

  # HTTPS证书配置
  ssl_certificate /etc/nginx/ssl/fullchain.pem;
  ssl_certificate_key /etc/nginx/ssl/privkey.pem;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;

  # 关键Header(修复登录/回调/HTTPS判断异常)
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;

  # 反向代理到openlist容器
  location / {
    proxy_pass http://openlist:5244;
    proxy_connect_timeout 30s;
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;
  }
}

# HTTP重定向到HTTPS(可选)
server {
  listen 80;
  server_name file.yourdomain.com;
  return 301 https://$host$request_uri;
}

3. 启动生产环境服务

bash

# 创建目录结构
mkdir -p ./nginx/conf.d ./nginx/ssl
# 启动服务
docker compose up -d
# 查看状态
docker compose ps

部署验证

模式一(单容器)验证

bash

docker ps | grep openlist

若状态为Up,表示启动成功:

bash

abc123456789   xxx.xuanyuan.run/openlistteam/openlist:latest   "/entrypoint.sh"   2 minutes ago   Up 2 minutes (healthy)   0.0.0.0:5244->5244/tcp   openlist

模式二(Compose)验证

bash

docker compose logs openlist | grep "Server started"  # 确认服务启动
docker compose exec nginx nginx -t  # 验证Nginx配置

功能测试

服务访问验证

  1. 单容器模式: 浏览器访问 http://<服务器IP>:5244,若看到OPENLIST登录/首页界面,说明服务部署成功。

  2. 生产模式: 浏览器访问 https://file.yourdomain.com(替换为你的域名),验证HTTPS访问和反向代理是否正常。

  3. 基础功能测试:

    • 登录验证:使用默认/自定义管理员账号登录系统;

    • 存储配置:添加本地/云存储,验证多存储支持;

    • 文件操作:上传、下载、删除文件,检查核心功能;

    • 界面响应:测试页面切换、搜索功能,验证前端交互。

日志验证

若服务无法访问,通过日志排查问题:

bash

# 单容器模式
docker logs openlist
# Compose模式
docker compose logs openlist

关键日志信息:

  • 服务启动日志:Server started on :5244(确认端口监听);

  • 配置加载日志:Loaded config from /app/data/config.json(确认持久化目录正常);

  • 错误日志:port is already in use(端口冲突,需修改映射)。

生产环境建议

数据安全增强

  1. 持久化存储优化:

    • 生产环境优先使用Docker Volume(如Compose示例中的openlist-data),而非直接挂载宿主机目录;

    定期备份数据(规范方式,替代直接修改/etc/crontab):

    bash
    
    # 方式1:使用crontab -e添加定时任务(推荐)
    crontab -e
    # 添加以下内容(每日凌晨2点备份,需提前创建/backup目录)
    # openlist_openlist-data为docker compose自动生成的Volume名称,格式:<项目名>_<Volume名>
    0 2 * * * docker run --rm -v openlist_openlist-data:/source -v /backup:/dest alpine rsync -av /source/ /dest/openlist_$(date +\%Y\%m\%d)/
    
    # 方式2:使用systemd timer(企业级推荐)
    # 参考:https://www.freedesktop.org/software/systemd/man/systemd.timer.html
    
  2. 权限控制:

    严格使用非特权用户运行容器(如UID/GID=1001),并提前配置宿主机目录权限:

    bash
    
    # 若挂载宿主机目录,需匹配容器用户权限
    chown -R 1001:1001 /data/openlist
    chmod 700 /data/openlist
    
    • 避免将敏感目录(如/root、/etc)挂载到容器内。

性能与稳定性优化

  1. 资源限制: 生产环境必须限制容器资源(如Compose示例中的cpus:1.0、mem_limit:2g),避免占用过多系统资源。

  2. 网络优化:

    • 使用Docker自定义网络(如openlist-net)隔离服务,避免端口暴露到公网;

    配置Nginx限流、缓存,提升访问性能:

    nginx
    
    # 在location /中添加
    limit_req_zone $binary_remote_addr zone=openlist:10m rate=10r/s;
    limit_req zone=openlist burst=20 nodelay;
    proxy_cache_valid 200 304 10m;
    

日志管理:

bash

# 单容器模式配置日志轮转
docker run -d \
  --log-driver json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  ...  # 其他参数

特殊环境适配

  • SELinux/AppArmor提示:

若服务器启用SELinux,需为挂载目录添加上下文:

bash

chcon -Rt svirt_sandbox_file_t /data/openlist

若启用AppArmor,需确保Docker配置未限制容器访问挂载目录。

升级流程(生产级SOP)

生产环境升级需遵循「备份→停止→拉取→启动→验证」流程,避免数据丢失:

bash


# 1. 备份数据(关键)
# openlist_openlist-data为docker compose自动生成的Volume名称,格式:<项目名>_<Volume名>
docker run --rm -v openlist_openlist-data:/source -v /backup:/dest alpine rsync -av /source/ /dest/openlist_backup_$(date +\%Y\%m\%d)/

# 2. 停止旧版本服务
docker compose down  # Compose模式
# 单容器模式:docker stop openlist && docker rm openlist

# 3. 拉取新版本镜像(替换为目标版本)
docker pull xxx.xuanyuan.run/openlistteam/openlist:v4.2.0

# 4. 修改配置文件中的镜像版本(Compose模式)
sed -i 's/v1.0.0/v1.0.1/g' docker-compose.yml

# 5. 启动新版本服务
docker compose up -d  # Compose模式
# 单容器模式:重新执行docker run命令(使用新镜像)

# 6. 验证升级结果
# 如涉及业务用户,建议先在测试实例验证新版本,再升级生产环境
docker compose logs openlist | grep "Server started"

数据目录结构说明

OPENLIST的/app/data目录(持久化目录)核心结构:

bash

/app/data/
├── config.json  # 核心配置文件(存储、用户、端口等)
├── logs/        # 应用日志
├── cache/       # 缓存文件
└── storage/     # 存储挂载临时文件

⚠️ 备份时需完整备份该目录,避免配置丢失。

故障排查

常见问题解决

  1. 容器启动后立即退出:

    权限问题:修复挂载目录权限(匹配容器用户UID/GID):

    bash
    
    chown -R 1001:1001 /data/openlist
    
    • 端口冲突:使用netstat -tuln | grep 5244确认端口是否被其他服务占用,若冲突则修改宿主机端口映射(如-p 5245:5244)。
  2. 无法访问Web界面:

    网络检查:确认服务器防火墙开放5244/443端口(以CentOS为例):

    bash
    
    firewall-cmd --add-port=443/tcp --permanent && firewall-cmd --reload
    
    • 容器IP验证:通过docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' openlist获取容器IP,在宿主机执行curl http://<容器IP>:5244验证服务是否正常。
  3. 存储配置后文件不显示:

    • 检查存储路径权限:确保容器对挂载的存储目录有读写权限

    • 查看应用日志:docker logs openlist | grep storage,排查存储配置错误(如访问密钥错误、路径不存在等)。

高级排查工具

进入容器调试:

bash

docker exec -it openlist /bin/sh  # 进入容器命令行

可检查配置文件、依赖库、进程状态等

容器资源监控:

bash

docker stats openlist  # 实时查看CPU、内存、网络IO使用情况

若资源占用异常,可能需优化配置或升级服务器规格

扩展部署(K8s思路)

生产环境大规模部署可使用Kubernetes:

  1. 使用StatefulSet部署OPENLIST,确保数据持久化;

  2. 通过ConfigMap管理配置,Secret存储敏感信息(如管理员密码);

  3. 使用Ingress替代Nginx反向代理,实现HTTPS和负载均衡;

  4. 配置ResourceQuota限制资源,LivenessProbe/ReadinessProbe做健康检查。

(注:K8s完整YAML需根据实际集群配置调整,可参考AList的K8s部署方案适配。)

⚠️ 声明:本节仅提供架构思路,不作为可直接套用的生产YAML模板。

参考资源

  1. 官方文档与镜像信息:

    • 轩辕镜像 - OPENLIST文档(镜像使用说明)

    • OPENLIST镜像标签列表(所有可用版本)

  2. Docker相关工具:

    • Docker官方文档(基础命令与概念)

    • Docker Compose文档(多容器部署工具)

  3. 同类项目参考:

    • AList官方文档(OPENLIST上游项目,配置可参考)

总结

关键点回顾

  1. 版本与用户:生产环境必须使用固定版本标签(如v1.0.0),并以非特权用户运行容器;

  2. 部署模式:测试用单容器直出,生产用Docker Compose + Nginx反向代理 + HTTPS,可删除容器端口映射进一步降低暴露面;

  3. 数据安全:优先使用Docker Volume持久化数据,定期规范备份,明确Volume名称规则避免新手困惑;

  4. 配置严谨性:容器端口需以镜像实际监听为准,资源限制采用非Swarm兼容写法,健康检查不依赖第三方工具,环境变量需确认官方支持后配置。

态度宣言

本文档不追求“一条命令跑起来”的便捷性,而强调可控、可回滚、可审计的生产部署方式,确保服务在企业环境中稳定运行,同时满足合规与运维要求。

后续建议

  • 深入学习OPENLIST官方文档,配置LDAP认证、多用户管理等高级特性;

  • 结合对象存储(S3/OSS)实现大规模文件管理;

  • 配置监控告警(如Prometheus+Grafana),实时监控服务状态。

通过本文档的指导,你可快速完成OPENLIST的测试部署,并按照企业级规范搭建稳定、安全的生产环境,充分发挥其多存储文件列表的核心优势。

免责声明

本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。

用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。

用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。

本免责声明的最终解释权归轩辕镜像官方所有。

最后更新:2026/1/12
轩辕镜像
官方博客
...
openlist-docker
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
咨询镜像拉取问题请 提交工单,官方技术交流群:1072982923
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.