欢迎光临
我们一直在努力

从零搭建内网文件共享平台:WebDAV + AList + OnlyOffice 完整部署指南

从零搭建内网文件共享平台:WebDAV + AList + OnlyOffice 完整部署指南

    • 一、系统架构
    • 二、前置要求
      • 服务器配置
      • 需要开放的端口
      • 安装 Docker
      • 配置 Docker 镜像加速器
    • 三、部署 WebDAV 存储服务
      • 创建目录结构
      • 编写 docker-compose.yml
      • 启动服务
      • 获取 AList 初始密码
    • 四、配置 AList 用户与存储
      • 添加 WebDAV 存储
      • 创建角色
      • 创建用户
    • 五、部署 OnlyOffice 文档预览
      • 拉取并启动 OnlyOffice
      • 创建文档预览中转页面
      • 配置 Nginx 提供中转页面服务
    • 六、配置 AList 文档预览
    • 七、用户管理
      • 添加新用户
      • 删除用户
    • 八、常用运维命令
    • 九、常见问题
    • 十、注意事项

本文介绍如何在本地服务器(Ubuntu)上,通过 Docker 容器化方式部署 WebDAV 存储服务、AList 网盘前端和 OnlyOffice 文档预览服务,实现一套完整的内网文件共享平台,支持多用户隔离、文件上传下载、在线预览 Office 文档等功能。


在这里插入图片描述

一、系统架构

整套方案由四个核心组件构成:

用户浏览器
↓ HTTP :5244
AList(网页界面 + 用户权限管理)
↓ WebDAV 协议 :80
bytemark/webdav(文件存储服务)
↓ 读写文件
/data/webdav/data(宿主机磁盘)

OnlyOffice(文档预览服务,独立运行)
↑ Nginx 提供中转页面 :8081
AList Iframe 预览调用

各组件职责如下:

  • WebDAV:负责文件的实际存储与读写,基于 Apache HTTP Server,支持标准 WebDAV 协议
  • AList:提供漂亮的网页界面、用户管理、角色权限控制、文件分享链接等功能
  • OnlyOffice:提供 Word、Excel、PowerPoint 等 Office 文档的在线预览能力
  • Nginx:为 OnlyOffice 提供中转页面服务,桥接 AList 和 OnlyOffice

二、前置要求

服务器配置

项目要求
操作系统 Ubuntu 20.04 / 22.04
CPU 2 核以上
内存 4GB 以上(OnlyOffice 占用较多)
磁盘 50GB 以上(根据存储需求调整)
网络 与用户终端在同一局域网

需要开放的端口

端口用途
5244 AList 网页访问
8081 OnlyOffice 中转页面
8088 OnlyOffice 文档服务(内部)

安装 Docker

# 使用阿里云镜像源安装(国内服务器推荐)
apt-get update
apt-get install -y ca-certificates curl gnupg

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \\
gpg –dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \\
https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
| \\
tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

systemctl enable docker && systemctl start docker

配置 Docker 镜像加速器

国内服务器拉取镜像速度慢,建议提前配置加速器:

cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF

systemctl daemon-reload
systemctl restart docker


三、部署 WebDAV 存储服务

创建目录结构

# 主数据目录
mkdir -p /data/webdav/data
mkdir -p /data/alist/data

# 用户目录(根据实际用户数量调整)
mkdir -p /data/webdav/data/公共区域
mkdir -p /data/webdav/data/张三
mkdir -p /data/webdav/data/李四
mkdir -p /data/webdav/data/王五

# 设置权限(WebDAV 容器内用户 uid=82)
chown -R 82:82 /data/webdav/data/

编写 docker-compose.yml

mkdir -p /data/webdav
cat > /data/webdav/docker-compose.yml << 'EOF'
version: '3.8'

services:
webdav:
image: bytemark/webdav
container_name: webdav
restart: always
ports:
– "127.0.0.1:8080:80" # 仅本地监听,不对外暴露
environment:
AUTH_TYPE: Basic
USERNAME: admin
PASSWORD: 你的强密码 # 修改为实际密码
volumes:
– /data/webdav/data:/var/lib/dav/data

