小雅全家桶部署
📚 项目地址:https://github.com/monlor/docker-xiaoya
💡使用 Docker Compose 以更优雅的方式来部署小雅服务,支持一键部署 Alist + Emby + Jellyfin,全平台支持,Linux/Windows/Mac/群晖,X86/Arm架构
功能特性
🚀 使用 Docker Compose 一键部署服务,兼容群晖,Linux,Windows,Mac,包含所有X86和Arm架构
✨ 部署alist+下载元数据+部署emby/jellyfin服务全流程自动,无需人工干预
🔹 Docker集成:所有脚本集成到Docker镜像中,避免了系统环境污染。
🔹 镜像合并:合并了jellyfin和emby的x86和arm镜像,部署时无需区分镜像名。
🔹 自动化脚本:集成云盘清理脚本到alist服务,无需单独部署。
🔹 环境配置简化:通过环境变量配置阿里云盘token,无需映射文件。
🔹 依赖检查自动化:jellyfin和emby启动时自动进行依赖检查,等待元数据下载完成后自动添加hosts。
🔹 设备兼容性:完全兼容所有能运行docker的x86和arm设备。
🔹 自动清理与同步:支持自动清理阿里云盘,自动同步小雅元数据。
🔹 自动更新地址:自动更新内部的alist,emby,jellyfin访问地址,无需手动配置。
🔹 元数据服务更新:通过metadata服务自动更新emby配置和元数据。
一键部署
部署或更新脚本
脚本支持重复执行
bash -c "$(curl -fsSL https://raw.githubusercontent.com/monlor/docker-xiaoya/main/install.sh)"
使用加速源(我的加速源也可能帮你减速🤣)
export GH_PROXY=https://gh.monlor.com/ IMAGE_PROXY=ghcr.monlor.com && bash -c "$(curl -fsSL ${GH_PROXY}https://raw.githubusercontent.com/monlor/docker-xiaoya/main/install.sh)"
卸载脚本
bash -c "$(curl -fsSL https://raw.githubusercontent.com/monlor/docker-xiaoya/main/uninstall.sh)"
使用加速源(我的加速源也可能帮你减速🤣)
export GH_PROXY=https://gh.monlor.com/ IMAGE_PROXY=ghcr.monlor.com && bash -c "$(curl -fsSL ${GH_PROXY}https://raw.githubusercontent.com/monlor/docker-xiaoya/main/uninstall.sh)"
自定义配置
【非必须,小白跳过这一步】脚本没有计划支持硬解,在我看来这个功能没有必要。如果你需要修改硬解,端口,数据目录,环境变量,请自行修改docker-compose.yml和env文件,修改完成后执行下面的命令,使配置生效。修改后注意:执行更新脚本会覆盖docker-compose.yml,不会覆盖env文件。
cd 你的安装目录
docker-compose up --remove-orphans -d
发烧友测试版
以下是测试版一键部署脚本,使用此脚本可以体验最新的功能,具体可以查看commit更新了哪些测试版专属功能,此脚本仅限发烧友使用,需要有一定的解决问题能力
export VERSION=main && bash -c "$(curl -fsSL ${GH_PROXY}https://raw.githubusercontent.com/monlor/docker-xiaoya/${VERSION:-main}/install.sh)"
部署配置推荐
部署方案 | CPU | 内存 | 硬盘 |
---|---|---|---|
Alist + Emby | 2核 | 4G | 150G |
仅部署 Alist | 1核 | 512M | 512M |
Alist + Emby + Jellyfin | 2核 | 4G | 200G |
Alist + Jellyfin | 2核 | 4G | 150G |
配置示例
服务组件介绍
- Alist: 提供资源在线播放,WebDav服务
- Metadata: Emby和Jellyfin的元数据管理
- Emby: 用家庭影视库的方式,可视化展示Alist中的资源
- Jellyfin: Emby的开源版本,功能是一样的
手动部署
仅展示小雅alist+emby的部署方式
使用Docker Compose
- 创建compose文件夹
mkdir /opt/xiaoya
cd /opt/xiaoya
- 下载配置
curl -#LO https://raw.githubusercontent.com/monlor/docker-xiaoya/main/docker-compose.yml
curl -#LO https://raw.githubusercontent.com/monlor/docker-xiaoya/main/env
- 修改配置env里面的阿里云盘相关变量,启动服务
docker compose up -d
- 查看日志
docker compose logs
使用docker部署【不推荐】
- 创建volume
docker volume create xiaoya
docker volume create media
docker volume create config
docker volume create meta
docker volume create cache
- 创建网络
docker network create xiaoya
- 启动小雅alist,修改下面的阿里云盘配置,再执行命令
docker run -d --name alist \
-v xiaoya:/data \
-p 5678:5678 -p 2345:2345 -p 2346:2346 \
-e TZ=Asia/Shanghai \
-e ALIYUN_TOKEN=阿里云盘TOKEN \
-e ALIYUN_OPEN_TOKEN=阿里云盘Open Token \
-e ALIYUN_FOLDER_ID=阿里云盘文件夹ID \
-e AUTO_UPDATE_ENABLED=true \
-e AUTO_CLEAR_ENABLED=true \
-e EMBY_ADDR=http://emby:6908 \
--network=xiaoya \
ghcr.io/monlor/xiaoya-alist
- 启动metadata用于元数据同步
docker run -d --name metadata \
-e LANG=C.UTF-8 \
-e EMBY_ENABLED=true \
-e JELLYFIN_ENABLED=false \
-e AUTO_UPDATE_EMBY_CONFIG_ENABLED=true \
-e ALIST_ADDR=http://alist:5678 \
-e EMBY_ADDR=http://emby:6908 \
-v xiaoya:/etc/xiaoya \
-v media:/media/xiaoya \
-v config:/media/config \
-v cache:/media/config/cache \
-v meta:/media/temp \
--network=xiaoya \
ghcr.io/monlor/xiaoya-metadata
- 启动emby服务
docker run -d --name emby
-e TZ=Asia/Shanghai \
-e GIDLIST=0 \
-e ALIST_ADDR=http://alist:5678 \
--privileged \
--device /dev/dri:/dev/dri \
-v media:/media \
-v config:/config \
-v cache:/cache \
-p 6908:6908 \
--network=xiaoya \
ghcr.io/monlor/xiaoya-embyserver
- 查看日志
docker logs alist
docker logs metadata
docker logs emby
安全建议
🔹 开启alist的登陆,alist服务设置FORCE_LOGIN=true
,设置webdav的密码WEBDAV_PASSWORD
🔹 在emby控制台修改ApiKey,这个key需要配置到metadata和alist服务,变量名:EMBY_APIKEY
83 条评论
你好博主,我使用了小雅 ali2115这个功能,alist是正常的,emby出现 当前没有兼容的流。请稍后再试或联系您的管理员以获取详细信息。的报错,想问下是咱这个脚本不支持小雅的 ali 转 115 的功能吗
emby暂时不支持115播放
Runtime error near line 23738: database is locked (5)
nginx: [emerg] bind() to 0.0.0.0:5678 failed (98: Address in use)
nginx: [emerg] bind() to [::]:5678 failed (98: Address in use)
Parse error near line 1: no such table: x_storages
xiaoya-alist-1 | Parse error near line 1: no such table: x_storages
xiaoya-alist-1 | Parse error near line 1: no such table: x_storages
xiaoya-alist-1 | Parse error near line 1: no such table: x_storages
xiaoya-alist-1 | 启动容器(Host模式)......
xiaoya-alist-1 | INFO[2024-07-27 05:03:32] reading config file: data/config.json
xiaoya-alist-1 | INFO[2024-07-27 05:03:32] load config from env with prefix:
xiaoya-alist-1 | INFO[2024-07-27 05:03:32] init logrus...
xiaoya-alist-1 | INFO[2024-07-27 05:03:32] start server @ 127.0.0.1:5234
xiaoya-alist-1 | #Failed to execute command "get_Header", retrying in 1 seconds (retry 1 of 10)...
xiaoya-alist-1 | #Failed to execute command "get_Header", retrying in 1 seconds (retry 1 of 10)...
你好群主最近老是报这样的错误,重启容器后会恢复 但是第二天会再次出现,不知道什么问题
解决了吗?我好像也遇到这个问题“FATA[2024-08-06 08:12:17] failed to start: listen tcp 127.0.0.1:5234: bind: address already in use” ,每天早上要手动重启一下才行。 像是alist有定时任务每天半夜重启,但5234端口被占用造成没成功完成启动挂载动作。
没解决,我服务器设置了一个每天6点自动重启来应对了。5234端口好像是一个私人端口,我之前手动添加这个端口后xiaoya-alist不走本地,关掉xiaoya-metadata也能访问目录,观看目录中的视频也不限速,后来再访问就需要账号密码,我猜可能是xiaoya添加的一个阿里不限速端口。
报错不影响使用的话 可以忽略
我也是这个问题,困扰很久了,每天早上5234被占用,必须重启解决,能给小雅把5234换一个端口吗?
您好,博主,同时部署emby和jellyfin ,jellyfin 的docker容器提示:
xiaoya-jellyfin-1
Up for 58 mins - curl: (7) Failed to connect to localhost port 8096 after 0 ms: Couldn't connect to server
这是端口号冲突了还是什么原因呢
这个错应该没问题,你要看见别的地方有没有报错 一般是元数据没下载完
一样的问题 解决了吗
没有解决,等待博主解答
2345端口看不了,是正常的吗,只有6908能看?
用2345看视频,后台日志会报“获取目录失败: object not found”错误,但是我看阿里云盘会有这个视频的缓存Σ(っ °Д °;)っ
报这个错不一定看不了,具体为什么报这个错得问小雅,我不清楚内部具体实现
你好群主,我之前在群晖上部署的问题解决了,我迁移在openwrt上部署,阿里云的token信息还有文件夹信息都是正确的情况下一直提示阿里云的签到报错,以及无法获取到阿里云的链接
以下是一些报错内容节选,辛苦您看下是为啥
stdout: [31m
stdout: 阿里签到失败
stdout: [0m
stdout: Tue Jul 9 10:44:03 CST 2024 User's own PikPak account has been updated into database successfully
stderr: bc: bad token at '/ (1024 * 1024)'
stdout: 请求失败,请检查Cookie或网络连接是否正确。
stdout: 启动容器(Host模式)......
stderr: [36mINFO[0m[2024-07-09 10:44:04] reading config file: data/config.json
stderr: [36mINFO[0m[2024-07-09 10:44:04] load config from env with prefix:
stderr: [36mINFO[0m[2024-07-09 10:44:04] init logrus...
stderr: [36mINFO[0m[2024-07-09 10:44:04] start server @ 127.0.0.1:5234
stderr: [31mERRO[0m[2024-07-09 10:44:04] failed get enabled storages: [/每日更新/PikPak], driver: [PikPakShare], Error: Post "https://user.mypikpak.com/v1/auth/token": dial tcp 170.33.96.94:443: connect: connection refused
stderr: failed init storage
stderr: github.com/alist-org/alist/v3/internal/op.initStorage
stderr: /app/internal/op/storage.go:99
stderr: github.com/alist-org/alist/v3/internal/op.LoadStorage
stderr: /app/internal/op/storage.go:80
stderr: github.com/alist-org/alist/v3/internal/bootstrap.LoadStorages.func1
stderr: /app/internal/bootstrap/storage.go:26
stderr: runtime.goexit
stderr: /usr/lib/go/src/runtime/asm_arm64.s:1172
stderr: 2024/07/09 10:44:05.831376 ERROR RESTY Post "https://auth.aliyundrive.com/v2/account/token": dial tcp 114.250.52.173:443: connect: connection refused, Attempt 1
stdout: 获取目录列表失败,结束重试 / : root
stdout: 获取目录失败: Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused
stdout: 获取目录失败: 无法显示目录下文件,请刷新重试: Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused
stderr: 2024/07/09 10:49:26.298061 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 3
stderr: 2024/07/09 10:49:36.433863 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 1
stderr: 2024/07/09 10:49:36.541344 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 2
stdout: 获取目录列表失败,重试第 1 次 / : root
stderr: 2024/07/09 10:49:36.729911 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 3
stderr: 2024/07/09 10:49:38.737339 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 1
stderr: 2024/07/09 10:49:38.844828 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 2
stderr: 2024/07/09 10:49:39.043417 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 3
stdout: 获取目录列表失败,重试第 2 次 / : root
stderr: 2024/07/09 10:49:41.050272 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 1
stderr: 2024/07/09 10:49:41.156500 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 2
stderr: 2024/07/09 10:49:41.302892 ERROR RESTY Post "https://api.aliyundrive.com/adrive/v3/file/list": dial tcp 114.250.48.139:443: connect: connection refused, Attempt 3
xiaoya启动后,页面只有failed get storage: please add a storage first,或者只有版本号的,都是因为没有下载到数据导致,目前数据下载地址已经更换到github,需要翻墙才能下载,不会翻墙自行解决,确保xiaoya已经升级到最新版本(必须是原版xiaoya,非原版的有任何问题都不管),并翻墙后运行以下命令即可
docker exec xiaoya rm -rf /data/data/version.txt && docker restart xiaoya && docker logs -f -n 100 xiaoya
一毛一样的问题,平台是iStoreOS
更新下阿里云盘的token
token 和 opentoken 全部都重新生成的,重新部署了镜像配置,一直都这样
这是你多次调用阿里云盘api,当前网络ip被限制了,换ip可解决,还不行就只能换账号
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 1 ms: Connection refused
搜索了一下,网上说是DNS 污染。但是我的科学上网已经设置了使用远端DNS,1.1.1.1。大家如何解决的?
部署类型:
alist + emby (默认)alistalist + jellyfinalist + emby + jellyfin请选择部署服务类型: 2
开始生成配置文件docker-compose-alist.yml...
这个时候发生的错误。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
使用加速源安装试试,不行就挂🪜
求emby核显硬解方法~~~这样才是最完美的终极形态
没必要吧,终端的appletv等设备的解码,不比emby上解码靠谱?
出门在外,码率太高,网络跟不上,服务器转码完美解决这个问题,节约流量
直接用2345端口访问,走阿里云盘流量,要硬解干啥呢
求emby核显硬解
你好博主,这周开始xiaoyaalist的容器日志里面提示刷新夸克分享令牌失败,重新换了夸克的cookie 也还是提示夸克令牌分享失败,我有邮件发你附件的情况,辛苦你这边看下,之前一直都正常
关于,环境变量里面的embyapi key这个参数,您回复的邮件信息我还是有点不解,是在安装好emby之后,在emby里面生成一个embyapi key 后,然后再添加到这个环境变量里面吗,但是还有个问题,安装好xiaoyaemby全家桶之后,已经自动生成了一个xiaoya用的embyapi key ,这个可以直接复制到环境变量里面用吗,还是必须重新生成一个
默认你不配置这个环境变量都可以,配置是为了安全性,不然你emby的key是跟大家一样的,如果在公网,别人可以直接通过api修改你的emby
今天开始xiaoyaalist的日志里面提示刷新夸克分享令牌失败,重新换了夸克的cookie 也还是提示这个,这是为什么
你好,在docker中安装好以后,小雅网页可以打开,也能看视频了。但是emby打开后直接返回502 Bay gateway,请问这是什么情况呢?
检查日志
小雅自动安装之后,有emby api key ,在环境变量里面,这个embyapi key 用的是哪个,是小雅那个还是需要重新生成一个呢博主
curl: (60) SSL certificate problem: self-signed certificate
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
一键部署 用软路由OPRT提示出错
curl命令里加个-k试试
执行docker-compose up -d
提示:
manifest for ghcr.io/monlor/xiaoya-alist:latest not found
,请问博主是什么原因 ̄﹃ ̄
Jeff的账号密码多少啊
请问,现在小雅不是全面转向夸克网盘了,需要更新源数据,要怎么更新为最新呢?
请问一下核显硬解文件应该怎么改呀,一般是外网访问,比较需要,看到了麻烦回复一下,谢谢
参考其他docker服务开启硬解的方案,不同显卡不一样
我是J4125的U群晖的系统
请问emby的登陆密码是多少?⌇●﹏●⌇
1234
请问alist资源更新是什么时候自动更新的?
也许可以将主机 timezone 共享给 docker alpine镜像,修改 docker-compose.yml 在每个 volume 下面新增
就像这样,这样 docker alpine 镜像的时区也许就能同步本地linux
每天凌晨随机时间更新
时区不对呢,慢了8小时。。。
utc 時間啊....
时区问题新版本已修复