You are on page 1of 8

因近日全家桶更新了,1 和 2 未更新,可以自行按新的方法安装,推荐 DDS-Derek 的 xiaoya 安装脚本:

bash -c "$(curl -sL https://ddsrem.com/xiaoya_install.sh)"

全家桶安装:
1.安装命令(先看下面的 2.安装步骤)
bash -c "$(curl http://docker.xiaoya.pro/emby_plus.sh)" -s /媒体库目录

如果配置文件目录不在 /etc/xiaoya,那么要传递第 2 个参数,指明配置文件目录所在


bash -c "$(curl http://docker.xiaoya.pro/emby_plus.sh)" -s /媒体库目录 /配置文件目录
------------------------
注意 1:/媒体库目录 和/配置文件目录 是你要自己设定的,其中/配置文件目录 可以省略用默认设置
注意 2:全家桶安装时间会比较长,中间有一步替换 docker_address 的时候没有提示,根据机器性能,时间在
1 分钟到半小时都有可能,耐心等。

Emby 的登入账号:
用户名:xiaoya
密码:1234

================================================
================================================
2.安装步骤:(不要跳跃,老老实实一步一步走)
2.0. 确保 xiaoya 升级到了 1031 版本,同时如果是自己手动配置的容器,那么记得要加上 2345-
>2345,2346->2346 这 2 个端口映射

2.1. 先确保 xiaoya 正常运行,去 xiaoya 网页的 /元数据 目录点击一个 MP4 文件,看看是否正常,这个是
所有后续的前提

2.2. 选择一个有足够空间的目录(挂载硬盘或 U 盘都可以,确保有 160G 空余的空间)

2.3. 确保 docker_address.txt 配置正确,指向 xiaoya 的地址,这个文件在上面你自己要设置 /配置文


件目录 中。

2.4. 如果自己已经安装了 emby,请停止运行,修改端口,避免和 8096 冲突,自己的 emby 可以修改为 8097,


不然会因为端口冲突导致安装失败

2.5. 执行一键安装全家桶命令

2.6. 安装好后,重启 xiaoya 一次

2.7. 通过 xiaoya 的 2345 端口 去连接,尽量用客户端或者三方播放器,不要用网页,因为浏览器解码能力弱,


容易出现“不兼容的流”之类错误
-------------------------------
注意 1:
docker_address.txt 问题:如果 xiaoya 是 hostmode 模式,可以写 http://127.0.0.1:6789,其余的是
http://你自己的 IP:5678,建议 xiaoya 用 hostmode 模式,不容易出错),如果后面发现填错了,可以以
root 用户在命令行下进入 /媒体库目录 ,然后输出以下指令重新修改,不用重装:
find . -type f -name "*.strm" -exec sed -i 's/原来文件里写错的 IP 地址/新的正确的 IP 地
址/g' {} \;
注意 2:关于端口
默认的 8096 是 emby 自身的端口,使用时不会经过 xiaoya 反代,所以看片时你的机器会把需要的片子先拉到本
地再输出给你的 emby 播放器,这样会占用机器流量(内网无所谓,外网就很伤),好处是可以使用 emby 的转码
功能,可以网页播放和减少外网设置流量。
2345 端口是 xiaoya 的反代端口,这时 xiaoya 会自动代理你在 /配置文件目录/emby_server.txt 中填写
的 emby 地址,这时不能使用 emby 转码,好处是片子不会本地中转,节约本地流量(外网时是直接从网盘拉取播
放,不会经本地 emby 中转),建议用 emby 客户端或使用第三方播放器,不要网页直接播放,会有大量片子不能
正常播放。

===============================================
===============================================
3.同步更新:
建议使用 resilio-sync,以下是安装:
安装 resilio:
-----------------------------------
docker run -d \
-m 4096M \
--cpus=2 \
--name=resilio \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-p 8888:8888 \
-p 55555:55555 \
-v /etc/xiaoya/resilio:/config \
-v /etc/xiaoya/resilio/downloads:/downloads \
-v /媒体库目录:/sync \
--restart=always \
lscr.io/linuxserver/resilio-sync:latest
-----------------------------------
注意 1:
如果机器非 X86 架构,比如 ARM 之类的,安装大概率会报错,这时删掉上面安装命令的第 3 行:--cpus=2 \就
可以了。如果内存小于 4G,建议把第 2 行中的 4096 数字改为你内存的一半,这个自己看着办吧。

