├── README.md
├── assets
├── image-20240130114921-9txb12m.png
└── logo.png
├── config
└── config.yml
└── docker-compose.yml
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | ## 已知BUG。
4 | - 当启动falco时alist未启动或者正在初始化,falco会进入阻塞状态,并且不能自动恢复,只能等待手动重启
5 | - strm(alist链接) + jellyfin官方PC客户端外挂字幕无法加载
6 |
7 | ## 下个版本计划
8 | - 支持plex直连。
9 | - 提供多版本代理(可以同时代理多个jellyfin和emby服务端)
10 | - 修复strm模式如果视频第一次播放,获取视频信息过慢的问题
11 |
12 | ## 功能
13 | - 配合alist可实现jellyfin、emby直连。
14 | - 可以配置用户与盘的映射,在播放时,会自动根据用户与盘的映射,自动转盘然后进行直连播放(可防止阿里云盘单账号多IP访问封号的风险)
15 | - 转盘产生的临时文件会在退出播放后自动删除,防止网盘空间不足
16 |
17 | ## 建议
18 | - jellyfin推荐使用镜像nyanmisaka/jellyfin:latest,优先在这个版本中做测试。
19 |
20 | ## 搭建
21 |
22 | ### 1. 准备:alist挂载多个盘(拥有直连互相秒传的盘,比如阿里云盘,115)
23 |
24 | 在alist盘配置中 **开启秒传**,**移除方式改为删除(阿里云盘Open默认是回收站)** 。
25 |
26 |
27 |
28 | Q:为什么要把移除方式改为删除?
29 |
30 | A:因为本程序有自动对临时目录进行清除的功能,只有在删除后才不会占用网盘空间。这样做是避免网盘在转存过多缓存后空间不足。
31 |
32 | ### 2. 拉取代码
33 |
34 | ```bash
35 | git clone https://github.com/goodmangll/falco-docker.git
36 | ```
37 |
38 | ### 3. 配置
39 |
40 | 找到 `config/config.yml` 进行配置
41 |
42 | ```yml
43 | # Falco版本号
44 | # 版本号会随着程序自动更新,不需要手动修改
45 | version: 1.10.3
46 |
47 | # 临时文件目录
48 | tmpName: facloTmp
49 |
50 | # alist相关配置
51 | alist:
52 | # alist的token
53 | token: 123
54 | # alist的地址
55 | address: http://172.17.0.1:5244
56 |
57 | # emby或者jellyfin的相关配置
58 | emby:
59 | # 地址
60 | address: http://172.17.0.1:8096
61 | # 认证令牌,在emby或者jellyfin后台获取
62 | apiKey: 123
63 | # 磁盘映射目录。比如我emby有个电影的媒体库路径为 “/home/webdav/CloudDrive/115/电影”
64 | # 而是我alist的中对应的这个路径为“/115/电影”,那么这里就填“/home/webdav/CloudDrive”
65 | # 公式:/home/webdav/CloudDrive/115/电影 - /115/电影 = /home/webdav/CloudDrive
66 | mountPath: /home/webdav/CloudDrive
67 | # 代理端口,如果使用host模式,请把端口改为宿主机没有占用的端口,并且在连接emby时使用此端口
68 | proxyPort: 80
69 |
70 | # 不需要转盘的盘列表,即使在用户点播的视频不在这个用户的所属盘,但是也不需要转盘
71 | # noTransferDiskList:
72 | # - /115
73 | # - /ali
74 |
75 | # 游客模式,即使该用户没有配置所属盘但是也可以播放视频,但是如果播放需要转盘的视频,则播放失败
76 | guestMode: false
77 |
78 | # 本地磁盘路径,如果你在emby媒体库中配置了本地磁盘,那么这里就填磁盘路径
79 | # localDiskPaths:
80 | # - /media01
81 | # - /media02
82 |
83 | # 配置emby,jellyfin用户与所属盘的映射
84 | # 比如 张三: /ali
85 | # 张三是emby中的用户名称 : ali为alist中的盘路径
86 | userDiskContext:
87 | 张三: /ali
88 | 李四: /ali01
89 | ```
90 |
91 | ### 4. 启动
92 |
93 | 回到根目录(docker-compose.yml所在的目录) 执行下面命令进行启动
94 |
95 | ```sh
96 | docker-compose up -d
97 | ```
98 |
99 | 可使用docker ps 查看这两个容器进行启动
100 |
101 | 也可通过进入 `/logs` 目录 执行以下目录进行查看日志,可以看到目录下面有三个日志文件
102 | ```text
103 | all.log 全部类型的日志,排查问题时看这个日志
104 | info.log 正常类型的日志,一般我们会看这个日志
105 | error.log 错误类型的日志,程序异常时查看这个日志
106 | ```
107 |
108 | ```sh
109 | tail -f info.log
110 | ```
111 |
112 | 如果容器正常启动,也可以通过web页面 http://localhost:13000/html/log.html 进行查看日志
113 |
114 | ## 如何使用?
115 | 在用客户端进行连接时:
116 |
117 | bridge(默认)网络模式在连接时使用 **8095(可配置)** 的端口
118 |
119 | host网络模式在连接时使用配置的 **proxyPort** 端口
120 |
--------------------------------------------------------------------------------
/assets/image-20240130114921-9txb12m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goodmangll/falco-docker/f58516f80ed8b9bbafb871d81f6d2d29789d7eb5/assets/image-20240130114921-9txb12m.png
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/goodmangll/falco-docker/f58516f80ed8b9bbafb871d81f6d2d29789d7eb5/assets/logo.png
--------------------------------------------------------------------------------
/config/config.yml:
--------------------------------------------------------------------------------
1 | # Falco版本号
2 | # 注意:
3 | # - 每一个版本对应的配置文件格式可能不一样(因为可能有新的配置项、删除了配置项)。也就说每个版本号都对应一个配置格式。
4 | # - 程序在启动时会根据配置文件中的版本号做兼容,并自动升级配置文件。
5 | # - 所以如果你想用新版特性(比如新版功能有个微信通知的功能默认不开启)有两种选择:
6 | # - 自动升级配置:
7 | # 1. 先把镜像升级到最新版
8 | # 2. 然后更新并重启容器
9 | # 3. 你再打开配置文件会发现有一项微信通知的配置项,然后配置微信通知的配置项设置为开启,然后重新程序
10 | # - 手动升级配置:
11 | # 1. 先改配置文件,手动新增微信通知的配置项并设置为开启
12 | # 2. 把版本号和配置格式改成最新的,把微信通知配置项加并设置为开启
13 | # 3. 然后升镜像
14 | # 4. 更新容器重启
15 | # - 推荐使用“自动升级配置”方式,因为如果当配置改动较多,手动改配置格式会有遗漏的风险
16 | version: 1.10.2
17 |
18 | # 临时文件目录
19 | tmpName: facloTmp
20 |
21 | # alist相关配置
22 | alist:
23 | # alist的token
24 | token: 123
25 | # alist的地址
26 | address: http://172.17.0.1:5244
27 |
28 | # emby或者jellyfin的相关配置
29 | emby:
30 | # 地址
31 | address: http://172.17.0.1:8096
32 | # 认证令牌,在emby或者jellyfin后台获取
33 | apiKey: 123
34 | # 磁盘映射目录。比如我emby有个电影的媒体库路径为 “/home/webdav/CloudDrive/115/电影”
35 | # 而是我alist的中对应的这个路径为“/115/电影”,那么这里就填“/home/webdav/CloudDrive”
36 | # 公式:/home/webdav/CloudDrive/115/电影 - /115/电影 = /home/webdav/CloudDrive
37 | mountPath: /home/webdav/CloudDrive
38 | # 代理端口,如果使用host模式,请把端口改为宿主机没有暂用的端口,并且在连接emby时使用此端口
39 | proxyPort: 80
40 |
41 | # 不需要转盘的盘列表,即使在用户点播的视频不在这个用户的所属盘,但是也不需要转盘
42 | # noTransferDiskList:
43 | # - /115
44 | # - /ali
45 |
46 | # 游客模式,即使该用户没有配置所属盘但是也可以播放视频,但是如果播放需要转盘的视频,则播放失败
47 | guestMode: false
48 |
49 | # 本地磁盘路径,如果你在emby媒体库中配置了本地磁盘,那么这里就填磁盘路径
50 | # localDiskPaths:
51 | # - /media01
52 | # - /media02
53 |
54 | # 配置emby,jellyfin用户与所属盘的映射
55 | # 比如 张三: /ali
56 | # 张三是emby中的用户名称 : ali为alist中的盘路径
57 | userDiskContext:
58 | 张三: /ali
59 | 李四: /ali01
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.8'
2 | services:
3 | falco:
4 | restart: always
5 | container_name: falco
6 | image: registry.cn-hangzhou.aliyuncs.com/goodmangll/falco:stable
7 | volumes:
8 | - ./config:/user/src/app/config # 配置文件
9 | - ./logs:/user/src/app/logs # 日志文件
10 | - ./nginx/logs/:/usr/local/openresty/nginx/logs # nginx日志文件
11 | ports:
12 | - 8095:80
13 | - 13000:13000
--------------------------------------------------------------------------------