alist:
image: xhofe/alist:latest
container_name: alist
restart: always
ports:
– "5244:5244"
volumes:
– /data/alist/data:/opt/alist/data
environment:
PUID: 0
PGID: 0
EOF

启动服务

cd /data/webdav
docker-compose up -d

# 验证服务状态
docker-compose ps

# 验证 WebDAV 可用
curl -u admin:你的强密码 http://localhost:8080/
# 返回文件列表则正常

获取 AList 初始密码

docker logs alist 2>&1 | grep -i password
# 如果没有输出,直接重置
docker exec -it alist ./alist admin set Admin123456


四、配置 AList 用户与存储

添加 WebDAV 存储

浏览器访问 http://服务器IP:5244,用 admin 账号登录后台。

进入 管理 → 存储 → 添加,为每个用户添加两个存储:

以张三为例:

私人目录存储:

字段值
驱动 WebDAV
显示文件夹名称(挂载路径) /张三/我的文件
地址 http://webdav:80
用户名 admin
密码 WebDAV 密码
根文件夹路径 /张三

公共区域存储:

字段值
显示文件夹名称(挂载路径) /张三/公共区域
根文件夹路径 /公共区域
其他字段 同上

注意:地址填 http://webdav:80 而不是 localhost,因为两个容器在同一 Docker 网络中,通过容器名互相访问。

按同样方式为李四、王五各添加两个存储,公共区域的根文件夹路径都填 /公共区域,指向同一物理目录。

创建角色

进入 管理 → 角色 → 添加:

角色名称基本路径权限
张三 /张三 全选
李四 /李四 全选
王五 /王五 全选

创建用户

进入 管理 → 用户 → 添加:

用户名密码角色
张三 自定义 张三
李四 自定义 李四
王五 自定义 王五

配置完成后,每个用户登录后只能看到自己的「我的文件」和「公共区域」,实现用户空间隔离。


五、部署 OnlyOffice 文档预览

OnlyOffice 7.2 版本在与 AList 集成方面稳定性最佳,JWT 认证问题较少。

拉取并启动 OnlyOffice

# 使用阿里云镜像仓库的 7.2 稳定版(国内可直接拉取)
docker pull registry.cn-chengdu.aliyuncs.com/software-yxl/onlyoffice:7.2

docker run -it -d \\
-p 8088:80 \\
–restart=always \\
–name onlyoffice \\
registry.cn-chengdu.aliyuncs.com/software-yxl/onlyoffice:7.2

等待约 1-2 分钟初始化,访问 http://服务器IP:8088 看到 OnlyOffice 欢迎页即为成功。

创建文档预览中转页面

AList 无法直接调用 OnlyOffice API,需要一个 HTML 中转页面作为桥梁,负责接收 AList 传来的文档地址,调用 OnlyOffice 渲染显示。

mkdir -p /home/onlyoffice

cat > /home/onlyoffice/view.html << 'EOF'
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>文档预览</title>
<style>
html, body, #placeholder {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="placeholder"></div>
<script type="text/javascript"
src="http://服务器IP:8088/web-apps/apps/api/documents/api.js">
</script>
<script>
function getQueryParamValue(name) {
const searchParams = new URLSearchParams(window.location.search);
return searchParams.get(name);
}

const url = decodeURIComponent(getQueryParamValue("src"));
const fileName = url.substring(
url.lastIndexOf('/') + 1,
url.lastIndexOf('?') != -1 ? url.lastIndexOf('?') : url.length
);
const fileExtension = fileName.split('.').pop();

const docEditor = new DocsAPI.DocEditor("placeholder", {
"document": {
"fileType": fileExtension,
"permissions": {
"edit": false,
"comment": true,
"download": true,
"print": true,
"fillForms": true
},
"title": fileName,
"url": url
},
"editorConfig": {
"lang": "zh-CN",
"mode": "view"
},
"height": "100%",
"type": "desktop"
});
</script>
</body>
</html>
EOF

注意:将 src 中的 服务器IP 替换为实际 IP 地址。