注意 2:
自己根据自己实际情况,调整最大内存使用量,CPU 核心使用限制和媒体库目录(也就是映射的 /sync),如果
觉得会疯狂读写硬盘,那么还可以加上这个参数
--device-write-iops /dev/sda:30
也就是限制对 /dev/sda 这个磁盘一秒钟写入的操作不超过 30 次,具体数值根据你的接口和硬盘性质自己调整
-------------------------------------
以下为更新链接:
/每日更新/电视剧
B23GVMKMMB2S3VM6DPJ6FPR34WRVXK7ML

/每日更新/电影
BPRGGBYBUH5AG44FFPTXJK5AAE7EMNRVF

/电影/2023
BV5LOL6QDC52LRD22NFQHCEYTG2HFJDWX

/纪录片(已刮削)
BXMK5MMDDJ76P7N6NQMYUMVB7FTFIG6OK

config
BTVLZVAGKPR6NYKRC5HDYWV6KH6BG77DS
--------------------------------------
注意:
config 要打开“选择性同步“开关,在导入链接时选取,然后直接暂停,进入设置选择要同步的内容如下:
/cache
/metadata
/data/library.db
总共是 2 个目录和 1 个文件。这样更新时不会破坏你 emby 的设置和用户内容,包括用户名,观看记录等等。

===========================================================
===========================================================
4.无人值守更新 emby 的 library.db*数据库,做到完全自动化(可保留用户数据)(替换后如果非管理员帐号
打开空白,请参照本文 7)
以 root 用户在命令行输入:
crontab -e
在最下方加入以下 2 行内容:
30 6 * * * /usr/bin/docker stop emby
0 7 * * * /usr/bin/docker start emby
然后 ctr+x 保存
上面现行的计划任务是在早上 6 点 30 关闭 emby,这时 resilio 会同步 library.db*这几个数据库文件,然后
在 7 点重新开启 emby(3 个数据库文件大概 3 个多 G,半小时够了,如果带宽小,可以把间隔时间增加)。

另一种方法(更不容易出错,但更麻烦):
4.1 在 docker 里停止 emby

4.2 在 /媒体库目录 下新建一个 config_data 目录,然后把 /媒体库目录/config/data 里的内容移动到新


