Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,16 @@ jobs:
VAR_BUILD_DATE=${{ env.VAR_BUILD_DATE }}
VAR_GIT_SUMMARY=${{ env.VAR_GIT_SUMMARY }}
VAR_GIT_BRANCH=${{ env.VAR_GIT_BRANCH }}
OUTPUT_DIR=/app
BINARY_NAME=share
tags: |
${{ env.DOCKERHUB_REPO }}:latest
${{ env.DOCKERHUB_REPO }}:${{ env.APP_VERSION }}
# 只有符合 vX.Y.Z 的稳定版才额外打 latest,预发布版(包含 '-')只打自身版本
tags: ${{ fromJson(
concat(
'["', env.DOCKERHUB_REPO, ':', env.APP_VERSION, '"',
contains(env.APP_VERSION, '-') ?
'' :
concat(',"', env.DOCKERHUB_REPO, ':latest"'),
']'
)
) }}
cache-from: type=gha
cache-to: type=gha,mode=max

Expand All @@ -91,7 +96,7 @@ jobs:
echo "🎉 Docker 镜像构建完成!"
echo ""
echo "📦 镜像标签:"
echo " - ${{ env.DOCKERHUB_REPO }}:latest"
echo " - ${{ env.DOCKERHUB_REPO }}:${{ contains(env.APP_VERSION, '-') && env.APP_VERSION || 'latest' }}"
echo " - ${{ env.DOCKERHUB_REPO }}:${{ env.APP_VERSION }}"
echo ""
echo "🏗️ 支持的架构:"
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
logs
output
data/share.db
data
session.json
.idea
.vscode
datadir

fe/node_modules
fe/llm-prompt.txt
Expand Down
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ CloudPan189 Share 是一款专为天翼云盘设计的智能文件分享管理
**🌐 WebDAV 统一接口**
- 提供标准 WebDAV 协议支持,兼容主流客户端
- 统一文件访问入口,简化多链接管理流程
- 支持文件写入和删除操作(可配置)
- 完整的文件锁定机制,确保并发安全

**💻 全功能网页端**
- 现代化文件浏览器界面,支持文件夹导航
Expand All @@ -26,6 +28,19 @@ CloudPan189 Share 是一款专为天翼云盘设计的智能文件分享管理
- 流式播放技术,实现视频无缓冲即时观看
- 智能带宽适配,确保播放流畅度

**📺 STRM文件支持** ⚠️ *测试功能*
- 自动为视频文件生成STRM文件
- 完美兼容Emby、Jellyfin、Plex等媒体服务器
- 可自定义支持的视频格式列表
- 支持一键重建和批量管理

**📝 文件管理增强** ⚠️ *测试功能*
- WebDAV写入权限控制,支持文件上传和删除
- 真实文件存储管理,独立于挂载分享文件
- 完整的文件操作日志和权限控制

> ⚠️ **重要提示**:STRM文件生成和WebDAV写入功能目前处于测试阶段,如遇到问题请及时通过 GitHub Issue 反馈。

## 🚀 快速开始

