用 Copyparty 打造一台“全能型”文件服务器

Copyparty是一款极致的“全能型”单文件服务器,让你用一个Python文件就能获得堪比专业网盘的功能。

📦 核心特性一览

类别 功能特性 说明
核心优势 极致轻量 所有功能集成在一个Python文件(约718KB)中,无需安装,随处运行。
全平台兼容 支持 Windows, Linux, macOS, Android (Termux),甚至树莓派。
文件传输与管理 智能上传 支持拖拽上传、断点续传、秒传(基于内容去重)。
批量操作 支持批量重命名、打包下载(zip/tar)。
全文搜索 可搜索文件名、路径、甚至音频文件的ID3标签。
访问协议 多协议支持 除Web界面外,原生支持 WebDAV, FTP, TFTP等,可挂载为网络驱动器。
媒体服务 内置播放器 网页直接播放音视频、浏览图片、阅读PDF/TXT/Markdown。
智能索引 自动为音视频生成缩略图/频谱图,音乐支持锁屏控制。
安全与权限 精细权限控制 可为不同用户、不同文件夹设置读(r)、写(w)、删(d)等权限。
临时分享链接 可生成带密码、有效期和下载次数限制的分享链接。

🚀 快速启动与使用

1. 获取并运行

  • 直接运行:从GitHub或PyPI下载 copyparty-sfx.py 文件。在命令行进入文件所在目录,执行 python copyparty-sfx.py 即可启动。Windows用户也可直接双击运行编译好的 .exe 文件。
  • Docker部署(推荐用于长期运行):执行命令 docker run -d --name copyparty -p 3923:3923 -v /你的/文件路径:/w copyparty/ac

2. 基本访问
启动后,默认在 3923端口 提供服务(若启用了权限,端口可能变化)。在浏览器访问 http://你的IP地址:3923 即可进入Web界面。

3. 基础命令行示例

  • 共享当前目录(只读):python copyparty-sfx.py -v ./public::r:*
  • 创建一个需要账号登录的共享空间:
    python copyparty-sfx.py -v ./team:work:rw:alice -a alice:password123

    • -v 定义共享:将本地 ./team 文件夹映射为虚拟路径 /work,用户 alice 拥有读写权限。
    • -a 创建用户:用户名为 alice,密码为 password123

⚙️ 高级功能与应用

  • 精细权限管理:权限是Copyparty的核心。你可以组合 r(读)、w(写)、d(删)、m(移动)等权限,精确控制每个用户的访问能力。复杂的权限配置建议使用YAML格式的配置文件。
  • 创建临时分享链接:这是共享单个文件的利器。启用上传数据库(--e2d)和文件密钥(--fk)功能后,上传文件时或上传后,可以通过界面按钮生成一个形如 http://.../s/abcd1234/file.zip 的链接,并可为其设置密码(--pw)和有效期(--ttl)。
  • 作为媒体服务器:Copyparty能自动为音乐生成频谱图,为视频生成缩略图。通过启用音频元数据索引(如 -e2ts 参数),你可以在网页播放器中按专辑、艺术家浏览音乐库,并享受锁屏控制等体验。
  • 性能与资源优化:在树莓派等资源受限设备上,可通过参数优化性能,例如禁用缩略图(--no-thumbs)以节省内存,启用重复文件检测(--dedup)以节省存储空间。

💡 使用场景建议

  • 个人/家庭:在NAS或旧电脑上部署,作为全家人的私有云盘和媒体库。
  • 小型团队:为不同项目组创建有权限控制的共享空间,安全地协作和分发文件。
  • 临时共享:快速搭建一个临时的、带密码保护的下载点,用于分享大型文件给客户或朋友。
  • 移动办公:在笔记本电脑上运行,通过手机浏览器高速互传文件,摆脱微信/QQ的限速。

注:上述命令和参数仅为示例,更完整的参数说明请参考其官方文档。如果想让服务在公网访问,需要配置内网穿透工具(如cpolar)或进行端口转发,并强烈建议启用HTTPS加密。

在Linux上使用Docker部署Copyparty,用于团队协作的完整方案。

🐳 使用Docker Compose部署(推荐)

这是最易管理和维护的方式。创建一个 docker-compose.yml 文件:

version: '3.8'
services:
  copyparty:
    # 使用官方最新版本(基于Alpine Linux,更轻量)
    image: copyparty/ac:latest
    container_name: team_copyparty
    restart: unless-stopped  # 确保服务始终运行
    ports:
      - "3923:3923"  # 主Web界面端口
      - "3924:3924"  # WebDAV协议端口(可选)
    environment:
      # 设置时区,保证文件时间戳准确
      TZ: "Asia/Shanghai"
    volumes:
      # 核心配置:将本地文件夹挂载到容器内
      - /srv/team_data:/w:rw  # 团队主数据目录
      - /srv/copyparty_conf:/c:rw  # 配置文件目录(持久化配置)
      - /etc/localtime:/etc/localtime:ro  # 同步宿主机时间
    command: >
      -v /w/public:pub:rw:*
      -v /w/project_a:pa:rw:alice,bob
      -v /w/project_b:pb:r:alice,bob,charlie
      -v /w/admin:admin:rw:alice
      -a alice:alice_pass123
      -a bob:bob_pass456
      -a charlie:charlie_pass789
      --admin alice
      --hist
      -e2d

📁 权限架构设计示例

针对团队协作,建议按以下结构组织文件夹和权限:

虚拟路径(访问URL) 容器内路径 权限设置 用途说明
/pub /w/public rw:*(所有人可读写) 公共区,用于临时文件、公告等
/pa /w/project_a rw:alice,bob 项目A空间,仅限A组成员
/pb /w/project_b r:alice,bob,charlie 项目B文档库,成员只读,管理员可写
/admin /w/admin rw:alice 管理区,仅管理员可访问

🔐 用户与权限详解

Copyparty的权限系统非常灵活。上述配置中:

  • -v /w/public:pub:rw:*:将本地/w/public映射为Web路径/pubrw表示读写权限,*表示所有用户(包括未登录用户)
  • -a alice:alice_pass123:创建用户alice,密码为alice_pass123
  • --admin alice:将alice设为超级管理员

权限标志说明

  • r:读取/下载文件
  • w:上传/修改文件
  • d:删除文件/文件夹
  • m:移动/重命名文件
  • a:管理员权限(可管理用户)

例如,-v /w/docs:docs:rwdm:alice,bob 表示alicebob对该文件夹有完整权限。

🚀 部署与使用步骤

  1. 准备目录结构

    sudo mkdir -p /srv/{team_data,copyparty_conf}
    sudo chown -R $USER:$USER /srv/team_data  # 避免权限问题
  2. 启动服务

    # 进入docker-compose.yml所在目录
    docker-compose up -d
  3. 访问服务

    • 浏览器访问:http://你的服务器IP:3923
    • WebDAV访问:http://你的服务器IP:3924(可在Windows资源管理器、macOS Finder中挂载为网络驱动器)
  4. 首次登录

    • 使用 alice 和她的密码登录
    • 建议首次登录后立即修改默认密码
    • 管理员可以点击右上角用户菜单创建更多用户和文件夹权限

⚙️ 高级配置建议

1. 启用上传数据库和搜索

command部分添加这些参数以增强协作功能:

  • --hist:保留文件操作历史(谁、何时上传/删除)
  • -e2d:启用上传数据库,支持断点续传和秒传
  • -e2ts:启用全文搜索(包括音频元数据)

2. 性能优化

对于大型团队或文件数量多的情况:

command: >
  ...
  --workers 2  # 工作进程数,通常设为CPU核心数
  --max-ram 512  # 限制内存使用为512MB
  --no-thumbs  # 禁用缩略图生成以节省资源(如需媒体功能则保留)

3. 使用配置文件(推荐生产环境)

对于复杂配置,使用YAML配置文件更清晰:

  1. /srv/copyparty_conf中创建cfg.yml
  2. 将权限配置移至配置文件
  3. 修改docker-compose.ymlcommand为:--cfg /c/cfg.yml

🛡️ 安全注意事项

  1. 修改默认端口:如果公网可访问,修改3923端口为非常见端口
  2. 启用HTTPS:通过反向代理(如Nginx)添加SSL证书
  3. 定期备份:定期备份/srv/copyparty_conf目录中的配置文件
  4. 访问日志:Copyparty会记录访问日志,可用于审计团队文件操作

🔄 日常维护命令

# 查看服务状态和日志
docker-compose logs -f copyparty

# 重启服务(修改配置后)
docker-compose restart copyparty

# 进入容器执行命令
docker exec -it team_copyparty sh

# 停止服务
docker-compose down

# 备份重要数据
tar czf copyparty_backup_$(date +%Y%m%d).tar.gz /srv/copyparty_conf

这个方案为团队协作提供了完整的权限隔离、历史追踪和便捷的WebDAV访问。如果你能分享更多关于团队规模和具体协作需求的信息(比如是否需要版本控制集成、特定的文件类型处理等),我可以提供更定制化的建议。


Comments

One response to “用 Copyparty 打造一台“全能型”文件服务器”

  1. David唐辉 Avatar
    David唐辉

    Host Your Own File Server with Copyparty and Docker
    https://noted.lol/copyparty/

Leave a Reply

Your email address will not be published. Required fields are marked *