建的 /媒体库目录/config_data 中(命令行为:mv -rf /媒体库目录/config/data/* /媒体库目
录/config_data/)

4.3 在 docker 中 emby 的 volume 增加映射:/媒体库目录/config_data ----> /config/data,(注


意是新增,原来的 config 映射不要动),建议用 portainer 设置简单一点。

4.4 然后在 resilio 中同步 config,目录选择 config,同上选择性更


新 cache,metadata,data/library.db 共 2 个目录 1 个文件。

4.5 计划任务(debian 举例,其它系统自行摸索吧,软路由系统或群晖的话一般直接有地方设置):


命令行下输入:
crontab -e
然后在最下面增加(这个不保留用户数据,如要保留看下面):
30 6 * * * docker stop emby && rm -f /媒体库目录/config_data/library.db* && cp -f /媒
体库目录/config/data/library.db /媒体库目录/config_data/ && docker start emby
然后 ctr+x 保存。

如果要保留用户数据:
先安装 sqlite(debian 举例,其它系统自行解决):
apt install sqlite3
然后
crontab -e
30 6 * * * docker stop emby && rm -f /root/xiaoya_emby_library_user.sql &&
sqlite3 /xiaoya_data/config_data/library.db ".dump UserDatas" >
/root/xiaoya_emby_library_user.sql && rm -f /xiaoya_data/config_data/library.db* &&
cp -f /xiaoya_data/config/data/library.db /xiaoya_data/config_data/ && sqlite3
/xiaoya_data/config_data/library.db "DROP TABLE IF EXISTS UserDatas;" && cat
/root/xiaoya_emby_library_user.sql | sqlite3 /xiaoya_data/config_data/library.db &&
docker start emby

注意:/xiaoya_data 为媒体库目录,替换成自己的。

===========================================================
===========================================================
5.自动清理网盘缓存:建议用模式 0,可以设定为早上 6 点执行
以下为群里转发:可以参考最下面的方法
----------------------------------------------------------
一劳永逸的 小雅 转存 清理 工具(20230801 更新:支持新版阿里云。支持 TG 推送功能,支持自动领取签到奖
励功能感谢 gavin liu 提供的脚本,支持实时清理,支持小雅镜像定时重启和定时更新,支持多个阿里云盘签到
功能,建议模式 3 或模式 5)

模式 0:每天自动清理一次。如果系统重启需要手动重新运行或把命令加入系统启动。
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
0 -tg

模式 1:一次性清理,一般用于测试效果。
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
1 -tg

模式 2:已废弃,不再支持

模式 3:创建一个名为 xiaoyakeeper 的 docker 定时运行小雅转存清理并升级小雅镜像


bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
3 -tg

模式 4:同模式 3

模式 5:与模式 3 的区别是实时清理,只要产生了播放缓存一分钟内立即清理。签到和定时升级同模式 3
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
5 -tg

其它模式:也可以把脚本下载下来自己魔改。

签到功能说明:
1、执行时机和清理缓存完全相同
2、可以手动创建/etc/xiaoya/mycheckintoken.txt,定义多个网盘签到的 32 位 refresh token,每行
一个,不添加文件就是默认小雅转存的网盘签到。
3、自动刷新/etc/xiaoya/mycheckintoken.txt、/etc/xiaoya/mytoken.txt(可能可以延长 refresh
token 时效,待观察)

关于模式 0/3/4/5 定时运行的说明:


1、默认从运行脚本的下一分钟开始,每天运行一次
2、运行的时间也可以通过手动创建/etc/xiaoya/myruntime.txt 修改,比如 06:00,18:00 就是每天早晚 6
点各运行一次

关于自动升级:
1、定时升级的命令保存在/etc/xiaoya/mycmd.txt 中,删除该文件变成定时重启小雅
2、完成清理和签到后自动执行/etc/xiaoya/mycmd.txt 中的命令,该文件中的内容默认升级小雅镜像,可以
修改该文件改编脚本的行为,不建议修改。

关于 tg 推送:
所有模式加上-tg 功能均可绑定消息推送的 TG 账号,只有第 1 次运行需要加-tg 参数

问题反馈:联系群里的 heiheigui
-------------------------------------------------------------
方法如下:
如果有翻墙环境,可以联动 telegram 做通知,如果没有就忽略。下面会具体说明

1.设置定时时间:
去/配置文件目录(默认为/etc/xiaoya/)目录中输入以下:
nano myruntime.txt
如果有内容先清掉,没有输入以下内容:
06:00
然后 ctr+x 保存

2.第一次运行
有翻墙环境并需要 telegram 通知运行以下命令:
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
0 -tg
然后去 telegram 找到 xiaoyahelper_bot 获取码并填入
无翻墙环境或不需要 telegram 通知运行以下命令:
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
0

3.设置开机自动启动(以 debian 为例,其它系统自行设置,如果是软路由系统比如 istoreos,openwrt 之类


的可以在路由界面增加一行开机启动项”bash -c "$(curl -s
https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s 0“就好了):
debian 下:
nano /etc/rc.local
在最后 exit 0 的上面增加以下内容:
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
0

=====================================如果 2345 端口客户端使用没问题就不要用这一步=========


===================
6.emby 端口禁用 8096(如果只使用 2345 端口,并且是使用客户端的情况下,需要屏蔽掉 8096 端口,因为客
户端在下次启动时会自动设置为 8096 端口,就很烦):
命令行下输入以下内容:
-----------------------------------------
(先看下面的注意事项,本步如果不懂 iptables,请严格按照方法执行,很容易出错。)
-----------------------------------------
iptables -I INPUT -p tcp --dport 8096 -j DROP
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 8096 -j ACCEPT
ip6tables -I INPUT -p tcp --dport 8096 -j DROP
ip6tables -I INPUT -p tcp -s fd58::/64 --dport 8096 -j ACCEPT
---------------------------------------------------------------
注意 1:其中 8096 为你需要屏蔽的端口号,127.0.0.1 是你 emby 的 IP 地址(如果是 host 模式,直接用
127.0.0.1 就可以了)
注意 2:第 4 行 fd58 为你本地的 IPV6 内网地址的开头字段,需要自己在路由的 lan 口去确认
注意 3:以上 2 个注意事项一定要根据你自己的实际情况来改。
注意 4:以上命令不能重复执行,只能一次,并且这 4 行的顺序不能改动。如果出错,请重启重新设置。

以上命令输完后,请自行测试,如果没有问题了进行下一步设置开机自启:
命令行(debian 为例,其它的参考上面 5.自动清理网盘缓存 中的开机自启设置):
nano /etc/local
在最下面 exit 0 上面增加上述你已经测试好没问题的 4 行命令。
ctr+x 保存。

重启,测试无问题,OK。(有问题请去掉上面 4 行开机自启动项,重启后重新设置)
如果 5.自动清理网盘缓存 和 6.emby 端口禁用 8096 都需要,改完的 rc.local 是这样的:

/etc/rc.local 这个是文件名,以下线中间的是内容:
--------------------------------------------------------------------
#!/bin/bash
iptables -I INPUT -p tcp --dport 8096 -j DROP
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 8096 -j ACCEPT
ip6tables -I INPUT -p tcp --dport 8096 -j DROP
ip6tables -I INPUT -p tcp -s fd58::/64 --dport 8096 -j ACCEPT
bash -c "$(curl -s https://xiaoyahelper.zngle.cf/aliyun_clear.sh | tail -n +2)" -s
0
exit 0
---------------------------------------------------------------------
===================================================================================
=====================

7. 更新:解决更新替换 library.db 后非管理员帐号打开空白的方法

7.1 找到你的非管理员帐户的用户 ID,在 /媒体库目录/config/config/users 里查看,目录名的那一串字


符就是,比如:f7e087aa8fd**********e38ea604031e5f(星号为我打的码,你找到的应该是一串字符串,
以下举例就用这个 ID),记录下来,有几个用户就记录几个。下面举例中称为“USERID”
注意,有的是空目录,你自己确定,也可以浏览器访问 http://IP:2345/Users?api_key=密钥(看 7.2)来
查看,“ID”:后的是用户 ID。这里是每个用户一个{},多个用户有多个。7.3 部分可以直接查看这个地址,不
用一个一个看,所有用户都在这里了。

7.2 进入 emby,打开控制台,左边打到最下方,点 API 密钥,在右边点击“+新 API 密钥”,应用名称随意,


确认后下方会出来你命名的 API 密钥,比如:20a7bc5d**************7ebf4935e544(星号为打码,同
上),记录下来。下面举例中称为“密钥”。

7.3 用浏览器打开:
http://IP:2345/Users/USERID?api_key=密钥,用几个用户就打开几个,自己更换 USERID
例:
http://IP:2345/Users/f7e087aa8fd**********e38ea604031e5f?
api_key=20a7bc5d**************7ebf4935e544
注意:可以按 7.1 中浏览器直接打开 http://IP:2345/Users?api_key=密钥 ,所有用户都在这。一个用户
一大段,不要遗漏。

7.4 在打开的页面中将“Policy”部分复制下来,应该是这样的:
“Policy":{
xxxxxxxxxxxx
}
中复制 Policy 后面{}中的内容,含”{}“。有几个帐户就得到几个,以下称为”用户策略 1,用户策略
2,......“。

7.5 在 /root 下新增一个 update_userpolicy.sh 的文档,命令行如下:


nano /root/update_userpolicy.sh
将以下内容复制进去(横线中间的部分):
------------------------
#!bash
USER_POLICY='用户策略'
curl -i -H "Content-Type:application/json" -X POST -d "$USER_POLICY"
http://IP:2345/Users/USERID/Policy?api_key=密钥
------------------------

注意 1:多用户,有几个用户就就新建几个文件:
update_userpolicy_1.sh
---------------------------------------------
#!/bin/bash
USER_POLICY='用户策略 1'
curl -i -H "Content-Type:application/json" -X POST -d "$USER_POLICY"
http://IP:2345/Users/USERID_1/Policy?api_key=密钥
---------------------------------------------

update_userpolicy_2.sh
---------------------------------------------
#!/bin/bash
USER_POLICY='用户策略 2'
curl -i -H "Content-Type:application/json" -X POST -d "$USER_POLICY"
http://IP:2345/Users/USERID_2/Policy?api_key=密钥
---------------------------------------------

注意 2:自行替换 用户策略,USERID,密钥,实际参考以下(以一个用户举例):
--------------------------------------------
#!bash
USER_POLICY='{"IsAdministrator":false,"IsHidden":false,"IsHiddenRemotely":false,"Is
HiddenFromUnusedDevices":true,"IsDisabled":false,"LockedOutDate":0,"AllowTagOrRatin
g":false,"BlockedTags":[],"IsTagBlockingModeInclusive":false,"IncludeTags":
[],"EnableUserPreferenceAccess":true,"AccessSchedules":[],"BlockUnratedItems":
[],"EnableRemoteControlOfOtherUsers":false,"EnableSharedDeviceControl":false,"Enabl
eRemoteAccess":true,"EnableLiveTvManagement":false,"EnableLiveTvAccess":false,"Enab
leMediaPlayback":true,"EnableAudioPlaybackTranscoding":false,"EnableVideoPlaybackTr
anscoding":false,"EnablePlaybackRemuxing":false,"EnableContentDeletion":false,"Rest
rictedFeatures":[],"EnableContentDeletionFromFolders":
[],"EnableContentDownloading":true,"EnableSubtitleDownloading":true,"EnableSubtitle
Management":false,"EnableSyncTranscoding":false,"EnableMediaConversion":false,"Enab
ledChannels":[],"EnableAllChannels":true,"EnabledFolders":
[],"EnableAllFolders":true,"InvalidLoginAttemptCount":0,"EnablePublicSharing":false
,"RemoteClientBitrateLimit":0,"AuthenticationProviderId":"Emby.Server.Implementatio
ns.Library.DefaultAuthenticationProvider","ExcludedSubFolders":
[],"SimultaneousStreamLimit":0,"EnabledDevices":
[],"EnableAllDevices":true,"AllowCameraUpload":false,"AllowSharingPersonalItems":tr
ue}'
curl -i -H "Content-Type:application/json" -X POST -d "$USER_POLICY"
http://192.168.1.5:2345/Users/f7e087aa8fd**********e38ea604031e5f/Policy?
api_key=20a7bc5d**************7ebf4935e544
-------------------------------------------
按 ctr+x 保存。

7.6 增加执行权限:
chmod +x /root/update_userpolicy.sh

7.7 加入自动处理
如果你在第 4 部分设置的是早上 6:30 执行数据库更新,那这个部分就设置为 6:40,留 10 分钟给 emby 启动,
具体如下:
命令行:
crontab -e
在最后(如有 exit 0,放 exit 0 前面)增加以下内容(单用户):
40 6 * * * sh /root/update_userpolicy.sh
如果是多用户增加以下内容(多用户):
40 6 * * * sh /root/update_userpolicy_1.sh && sh /root/update_userpolicy_2.sh
注意,这里有几个用户你应该就有几个文件,按 sh /root/update_userpolicy_x.sh 增加,用&&来连接
(如果多用户都放到一个文件里会大概率执行报错,原因未知,所以改成了多文件方式。)
然后 ctr+x 保存

===========================================================================

You might also like