### Docker 部署(推荐)
Expand All @@ -34,6 +49,7 @@ docker run -d \
--name cloudpan189-share \
-p 12395:12395 \
-v $(pwd)/data:/app/data \
-v $(pwd)/datadir:/app/datadir \
--restart unless-stopped \
xxcheng123/cloudpan189-share:latest
```
Expand Down Expand Up @@ -139,7 +155,8 @@ npm run build
```yaml
port: 12395 # 服务端口
dbFile: "data/share.db" # 数据库文件路径
logPath: "logs" # 日志文件路径
logFile: "logs/share.log" # 日志文件路径
fileDir: "datadir" # 文件存储目录
```

### 5. 启动服务
Expand Down Expand Up @@ -230,4 +247,4 @@ cloudpan189-share/

---

⭐ 如果这个项目对您有帮助,请给它一个 Star!
⭐ 如果这个项目对您有帮助,请给它一个 Star!
1 change: 1 addition & 0 deletions configs/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ type Config struct {
Port int `json:"port,default=12395"`
DBFile string `json:"dbFile,default=data/share.db"`
LogFile string `json:"logFile,default=logs/share.log"`
FileDir string `json:"fileDir,default=datadir"`
}
29 changes: 29 additions & 0 deletions configs/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,29 @@ func Init() {
}
}

// 创建日志目录
logDir := filepath.Dir(c.LogFile)
if logDir != "" && logDir != "." {
if _, err = os.Stat(logDir); os.IsNotExist(err) {
if err = os.MkdirAll(logDir, 0755); err != nil {
panic(fmt.Sprintf("创建日志目录失败: %v", err))
}
} else if err != nil {
panic(fmt.Sprintf("检查日志目录失败: %v", err))
}
}

// 创建文件存储目录
if c.FileDir != "" {
if _, err = os.Stat(c.FileDir); os.IsNotExist(err) {
if err = os.MkdirAll(c.FileDir, 0755); err != nil {
panic(fmt.Sprintf("创建文件存储目录失败: %v", err))
}
} else if err != nil {
panic(fmt.Sprintf("检查文件存储目录失败: %v", err))
}
}

db, err = gorm.Open(sqlite.Open(c.DBFile), &gorm.Config{
NowFunc: func() time.Time {
// 使用中国时区,处理加载失败的情况
Expand Down Expand Up @@ -122,6 +145,12 @@ func Init() {
shared.MultipleStreamThreadCount = dict.Value.Int()
case models.SettingDictKeyMultipleStreamChunkSize:
shared.MultipleStreamChunkSize = dict.Value.Int64()
case models.SettingDictKeyStrmFileEnable:
shared.StrmFileEnable = dict.Value.Bool()
case models.SettingDictKeyStrmSupportFileExtList:
shared.StrmSupportFileExtList = dict.Value.StringSlice()
case models.SettingDictKeyFileWritable:
shared.FileWritable = dict.Value.Bool()
}
}

Expand Down
131 changes: 128 additions & 3 deletions docs/1.quick_start.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ CloudPan189 Share 是一个基于天翼云盘的文件分享管理系统,支
- 支持订阅类型和分享类型链接管理
- 提供 Web 界面进行文件浏览和管理
- 多线程流式加速浏览视频
- **STRM文件生成**:自动为视频文件生成STRM文件,完美兼容Emby、Jellyfin、Plex等媒体服务器 ⚠️ *测试功能*
- **WebDAV写入支持**:支持通过WebDAV协议上传、删除真实文件 ⚠️ *测试功能*
- **增强的文件管理**:完整的文件锁定机制和权限控制

> ⚠️ **重要提示**:STRM文件生成和WebDAV写入功能目前处于测试阶段,使用过程中如遇到问题请及时通过 GitHub Issue 反馈。

## 环境要求

Expand All @@ -30,6 +35,7 @@ CloudPan189 Share 是一个基于天翼云盘的文件分享管理系统,支
# 创建工作目录和数据目录
mkdir -p /opt/cloudpan189-share
mkdir -p /opt/cloudpan189-share/data
mkdir -p /opt/cloudpan189-share/datadir

# 切换到工作目录
cd /opt/cloudpan189-share
Expand All @@ -43,6 +49,7 @@ docker run -d \
--name cloudpan189-share \
-p 12395:12395 \
-v $(pwd)/data:/app/data \
-v $(pwd)/datadir:/app/datadir \
--restart unless-stopped \
xxcheng123/cloudpan189-share:latest
```
Expand All @@ -53,6 +60,7 @@ docker run -d \
--name cloudpan189-share \
-p 12395:12395 \
-v $(pwd)/data:/app/data \
-v $(pwd)/datadir:/app/datadir \
--restart unless-stopped \
docker.1ms.run/xxcheng123/cloudpan189-share:latest
```
Expand Down Expand Up @@ -110,13 +118,15 @@ chmod +x share-linux-amd64
```yaml
port: 12395
dbFile: "data/share.db"
logPath: "logs"
logFile: "logs/share.log"
fileDir: "datadir"
```

配置说明:
- `port`: Web 服务监听端口,默认 12395
- `dbFile`: 数据库文件路径,相对于程序运行目录
- `logPath`: 日志文件存储路径
- `logFile`: 日志文件路径,相对于程序运行目录
- `fileDir`: 文件存储目录,相对于程序运行目录

#### 4. 运行程序

Expand Down Expand Up @@ -345,6 +355,64 @@ https://cloud.189.cn/t/fieiyq6bErum(访问码:zfr5)
- 订阅类型存储:显示订阅号的所有共享内容
- 分享类型存储:显示特定分享链接的文件内容

### 5. 系统设置

点击左侧菜单 "系统设置" 可以配置系统的各项功能:

#### STRM文件生成设置

**什么是STRM文件?**
STRM文件是一种包含媒体文件URL的文本文件,被Emby、Jellyfin、Plex等媒体服务器用来播放远程媒体内容。

**配置步骤:**
1. 进入系统设置页面
2. 找到"STRM文件生成"选项
3. 开启该功能后,系统会自动为支持的视频文件生成对应的STRM文件
4. 可以在"STRM支持文件格式"中自定义支持的视频格式

**支持的默认格式:**
- 常见视频格式:mp4, mkv, avi, mov, wmv, flv, webm, m4v
- 高清格式:ts, mts, m2ts, m2t, mxf
- 其他格式:3gp, f4v, vob, ogv, divx, xvid, rm, rmvb等

**使用场景:**
- 配合Emby/Jellyfin/Plex等媒体服务器使用
- 通过WebDAV挂载到媒体服务器的媒体库目录
- 实现远程媒体内容的本地化管理

#### WebDAV写入权限设置

**功能说明:**
控制是否允许通过WebDAV协议进行文件写入和删除操作。

**配置选项:**
- **开启**:允许通过WebDAV上传、修改、删除真实文件
- **关闭**:WebDAV仅提供只读访问,无法进行写入操作

**注意事项:**
- 此功能仅影响真实文件,不包括挂载的分享文件和STRM等虚拟文件
- 开启写入权限后,建议配合用户认证功能使用
- 删除父级文件夹时,其中的文件也会被删除

#### 其他重要设置

**多线程流式下载:**
- 使用多个连接并发下载视频片段
- 可配置线程数(1-64)和块大小(512KB-8MB)
- 优先级高于本地代理设置

**用户认证:**
- 控制WebDAV访问是否需要用户登录
- 建议在生产环境中开启

**本地代理:**
- 服务器代为获取资源再转发给用户
- 可解决某些网络环境下的访问问题

**自动刷新:**
- 定期自动刷新挂载的文件列表
- 可配置刷新间隔(5-120分钟)

## 常见问题

### 1. 扫码授权失败
Expand Down Expand Up @@ -449,6 +517,62 @@ kill -9 <PID>
- 检查数据目录和日志目录是否存在
- 确认程序有读写相关目录的权限

### 9. STRM文件相关问题

**问题现象**:STRM文件无法生成或媒体服务器无法识别

**解决方案**:
- 确认在系统设置中已开启"STRM文件生成"功能
- 检查视频文件格式是否在支持列表中
- 验证WebDAV挂载路径是否正确
- 确认媒体服务器有读取STRM文件的权限
- 尝试使用"重建STRM文件"功能重新生成

**问题现象**:媒体服务器播放STRM文件时提示无法访问

**解决方案**:
- 检查媒体服务器网络是否能访问CloudPan189 Share服务
- 确认系统设置中的"基础URL"配置正确
- 验证天翼云盘令牌是否有效
- 检查防火墙是否阻止了媒体服务器的访问

### 10. WebDAV写入权限问题

**问题现象**:无法通过WebDAV上传或删除文件

**解决方案**:
- 确认在系统设置中已开启"WebDAV写入权限"
- 检查用户是否有足够的权限(如果开启了用户认证)
- 验证WebDAV客户端是否支持写入操作
- 确认要操作的是真实文件,而非挂载的分享文件

**问题现象**:上传文件后无法在Web界面中看到

**解决方案**:
- 刷新Web界面的文件列表
- 检查文件是否上传到正确的目录
- 确认文件上传过程中没有出现错误
- 查看系统日志了解详细错误信息

### 11. 多线程流式下载问题

**问题现象**:视频播放仍然缓慢或卡顿

**解决方案**:
- 确认已开启"多线程流式下载"功能
- 适当调整线程数,过多的线程可能导致性能下降
- 调整块大小,较大的块可能提升性能但增加内存使用
- 检查网络带宽和服务器性能
- 确认天翼云盘令牌有效且未被限速

**问题现象**:开启多线程后系统资源占用过高

**解决方案**:
- 降低多线程流线程数设置
- 减小块大小以降低内存使用
- 监控服务器CPU和内存使用情况
- 考虑在服务器性能较低时关闭此功能

## 维护管理

### 1. 数据备份
Expand Down Expand Up @@ -480,6 +604,7 @@ docker run -d \
--name cloudpan189-share \
-p 12395:12395 \
-v /opt/cloudpan189-share/data:/app/data \
-v /opt/cloudpan189-share/datadir:/app/datadir \
--restart unless-stopped \
xxcheng123/cloudpan189-share:latest
```
Expand All @@ -505,4 +630,4 @@ docker logs cloudpan189-share > /dev/null 2>&1
- 提交 GitHub Issue
- 参与社区讨论

---
---
3 changes: 2 additions & 1 deletion etc/config.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
port: 12395
dbFile: "data/share.db"
logPath: "logs"
logFile: "logs/share.log"
fileDir: "datadir"
Loading