配置 Nginx 提供中转页面服务

# Ubuntu/Debian
apt install -y nginx –fix-missing
systemctl enable nginx –now

# 创建配置文件
cat > /etc/nginx/conf.d/onlyoffice.conf << 'EOF'
server {
listen 8081;
server_name localhost;

location / {
root /home/onlyoffice;
index index.html index.htm;
}
}
EOF

# 验证并重启
nginx -t
systemctl restart nginx


六、配置 AList 文档预览

登录 AList 管理后台,进入 管理 → 设置 → 预览,找到 Iframe 预览 配置项,修改为:

{
"doc,docx,xls,xlsx,ppt,pptx": {
"OnlyOffice": "http://服务器IP:8081/view.html?src=$e_url"
},
"pdf": {
"PDF.js": "https://alist-org.github.io/pdf.js/web/viewer.html?file=$e_url"
},
"epub": {
"EPUB.js": "https://alist-org.github.io/static/epub.js/viewer.html?url=$e_url"
}
}

保存后,点击任意 Office 文档,在「使用…打开」中选择 OnlyOffice 即可在线预览。


七、用户管理

添加新用户

# 1. 服务器创建目录
mkdir -p /data/webdav/data/新用户名
chown -R 82:82 /data/webdav/data/新用户名

然后在 AList 管理后台:

  • 存储 → 添加两个存储(私人目录 + 公共区域)
  • 角色 → 添加角色,基本路径设为 /新用户名,权限全选
  • 用户 → 添加用户,绑定对应角色
  • 删除用户

  • 用户 → 删除该用户
  • 角色 → 删除该角色
  • 存储 → 删除该用户的两个存储
  • 服务器删除目录(可选):
  • rm -rf /data/webdav/data/用户名


    八、常用运维命令

    # 查看所有容器状态
    docker ps

    # 查看日志
    docker logs alist
    docker logs webdav
    docker logs onlyoffice

    # 重启服务
    docker restart alist
    docker restart webdav
    docker restart onlyoffice

    # 重置 AList 管理员密码
    docker exec -it alist ./alist admin set 新密码

    # 修改 WebDAV 密码后重启
    nano /data/webdav/docker-compose.yml
    cd /data/webdav && docker-compose up -d webdav
    # 记得同步更新 AList 所有存储的密码


    九、常见问题

    Q:上传文件报 403 错误?

    检查目录所有者是否为 uid 82:

    ls -la /data/webdav/data/
    chown -R 82:82 /data/webdav/data/

    Q:AList 连接 WebDAV 报 401 错误?

    检查 AList 存储配置中的密码是否与 docker-compose.yml 中的 PASSWORD 完全一致。

    Q:OnlyOffice 预览显示欢迎页而非文档内容?

    检查 view.html 中的 OnlyOffice IP 地址是否正确,以及 Nginx 是否正常运行:

    systemctl status nginx
    curl http://localhost:8081/view.html

    Q:用户看到了其他人的目录?

    检查该用户的角色基本路径是否正确设置,确保每个用户的角色基本路径指向各自独立的目录。

    Q:docker-compose 版本过旧?

    下载新版 docker-compose 并替换:

    # 下载 v2.24.0(可在 Windows 下载后 scp 传到服务器)
    # https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64
    chmod +x docker-compose-linux-x86_64
    mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose


    十、注意事项

    • WebDAV 密码修改后,必须同步更新 AList 中所有相关存储的密码配置
    • 新建用户目录后必须执行 chown -R 82:82,否则 WebDAV 容器无法写入
    • 内网部署环境下,OnlyOffice 只能预览内网可访问的文件,不支持外部链接
    • 生产环境建议为 AList 配置 Nginx + HTTPS,避免密码明文传输
    • 定期备份 /data/webdav/data 和 /data/alist/data 两个目录

    部署完成后,浏览器访问 http://服务器IP:5244 即可使用文件共享平台。

    赞(0)
    未经允许不得转载:171主机测评 » 从零搭建内网文件共享平台:WebDAV + AList + OnlyOffice 完整部署指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址