功能强大的便携式文件服务器Copyparty

简介

什么是 Copyparty ?

Copyparty 是一个用 Python 编写的便携式文件服务器,它将众多功能(如加速可续传的上传、文件去重、WebDAVFTPTFTP、媒体索引、缩略图等)集成到了一个文件中,并且几乎没有强制性依赖。你可以直接运行它,将任何设备变成一个文件服务器,并通过网页浏览器进行访问。

主要特点

  • 可恢复上传:支持加速的可恢复文件上传,确保在网络中断时可以继续上传。
  • 多协议支持:提供多种协议,包括 HTTPWebDAVFTPTFTP 等,适应不同的使用需求。
  • 去重功能:通过文件链接实现上传去重,节省存储空间。
  • 多平台兼容:可以在 WindowsLinuxmacOSAndroid 等多个平台上运行。
  • 用户权限管理: 支持每个文件夹和用户的权限管理,确保文件安全。
  • 媒体索引和缩略图:自动生成媒体文件的缩略图,并支持音频、视频和图片的播放。
  • 动态文档:支持 Markdown 文档的查看和编辑。
  • 零配置:只需运行一个脚本即可开始使用,无需复杂的配置过程。
  • 易于部署: 提供 Docker 镜像,可以快速方便地进行部署。

应用场景

  • 在家庭或办公室网络中快速搭建一个临时的文件共享服务器。
  • 将闲置的电脑或树莓派等设备变成一个功能强大的个人网盘。
  • 为团队提供一个简单易用的文件协作平台。

Copyparty 为用户提供了一种灵活、高效的文件管理解决方案。

准备

Copyparty 的功能有点多,上来就给我看懵了。官方建议使用配置文件,而不是直接使用参数

配置文件采用了类似 YAML 的文件格式,老苏找了一个简化版的,命名为 copyparty.conf 即可

源文件地址: https://github.com/9001/copyparty/blob/hovudstraum/docs/examples/docker/basic-docker-compose/copyparty.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# not actually YAML but lets pretend:
# -*- mode: yaml -*-
# vim: ft=yaml:


[global]
e2dsa # enable file indexing and filesystem scanning
e2ts # enable multimedia indexing
ansi # enable colors in log messages (both in logfiles and stdout)

# q, lo: /cfg/log/%Y-%m%d.log # log to file instead of docker

# p: 3939 # listen on another port
# ipa: 10.89. # only allow connections from 10.89.*
# df: 16 # stop accepting uploads if less than 16 GB free disk space
# ver # show copyparty version in the controlpanel
# grid # show thumbnails/grid-view by default
# theme: 2 # monokai
# name: datasaver # change the server-name that's displayed in the browser
# stats, nos-dup # enable the prometheus endpoint, but disable the dupes counter (too slow)
# no-robots, force-js # make it harder for search engines to read your server


[accounts]
ed: wark # username: password


[/] # create a volume at "/" (the webroot), which will
/w # share /w (the docker data volume)
accs:
rw: * # everyone gets read-write access, but
rwmda: ed # the user "ed" gets read-write-move-delete-admin

更复杂的示例: https://github.com/9001/copyparty/blob/hovudstraum/docs/example.conf

如果你忘记了这个文件,启动后会看到这样的界面

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 copyparty ,选择 copyparty/ac,版本选择 latest

本文写作时, latest 版本对应为 1.19.4

docker 文件夹中,创建一个新文件夹 copyparty,并在其中建立两个子文件夹 filesconfig

将上一步保存的 copyparty.conf 放入 config 目录中

文件夹 装载路径 说明
docker/copyparty/files /w 存放您要共享的文件
docker/copyparty/config /cfg 存放配置文件和历史记录数据库

端口

本地端口不冲突就行。

本地端口 容器端口
3923 3923

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 copyparty 和 子目录
mkdir -p /volume1/docker/copyparty/{config,files}

# 进入 copyparty 目录
cd /volume1/docker/copyparty

# 将 copyparty.conf 放入 config 目录中

# 运行容器
docker run -d \
--restart unless-stopped \
--name copyparty \
-p 3923:3923 \
-v $(pwd)/files:/w \
-v $(pwd)/config:/cfg \
copyparty/ac

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
services:
copyparty:
image: copyparty/ac:latest
container_name: copyparty
ports:
- 3923:3923
volumes:
- ./files:/w
- ./config:/cfg
environment:
LD_PRELOAD: /usr/lib/libmimalloc-secure.so.NOPE
# enable mimalloc by replacing "NOPE" with "2" for a nice speed-boost (will use twice as much ram)
PYTHONUNBUFFERED: 1
# ensures log-messages are not delayed (but can reduce speed a tiny bit)
stop_grace_period: 15s # thumbnailer is allowed to continue finishing up for 10s after the shutdown signal
healthcheck:
# hide it from logs with "/._" so it matches the default --lf-url filter
test: ["CMD-SHELL", "wget --spider -q 127.0.0.1:3923/?reset=/._"]
interval: 1m
timeout: 2s
retries: 5

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
# 新建文件夹 copyparty 和 子目录
mkdir -p /volume1/docker/copyparty/{config,files}

# 进入 copyparty 目录
cd /volume1/docker/copyparty

# 将 docker-compose.yml 放入当前目录
# 将 copyparty.conf 放入 config 目录中

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3923 就能看到主界面

files 目录中放入了一些文件

刷新页面

音视频、pdf 、图片都可以直接播放或者阅读

WebDAV

RaiDrive 为例

  • 地址: 群晖IP
  • 端口: 3923
  • 用户: ed, 是 copyparty.conf 中设置的 username
  • 密码: wark,是 copyparty.conf 中设置的 password

连接成功后

更多的功能,等需要用的时候,再研究吧

参考文档

9001/copyparty: Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps
地址:https://github.com/9001/copyparty

copyparty/scripts/docker at hovudstraum · 9001/copyparty
地址:https://github.com/9001/copyparty/tree/hovudstraum/scripts/docker