├── README.md ├── assets ├── image-20240130114921-9txb12m.png └── logo.png ├── config └── config.yml └── docker-compose.yml /README.md: -------------------------------------------------------------------------------- 1 | ![falco-docker](https://socialify.git.ci/goodmangll/falco-docker/image?description=1&descriptionEditable=%E6%9B%B4%E5%8A%A0%E5%BC%BA%E5%A4%A7%E7%9A%84%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E4%BB%A3%E7%90%86%E5%B7%A5%E5%85%B7%E3%80%82&font=KoHo&forks=1&issues=1&language=1&logo=https%3A%2F%2Fgithub.com%2Fgoodmangll%2Ffalco-docker%2Fblob%2Fmaster%2Fassets%2Flogo.png%3Fraw%3Dtrue&name=1&owner=1&pattern=Floating%20Cogs&pulls=1&stargazers=1&theme=Light) 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 --------------------------------------------------------------------------------