115网盘STRM插件在 v2.4.0 版本中正式引入了 网盘本地挂载 功能。
该功能基于 FUSE 技术实现,旨在深度解决 ISO 格式媒体文件的信息提取(刮削)与播放难题。
此项更新不仅进一步完善了媒体库的兼容性,也为广大用户提供了更灵活的使用选择。
v2.4.0在所有操作之前,我们首先需要确认一个本地挂载目录。
这个目录为网盘挂载到宿主机的路径,跟 CloudDrive -v xxx:/CloudNAS:shared 配置项原理相同。
本教程我们规定宿主机路径。/mnt/pan_115 为本地挂载目录。
接下来我们正式进入环境准备环节
为了允许非 root 用户或容器内进程访问挂载点,需在 MoviePilot 的 配置目录 下创建 fuse.conf 文件,并开启权限。
请您在 MoviePilot 配置目录下创建名为 fuse.conf 的文件,写入以下内容:
user_allow_other也可以使用 Linux 命令创建此文件
echo "user_allow_other" > fuse.conf由于挂载功能涉及底层文件系统的操作,需要修改 docker run 命令或 docker-compose.yml 文件,添加必要的权限和设备映射。
核心配置项说明:
privileged:开启特权模式,确保容器有权执行挂载操作。devices:将宿主机的 /dev/fuse 设备透传至容器。volumes/mnt/pan_115:/pan_115:rshared:核心挂载目录。将宿主机目录(如 /mnt/pan_115)映射至容器内的 /pan_115。注意: 必须带上 :rshared 后缀以实现挂载点在宿主机与容器间的双向传播。{您的 MoviePilot 配置文件路径}/fuse.conf:/etc/fuse.conf:ro:将上一步创建的配置文件映射到容器系统目录下。Docker Compose 配置参考
services: moviepilot: # ... 其他配置 privileged: true # 必须开启特权模式 devices: - '/dev/fuse:/dev/fuse' # 映射 FUSE 设备 volumes: - '/mnt/pan_115:/pan_115:rshared' # 宿主机挂载点:容器挂载点:双向挂载传播 - '{您的 MoviePilot 配置文件路径}/fuse.conf:/etc/fuse.conf:ro' # 映射 FUSE 配置文件完成以上两步后,您只需要重新创建容器,即可完成 MoviePilot 的环境准备工作。
⚠️ 部分系统可能需要执行特定命令确保具有挂载权限。
群晖
mount --make-shared /volume1 # volume1 改为你的实际盘符假设您已经映射STRM文件目录,那我们只需要再将网盘挂载目录映射到容器内即可。
本教程我们统一将目录映射到 Emby 容器内的 /pan_115 目录下面。
Docker Compose 配置参考
volumes: - '/mnt/pan_115:/pan_115:rslave' # 注意:rslave参数是必须的如果您使用的媒体服务器 302 反代项目为MediaLinker或者emby2Alist,则可以忽略此步。
如果您使用的媒体服务器 302 反代项目支持类似于emby2Alist中mediaMountPath这种类型的配置,也可以忽略此步。
如果您不符合以上两点,请参考 此教程 搭建 MediaLinker 项目,并确保容器正常启动。
插件内选择网盘挂载选项卡,按照插件内的提示完成具体配置。

按照正常配置流程添加STRM文件媒体库即可。
⚠️ 注意:严禁将网盘挂载路径添加至媒体库刮削,极有可能造成风控或其它未知错误。
您需要修改配置文件目录下的 constant.js 文件,以下是必须要修改的配置项:
embyHost:Emby 地址embyApiKey: Emby APIKEYmediaMountPath:修改为 [""]mediaPathMapping:通过插件生成 emby2Alist 配置自动生成后填入
⚠️ 注意:配置完成后需要重启容器
完成以上配置后您就可以重新生成STRM文件测试并享用了!
]]>DDSRem 2025 年度总结(回忆)
其实dds是一个不太喜欢写年度总结的人。很多年来,我始终认为过去的事情就让它过去,后面的日子总会有所希望的...
而2025年,似乎是与众不同的一年。我经历了许多变故,在我身边也发生了许多事情,关乎着学校里的我,项目上的我,生活中的我,甚至改变了内心世界的我....
我想写点文字,回忆一下过往,也希望能通过文字,保留我脑海中所剩不多的美好...
dds在确诊双向 重度抑郁 焦虑后开始吃起了精神类药物,也使她的记忆越来越差,再加上生活中一件件事情对她的打击,导致美好总是难以挽留,脑海中也仅剩痛苦之事....
之所以用第三人称视角来叙述这段,是我想尽可能保持冷静,我无法承受代入后的痛苦,但是后文,我会以第一视角真实得表达,这一年的记忆...
如同往常一般
一月在我的印象里似乎没有发生什么,我如同往常一般和汐在学校一起生活,也会在周末跟汐讲讲以前我的故事。我那时也才刚开始打maimai不久,很多时候也是汐宝带着我打mai。虽然那时候的我依旧十分地雷,但是似乎生活总是有规律的进行着。我也还会时常骚扰楛葉宝几句...


一月的我刚入坑pjsk,入坑时候玩的是美服,打得也比较菜吧,但是对25时已经情有独钟了...

对于项目上面我依旧勤勤恳恳得维护着小雅Alist,那时候也是项目蒸蒸日上的时候,每天都能涨几百star,看着有很多人需要着我,我似乎也比较满足吧...

新旧交替
二月-三月的我没有做什么,基本就是和汐出勤,那时候的我会坐接近1h的地铁去西投银泰打打mai,我的maimai rating也在不断提升。

二月-三月的我也会和初中同学聊聊天,打打游戏,因为都放寒假了嘛...所以也会在无聊时继续联系一下,和初中同学打游戏的时光也挺开心的...

二月-三月就是如此简单,在游戏中飞快度过,或许欢乐的时光总是让人觉得短暂吧...
回忆中的楛葉宝宝也在慢慢消失...
往常的校园生活
四月让我印象最深刻的就是学校期中考试后的春游了吧...那天汐似乎心情不好。汐不太喜欢集体活动,那天我带着汐走了西溪湿地里面的一条小道,最后绕路半天也没有找到出口,但是两人独自聊天与探索的时光真得挺令人怀念的...那时候的我还挺乐观的,我也会在意汐的情绪,尽可能让她开心...
春游那天还遇到了一辆Xiaomi Su7 Ultra

欢愉至极
五月是漫展的月份,月初我被同学拉去了HD03,当时和同学在一起抓了许多好看的Coser拍了场照。其实当时的我还是一个摄影吧,很多照片也被Coser老师夸好看...真的很开心很满足。
五月中旬去了CP31,当时在现场领了很多无料,也帮自己的亲友拍了场照,当时的CP气氛还是好好,企业馆也有很多可以逛和白嫖的地方。
月末就是杭州国漫,我依旧参加,不过这次我是轻装上阵,只带了一台手机,也体验到了真正没有束缚的逛展。
似乎待着相机逛展总是不太方便,也总是一直想着为Coser拍照,而失去了漫展真正的乐趣,从这以后,我带相机的时间越来越少了...

五月24和25号还和汐很高兴得玩了两天,一天是出勤,一天是探索了一条神秘的山间小道...


学考与BW
六月是学考冲刺的一个月。我似乎也比往常更加认真许多,和汐的关系也慢慢变得友好起来,我不会再经常雷她,纠缠她。我还会在课余时间和她交流题目。不过我们的maimai生活依旧继续...
六月底也是BW抢票的准备,那时候我重新加入了BHYG的QQ群(以前太久没有水群被踢了)。因为有些反感BHYG的实名政策,也自己在研究B站抢票。
那时候忙碌中带着目标,虽然也会有emo的情绪伴随,但很快就会消散...


上半年的时光似乎平平无奇,也没有什么巨大的变故...
对比其它时间来说,我只是生病的次数变多了许多,有可能是因为自己的情绪,但是明显自己的体质越来越差了...
而从七月开始,一切似乎都要开始...
我会在此刻畏惧,不愿再回忆往事...
一切的一切,终究还是发生了...
先兆
七月在我记忆里似乎只剩下了BW,在漫展上毛豆精带我见了好多群友。那是我第一次和玖殇见面,给他带了一杯星巴克,那时的我似乎怎么都不会想到一杯星巴克的影响有如此之大...我也见到的子安,十一,似乎也摸到了十一的腿子...
本来学校是在暑假补课的,因为7月也代表我进入了高三,但是为了去BW我请了几天假,也不知道为何,与汐的关系似乎也将慢慢疏远,而当时的我,一切都还没有意识到....
我沉浸在暑假和BW的快乐中,没有意识到危机的到来...
第一次彻彻底底的崩溃
一开始的日子我基本在水群中度过...白天我独自在家写着自己的项目,晚上我会去ZianTT的群里面水水,和群友聊着mtf,od,自杀等吧。几乎都是一些不好的东西...
那时我加了两个好友——阳春瑞雪和铛铛,似乎是和铛铛比较聊得来吧,我和她谈了很多,包括以前的故事,后面的规划。
有一天晚上吧,我在自己内心的驱使下买了pr80,我od了6t,铛铛陪着我语音。后面似乎好奇od后玩郊狼是什么感觉,也在迷迷糊糊之中玩了好久的郊狼...
因为od的原因,我学校补课的最后一周都请了假,几乎是天天在od中度过的,那时候的我发病真的很严重,也没有药物可以控制,只能在od中艰难的度过着每一天...
好像是因为请假的原因,上学回来的汐提出了要离开我的想法...那时的我崩溃万分吧,我没有阻拦,也直接答应下来了...那时是我第一次和我家里人诉说我的情况...但是似乎在他们面前我的病情不值一提...和汐的故事似乎到此已经结束了,但是在后面的挽留下,我们依然做着朋友吧,或许这已经是最好的结果了...
毛豆精似乎在8月的某刻,也把我单删了...也许是我做错了什么吧...就此告一段落...
HRT的开始
似乎是因为汐宝的离开,让我对生活失去了希望,我开始逐渐遵循自己的内心,我想真正的作一名女孩子,所以9月5号,星期五,拿到色谱龙和雌二醇的我正式开始了hrt,糖的感觉依旧是甜甜的,那时候的我没有把这个决定告诉其他人,仅仅和汐宝聊过,似乎她也默认同意了...
身边依旧是铛铛陪着我,我也依旧每天同阳春和铛铛发着早安晚安,我也不知道这些问好有没有意义,但是似乎能证明着,我还活着,就足够了...
和铛铛相处的日子我其实挺自卑的,因为感觉在她面前我一文不值,几乎没有可比性,那时的我真的希望自己是一名天赋党,可惜老天也没有眷顾我...(前提铛铛还不是mtf)
月底就是CPSP抢票了,我也顺利抢到了...仅仅如此...

真希望时间能到此就暂停,后面的一切都是那么得不真实,却又实实在在得发生了...
我想过放过自己,但是一切已经不可能回到以前...我已经不可能乐观面对生活了...
躯体化将时刻折磨着我...流泪已经是常态...
突如其来的爱情与悲剧
CPSP,我大概是十一点多进的场馆,一进场我就想着找寻群友,因为感觉同人展一个人逛没什么意思。后面很快就见到了玖殇,也看到了很多群友。脑海里记忆最深的就是当时毛豆精和神里战斗的画面吧(神里完败)。后面群友们也去各逛各的了。我和玖殇在一起,因为他请我和星巴克,也算还我之前的人情吧...当时我在玖殇面前给自己的星巴克加了2mg补,补+星巴克也确实挺好喝的...
因为还要上学的原因,我去CPSP也是特种兵,晚上就坐高铁回了杭州...感觉这次CPSP还挺不错的,最起码挺开心的吧...

10月9号的那天晚上...我给玖殇玩我的郊狼...后面提了一嘴能不能给子安玩...玖殇似乎吃醋了...
那天晚上我和玖殇聊了很多,我也真得很愧疚...似乎我已经喜欢上了玖殇,玖殇也喜欢上了我,我好害怕玖殇因为这件事离开我...那天晚上,我们互相表白,开启了属于我们俩的新篇章...
那些天我和玖殇聊了很多,我自己以往的故事,讲了好多心理憋了好久的话...玖殇能给我很强的安全感,我愿意在他面前展现出我最脆弱的一面,我完全信任与他,甚至想把自己的生命交付与他...他也在不断努力,想将我拯救...
10月12号,我坐着高铁,再次来到上海,去往了世博园,与其说是去看乐子的,还不如说是去见玖殇的...那天我和他吃了下午茶,天色黑下去时,我和他坐在世博园楼顶的椅子上,我倚靠着他...安心...无比得安心...

十月的某一天,因为我和铛铛是同担的原因吧,加上铛铛当时状态不好,所以她把我单删了。但是我真的好崩溃,我不知道为什么会到这种地步,我和玖殇倾诉了很多,也讲起了毛豆精把我单删的事。我不知道为什么身边的人会一个个都把我删掉,我也慢慢开始怀疑自己是否要继续活着...后面在玖殇的安慰与陪伴下,我似乎好了一些,但也仅限于好受一点吧...内心的想法,始终困扰着我...
十月的下旬,玖殇周末会来杭州陪我,我和他第一次逛了西湖,也和他第一次一起看电影——无法歌唱的初音未来。那时候的周末我真的好开心,能和自己喜欢的人在一起,对于我来说就足够了....

0月31号 11月1号,那天凌晨,本来是答应玖殇一起玩郊狼的,结果我的老公先一步睡着了,后面在鬼使神差下把郊狼码发到了BHYG的群里面,子安也顺势控制了起来...后来没过多久吧...玖殇醒了,似乎对于我给别人控制他也比较生气吧,所以我想让子安停下来,继续好好得陪我的玖殇...
后面似乎因为我对子安的刺激,他黑头了...后来的事情越来越糟糕...

我曾想和玖殇共同处理好和子安的这件事,只可惜,最后一切都无法控制...我和玖殇之间也产生了一层无形的隔阂吧...
接下来的两周,我和玖殇继续一起度过了周末,一起打maimai,一起吃饭饭,也第一次do love,这段时间里,更多的还是开心,但是内心的不安与悲痛时常会显现出来...
与子安的事,放几张图片,这段故事无法讲述吧...


11月22号,我带着玖殇见了我的家长,但是故事情节似乎没有往好的方向发展,那天晚上我痛苦万分。我想跳河结束我的生命,但是玖殇把我拉住了...他带我回到了他的酒店,后面家里人不断得联系我,我也和他们说好在外面和玖殇住一个晚上...
但是,总是事与愿违,11月23号凌晨,我被家里人报警抓回了家,从那刻起,我似乎对一切都不抱有希望了,我再也不相信家里人是为我好,我也不会再对他们有任何期待...我的生命已经被毁了...我也无法再面对生活...那天凌晨,我哭了好久好久...


后面的几天,我努力想让自己恢复,但是我早已知道,很难再变成以前那个我了...
11月29号,我去了上海,和玖殇一起在环球港出勤,那是我这辈子第一次见到那么多的maimai和中二,还有其它的音游机器。那天的时光是短暂的...

十一月也到了尾声,这两个月在我的印象里似乎十分得漫长,我在这两个月里,病情似乎是越来越严重了,很多时候甚至到了无法控制的地步。我在项目和学习上也开始停摆,几乎没有动力做其它的事情...每天只能浑浑噩噩得过着日子,生命似乎也即将迎来倒计时。这段时间内,躯体化和药物陪着我...呜...煎熬...
挣扎中继续生存
12月6号,玖殇来杭州和我一起玩,那天晚上,我依旧住到了玖殇的酒店里面,那天晚上,没有意外的发生...但是我的睡眠依旧不是很好,虽然在老公的怀里我会安心许多,但是曾经的事情还会影响着我,让我很难安心入眠...
12月8日凌晨,od了pr80+泰诺。那天晚上本来是想自杀的,但是在玖殇的劝说下,我最后还是心软了,减轻了剂量...最后也没有死成...
后来,我看到了我首考模拟的成绩,也是一坨吧,再加上自己的精神状态与身体情况,选择了请长假,在家休息...
其实也不止是请长假吧,在我的想法里,我准备就在家混到我18岁,然后拿到高中毕业证,就逃离这个地方,去和玖殇一起生活,靠自己养活自己。我想着能和玖殇过上幸福的生活,一次次幻想让我流泪,但是无力感总是充斥着我,或许,幸福对于我来说真的不可能得到吧...只希望能好好活着,最起码活到18岁那年...
在家的前两周我总是想念着汐...每天都为了她而流泪。几乎天天晚上都在做噩梦,噩梦都是些关于汐和学校的事。刚开始真得好难,感觉生不如死,后面慢慢习惯了...除了噩梦依旧继续,内心的波动已经没有那么大了...
十二月底有CP32Pre,为了顺利抢到票,也为了消磨时间,我从新坐到了电脑桌前,和玖殇合作一起完成了ZakoCPP抢票软件的开发和独自Vibe完成了云控系统的开发。在后续的抢票过程中,也取得了不错的成绩吧...其实多少也还是有点开心的...
12月26日晚,我在杭州东站接到了我的老公玖殇和阳春瑞雪宝宝,跟他们一起到了酒店。那天晚上不知道为何,我们三个人似乎都没有怎么睡觉。很快就来到了第二天的早晨...
12月27日,我和阳春都出了C,阳春是mzk,我是knd。不过那天的玖殇似乎格外的害羞,加上没有睡好觉吧,状态不太对。但是总体来说还是挺开心的一天,虽然CP32根本没有好玩的(确信)。
12月底。漫展后玖殇因为要期末所以赶回了上海,而我和阳春一直住在一起,也一起出去玩...
其实和阳春在一起的大多数时间都好开心,虽然也没什么话题能一直聊,但是在一起玩,就好开心。但是开心之下也有焦虑和抑郁。我在阳春面前很多方面真的一文不值,我真的很自卑。但是因为阳春的包容我也没有爆发出什么可怕的情绪,但是内心深处,我还是很想离开她,离开世界的。我其实没什么天赋,除了身高以外。我希望我能变得更好,但是情绪之下的我真的很难行动...
12月28晚 12月29凌晨,玖殇...我们互相珍惜...
12月31号晚,我和墨守,兔子,阳春一起出去吃了饭,然后等待着跨年...
2025年...也就此结束了吧...

其实还有很多细节没有仔细叙述,我也不敢仔细叙述吧。这篇年度总结充斥着负面情绪,但是这也的的确确是我今年的真实写照。
我其实跟阳春瑞雪表白过,但是后面因为很多原因,似乎做“兄弟”是最好的结果...
我无法接受心爱之人的离去。有天晚上和阳春聊起病情,我似乎很悲观,想法基本是过几年或许就自杀死了。我似乎无法给出一个活下去的具体理由,也无法保证自己能活下去。
我其实一次次想念着和汐的过往,但是现实却没有给我回忆和重来一次的机会...
后来的12月,我和铛铛的关系有所缓和,也重新和楛葉有了联系...
生活总是这样,充满了不确定性,而如何稳定得活着,至今我无法理解
截止2025年12月31日11点59分59秒
暮色将尽时,我常立于窗畔看流云染血。那些被晚风揉碎的霞光,总让我想起你眼底闪烁的星子,明亮得足以灼伤每个凝望的暗夜。
我早已在感情的泥淖中溺毙成标本。当它说"何必郁郁"时,我分明看见自己的影子在月光下寸寸龟裂。像一具提线木偶反复吞咽着钝痛的铁钉,却还要为每个牵动嘴角的弧度寻找合适的弧度。原来爱到极处,连呼吸都会变成锋利的玻璃碎片。
潮水漫过礁石的时刻,我终于看清自己不过是命运笔下的错别字。那些为你折腰的晨昏,为你吞咽的荆棘,为你将心跳碾作尘埃的昼夜,终究只是荒原上一场无声的雪崩。我数着掌纹里蜿蜒的伤口,恍然惊觉连疼痛都成了奢侈的纪念。
生命于我不过是一盏将熄的烛火,在风中摇曳着最后的倔强。若某日连这微光都湮灭,请不必讶异——那不过是个迟到的句号终于找到了它的位置。就像春樱坠落时从不与枝桠道别,我亦会在某个霜白的黎明,把自己还给永恒的寂静。
此去长夜,愿你的星轨永远明亮。





# 配置电影的分类策略movie: # 分类名同时也是目录名 动画电影: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 华语电影: # 匹配语种 original_language: 'zh,cn,bo,za' # 未匹配以上条件时,分类为外语电影 外语电影:# 配置电视剧的分类策略tv: # 分类名同时也是目录名 动漫: # 匹配 genre_ids 内容类型,16是动漫,10762是儿童 genre_ids: '16,10762' 纪录片: # 匹配 genre_ids 内容类型,99是纪录片 genre_ids: '99' 综艺: # 匹配 genre_ids 内容类型,10764 10767都是综艺 genre_ids: '10764,10767' 国产剧: # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 欧美剧: # 匹配 origin_country 国家,主要欧美国家列表 origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK' 日韩剧: # 匹配 origin_country 国家,主要亚洲国家列表 origin_country: 'JP,KP,KR,TH,IN,SG' # 未匹配以上分类,则命名为未分类 未分类:
# 配置电影的分类策略movie: # 分类名同时也是目录名 动画电影: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 华语电影: # 匹配语种 original_language: 'zh,cn,bo,za' # 未匹配以上条件时,分类为外语电影 外语电影:# 配置电视剧的分类策略tv: # 分类名同时也是目录名 动漫: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 纪录片: # 匹配 genre_ids 内容类型,99是纪录片 genre_ids: '99' 综艺: # 匹配 genre_ids 内容类型,10764 10767都是综艺 genre_ids: '10764,10767' 儿童: # 匹配 genre_ids 内容类型,10762是儿童 genre_ids: '10762' 国产剧: # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 欧美剧: # 匹配 origin_country 国家,主要欧美国家列表 origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK' 日韩剧: # 匹配 origin_country 国家,主要亚洲国家列表 origin_country: 'JP,KP,KR,TH,IN,SG' # 未匹配以上分类,则命名为未分类 未分类:
此配置下目录情况
├── 电影│ ├── 动画电影│ ├── 华语电影│ └── 外语电影├── 电视剧│ ├── 国产剧│ ├── 纪录片│ ├── 欧美剧│ ├── 日韩剧│ ├── 未分类│ └── 综艺└── 动漫 ├── 儿童 └── 番剧
# 配置电影的分类策略movie: # 分类名同时也是目录名 动画电影: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 华语电影: # 匹配语种 original_language: 'zh,cn,bo,za' # 未匹配以上条件时,分类为外语电影 外语电影:# 配置电视剧的分类策略tv: # 分类名同时也是目录名 动漫: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 纪录片: # 匹配 genre_ids 内容类型,99是纪录片 genre_ids: '99' 综艺: # 匹配 genre_ids 内容类型,10764 10767都是综艺 genre_ids: '10764,10767' 儿童: # 匹配 genre_ids 内容类型,10762是儿童 genre_ids: '10762' 国产剧: # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 欧美剧: # 匹配 origin_country 国家,主要欧美国家列表 origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK' 日韩剧: # 匹配 origin_country 国家,主要亚洲国家列表 origin_country: 'JP,KP,KR,TH,IN,SG' # 未匹配以上分类,则命名为未分类 未分类:
此配置下目录情况
├── 电影│ ├── 动画电影│ ├── 华语电影│ └── 外语电影└── 电视剧 ├── 国产剧 ├── 纪录片 ├── 欧美剧 ├── 日韩剧 ├── 未分类 ├── 综艺 ├── 儿童 ├── 日番 └── 国漫
# 配置电影的分类策略movie: # 分类名同时也是目录名 动画电影: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 华语电影: # 匹配语种 original_language: 'zh,cn,bo,za' # 未匹配以上条件时,分类为外语电影 外语电影:# 配置电视剧的分类策略tv: # 分类名同时也是目录名 国漫: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 日番: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' # 匹配 origin_country 国家,JP是日本 origin_country: 'JP' 纪录片: # 匹配 genre_ids 内容类型,99是纪录片 genre_ids: '99' 儿童: # 匹配 genre_ids 内容类型,10762是儿童 genre_ids: '10762' 综艺: # 匹配 genre_ids 内容类型,10764 10767都是综艺 genre_ids: '10764,10767' 国产剧: # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 欧美剧: # 匹配 origin_country 国家,主要欧美国家列表 origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK' 日韩剧: # 匹配 origin_country 国家,主要亚洲国家列表 origin_country: 'JP,KP,KR,TH,IN,SG' # 未匹配以上分类,则命名为未分类 未分类:
此配置下目录情况
├── 电影└── 电视剧
# 配置电影的分类策略movie: # 分类名同时也是目录名 动画电影: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' 华语电影: # 匹配语种 original_language: 'zh,cn,bo,za' # 未匹配以上条件时,分类为外语电影 外语电影:# 配置电视剧的分类策略tv: # 分类名同时也是目录名 国漫: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 日番: # 匹配 genre_ids 内容类型,16是动漫 genre_ids: '16' # 匹配 origin_country 国家,JP是日本 origin_country: 'JP' 纪录片: # 匹配 genre_ids 内容类型,99是纪录片 genre_ids: '99' 儿童: # 匹配 genre_ids 内容类型,10762是儿童 genre_ids: '10762' 综艺: # 匹配 genre_ids 内容类型,10764 10767都是综艺 genre_ids: '10764,10767' 国产剧: # 匹配 origin_country 国家,CN是中国大陆,TW是中国台湾,HK是中国香港 origin_country: 'CN,TW,HK' 欧美剧: # 匹配 origin_country 国家,主要欧美国家列表 origin_country: 'US,FR,GB,DE,ES,IT,NL,PT,RU,UK' 日韩剧: # 匹配 origin_country 国家,主要亚洲国家列表 origin_country: 'JP,KP,KR,TH,IN,SG' # 未匹配以上分类,则命名为未分类 未分类:




[!NOTE]
整合安装脚本,内置所有相关软件的安装。
bash -c "$(curl --insecure -fsSL https://ddsrem.com/xiaoya_install.sh)"备用地址
bash <(curl --insecure -fsSL https://ddsrem.com/xiaoya/all_in_one.sh)bash <(curl --insecure -fsSL https://fastly.jsdelivr.net/gh/xiaoyaDev/xiaoya-alist@latest/all_in_one.sh)bash <(curl --insecure -fsSL https://raw.githubusercontent.com/xiaoyaDev/xiaoya-alist/master/all_in_one.sh)bash -c "$(curl --insecure -fsSL https://fastly.jsdelivr.net/gh/xiaoyaDev/xiaoya-alist@latest/main.sh)"bash -c "$(curl --insecure -fsSL https://raw.githubusercontent.com/xiaoyaDev/xiaoya-alist/master/main.sh)"[!NOTE]
数字代表先选x,再选x,再选xPS: 2 2 8代表先选2,再选2,最后选8
普通功能
———————————————————————————————————————安装———————————————————————————————————————安装 小雅Alist -> 1 1安装 小雅Alist-TVBox -> 5 1安装/更新 小雅助手(xiaoyahelper)-> 4 1安装 115清理助手 -> 6 1安装 Onelist -> 8 3 1安装 Portainer -> 8 1 1安装 Emby全家桶(一键) -> 2 1安装 Jellyfin全家桶(一键) -> 3 1安装 Resilio-Sync(单独) -> 2 5 1安装 Auto_Symlink -> 8 2 1安装 CasaOS -> 8 7 1安装 小雅元数据定时爬虫 -> 2 9 1安装 Xiaoya Proxy -> 8 4 1安装 Xiaoya aliyuntvtoken_connector -> 8 5 1——————————————————————————————Emby手动全家桶配置————————————————————————————————————单独 下载并解压 全部元数据 -> 2 2 1单独 解压 全部元数据 -> 2 2 2单独 下载 all.mp4 -> 2 2 3单独 解压 all.mp4 -> 2 2 4解压 all.mp4 的指定元数据目录【非全部解压】-> 2 2 5单独 下载 config.mp4 -> 2 2 6单独 解压 config.mp4 -> 2 2 7单独 下载 pikpak.mp4 -> 2 2 8单独 解压 pikpak.mp4 -> 2 2 9单独 下载 115.mp4 -> 2 2 10单独 解压 115.mp4 -> 2 2 11解压 115.mp4 的指定元数据目录【非全部解压】-> 2 2 12单独 下载并解压 config.new.mp4 -> 2 2 101选择 下载器【aria2/wget】-> 2 2 13单独 安装Emby(可选择版本,支持官方,amilys,lovechen)-> 2 3立即 同步小雅Emby的config目录 -> 2 6单独 创建/删除 同步定时更新任务 -> 2 7图形化编辑 emby_config.txt -> 2 8一键升级Emby容器(可选择镜像版本) -> 2 10小雅爬虫 立刻爬取指定目录 -> 2 9 4小雅爬虫 容器定时爬取目录单独配置 -> 2 9 5小雅爬虫 清理爬虫进程锁 -> 2 9 6小雅爬虫 重置爬虫数据库 -> 2 9 7————————————————————————————Jellyfin手动全家桶配置——————————————————————————————————注意:目前官方 Jellyfin 安装方案已经长久未维护!如果您需要安装 小雅Jellyfin 全家桶,请使用 AI老G 的脚本安装,风险自担。脚本命令:bash <(curl -sSLf https://xy.ggbond.org/xy/xy_install.sh)单独 下载并解压 全部元数据 -> 3 2 1单独 解压 全部元数据 -> 3 2 2单独 下载 all_jf.mp4 -> 3 2 3单独 解压 all_jf.mp4 -> 3 2 4解压 all_jf.mp4 的指定元数据目录【非全部解压】-> 3 2 5单独 下载 config_jf.mp4 -> 3 2 6单独 解压 config_jf.mp4 -> 3 2 7单独 下载 PikPak_jf.mp4 -> 3 2 8单独 解压 PikPak_jf.mp4 -> 3 2 9选择 下载器【aria2/wget】-> 3 2 10单独 安装Jellyfin-> 3 3———————————————————————————————————————更新———————————————————————————————————————更新 小雅Alist-TVBox -> 5 2更新 小雅Alist -> 1 2更新 Resilio-Sync(单独) -> 2 5 2更新 115清理助手 -> 6 2更新 Onelist -> 8 3 2更新 Portainer -> 8 1 2更新 Auto_Symlink -> 8 2 2更新 小雅元数据定时爬虫 -> 2 9 2更新 Xiaoya Proxy -> 8 4 2更新 Xiaoya aliyuntvtoken_connector -> 8 5 1———————————————————————————————————————卸载———————————————————————————————————————卸载 小雅Alist -> 1 3卸载 Emby全家桶 -> 2 11卸载 卸载Jellyfin全家桶 -> 3 4卸载 Resilio-Sync(单独) -> 2 5 3卸载 小雅助手(xiaoyahelper)-> 4 3卸载 小雅Alist-TVBox -> 5 3卸载 115清理助手 -> 6 3卸载 Onelist -> 8 3 3卸载 Portainer -> 8 1 3卸载 Auto_Symlink -> 8 2 3卸载 CasaOS -> 8 7 2卸载 小雅元数据定时爬虫 -> 2 9 3卸载 Xiaoya Proxy -> 8 4 3卸载 Xiaoya aliyuntvtoken_connector -> 8 5 1————————————————————————————————Docker Compose—————————————————————————————————————安装 小雅及全家桶 -> 7 1卸载 小雅及全家桶 -> 7 2——————————————————————————————————————系统工具——————————————————————————————————————查看系统磁盘挂载 -> 8 6———————————————————————————————————————其他———————————————————————————————————————一次性运行 小雅助手(xiaoyahelper)-> 4 2创建/删除 定时同步更新数据(小雅alist启动时拉取的数据)-> 1 4AI老G 安装脚本 -> 8 8账号管理 -> 1 5高级功能
Docker启动容器名称设置 -> 9 1是否开启容器运行额外参数添加 -> 9 2重置脚本配置 -> 9 3开启/关闭 磁盘容量检测 -> 9 4开启/关闭 小雅连通性检测 -> 9 5Docker镜像源选择 -> 9 6非可选网络模式容器默认网络模式 -> 9 7[!NOTE]
✅代表测试通过且兼容;❌代表不兼容;🚧代表未经过充分测试兼容性不确定!
| 软件名称 | x86-64 | amd64 | arm64 | arm64v8 | armhf | armv7 |
|---|---|---|---|
| 小雅Alist | ✅ | ✅ | ✅ |
| 小雅Emby全家桶 | ✅ | ✅ | ❌ |
| 小雅Jellyfin全家桶 | ✅ | ✅ | ❌ |
| 小雅助手(xiaoyahelper) | ✅ | ✅ | ✅ |
| 小雅Alist-TVBox | ✅ | ✅ | ❌ |
| Onelist | ✅ | ✅ | ✅ |
| 小雅元数据爬虫(xiaoya-emd) | ✅ | ✅ | ✅ |
| 小雅Cron容器(xiaoya-cron) | ✅ | ✅ | ✅ |
| 小雅代理容器(xiaoya-proxy) | ✅ | ✅ | ✅ |
| 115清理助手(xiaoya-115cleaner) | ✅ | ✅ | ✅ |
| xiaoya-glue(官方 python) | ✅ | ✅ | ❌ |
| xiaoya-glue(官方 latest) | ✅ | ✅ | ❌ |
| xiaoya-glue(DDSRem python) | ✅ | ✅ | ❌ |
| xiaoya-glue(DDSRem aliyuntvtoken_connector) | ✅ | ✅ | ❌ |
| 系统名称 | all_in_one.sh | emby_config_editor.sh | xiaoya_notify.sh |
|---|---|---|---|
| CentOS 7.9 | ✅ | ✅ | ✅ |
| CentOS 8.4 | ✅ | ✅ | ✅ |
| CentOS 8 Stream | ✅ | ✅ | ✅ |
| CentOS 9 Stream | ✅ | ✅ | ✅ |
| Debian 10.3 | ✅ | ✅ | ✅ |
| Debian 11.3 | ✅ | ✅ | ✅ |
| Debian 12.0 | ✅ | ✅ | ✅ |
| Ubuntu 18.04 | ✅ | ✅ | ✅ |
| Ubuntu 20.04 | ✅ | ✅ | ✅ |
| Ubuntu 22.04 | ✅ | ✅ | ✅ |
| Fedora 31 | ✅ | ✅ | ✅ |
| Fedora 32 | ✅ | ✅ | ✅ |
| AlmaLinux 9 | ✅ | ✅ | ✅ |
| RockyLinux 8.6 | ✅ | ✅ | ✅ |
| Arch Linux | ✅ | ✅ | ✅ |
| openSUSE 15.4 | ✅ | ✅ | ✅ |
| FreeBSD | ✅ | ✅ | ✅ |
| EulerOS | ✅ | ✅ | ✅ |
| Amazon Linux | ✅ | ✅ | ✅ |
| Alpine | ✅ | ✅ | ✅ |
| MacOS | ✅ | 🚧 | 🚧 |
| UnRaid | ✅ | ✅ | ✅ |
| OpenMediaVault | ✅ | ✅ | ✅ |
| QNAP(威联通) | ✅ | ✅ | ✅ |
| OpenWRT | ✅ | ✅ | ✅ |
| Synology(群晖) | ✅ | ✅ | ✅ |
| TrueNAS CORE | 🚧 | 🚧 | 🚧 |
| TrueNAS SCALE | 🚧 | 🚧 | 🚧 |
| UGOS(绿联云) | ✅ | ✅ | ✅ |
| UGOS Pro(绿联云 Pro) | ✅ | ✅ | ✅ |
| LibreELEC | ❌ | ❌ | ❌ |
| Windows WSL Docker | ❌ | ❌ | ❌ |
| ZSpace(极空间) | 🚧 | 🚧 | 🚧 |
| fnOS (飞牛私有云) | ✅ | ✅ | ✅ |
alishare_list.txt中的格式AList和xiaoya的TVBox管理工具strm文件生成: 小雅官方提供的一键生成strm文件脚本bash <(curl -sSLf https://xy.ggbond.org/xy/xy_install.sh)bash <(curl -sSLf https://xy.ggbond.org/xy/wky_xy_emby_ailg.sh)此项目根据 GNU General Public License v3.0 许可证进行许可,详见LICENSE 文件。
使用此项目则意味着你接受以上规定和 GNU General Public License v3.0 许可证。
]]>PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins,https://github.com/thsrite/MoviePilot-Plugins,https://github.com/honue/MoviePilot-Plugins,https://github.com/dandkong/MoviePilot-Plugins,https://github.com/Aqr-K/MoviePilot-Plugins,https://github.com/AnjoyLi/MoviePilot-Plugins,https://github.com/WithdewHua/MoviePilot-Plugins,https://github.com/HankunYu/MoviePilot-Plugins,https://github.com/baozaodetudou/MoviePilot-Plugins,https://github.com/almus2zhang/MoviePilot-Plugins,https://github.com/Pixel-LH/MoviePilot-Plugins,https://github.com/InfinityPacer/MoviePilot-Plugins,https://github.com/lightolly/MoviePilot-Pluginsdocker run -itd \ --name moviepilot \ --hostname moviepilot \ -p 3000:3000 \ -v /media:/media \ -v /moviepilot/config:/config \ -v /moviepilot/core:/moviepilot/.cache/ms-playwright \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -e 'NGINX_PORT=3000' \ -e 'PORT=3001' -e 'PUID=0' \ -e 'PGID=0' \ -e 'UMASK=000' \ -e 'TZ=Asia/Shanghai' \ -e 'PROXY_HOST=' \ -e 'MOVIEPILOT_AUTO_UPDATE=true' \ -e 'AUTH_SITE=iyuu' \ -e 'IYUU_SIGN=' \ -e 'SUPERUSER=admin' \ -e 'API_TOKEN=moviepilot' \ -e 'BIG_MEMORY_MODE=false' \ -e 'DOH_ENABLE=true' \ -e 'META_CACHE_EXPIRE=' \ -e 'GITHUB_TOKEN=' \ -e 'DEV=false' \ -e 'DEBUG=false' \ -e 'AUTO_UPDATE_RESOURCE=true' \ -e 'TMDB_API_DOMAIN=api.themoviedb.org' \ -e 'TMDB_IMAGE_DOMAIN=image.tmdb.org' \ -e 'WALLPAPER=tmdb' \ -e 'RECOGNIZE_SOURCE=themoviedb' \ -e 'FANART_ENABLE=true' \ -e 'SCRAP_SOURCE=themoviedb' \ -e 'SCRAP_FOLLOW_TMDB=true' \ -e 'AUTO_DOWNLOAD_USER=all' \ -e 'OCR_HOST=https://movie-pilot.org' \ -e 'DOWNLOAD_SUBTITLE=true' \ -e 'MOVIE_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{{fileExt}}' \ -e 'TV_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/Season {{season}}/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %}{% if episode %} - 第 {{episode}} 集{% endif %}{{fileExt}}' \ -e 'PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins' \ --log-driver "json-file" \ --log-opt "max-size=5m" \ --restart always \ jxxghp/moviepilot:latestversion: '3.3'# MoviePilot 地址:https://github.com/jxxghp/MoviePilotservices: moviepilot: stdin_open: true tty: true container_name: moviepilot hostname: moviepilot networks: - moviepilot ports: - target: 3000 published: 3000 protocol: tcp volumes: - '/media:/media' - '/moviepilot/config:/config' - '/moviepilot/core:/moviepilot/.cache/ms-playwright' - '/var/run/docker.sock:/var/run/docker.sock:ro' environment: # WEB服务端口,默认3000,可自行修改,不能与API服务端口冲突 - 'NGINX_PORT=3000' # API服务端口,默认3001,可自行修改,不能与WEB服务端口冲突 - 'PORT=3001' # 运行程序用户的uid,默认0 - 'PUID=0' # 运行程序用户的gid,默认0 - 'PGID=0' # 掩码权限,默认000,可以考虑设置为022 - 'UMASK=000' # 时区 - 'TZ=Asia/Shanghai' # 重启时自动更新,true/release/dev/false,默认release,需要能正常连接Github 注意:如果出现网络问题可以配置PROXY_HOST - 'MOVIEPILOT_AUTO_UPDATE=true' # 网络代理,访问themoviedb或者重启更新需要使用代理访问,格式为http(s)://ip:port、socks5://user:pass@host:port - 'PROXY_HOST=' # 认证站点 - 'AUTH_SITE=iyuu' - 'IYUU_SIGN=' # 超级管理员用户名,默认admin,安装后使用该用户登录后台管理界面,注意:启动一次后再次修改该值不会生效,除非删除数据库文件! - 'SUPERUSER=admin' # API密钥,默认moviepilot,在媒体服务器Webhook、微信回调等地址配置中需要加上?token=该值,建议修改为复杂字符串 - 'API_TOKEN=moviepilot' # 大内存模式,默认为false,开启后会增加缓存数量,占用更多的内存,但响应速度会更快 - 'BIG_MEMORY_MODE=false' # DNS over HTTPS开关,`true`/`false`,默认`true`,开启后会使用DOH对api.themoviedb.org等域名进行解析,以减少被DNS污染的情况,提升网络连通性 - 'DOH_ENABLE=true' # 元数据识别缓存过期时间(小时),数字型,不配置或者配置为0时使用系统默认(大内存模式为7天,否则为3天),调大该值可减少themoviedb的访问次数 - 'META_CACHE_EXPIRE=' # Github token,提高自动更新、插件安装等请求Github Api的限流阈值,格式:ghp_**** - 'GITHUB_TOKEN=' # 开发者模式,true/false,默认false,开启后会暂停所有定时任务 - 'DEV=false' # debug模式,开启后会输出debug日志 - 'DEBUG=false' # 启动时自动检测和更新资源包(站点索引及认证等),true/false,默认true,需要能正常连接Github - 'AUTO_UPDATE_RESOURCE=true' # TMDB API地址,默认api.themoviedb.org,也可配置为api.tmdb.org、tmdb.movie-pilot.org 或其它中转代理服务地址,能连通即可 - 'TMDB_API_DOMAIN=api.themoviedb.org' # TMDB图片地址,默认image.tmdb.org,可配置为其它中转代理以加速TMDB图片显示,如:static-mdb.v.geilijiasu.com - 'TMDB_IMAGE_DOMAIN=image.tmdb.org' # 登录首页电影海报,tmdb/bing,默认tmdb - 'WALLPAPER=tmdb' # 媒体信息识别来源,themoviedb/douban,默认themoviedb,使用douban时不支持二级分类 - 'RECOGNIZE_SOURCE=themoviedb' # Fanart开关,true/false,默认true,关闭后刮削的图片类型会大幅减少 - 'FANART_ENABLE=true' # 刮削元数据及图片使用的数据源,themoviedb/douban,默认themoviedb - 'SCRAP_SOURCE=themoviedb' # 新增已入库媒体是否跟随TMDB信息变化,true/false,默认true,为false时即使TMDB信息变化了也会仍然按历史记录中已入库的信息进行刮削 - 'SCRAP_FOLLOW_TMDB=true' # 远程交互搜索时自动择优下载的用户ID(消息通知渠道的用户ID),多个用户使用,分割,设置为 all 代表全部用户自动择优下载,未设置需要手动选择资源或者回复0才自动择优下载 - 'AUTO_DOWNLOAD_USER=all' # OCR识别服务器地址,格式:http(s)://ip:port,用于识别站点验证码实现自动登录获取Cookie等,不配置默认使用内建服务器https://movie-pilot.org - 'OCR_HOST=https://movie-pilot.org' # 下载站点字幕,true/false,默认true - 'DOWNLOAD_SUBTITLE=true' # 电影重命名格式 - 'MOVIE_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{{fileExt}}' # 电视剧重命名格式 - 'TV_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/Season {{season}}/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %}{% if episode %} - 第 {{episode}} 集{% endif %}{{fileExt}}' # 插件市场仓库地址,仅支持Github仓库main分支,多个地址使用,分隔 - 'PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins' logging: driver: json-file options: max-size: 5m restart: always image: jxxghp/moviepilot:latestnetworks: moviepilot: name: moviepilotUnraid-MoviePilot.xml by 群友支持

打开Unraid的Web控制页面,右上角找到“终端”并打开

复制如下一键命令,粘贴进“终端”并回车执行
Github源
curl -sL https://raw.githubusercontent.com/DDS-Derek/MoviePilot/docs/examples/Unraid-MoviePilot.xml -o /boot/config/plugins/dockerMan/templates-user/MoviePilot.xml国内加速源
curl -sL https://ghproxy.com/https://raw.githubusercontent.com/DDS-Derek/MoviePilot/docs/examples/Unraid-MoviePilot.xml -o /boot/config/plugins/dockerMan/templates-user/MoviePilot.xml
打开Docker页面,下方找到添加容器并点击

在页面中找到“选择一个模板”,点开并选择“MoviePilot”

依照MoviePilot项目中作者的说明进行修改并填写
docker-cli
docker run -itd \ --name moviepilot-ocr \ --hostname moviepilot-ocr \ -p 9899:9899 \ --log-driver "json-file" \ --log-opt "max-size=5m" \ --restart always \ jxxghp/moviepilot-ocr:latestdocker-compose
version: '3.3'services: moviepilot-ocr: container_name: moviepilot-ocr hostname: moviepilot-ocr ports: - '9899:9899' logging: driver: - json-file options: max-size: 5m restart: always stdin_open: true tty: true image: 'jxxghp/moviepilot-ocr:latest'如图使用此程序进行测试
地址为http(s)://ip:port的形式

启动时添加以下环境变量
-e OCR_HOST=http(s)://ip:porthttps://raw.githubusercontent.com/jxxghp/MoviePilot-Frontend/main/public/logo.png

docker run -d \ --name=playwright-downloader \ -e PUID=1000 \ -e PGID=1000 \ -e UMASK=022 \ -v /your/moviepilot/dir:/downloads \ ddsderek/moviepilot:playwrightversion: '3.3'services: moviepilot: container_name: playwright-downloader environment: - PUID=1000 - PGID=1000 - UMASK=022 volumes: - '/your/moviepilot/dir:/downloads' stdin_open: true tty: true image: 'ddsderek/moviepilot:playwright'-e PUID 与MP一致-e PGID 与MP一致-e UMASK 与MP一致-v /downloads 映射到主机的目录与MP的/moviepilot或者/moviepilot/.cache/ms-playwright映射到主机的目录一致运行完成后即可删除容器和镜像
]]>ubuntu22.04取消了rsa sha1登录,导致原来的证书已无法登录
在服务器后台执行以下命令:
sudo sh -c "echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config"sudo sh -c "echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config"sudo systemctl restart sshdhttps://blog.csdn.net/huangruifeng/article/details/127637015
]]>脚本安装和手动安装二选一,安装完成后即可进入NAStool界面设置
docker exec -it --user nt nas-tools /bin/bash以下脚本选择一个适合自己的执行即可
安装并下载tiny模型
bash <(wget --no-check-certificate -qO- 'https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') tiny安装并下载tiny模型且使用国内源
bash <(wget --no-check-certificate -qO- 'https://ghproxy.com/https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') tiny cn安装并下载base模型
bash <(wget --no-check-certificate -qO- 'https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') base安装并下载base模型且使用国内源
bash <(wget --no-check-certificate -qO- 'https://ghproxy.com/https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') base cn安装并下载small模型
bash <(wget --no-check-certificate -qO- 'https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') small安装并下载small模型且使用国内源
bash <(wget --no-check-certificate -qO- 'https://ghproxy.com/https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') small cn安装并下载medium模型
bash <(wget --no-check-certificate -qO- 'https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') medium安装并下载medium模型且使用国内源
bash <(wget --no-check-certificate -qO- 'https://ghproxy.com/https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') medium cn安装并下载large模型
bash <(wget --no-check-certificate -qO- 'https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') large安装并下载large模型且使用国内源
bash <(wget --no-check-certificate -qO- 'https://ghproxy.com/https://github.com/NAStool/nas-tools-builder/raw/main/script/AutoSub/whisper.cpp/install') large cndocker exec -it --user nt nas-tools /bin/bash注意,后面的所有命令都是在容器内执行的。
cd /configmkdir -p /config/pluginsgit clone -b master https://github.com/ggerganov/whisper.cpp.git /config/plugins/whisper.cpp --depth=1cd /config/plugins/whisper.cppsudo apk add --no-cache build-base sdl2-dev alsa-utilsecho "CFLAGS += -D_POSIX_C_SOURCE=199309L" > Makefile.NTmake -f Makefile -f Makefile.NT编译输出内容(大致是这样就表面编译成功了):
I whisper.cpp build info:I UNAME_S: LinuxI UNAME_P: unknownI UNAME_M: x86_64I CFLAGS: -I. -O3 -DNDEBUG -std=c11 -fPIC -D_POSIX_C_SOURCE=199309L -pthread -mavx -mavx2 -mfma -mf16c -msse3I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthreadI LDFLAGS:I CC: cc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924I CXX: g++ (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924cc -I. -O3 -DNDEBUG -std=c11 -fPIC -D_POSIX_C_SOURCE=199309L -pthread -mavx -mavx2 -mfma -mf16c -msse3 -c ggml.c -o ggml.og++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread -c whisper.cpp -o whisper.og++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread examples/main/main.cpp examples/common.cpp ggml.o whisper.o -o main./main -husage: ./main [options] file0.wav file1.wav ...options: -h, --help [default] show this help message and exit -t N, --threads N [4 ] number of threads to use during computation -p N, --processors N [1 ] number of processors to use during computation -ot N, --offset-t N [0 ] time offset in milliseconds -on N, --offset-n N [0 ] segment index offset -d N, --duration N [0 ] duration of audio to process in milliseconds -mc N, --max-context N [-1 ] maximum number of text context tokens to store -ml N, --max-len N [0 ] maximum segment length in characters -sow, --split-on-word [false ] split on word rather than on token -bo N, --best-of N [5 ] number of best candidates to keep -bs N, --beam-size N [-1 ] beam size for beam search -wt N, --word-thold N [0.01 ] word timestamp probability threshold -et N, --entropy-thold N [2.40 ] entropy threshold for decoder fail -lpt N, --logprob-thold N [-1.00 ] log probability threshold for decoder fail -su, --speed-up [false ] speed up audio by x2 (reduced accuracy) -tr, --translate [false ] translate from source language to english -di, --diarize [false ] stereo audio diarization -nf, --no-fallback [false ] do not use temperature fallback while decoding -otxt, --output-txt [false ] output result in a text file -ovtt, --output-vtt [false ] output result in a vtt file -osrt, --output-srt [false ] output result in a srt file -owts, --output-words [false ] output script for generating karaoke video -fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] path to a monospace font for karaoke video -ocsv, --output-csv [false ] output result in a CSV file -oj, --output-json [false ] output result in a JSON file -of FNAME, --output-file FNAME [ ] output file path (without file extension) -ps, --print-special [false ] print special tokens -pc, --print-colors [false ] print colors -pp, --print-progress [false ] print progress -nt, --no-timestamps [true ] do not print timestamps -l LANG, --language LANG [en ] spoken language ('auto' for auto-detect) --prompt PROMPT [ ] initial prompt -m FNAME, --model FNAME [models/ggml-base.en.bin] model path -f FNAME, --file FNAME [ ] input WAV file pathbash ./models/download-ggml-model.sh base.en # base.en 可选,详见下表ls models/ggml* # 查看模型名称,复制输出内容,后面要用到。我的输出是这样的models/ggml-base.en.bin| Model | Disk | Mem | SHA |
|---|---|---|---|
| tiny | 75 MB | ~390 MB | bd577a113a864445d4c299885e0cb97d4ba92b5f |
| tiny.en | 75 MB | ~390 MB | c78c86eb1a8faa21b369bcd33207cc90d64ae9df |
| base | 142 MB | ~500 MB | 465707469ff3a37a2b9b8d8f89f2f99de7299dac |
| base.en | 142 MB | ~500 MB | 137c40403d78fd54d454da0f9bd998f78703390c |
| small | 466 MB | ~1.0 GB | 55356645c2b361a969dfd0ef2c5a50d530afd8d5 |
| small.en | 466 MB | ~1.0 GB | db8a495a91d927739e50b3fc1cc4c6b8f6c2d022 |
| medium | 1.5 GB | ~2.6 GB | fd9727b6e1217c2f614f9b698455c4ffd82463b4 |
| medium.en | 1.5 GB | ~2.6 GB | 8c30f0e44ce9560643ebd10bbe50cd20eafd3723 |
| large-v1 | 2.9 GB | ~4.7 GB | b1caaf735c4cc1429223d5a74f0f4d0b9b59a299 |
| large | 2.9 GB | ~4.7 GB | 0f4c8e34f21cf1a914c59d8b3ce882345ad349d6 |
模型详解请看官方介绍:https://github.com/ggerganov/whisper.cpp/tree/master/models

whisper.cpp路径按照图片一样设置为/config/plugins/whisper.cpp/main,不需要更改。
whisper.cpp模型路径前半部分设置为/config/plugins/whisper.cpp/,后面的文件夹名称根据前面复制的内容来修改,比如说我的是models/ggml-base.en.bin,所以完整路径是/config/plugins/whisper.cpp/models/ggml-base.en.bin。
文件大小自己设置。
媒体路径自己设置。
立刻运行一次勾上,用于第一次测试。
剩下的就按照自己需求来吧。
]]>Joplin是一个免费的开源笔记记录和待办事项应用程序,它可以处理组织到笔记本中的大量笔记。这些笔记是可搜索的,可以直接从应用程序或您自己的文本编辑器中复制、标记和修改。笔记采用Markdown 格式。
地址
Github:https://github.com/laurent22/joplin
DockerHub:https://hub.docker.com/r/joplin/server
安装Docker
wget -qO- get.docker.com | bashsystemctl enable docker # 设置开机自动启动docker -v # 查看Docker版本docker compose version # 查看docker-compose版本注意:目前使用脚本安装Docker会自动安装好docker-compose,所以无需额外安装
部署 Joplin Server
创建文件夹
mkdir /root/data/docker/joplincd /root/data/docker/joplin创建docker-compose并编辑
nano docker-compose.yamlversion: '3'services: db: # 数据库 image: postgres:13-alpine volumes: - ./data/postgres:/var/lib/postgresql/data expose: - "5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=kjyfkg6858653 # 改成你自己的密码 - POSTGRES_USER=joplin # 改成你自己的用户名 - POSTGRES_DB=joplin app: # 程序主体 image: joplin/server:latest depends_on: - db ports: - "22300:22300" # 左边的端口可以更换,右边不要动! restart: always environment: - APP_PORT=22300 - APP_BASE_URL=https://xxxx # 改成反代的域名 - DB_CLIENT=pg - POSTGRES_PASSWORD=kjyfkg6858653 # 与上面的数据库密码对应! - POSTGRES_DATABASE=joplin - POSTGRES_USER=joplin # 与上面的数据库用户名对应! - POSTGRES_PORT=5432 - POSTGRES_HOST=db - MAX_TIME_DRIFT=0 # SMTP设置,不需要的可以删除 - MAILER_ENABLED=1 - MAILER_HOST=smtp.163.com # SMTP服务器 - MAILER_PORT=25 # 端口 - MAILER_SECURITY=0 - [email protected] # 用户名 - MAILER_AUTH_PASSWORD=xxxxx # 密码 - MAILER_NOREPLY_NAME=JoplinServer # 发件称呼 - MAILER_NOREPLY_EMAIL= [email protected] # 发件邮箱启动 Joplin Server
docker compose up -d接下来输入你的反向代理后的域名,进入后台设置
因为Joplin使用非常简单了,所以客户端的安装和设置方法就不演示了
展示几张Joplin客户端的界面
Windows
iPad
iPhone
最近我的蜗牛星际测试机在测试一些项目,并且存储了许多重要的测试数据,所以我就准备组一个Raid,保证我的数据安全。但是我又不想动我现有的存储方案,最终就找到了SnapRAID这个解决方案。
SnapRAID介绍:是磁盘整列的备份程序,可存储磁盘的奇偶校验信息,在两个磁盘损坏时也能恢复数据。
SnapRAID定位:家庭媒体中心,特别适合于文件较大较多且较少改变的系统。
SnapRAID特点:
除标准RAID磁盘部署解决方案外,还有众多解决方案。根据奇偶校验的实时性可以把各种冗余分为两大类:
主要解决方案有:
这些方案各有优缺点,综合各特性针对于家庭媒体中心的解决方案SnapRAID应运而生:
| SnapRAID | unRAID | FlexRAID | disParity | ZFS | Btrfs | Storage Spaces | |
| 冗余模式 | 快照 | 实时 | 快照和实时 | 快照 | 实时 | 实时 | 实时 |
| 完整性校验 默认校验方式 | 支持SpookyHash 128 bit | 不支持 | 支持Adler3232 bit | 支持MD5 128 bit | 支持fletcher4 256 bit | 支持CRC32C 32 bit | 不支持 |
| 如果发生silent errors可否通过校验盘计算修复 | 支持 | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 |
| 允许磁盘故障数 | 1 2 3 4 5 6 | 1 | 1 2 3 4 5 6+ | 1 | 1 2 3 | 1 2 | 1 |
| 如果磁盘损坏块数超过冗余数可否恢复未损坏磁盘数据 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 读取单个文件时有几块硬盘运行 | 1 | 1 | 1 | 1 | 全部 | 全部 | 全部 |
| 可否添加已有数据的磁盘而不影响磁盘中的数据 | 支持 | 不支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 支持的操作系统 | Linux | Windows | Mac OS X | OpenIndiana | Solaris | BSD | Linux | Windows | Linux | Windows | Mac OS X | OpenIndiana | Solaris | BSD | Linux | Windows |
| 首次正式支持RAID5冗余及更高冗余的时间 | 2011 | 2005 | 2008 | 2009 | 2006 | 2013 | 2012 |
| 授权和价格 | Open Source GPL3 Free | Open Source GPL2 69 | Proprietary 40 | Proprietary Free | Open Source CDDL Free | Open Source GPL2 Free | Proprietary Windows 8 |
| 交互方式 | 命令行或 Elucidate | 图形 | 图形 | 命令行 | 命令行 | 命令行 | 图形 |
安装编译软件
apt-get update && apt-get install gcc git make -y创建编译目录
mkdir -p /tmp/snapraidcd /tmp/snapraid下载并解压源码
wget https://github.com/amadvance/snapraid/releases/download/v12.1/snapraid-12.1.tar.gztar xzvf snapraid-12.1.tar.gzcd snapraid-12.1/编译安装
./configuremakemake checkmake installcp /tmp/snapraid/snapraid-12.1/snapraid.conf.example /etc/snapraid.conf清除安装文件
rm -rf /tmp/snapraid下面是我的snapraid.conf配置文件
# Example configuration for snapraid# Defines the file to use as parity storage# It must NOT be in a data disk# Format: "parity FILE [,FILE] ..."parity /home/备份/snapraid.parity #备份目录,改为自己的目录# Defines the files to use as additional parity storage.# If specified, they enable the multiple failures protection# from two to six level of parity.# To enable, uncomment one parity file for each level of extra# protection required. Start from 2-parity, and follow in order.# It must NOT be in a data disk# Format: "X-parity FILE [,FILE] ..."#2-parity /mnt/diskq/snapraid.2-parity#3-parity /mnt/diskr/snapraid.3-parity#4-parity /mnt/disks/snapraid.4-parity#5-parity /mnt/diskt/snapraid.5-parity#6-parity /mnt/disku/snapraid.6-parity# Defines the files to use as content list# You can use multiple specification to store more copies# You must have least one copy for each parity file plus one. Some more don't hurt# They can be in the disks used for data, parity or boot,# but each file must be in a different disk# Format: "content FILE"content /var/snapraid/snapraid.content # 文件信息存储目录,文件很小,建议每个硬盘都存放一份content /home/暂存/snapraid/snapraid.contentcontent /home/下载/snapraid/snapraid.contentcontent /home/备份/snapraid/snapraid.contentcontent /home/服务器/snapraid/snapraid.content# Defines the data disks to use# The name and mount point association is relevant for parity, do not change it# WARNING: Adding here your /home, /var or /tmp disks is NOT a good idea!# SnapRAID is better suited for files that rarely changes!# Format: "data DISK_NAME DISK_MOUNT_POINT"data d1 /home/暂存/ # 数据目录,可以设置多个data d2 /home/下载/data d3 /home/服务器/# Excludes hidden files and directories (uncomment to enable).#nohidden# Defines files and directories to exclude# Remember that all the paths are relative at the mount points# Format: "exclude FILE"# Format: "exclude DIR/"# Format: "exclude /PATH/FILE"# Format: "exclude /PATH/DIR/"exclude *.unrecoverable # 排除的文件,就是不要备份的文件,下面有详解exclude /tmp/exclude /lost+found/exclude /data/docker/docker/exclude /docker/# Defines the block size in kibi bytes (1024 bytes) (uncomment to enable).# WARNING: Changing this value is for experts only!# Default value is 256 -> 256 kibi bytes -> 262144 bytes# Format: "blocksize SIZE_IN_KiB"#blocksize 256# Defines the hash size in bytes (uncomment to enable).# WARNING: Changing this value is for experts only!# Default value is 16 -> 128 bits# Format: "hashsize SIZE_IN_BYTES"#hashsize 16# Automatically save the state when syncing after the specified amount# of GB processed (uncomment to enable).# This option is useful to avoid to restart from scratch long 'sync'# commands interrupted by a machine crash.# It also improves the recovering if a disk break during a 'sync'.# Default value is 0, meaning disabled.# Format: "autosave SIZE_IN_GB"autosave 10 # 生成校验数据时,每处理 10 GiB 数据自动保存一次,方便断点继续# Defines the pooling directory where the virtual view of the disk# array is created using the "pool" command (uncomment to enable).# The files are not really copied here, but just linked using# symbolic links.# This directory must be outside the array.# Format: "pool DIR"#pool /pool# Defines a custom smartctl command to obtain the SMART attributes# for each disk. This may be required for RAID controllers and for# some USB disk that cannot be autodetected.# In the specified options, the "%s" string is replaced by the device name.# Refers at the smartmontools documentation about the possible options:# RAID -> https://www.smartmontools.org/wiki/Supported_RAID-Controllers# USB -> https://www.smartmontools.org/wiki/Supported_USB-Devices#smartctl d1 -d sat %s#smartctl d2 -d usbjmicron %s#smartctl parity -d areca,1/1 /dev/sg0#smartctl 2-parity -d areca,2/1 /dev/sg0因为 SnapRAID 是工作在文件系统之上、基于目录的冗余存储方案,因此可以很方便选择哪些目录和文件需要做冗余,哪些不需要。在配置文件中 include 和 exclude 的规则如下:
* ? [1-3] 这样的简单通配符;/ 开头的路径匹配的是数据盘的根目录,而不是系统的根目录;/ 结尾的路径只会匹配目录;/ 结尾的路径只会匹配文件;include),则所有未匹配的路径都会被排除;exclude),则所有未匹配的路径都会被包含。snapraid sync:根据数据盘生成校验盘;snapraid diff:查看有哪些数据需要 sync;snapraid status:查看磁盘阵列的状态;snapraid scrub:进行数据擦洗,提早发现磁盘阵列中的错误。SnapRAID 首次同步完成之后,可以将 snapraid sync 和 snapraid scrub 加入 cron / systemd timer,定时运行。后者默认配置下每次运行擦洗全部数据的 8%,并且会挑选最近 10 天内没有被擦洗过的数据进行擦洗。如果每天运行一次 snapraid scrub 的话,每 12.5 天所有数据都会被擦洗一遍,形成一个健康的循环。
当擦洗发现有数据损坏,或是更糟糕地,某天整块磁盘挂了(不转了),就需要修复数据了。这时候应该做的是停掉所有的定时任务,然后换上新的磁盘,然后用 snapraid fix -d name_of_disk 命令,根据健在磁盘的内容,在新磁盘里重建坏掉磁盘里的内容。只要坏掉的磁盘数量小于等于校验盘的数量,SnapRAID 都能完整地修复数据。
由于 snapraid sync 是定期执行的,这意味着在下次同步之前,磁盘阵列是有机会恢复到上次同步的状态的,因此 snapraid fix 除了可以重建整个磁盘,也可以重建单个文件,也就是反删除。如果你误删除了文件,可以用 snapraid fix -f path/to/file 来恢复文件到上次同步时的状态。
下面是我写的用过脚本,包括了Sync和Scrub,还有log的存储
mkdir -p /etc/snapraidnano /etc/snapraid/snapraid.sh#!/bin/bash# Sync日志存储目录srlogsyncpath=/root/logs/snapraid/sync# Scrub日志存储目录srlogscrubpath=/root/logs/snapraid/scrubGreen="\033[32m"Red="\033[31m"Yellow='\033[33m'Font="\033[0m"INFO="[${Green}INFO${Font}]"ERROR="[${Red}ERROR${Font}]"WARN="[${Yellow}WARN${Font}]"Time=$(date +"%Y-%m-%d %T")INFO(){echo -e "${Time} ${INFO} ${1}"}ERROR(){echo -e "${Time} ${ERROR} ${1}"}WARN(){echo -e "${Time} ${WARN} ${1}"}if [ ! -d "${srlogsyncpath}" ]; then mkdir -p ${srlogsyncpath}fiif [ ! -d "${srlogscrubpath}" ]; then mkdir -p ${srlogscrubpath}fisrlogname=$(date +%Y%m%d-%H%M%S)SYNC_PATH=${srlogsyncpath}/${srlogname}.logINFO "Snapraid sync start" >> ${SYNC_PATH} 2>&1snapraid sync >> ${SYNC_PATH} 2>&1INFO "Snapraid sync finish" >> ${SYNC_PATH} 2>&1SCRUB_PATH=${srlogscrubpath}/${srlogname}.logINFO "Snapraid scrub start" >> ${SCRUB_PATH} 2>&1snapraid -p 5 -o 20 scrub >> ${SCRUB_PATH} 2>&1INFO "Snapraid scrub finish" >> ${SCRUB_PATH} 2>&1nano /etc/systemd/system/snapraid.servicesnapraid.service
[Unit]Description=Logs system statistics to the systemd journalWants=snapraid.timer[Service]Type=oneshotExecStart=/etc/snapraid/snapraid.sh[Install]WantedBy=multi-user.targetnano /etc/systemd/system/snapraid.timersnapraid.timer
[Unit]Description=Logs some system statistics to the systemd journalRequires=snapraid.service[Timer]Unit=snapraid.serviceOnCalendar=*-*-* 00:00:00 #每天0点自动运行[Install]WantedBy=timers.targetsystemctl enable snapraid.timer # 开机自启systemctl start snapraid.timer # 开启循环第一次可以手动运行,看看正不正常
systemctl start snapraid默认log文件生成在/var/log/snapraid文件夹下
https://wzyboy.im/post/1186.html
http://www.songming.me/snapraid-compare.html
https://zhuanlan.zhihu.com/p/32040033
https://zhuanlan.zhihu.com/p/258076824
]]>Github:https://github.com/cym1102/nginxWebUI
以下为官网介绍

打开 http://ip:8080 进入主页。

登录页面, 第一次打开会要求初始化管理员账号。

进入系统后, 可在管理员管理里面添加修改管理员账号。

在http参数配置中可以配置nginx的http项目,进行http转发, 默认会给出几个常用配置, 其他需要的配置可自由增删改查. 可以勾选开启日志跟踪, 生成日志文件。

在TCP参数配置中可以配置nginx的steam项目参数, 进行tcp转发。

在反向代理中可配置nginx的反向代理即server项功能, 可开启ssl功能, 可以直接从网页上上传pem文件和key文件, 或者使用系统内申请的证书, 可以直接开启http转跳https功能,也可开启http2协议。

在负载均衡中可配置nginx的负载均衡即upstream项功能, 在反向代理管理中可选择代理目标为配置好的负载均衡。

在证书管理中可添加证书, 并进行签发和续签, 开启定时续签后, 系统会自动续签即将过期的证书。

备份文件管理, 这里可以看到nginx.cnf的备份历史版本, nginx出现错误时可以选择回滚到某一个历史版本。

最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行效验和重启, 可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下。

远程服务器管理, 如果有多台nginx服务器, 可以都部署上nginxWebUI, 然后登录其中一台, 在远程管理中添加其他服务器的ip和用户名密码, 就可以在一台机器上管理所有的nginx服务器了。
提供一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中。

本系统提供http接口调用, 只要开 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smat-doc接口页面.
接口调用需要在header中添加token, 其中token的获取需要在管理员管理中, 打开用户的接口调用权限, 然后通过用户名密码调用获取token接口, 才能得到token, 然后在knife4j的文档管理中设置全局token.
安装
创建文件
mkdir -p /root/data/docker_data/nginxwebuicd /root/data/docker_data/nginxwebuinano docker-compose.ymldocker-compose.yml文件
version: '3.3'services: nginxwebui: volumes: - './nginxWebUI:/home/nginxWebUI' environment: - BOOT_OPTIONS=--server.port=8080 # Web界面管理端口 - PUID=1000 - PGID=1000 privileged: true network_mode: host image: 'ddsderek/nginxwebui:latest'启动
docker-compose up -d更新
无需重新拉镜像并创建容器,可以在web界面直接更新

自己配置好用户密码,进入Web管理界面
获取证书
选择证书管理-添加证书 获取方式选择DNS验证获取 填入自己域名 点击提交

打开自动续签 点击申请开始申请域名

按照提示去DNS服务商设置,重新点击申请

显示证书路径就表明申请完成了

获取方式选择申请获得 选择自己的DNS服务商 输入获取的用户名和密钥 点击提交 剩下步骤与前面一至

配置反向代理
选择反向代理(server)-添加反向代理

这边是案例,可以自己修改域名,点击提交

进入启用配置-点击替换文件-点击重新装载

这样就配置完成了
剩下功能可以自己研究,基本都很简单
家庭服务器因为没有443和80端口,所以设置有点改动
反向代理设置与前面差不多
将端口改为你的端口,比如说我用的是998
关闭http跳转https

设置完成后一定要进入启用配置-点击替换文件-点击重新装载
这样做应该是就可以正常访问了,但是不会跳转https,所以我们还要再设置一下
进入参数模板 添加参数模板 按照图片设置
#名称error_page 497 301 =307#值https://$host:998$request_uri #998修改为自己的端口选择提交

设置完成后一定要进入启用配置-点击替换文件-点击重新装载
之后可以去测试一下,应该可以自动跳转https了
并且这样设置完成后每个反向代理都会多出这一条,表示强制https
error_page 497 301 =307 https://$host:998$request_uri

目前只有一个
每次设置完成必须要进入启用配置-点击替换文件-点击重新装载
不然设置是不会生效的,这个一定要注意!!!
如果设置有误,在重新装载时会告诉你,你只需要按照提示修改就行了

官方列举的特点
总结一下就是美观,方便,安全,多平台,扩展性强
常用地址
Github:https://github.com/nextcloud
官方DockerHub:https://hub.docker.com/_/nextcloud/
本次使用的镜像仓库:https://hub.docker.com/r/crazymax/nextcloud

本次使用的NextCloud并不是官方仓库镜像
使用的是由crazy-max大佬制作的NextCloud镜像
创建文件夹
mkdir -p /root/data/docker_data/nextcloudcd /root/data/docker_data/nextcloud下载docker-compose和env环境文件
wget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/docker-compose.ymlwget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/.envwget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/msmtpd.envwget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/nextcloud.env所有文件都是开源的,可以去我的Github查看,也可以自行修改
下载完成会出现4个文件,分别是docker-compose.yml .env msmtpd.env nextcloud.env
docker-compose.yml
version: "3.2"services:## mariadb数据库 db: image: mariadb:10.5 container_name: nextcloud_db volumes: - "./db:/var/lib/mysql" environment: - "MYSQL_ALLOW_EMPTY_PASSWORD=yes" - "MYSQL_DATABASE" - "MYSQL_USER" - "MYSQL_PASSWORD" restart: always## redis缓存数据库 redis: image: redis:6-alpine container_name: nextcloud_redis volumes: - "./redis:/data" environment: - "TZ" restart: always command: redis-server --requirepass 'nextcloud' expose: - "6379"## msmtpd邮件服务 msmtpd: image: crazymax/msmtpd:latest container_name: nextcloud_msmtpd env_file: - "./msmtpd.env" environment: - "TZ" restart: always## nextcloud主体 nextcloud: image: crazymax/nextcloud:latest container_name: nextcloud depends_on: - db - redis - msmtpd ports: - target: 8000 published: 8000 protocol: tcp volumes: - "./nextcloud:/data" env_file: - "./nextcloud.env" environment: - "TZ" - "PUID" - "PGID" - "DB_TYPE=mysql" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" restart: always## cron模式运行 cron: image: crazymax/nextcloud:latest container_name: nextcloud_cron depends_on: - nextcloud volumes: - "./nextcloud:/data" env_file: - "./nextcloud.env" environment: - "TZ" - "PUID" - "PGID" - "DB_TYPE=mysql" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "SIDECAR_CRON=1" - "CRON_PERIOD=*/5 * * * *" restart: always## 预览生成器 previewgen: image: crazymax/nextcloud:latest container_name: nextcloud_previewgen depends_on: - nextcloud volumes: - "./nextcloud:/data" env_file: - "./nextcloud.env" environment: - "TZ" - "PUID" - "PGID" - "DB_TYPE=mysql" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "SIDECAR_PREVIEWGEN=1" - "PREVIEWGEN_PERIOD=0 * * * *" restart: always## 更新服务 news_updater: image: crazymax/nextcloud:latest container_name: nextcloud_news_updater depends_on: - nextcloud volumes: - "./nextcloud:/data" env_file: - "./nextcloud.env" environment: - "TZ" - "PUID" - "PGID" - "DB_TYPE=mysql" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "SIDECAR_NEWSUPDATER=1" - "NC_NEWSUPDATER_THREADS=10" - "NC_NEWSUPDATER_TIMEOUT=300" - "NC_NEWSUPDATER_INTERVAL=900" - "NC_NEWSUPDATER_LOGLEVEL=error" restart: always#volumes:# db:# nextcloud:.env
# 默认环境变量设置TZ=Asia/ShanghaiPUID=1000PGID=1000MYSQL_DATABASE=nextcloudMYSQL_USER=nextcloudMYSQL_PASSWORD=nextcloudmsmtpd.env
# https://github.com/crazy-max/docker-msmtpd# SMPT服务器设置SMTP_HOST=smtp.gmail.comSMTP_PORT=587SMTP_TLS=onSMTP_STARTTLS=onSMTP_TLS_CHECKCERT=onSMTP_AUTH=onSMTP_USER=fooSMTP_PASSWORD=barSMTP_FROM=foo@gmail.comnextcloud.env
# nextcloud环境变量设置MEMORY_LIMIT=512MUPLOAD_MAX_SIZE=512MOPCACHE_MEM_SIZE=128APC_SHM_SIZE=128MREAL_IP_FROM=0.0.0.0/32REAL_IP_HEADER=X-Forwarded-ForLOG_IP_VAR=remote_addrHSTS_HEADER=max-age=15768000; includeSubDomainsRP_HEADER=strict-originSUBDIR=设置完成就可以启动了
docker-compose up -d设置用户名和密码

安装推荐应用

进入概览会发现有这些问题

解决你还没有设置或验证你的电子邮件服务器配置。请前往基本设置,以便进行设置。之后,使用表单下方的 "发送电子邮件 "按钮来验证您的设置问题
cd /root/data/docker_data/nextcloud/nextcloud/confignano config.php在倒数第二行添加这条
'default_phone_region' => 'CN',
再次刷新,发现解决了

解决你还没有设置或验证你的电子邮件服务器配置。请前往基本设置,以便进行设置。之后,使用表单下方的 "发送电子邮件 "按钮来验证您的设置问题
进入设置-管理-基本设置

添加自己的SMPT服务就可以解决了
解决**通过 HTTP 不安全访问站点。强烈建议你将服务器设置为要求 HTTPS,参考步骤见 安全小贴士 ↗**问题
自己配置SSL
配置完成后会遇见这个问题

cd /root/data/docker_data/nextcloud/nextcloud/confignano config.php加入
1 => 'nextcloud.rcbczd.ga',nextcloud.rcbczd.ga改为你的域名

更改'overwrite.cli.url' => 'xxxxxxxx',为
'overwrite.cli.url' => 'https://xxxx.xxxx.xxxx', 'overwriteprotocol' => 'https',
全部解决

解决完成问题后我们开始配置
基本设置 选择Cron

配置redis
修改config.php
// 'memcache.local' => '\\OC\\Memcache\\APCu', //注释这一行,默认是没有注释的 'memcache.local' => '\\OC\\Memcache\\Redis', 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array( 'host' => 'redis', 'port' => 6379, 'password' => 'nextcloud' ), 'filelocking.enabled' => 'true',
docker-compose restart重启
安装OnlyOffice连接器
选择应用

搜索OnlyOffice

下载并启用

安装documentserver_community
wget https://github.com/nextcloud/documentserver_community/releases/download/v0.1.12/documentserver_community.tar.gz -P /root/data/docker_data/nextcloud/nextcloud/userappstar -zxvf /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community.tar.gz -C /root/data/docker_data/nextcloud/nextcloud/userappsrm -rf /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community.tar.gzchown -R 1000:1000 /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community选择启用

再次启用

完成

来到OnlyOffice,发现地址已经自动填写

可以正常使用了
]]>最近在折腾自建电影和电视剧库,但是发现搜集资源并不简单
很多资源都没有中文字幕,非常难受,得自己去寻找
整理电影和电视剧也不简单
所以就有了这篇文章,来解决以上痛点,实现资源下载整理全自动
注:所有涉及版权问题的地方都不会讲解,请知悉
为了这次搭建的方便,所以选用Docker来部署
为了安全性和隐私,本次采用的都是开源项目
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
简介
Radarr 是 Usenet 和 BitTorrent 用户的电影收藏管理器。它可以监控新电影的多个 RSS 提要,并将与客户端和索引器交互以抓取、排序和重命名它们。它还可以配置为在质量更好的格式可用时自动升级库中现有文件的质量。请注意,仅支持给定电影的一种类型。如果您想要给定电影的 4k 版本和 1080p 版本,您将需要多个实例。
地址
Github:https://github.com/Radarr/Radarr
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/radarr
特点
简介
Sonarr 是供 Usenet 和 BitTorrent 用户使用的 PVR。它可以监控多个 RSS 提要以获取您最喜欢的节目的新剧集,并将抓取、排序和重命名它们。它还可以配置为在质量更好的格式可用时自动升级已下载文件的质量。
地址
Github:https://github.com/Sonarr/Sonarr
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/sonarr
特点
简介
BGmi 是一个用来追番的命令行程序。
地址
Github:https://github.com/BGmi/BGmi
本次使用的Docker镜像:https://hub.docker.com/r/ddsderek/bgmi-docker-all-in-one
简介
Jackett 充当代理服务器:它将来自应用程序(Sonarr、Radarr、SickRage、CouchPotato、Mylar3、Lidarr、DuckieTV、qBittorrent、Nefarious等)的查询转换为特定于跟踪器站点的 http 查询,解析 html 或 json 响应,以及然后将结果发送回请求软件。这允许获取最近的上传(如 RSS)和执行搜索。Jackett 是维护索引器抓取和翻译逻辑的单一存储库 - 消除了其他应用程序的负担。
地址
Github:https://github.com/Jackett/Jackett
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/jackett
简介
prowlarr是建立在流行的 arr .net/reactjs 基础堆栈上的索引器管理器/代理,可与您的各种 PVR 应用程序集成。Prowlarr 支持对 Torrent Trackers 和 Usenet Indexers 管理。它与 Lidarr、Mylar3、Radarr、Readarr 和 Sonar 无缝集成,为您的索引器提供完整的管理,无需为每个应用程序设置索引器
特点
地址
Github:https://github.com/Prowlarr/Prowlarr
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/prowlarr
简介
Overseerr是一个请求管理和媒体发现工具,专为与您现有的Plex生态系统协同工作而构建。
特点
地址
Github:https://github.com/sct/overseerr
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/overseerr
jellyseerr与Overseerr类似,但是jellyseerr是专门为jellyfin服务的,而Overseerr是为plex服务的,本次教程用的是Overseerr,大家可以自己选择
介绍
NAS媒体库资源归集整理工具
1、资源检索和订阅
2、媒体库整理
3、站点养护
4、消息服务
地址
Github:https://github.com/jxxghp/nas-tools
DockerHub:https://hub.docker.com/repository/docker/jxxghp/nas-tools
群晖套件:https://github.com/jxxghp/nas-tools/releases
TG频道:https://t.me/nastool
WIKI:https://github.com/jxxghp/nas-tools/wiki
简介
Aria2 是一个多平台轻量级,支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具
地址
本次使用的Docker镜像:https://hub.docker.com/r/p3terx/aria2-pro
简介
AriaNg 是一个让 aria2 更容易使用的现代 Web 前端. AriaNg 使用纯 html & javascript 开发, 所以其不需要任何编译器或运行环境. 您只要将 AriaNg 放在您的 Web 服务器里并在浏览器中打开即可使用. AriaNg 使用响应式布局, 支持各种计算机或移动设备。
特点
地址
官网:http://ariang.mayswind.net/
Github:https://github.com/mayswind/AriaNg
本次使用的Docker镜像:https://hub.docker.com/r/p3terx/ariang
简介
qBittorrent 是一款开源免费的种子和磁力链接下载工具
地址
官网:https://www.qbittorrent.org/
本次使用的Docker镜像:https://hub.docker.com/r/superng6/qbittorrentee
简介
Transmission是一种BitTorrent客户端
比其他客户端使用更少的资源
非常适合服务器、嵌入式系统和无头使用的守护程序
本地对等发现
完全加密、DHT、µTP、PEX和Magnet Link支持
地址
官网:https://transmissionbt.com/
本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/transmission
简介
自动化搞定限定条件下 中文 字幕下载
地址
Github:https://github.com/allanpk716/ChineseSubFinder
本次使用的Docker镜像:https://hub.docker.com/r/allanpk716/chinesesubfinder
简介
Watchtower 会监视运行容器并监视这些容器最初启动时的镜像是否需要更新。当 watchtower 检测到一个镜像已经有变动时,它会使用新镜像,使用相同的参数自动重新启动相应的容器。同时 watchtower 本身也被打包为 Docker 镜像,用一行命令即可使用 watchtower 监控所有容器,然后所有容器都会自动更新,当然也包括 watchtower 本身。
地址
Github:https://github.com/containrrr/watchtower
本次使用的Docker镜像:https://hub.docker.com/r/containrrr/watchtower
简介
影音播放器
地址
本次使用的Docker镜像:https://hub.docker.com/r/plexinc/pms-docker
jellyfin和plex都是影音播放器,可以自己选择,plex收费,jellyfin开源免费,但是plex资源占用更小,刮削能力更强
简介
Kodi(以前称为XBMC)是一个免费强大的开放源代码媒体播放器软件应用程序。 Kodi可用于多种操作系统和硬件平台。
地址
下载地址:https://kodi.tv/download/
支持平台
Windows Linux Android Raspberry Pi macOS iOS tvOS
简介
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容
地址
Github:https://github.com/DIYgod/RSSHub
DockerHub:https://hub.docker.com/r/diygod/rsshub
在部署前我首先要来讲一些专有名词的意思,通过讲解这些名词的意思,有助于我们更好的理解部署中设置的作用,和为什么要这样设置。
以下来自于Linuxserver的解释
当在主机操作系统和容器之间使用卷(-v标志)权限问题时,我们通过允许您指定用户PUID和组来避免这个问题PGID。
确保主机上的任何卷目录都归您指定的同一用户所有,并且任何权限问题都会像魔术一样消失。
在这种情况下PUID=1000,PGID=1000找到你的用途id user如下:
$ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)Umask在计算中,umask是一个决定掩码设置的命令,该掩码控制如何为新创建的文件设置文件权限。它还可能影响文件权限的显式更改方式。umask也是一个设置掩码的函数,也可以指掩码本身,正式称为文件模式创建掩码**。掩码是一组位,每个位都限制了如何为新创建的文件设置相应的权限。可以通过调用umask命令来更改掩码中的位。
具体请看Wiki的介绍
hardlinking从英文翻译而来-在计算中,硬链接是将名称与文件系统上的文件相关联的目录条目。所有基于目录的文件系统都必须至少具有一个硬链接,为每个文件指定原始名称。术语“硬链接”通常仅在允许同一文件使用多个硬链接的文件系统中使用。
没有看懂也没关系,总之就是帮你省地方,省磁盘IO,一个文件可以出现在多个地方,但只占用一次空间,如果没有启用硬链接,就会执行 复制粘贴/剪切 操作
更新、安装软件
apt-get update && apt-get install -y wget vim nano zip curl非大陆Docker安装
wget -qO- get.docker.com | bashdocker -vsystemctl enable docker国内机安装docker
curl -sSL https://get.daocloud.io/docker | shdocker -vsystemctl enable docker非大陆Docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version国内机安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version创建目录
mkdir -p /root/data/docker_data/filmcd /root/data/docker_data/filmnano docker-composeDokcer-compose
version: "3.3"services:# jackett: # image: linuxserver/jackett:latest# container_name: jackett# environment:# - PUID=1000# - PGID=1000# - TZ=Asia/Shanghai# - AUTO_UPDATE=true# volumes:# - ./jackett/config:/config# - /video/downloads:/downloads# ports:# - 9117:9117# restart: unless-stopped# networks:# - film-bridge prowlarr: # 索引器 image: linuxserver/prowlarr:develop container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./prowlarr/config:/config # prowlarr配置文件目录 ports: - 9696:9696 # 端口 restart: unless-stopped networks: - film-bridge rsshub: # rsshub,获取豆瓣订阅 image: diygod/rsshub container_name: rsshub-film restart: always ports: - '1200:1200' environment: NODE_ENV: production CACHE_TYPE: redis REDIS_URL: 'redis://redis:6379/' PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' networks: - film-bridge depends_on: - redis - browserless browserless: image: browserless/chrome container_name: rsshub-film-chrome restart: always ulimits: core: hard: 0 soft: 0 networks: - film-bridge redis: image: redis:6-alpine container_name: rsshub-film-redis restart: always volumes: - ./rsshub/redis/data:/data networks: - film-bridge radarr: # 电影订阅工具 image: linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./radarr/config:/config # radarr配置文件目录 - /video/movies:/movies # 电影目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 ports: - 7878:7878 # 端口 restart: unless-stopped networks: - film-bridge sonarr: # 剧集订阅工具 image: linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./sonarr/config:/config # sonarr配置文件目录 - /video/tv:/tv # tv目录,存放电视剧等 - /video/cartoon:/cartoon # 动漫目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 ports: - 8989:8989 # 端口 restart: unless-stopped networks: - film-bridge bgmi: # 动漫搜索下载器,作为sonarr的补充 image: ddsderek/bgmi-docker-all-in-one:latest container_name: "bgmi" restart: "always" volumes: - ./bgmi:/bgmi # config文件夹 - /video:/media ports: - '8778:80' - '9091:9091' - '51413:51413/tcp' - '51413:51413/udp' environment: - TZ=Asia/Shanghai - PGID=1000 - PUID=1000 - DOWNLOADER=transmission - BGMI_SOURCE=mikan_project - BGMI_ADMIN_TOKEN=password overseerr: # 请求管理和媒体发现工具 image: linuxserver/overseerr:latest container_name: overseerr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./overseerr/config:/config # overseerr配置文件目录 ports: - 5055:5055 # 端口 restart: unless-stopped networks: - film-bridge# jellyseerr:# image: fallenbagel/jellyseerr:latest# container_name: jellyseerr# environment:# - LOG_LEVEL=debug# - TZ=Asia/Shanghai# ports:# - 5055:5055# volumes:# - ./jellyseerr/config:/app/config# restart: unless-stopped# networks:# - film-bridge# jellyfin-vue:# container_name: jellyfin-vue# ports:# - '8559:80'# restart: always# image: 'jellyfin/jellyfin-vue:unstable'# networks:# - film-bridge nas-tools: image: jxxghp/nas-tools:latest ports: - 3113:3000 volumes: - ./nas-tools/config:/config - /video:/media environment: - PUID=1000 - PGID=1000 - UMASK=022 - NASTOOL_AUTO_UPDATE=true# - REPO_URL=https://ghproxy.com/https://github.com/jxxghp/nas-tools.git # 当你访问github网络很差时,可以考虑解释本行注释 restart: always network_mode: bridge hostname: nas-tools container_name: nas-tools plex: # 播放器 container_name: plex ports: # 端口,不建议更改,32400为WEB端口,一定要保留,其他可以删去 - '32400:32400/tcp' # 访问 Plex 媒体服务器 - '3005:3005/tcp' - '8324:8324/tcp' # 通过 Plex Companion 控制 Roku 的 Plex - '32469:32469/tcp' # 访问 Plex DLNA 服务器 - '1900:1900/udp' # 访问 Plex DLNA 服务器 - '32410:32410/udp' # 当前 GDM 网络发现 - '32412:32412/udp' # 当前 GDM 网络发现 - '32413:32413/udp' # 当前 GDM 网络发现 - '32414:32414/udp' # 当前 GDM 网络发现 environment: - TZ=Asia/Shanghai - 'ADVERTISE_IP=http://192.168.31.96:32400/' # WEB IP ,改为你自己的# devices: # 硬件加速# - '/dev/dri:/dev/dri' volumes: - './plex/config:/config' # plex配置文件目录 - './plex/tmp:/transcode' # 转码文件临时存放目录 - '/video/movies:/movies' # 电影目录 - '/video/tv:/tv' # tv目录,存放电视剧等 - '/video/cartoon:/cartoon' # 动漫目录 image: plexinc/pms-docker networks: - film-bridge # jellyfin:# image: jellyfin/jellyfin# container_name: jellyfin# user: 1000:1000# volumes:# - ./jellyfin/config:/config# - ./jellyfin/cache:/cache# - /video:/media# restart: "unless-stopped"# environment:# - JELLYFIN_PublishedServerUrl=http://example.com# networks:# - film-bridge qbittorrentee-movies: #电影下载器 image: superng6/qbittorrentee container_name: qbittorrentee-movies environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./qbittorrentee-movies/config:/config # qb配置文件目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 ports: - 6881:6881 # web端口 - 6881:6881/udp - 8081:8080 restart: unless-stopped networks: - film-bridge qbittorrentee-tv: # 剧集下载器 image: superng6/qbittorrentee container_name: qbittorrentee-tv environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - ./qbittorrentee-tv/config:/config # qb配置文件目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 ports: - 6882:6881 # web端口 - 6882:6881/udp - 8082:8080 restart: unless-stopped networks: - film-bridge Aria2-movies: #电影下载器2 container_name: aria2-movies image: p3terx/aria2-pro environment: - PUID=1000 - PGID=1000 - UMASK_SET=022 - RPC_SECRET=password # aria2密码 - RPC_PORT=6800 # 端口 - LISTEN_PORT=6888 - DISK_CACHE=64M - IPV6_MODE=false - UPDATE_TRACKERS=true - CUSTOM_TRACKER_URL= - TZ=Asia/Shanghai volumes: - ./aria2-movies/config:/config # aria2配置文件目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 network_mode: host restart: unless-stopped logging: driver: json-file options: max-size: 1m Aria2-tv: # 剧集下载器2 container_name: aria2-tv image: p3terx/aria2-pro environment: - PUID=1000 - PGID=1000 - UMASK_SET=022 - RPC_SECRET=password # aria2密码 - RPC_PORT=6801 # 端口 - LISTEN_PORT=6889 - DISK_CACHE=64M - IPV6_MODE=false - UPDATE_TRACKERS=true - CUSTOM_TRACKER_URL= - TZ=Asia/Shanghai volumes: - ./aria2-tv/config:/config # aria2配置文件目录 - /video/downloads:/downloads # 下载存放目录 PS:暂时性存放,最终会把文件移动到movies或者tv目录 network_mode: host restart: unless-stopped logging: driver: json-file options: max-size: 1m AriaNg: # aria2下载器管理 container_name: ariang image: p3terx/ariang command: --port 6880 --ipv6 network_mode: host restart: unless-stopped logging: driver: json-file options: max-size: 1m nas-tools-transmission: image: linuxserver/transmission:latest container_name: nas-tools-transmission environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai - TRANSMISSION_WEB_HOME=/transmission-web-control/ - USER=admin - PASS=admin# - WHITELIST=iplist# - PEERPORT=peerport# - HOST_WHITELIST=dnsname list volumes: - ./nas-tools-transmission/config:/config - ./nas-tools-transmission/watch:/watch - /video/downloads:/downloads ports: - 9091:9091 - 52413:52413 - 52413:52413/udp restart: unless-stopped networks: - film-bridge chinesesubfinder: # 字幕下载器 image: allanpk716/chinesesubfinder:latest volumes: - ./chinesesubfinder/config:/config # 配置文件目录 - ./chinesesubfinder/browser:/root/.cache/rod/browser #chrome存放目录 - /video:/media # 影视目录 - /video/movies:/media/movies # 电影目录 - /video/tv:/media/tv # tv目录,存放电视剧等 - /video/cartoon:/media/cartoon # 动漫目录 environment: - PUID=1000 - PGID=1000 - PERMS=true - TZ=Asia/Shanghai - UMASK=022 restart: always network_mode: bridge hostname: chinesesubfinder container_name: chinesesubfinder ports: - 19035:19035 - 19037:19037 logging: driver: "json-file" options: max-size: "10m" watchtower: # 镜像更新 image: containrrr/watchtower container_name: watchtower restart: unless-stopped environment: - TZ=Asia/Shanghai# - WATCHTOWER_NOTIFICATIONS=email # 自选# - [email protected] # 邮件发送地址# - [email protected] # 邮件接收地址# - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smpt.xxx.xxx # 设置 SMTP 服务器# - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=25 # 设置 SMTP 的端口,默认为 25# - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=xxxx # SMTP 的用户名# - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=xxxx # SMTP 的密码# - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=1 # 发送通知之前的延迟(秒) volumes: - /var/run/docker.sock:/var/run/docker.sock networks: - film-bridge command: --cleanup prowlarr chinesesubfinder --schedule "0 0 0 * * *" #--interval 7200# clash: # 代理# image: dreamacro/clash-premium# container_name: clash# restart: unless-stopped# network_mode: host# volumes:# - ./clash:/root/.config/clashnetworks: # 网络设置 film-bridge: name: film-bridge注释补充
vedio└── downloads└── cartoon├── movies├── tv└── movies├── tv├── cartoon└── unkown/vedio/movies为电影目录,那么剩下所有电影目录都得填写这个启动
docker-compose up -d| Parameter | Function |
|---|---|
-p 9117 | 网页界面 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用。 |
-e AUTO_UPDATE=true | 允许 Jackett 在容器内部进行更新(目前由 Jackett 推荐并默认启用) |
-e RUN_OPTS=<run options here> | 可以选择指定要传递的其他参数。 |
-v /config | Jackett 应该存储其配置文件的位置。 |
-v /downloads | torrent blackhole的路径。 |
| Parameter | Function |
|---|---|
-p 9696 | Prowlarr Web 界面的端口 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用,这是 Prowlarr 所必需的 |
-v /config | 数据库和 Prowlarr 配置 |
| Parameter | Function |
|---|---|
-p 7878 | Radarr Web 界面的端口 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用,这是 Radarr 所必需的 |
-v /config | 数据库和雷达配置 |
-v /movies | 电影库在磁盘上的位置 |
-v /downloads | 下载管理器输出目录的位置 |
| Parameter | Function |
|---|---|
-p 8989 | Sonarr Web 界面的端口 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用,这是 Sonarr 所必需的 |
-v /config | 数据库和声纳配置 |
-v /tv | 电视库在磁盘上的位置 |
-v /downloads | 下载管理器输出目录的位置 |
| Parameter | Function |
|---|---|
-p 80:80 | BGMI Web端口 |
-p 9091:9091 | transmission web端口 当下载器设置为-e DOWNLOADER=transmission时,需要映射9091端口,6800和6880端口无需映射 |
-p 6800:6800 | aria2 端口 当下载器设置为-e DOWNLOADER=aria2时,需要映射6800和6880端口,9091端口无需映射 |
-p 6880:6880 | ariang Web端口 |
-p 51413:51413/tcp | Torrent 端口 TCP |
-p 51413:51413/udp | Torrent 端口 UDP |
-e PGID=1000 | 对于 GroupID - 请参阅上面的 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 时区 |
-e DOWNLOADER=transmission / -e DOWNLOADER=aria2 | 内部下载器,内置aria2和transmission,可以自行选择 |
-e BGMI_SOURCE=mikan_project | BGMI 默认数据源(bangumi_moe、mikan_project 或 dmhy) |
-e BGMI_ADMIN_TOKEN=password | 设置 BGMI Web 界面身份验证令牌 |
-v /bgmi:/bgmi | BGMI 配置文件目录 / |
-v /home/video2/NEW:/media | 媒体文件目录,包含下载文件和硬链接后的文件 |
| Parameter | Function |
|---|---|
-p 5055 | Web界面的端口。 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用 |
-v /config | 包含所有相关的配置文件。 |
| Parameter | Function |
|---|---|
-p 3113:3000 | nas-tools Web 端口 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e UMASK=022 | 权限掩码设置 |
-e NASTOOL_AUTO_UPDATE | 自动更新 |
-e REPO_URL=https://ghproxy.com/https://github.com/jxxghp/nas-tools.git | Github加速,网络很差可以选择 |
-v /config | 包含所有相关的配置文件。 |
-v /media | 媒体文件夹 |
| Parameter | Function |
|---|---|
-p 32400:32400/tcp | Plex 媒体服务器 Web端口 |
-p 3005:3005/tcp | \ |
-p 8324:8324/tcp | 通过 Plex Companion 控制 Roku 的 Plex |
-p 32469:32469/tcp | 访问 Plex DLNA 服务器 |
-p 1900:1900/udp | 访问 Plex DLNA 服务器 |
-p 32410:32410/udp | 当前 GDM 网络发现 |
-p 32412:32412/udp | 当前 GDM 网络发现 |
-p 32413:32413/udp | 当前 GDM 网络发现 |
-p 32414:32414/udp | 当前 GDM 网络发现 |
-e TZ=Asia/Shanghai | 时区 |
-e ADVERTISE_IP=http://192.168.31.96:32400/ | WEB IP ,改为你自己的 |
-v /config | plex配置文件目录 |
-v /transcode | 转码文件临时存放目录 |
--device /dev/dri:/dev/dri | 硬件加速 |
| Parameter | Function |
|---|---|
-p 6881:6881 | BT下载监听端口 |
-p 6881:6881/udp | BT下载DHT监听端口 |
-p 8080 | Web 端口 |
-e PUID=1000 | 对于 UserID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 时区 |
-v /config | qb配置文件目录 |
| Parameter | Function |
|---|---|
-p 9091 | 网页界面 |
-p 51413 | 种子端口 TCP |
-p 51413/udp | Torrent 端口 UDP |
-e PUID=1000 | 对于 User ID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e TZ=Asia/Shanghai | 指定时区以使用 |
-e TRANSMISSION_WEB_HOME=/combustion-release/ | 指定备用 UI 选项是/combustion-release/、/transmission-web-control/、/kettu/、/flood-for-transmission/和/transmissionic/。 |
-e USER=username | 指定接口的可选用户名 |
-e PASS=password | 指定接口的可选密码 |
-e WHITELIST=iplist | 指定逗号分隔的 ip 白名单的可选列表。填写 rpc-whitelist 设置。 |
-e PEERPORT=peerport | 为 torrent TCP/UDP 连接指定一个可选端口。填充对等端口设置。 |
-e HOST_WHITELIST=dnsname list | 指定逗号分隔的 dns 名称白名单的可选列表。填写 rpc-host-whitelist 设置。 |
-v /config | 传输应存储配置文件和日志的位置。 |
-v /downloads | 本地下载路径。 |
-v /watch | 监视 torrent 文件的文件夹。 |
| Parameter | Function |
|---|---|
-e PUID=1000 | 对于 User ID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e UMASK_SET=022 | 权限掩码设置 |
-e RPC_SECRET=password | RPC 密钥设置,即 WebUI 连接时需要填写的密码,只建议使用字母和数字。 |
-e RPC_PORT=6800 | RPC 端口设置。 |
-e LISTEN_PORT=6888 | BT 监听端口(TCP)、DHT 监听端口(UDP)设置,即 Aria2 配置中 |
-e DISK_CACHE=64M | 磁盘缓存设置,默认值64M。建议在有足够的内存空闲情况下设置为适当增加大小,以减少磁盘 I/O ,提升读写性能,延长硬盘寿命。比如128M、256M等。此项值仅决定上限,实际对内存的占用取决于网速(带宽)和设备性能等其它因素。当下载文件超过这个大小且网速足够快时最多会占用所设置大小的内存,所以不宜过大,设置不当轻则进程终结、重则宕机。 |
-e IPV6_MODE=false | IPv6 模式。 |
-e UPDATE_TRACKERS=true | 自动更新 BT tracker 。PT 下载和想手动填写设置 BT tracker 需求必须禁用。 |
-e CUSTOM_TRACKER_URL= | 自定义 BT tracker 列表获取链接,多个链接可以用半角逗号(,)进行分隔。如果没有指定则默认从https://trackerslist.com/all_aria2.txt进行获取。 |
-e TZ=Asia/Shanghai | 时区 |
-v /config | 配置目录映射 |
-v /downloads | 下载目录映射 不要有中文 |
--network=host | 使用 host 网络模式。直接使用宿主机网络,免去端口映射导致的部分性能损失,且灵活性更高,可更方便的配置使用 IPv6 网络。 |
| Parameter | Function |
|---|---|
-e PUID=1000 | 对于 User ID - 请参阅上面的说明 |
-e PGID=1000 | 对于 GroupID - 请参阅上面的说明 |
-e PERMS=true | 是否重设/media权限 |
-e TZ=Asia/Shanghai | 时区 |
-e UMASK=022 | 权限掩码 |
-p 19035 | Web界面 |
-p 19037 | 用于webui 的视频列表读取图片,务必设置不要暴露到外网 |
-v /config | 保存配置、日志等文件的路径 |
-v /media | 媒体目录 |
-v /root/.cache/rod/browser | chrome存放目录 |
如果直接开始设置,有些人可能比较蒙,我这边先讲解一下过程
首先你在Overseerr选择好你想看的电影或者电视剧,它会把这个请求发给Radarr或者Sonarr,Radarr或者Sonarr会配合Prowlarr索引器找到你想看的电影或者电视剧的下载用的种子,然后Radarr或者Sonarr会把下载种子发给aria2或者qb进行下载,下载完成后电影会在下载目录,Radarr或者Sonarr会把电影或者电视剧移动到movies或者tv目录,plex会进行扫描,如果扫描到了这部电影或者电视剧,它就会把下载完成发给Overseerr,这样子就完成了一部电影的自动下载
设置开始前,先给个提醒:每个人环境不同,填写的IP也是不同的。
访问IP+8081,IP+8082
默认是帮忙已经设置好了,无需过多设置
只需要在连接这边,勾上Automatically update public trackers list即可
访问IP+6880,进入ariang管理界面
像图中这样设置,连接好两个aria2下载器,ip可以写dockerIP,端口一个6800(movies),一个6801(tv)
前面创建了两个aria2和qb,我这边分配的是Radarr一个aria2加上qb,Sonarr也是一个aria2加上qb
Radarr是为电影服务的,所以连接的是qbittorrentee-movies(端口8081)和 aria2-movies(端口6800)这两个下载器
Sonarr是为剧集动漫服务的,所以连接的是qbittorrentee-tv(端口8082)和 aria2-tv(端口6801)的这两个下载器
那么接下来就开始设置Radarr和Sonarr吧
访问IP+7878,进入管理界面
先将语言的两项全部设置为中文
然后进入媒体管理,设置根目录,与图片一致即可
然后进入影片质量,将Unknown拉到无限制
到下载客户端,添加两个下载器,分别是容器名称为qbittorrentee-movies(端口8081) aria2-movies(端口6800)的这两个下载器
进入元数据,按照图片设置
访问IP+8989,进入管理界面
设置与Radarr基本一致,这边就放几张图片
要注意的是,Sonarr目前没有中文
到下载客户端,添加两个下载器,分别是容器名称为qbittorrentee-tv(端口8082) aria2-tv(端口6801)的这两个下载器
访问IP+9696,进入管理界面
进入设置 将UI语言改为中文
选择添加索引器,添加自己想要的索引器即可
选择好url,先点击测试,然后保存
进入设置-应用程序,添加Radarr和Sonarr,apikey获取分别进入Radarr和sonarr,来到设置-通用-安全即可看到
plex设置这里就不过多演示了,可以去看看其他教程
我这边推荐韩风Talk大佬的plex教程视频
https://www.bilibili.com/video/BV1EL411E7E9?share_source=copy_web
放几张图片
overseerr是有设置引导的,按照引导一步步设置好plex,radarr,sonarr即可
这里不过多展示了,每个人环境不同。填写的IP也是不同的
Plex设置
Radarr设置
Sonarr设置
这边通知可以选择telegram,具体自行百度
设置完成后,可以在Overseerr里面选择一部电影,看看能不能正常搜刮然后自动下载,如果可以,就表明设置成功了
https://github.com/allanpk716/ChineseSubFinder
https://github.com/Prowlarr/Prowlarr
https://hub.docker.com/r/superng6/qbittorrentee
https://hub.docker.com/r/p3terx/aria2-pro
https://www.bilibili.com/video/BV1aU4y1M7KP?share_source=copy_web
https://www.bilibili.com/video/BV18f4y1M7mY?share_source=copy_web
https://blog.csdn.net/wbsu2004/article/details/122996443
https://post.smzdm.com/p/avw3xvqm/
https://sleele.com/2020/08/31/sonarr-radarr-qbittorrent-硬链接讲解/
https://zhuanlan.zhihu.com/p/480817148
]]>Piwigo 是一款可以用来管理您的图片集与其他媒体的网站程序。 内置强大功能,全世界都在使用它管理图片库。
Piwigo 的用户群将它用在了各个方面。 从中型图片集到巨大的图库,Piwigo 都能替您省时省力,轻松搞定工作。
公共部门、公司、基金会……等,都有管理自己的图片资料的需要。 在数字资产管理领域,Piwigo 专注于易用性、承受能力、性能与可持续性。
专业摄影师需要向客户公开或私下展示他们的作品。 Piwigo 提供了高级的权限设置。 用户可以下载单张图片或整个相册。
以20年的时间跨度建立一个家庭影集,管理维护一个欧洲蜘蛛种类的图片收藏,作为摄影爱好者展示自己最棒的风光摄影作品…… 这里有 Piwigo 的粉丝们如何使用它的一些范例。
更多特点可以去官方文档查看
用Docker安装,全部不需要管

Cloudcone VPS一台
域名一个(做好解析)
sudo -i # 切换到root用户apt update -yapt install wget curl sudo vim gitmkdir -p /root/data/docker_data/piwigocd /root/data/docker_data/piwigonano docker-compose.ymlversion: '3.3'services: mysqlpiwigo: image: mysql:5.7 container_name: piwigo-db volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=piwigo - MYSQL_DATABASE=piwigo - MYSQL_USER=piwigo - MYSQL_PASSWORD=piwigo piwigo: image: mathieuruellan/piwigo container_name: piwigo links: - mysqlpiwigo:mysql volumes: - ./piwigo/galleries:/var/www/galleries - ./piwigo/local:/var/www/local - ./piwigo/plugins:/var/www/plugins - ./piwigo/themes:/var/www/themes - ./piwigo/cache:/var/www/_data/i - ./piwigo/upload:/var/www/upload - ./piwigo/log:/var/log/apache2 ports: - "8087:80" hostname: piwigo domainname: xxx.xxxxx.xxx启动
docker-compose up -d
cp -r /root/data/docker_data/piwigo /root/data/docker_data/piwigo.archive # 备份cd /root/data/docker_data/piwigo # 进入docker-compose所在的文件夹docker-compose pull # 拉取最新的镜像docker-compose up -d # 重新更新当前镜像cd /root/data/docker_data/piwigo # 进入docker-compose所在的文件夹docker-compose down # 停止容器,此时不会删除映射到本地的数据rm -rf /root/data/docker_data/piwigo # 完全删除映射到本地的数据这里不过多赘述
可以去看咕咕的教程(相关地址)
PS:懒得写

访问安装界面

点击开始安装

有可能会出使用方法
piwigo的安装与配置就到这里
剩下的自己探索吧
]]>手机版也值得玩味
懒得写,去看Github介绍吧
Demo:https://excalidraw.com
官方文档:https://github.com/excalidraw/excalidraw#documentation
官方博客:https://blog.excalidraw.com
1.3.1 创建目录
mkdir /root/data/docker_data/excalidrawcd /root/data/docker_data/excalidrawnano docker-compose.ymldocker-compose.yml
amd64部署
version: '3.3'services: excalidraw: ports: - '8063:80' volumes: - './data:/app/web' restart: unless-stopped image: 'ddsderek/excalidraw:latest'linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x部署
version: '3.3'services: excalidraw: ports: - '8063:80' volumes: - './data:/app/web' restart: unless-stopped image: 'ddsderek/excalidraw:latest-other'启动
docker-compose up -dhttp://ip:端口即可

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。
FROM ubuntu:18.04 AS build-env ### FROM XXX 设置基础镜像 这边使用的是ubuntu18版本#http://nginx.org/en/download.html ENV NGINX_VERSION 1.16.1 ### ENV XXX 设置变量#https://www.php.net/ENV PHP_VERSION 7.4.20#if not set WORKDIR, each RUN & CMD & ADD & COPY ... need to run `cd /usr/local/src`WORKDIR /usr/local/src ### WORKDIR /XXX 设置工作目录 与cd到某个目录执行命令相似RUN apt-get -y update ### RUN XXX 执行命令,类似于在服务器上执行的命令RUN apt-get install -y wget# 16.04 libreadline6-dev# 18.04 libreadline-dev add: libzip-devRUN apt-get install -y build-essential autoconf make automake bison re2c libxml2-dev libssl-dev libfreetype6-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev libreadline-dev pkg-config libzip-dev# for PHP 7.4RUN apt-get install -y libsqlite3-dev libonig-dev#Add user && download php and nginx source code# groupadd -r www && \# useradd -M -s /sbin/nologin -r -g www www && /sbin/usermod -u 1000 www && \# -M, --no-create-home# -m, --create-home Create the user's home directory if it does not exist.# composer install需要# Cannot create cache directory /home/www/.composer/cache/repo/https---packagist.org/, or directory is not writable. Proceeding without cache# Cannot create cache directory /home/www/.composer/cache/files/, or directory is not writable. Proceeding without cache# for php pecl install *** autoconfRUN useradd -m -s /sbin/nologin wwwRUN wget -c -O nginx.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gzRUN tar -zxf nginx.tar.gz && rm -f nginx.tar.gz && \ cd nginx-${NGINX_VERSION} && \ ./configure --prefix=/usr/local/nginx \ --user=www --group=www \ --pid-path=/var/run/nginx.pid \ --with-pcre \ --without-mail_pop3_module \ --without-mail_imap_module \ --without-mail_smtp_module \ --with-http_v2_module \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module && \ make -j4 > /dev/null && make install# --error-log-path=/var/log/nginx/error.log \# --http-log-path=/var/log/nginx/access.log \# --conf-path=/usr/local/nginx/nginx.conf \RUN wget -c -O php.tar.gz http://php.net/distributions/php-${PHP_VERSION}.tar.gzRUN tar zxf php.tar.gz && rm -f php.tar.gz && \ cd php-${PHP_VERSION} && \ ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-config-file-scan-dir=/usr/local/php/etc/php.d \ --with-fpm-user=www \ --with-fpm-group=www \ --with-mysqli \ --with-pdo-mysql \ --with-openssl \ --enable-gd \ --with-iconv \ --with-zlib \ --with-gettext \ --with-curl \ --with-jpeg \ --with-freetype \ --enable-fpm \ --enable-xml \ --enable-inline-optimization \ --enable-mbregex \ --enable-mbstring \ --enable-mysqlnd \ --enable-sockets \ --with-zip \ --enable-soap \ --enable-bcmath \ --enable-exif \ --enable-pcntl \ --disable-cgi \ --disable-phpdbg \ --with-pear \ && \ make -j4 > /dev/null && make install;# --with-xmlrpc \ This extension is EXPERIMENTAL.# --with-mhash \# --disable-ctype \# --enable-shmop \# --enable-sysvsem \# --enable-ftp \# 从PHP7.4 开始需要手动 --with-pear, 之前是--without-pear# PEAR is disabled by default on PHP 7.4. As "PECL is a repository of PHP extensions that are made available to you via the PEAR packaging system", it also removes the PECL too.RUN cp ./php-${PHP_VERSION}/php.ini-production /usr/local/php/etc/php.ini && \ mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \ mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf && \ strip /usr/local/php/bin/php && \ strip /usr/local/php/sbin/php-fpm && \ strip /usr/local/nginx/sbin/nginx && \ strip /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/opcache.a && \ strip /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/opcache.soRUN sed -i 's/^;date\.timezone[ ]*=[ ]*/date\.timezone = Asia\/Shanghai/' /usr/local/php/etc/php.ini && \ sed -i 's/^session\.use_strict_mode = 0/session\.use_strict_mode = 1/' /usr/local/php/etc/php.ini && \ sed -i 's/^session\.cookie_httponly =$/session\.cookie_httponly = 1/' /usr/local/php/etc/php.ini && \ sed -i 's/^memory_limit = 128M/memory_limit = 128M/' /usr/local/php/etc/php.ini && \ sed -i 's/^expose_php = On/expose_php = Off/' /usr/local/php/etc/php.ini && \ sed -i 's/^upload_max_filesize = 2M/upload_max_filesize = 100M/' /usr/local/php/etc/php.ini && \ sed -i 's/^max_execution_time = 30/max_execution_time = 60/' /usr/local/php/etc/php.ini && \ sed -i 's/^;request_terminate_timeout = 0/request_terminate_timeout = 120/' /usr/local/php/etc/php-fpm.d/www.conf && \ sed -i 's/^listen = 127\.0\.0\.1:9000/listen = \/var\/run\/php-fpm\.sock/' /usr/local/php/etc/php-fpm.d/www.conf && \ sed -i 's/^;listen.owner = www/listen.owner = www/' /usr/local/php/etc/php-fpm.d/www.conf && \ sed -i 's/^;listen.group = www/listen.group = www/' /usr/local/php/etc/php-fpm.d/www.conf && \ sed -i 's/^;listen.mode = 0660/listen.mode = 0660/' /usr/local/php/etc/php-fpm.d/www.conf# sed -i 's/^;cgi\.fix_pathinfo[ ]*=[ ]*1/cgi\.fix_pathinfo=0/' /usr/local/php/etc/php.ini# sed -i 's/^;security\.limit_extensions .../default setting is safe/' /usr/local/php/etc/php-fpm.d/www.conf && \# phpize need `/usr/local/php/include`RUN rm -rf /usr/local/php/includeFROM ubuntu:18.04COPY --from=build-env /usr/local/nginx /usr/local/nginx ### COPY /主机目录 /容器内目录 复制指令,从上下文目录中复制文件或者目录到容器里指定路径COPY --from=build-env /usr/local/php /usr/local/phpCOPY --from=build-env \ /lib/x86_64-linux-gnu/liblzma.so.5 \ /lib/x86_64-linux-gnu/libcom_err.so.2 \ /lib/x86_64-linux-gnu/libc.so.6 \ /lib/x86_64-linux-gnu/libcrypt.so.1 \ /lib/x86_64-linux-gnu/libdl.so.2 \ /lib/x86_64-linux-gnu/libgcc_s.so.1 \ /lib/x86_64-linux-gnu/libkeyutils.so.1 \ /lib/x86_64-linux-gnu/libm.so.6 \ /lib/x86_64-linux-gnu/libpthread.so.0 \ /lib/x86_64-linux-gnu/libresolv.so.2 \ /lib/x86_64-linux-gnu/libz.so.1 \ \ /lib/x86_64-linux-gnu/COPY --from=build-env \ /usr/lib/x86_64-linux-gnu/libhx509.so.5 \ /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 \ /usr/lib/x86_64-linux-gnu/libjpeg.so.8 \ /usr/lib/x86_64-linux-gnu/libpng16.so.16 \ /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 \ /usr/lib/x86_64-linux-gnu/libssl.so.1.1 \ /usr/lib/x86_64-linux-gnu/libasn1.so.8 \ /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 \ /usr/lib/x86_64-linux-gnu/libgnutls.so.30 \ /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 \ /usr/lib/x86_64-linux-gnu/libheimbase.so.1 \ /usr/lib/x86_64-linux-gnu/libhogweed.so.4 \ /usr/lib/x86_64-linux-gnu/libidn2.so.0 \ /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 \ /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 \ /usr/lib/x86_64-linux-gnu/libnettle.so.6 \ /usr/lib/x86_64-linux-gnu/libroken.so.18 \ /usr/lib/x86_64-linux-gnu/libstdc++.so.6 \ /usr/lib/x86_64-linux-gnu/libwind.so.0 \ /usr/lib/x86_64-linux-gnu/libxml2.so.2 \ /usr/lib/x86_64-linux-gnu/libfreetype.so.6 \ /usr/lib/x86_64-linux-gnu/libicuuc.so.60 \ /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 \ /usr/lib/x86_64-linux-gnu/librtmp.so.1 \ /usr/lib/x86_64-linux-gnu/libpsl.so.5 \ /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 \ /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 \ /usr/lib/x86_64-linux-gnu/libicudata.so.60 \ /usr/lib/x86_64-linux-gnu/libunistring.so.2 \ /usr/lib/x86_64-linux-gnu/libgmp.so.10 \ /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 \ /usr/lib/x86_64-linux-gnu/libtasn1.so.6 \ /usr/lib/x86_64-linux-gnu/libkrb5.so.26 \ /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 \ /usr/lib/x86_64-linux-gnu/libkrb5.so.3 \ /usr/lib/x86_64-linux-gnu/libsasl2.so.2 \ /usr/lib/x86_64-linux-gnu/libgssapi.so.3 \ /usr/lib/x86_64-linux-gnu/libffi.so.6 \ /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 \ /usr/lib/x86_64-linux-gnu/libonig.so.4 \ /usr/lib/x86_64-linux-gnu/libzip.so.4 \ \ /usr/lib/x86_64-linux-gnu/# 18.04 add:# COPY --from=build-env /usr/lib/x86_64-linux-gnu/libzip.so.4 /usr/lib/x86_64-linux-gnu/#overwrite nginx.confADD conf/nginx.conf /usr/local/nginx/conf/nginx.conf ### ADD /XXX /XXX ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:### ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。### ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。ADD conf/default_server.conf /etc/nginx/conf.d/default_server.confADD start.sh /start.sh# /var/lib/apt/lists is hugeRUN useradd -m -s /sbin/nologin www && \ mkdir /var/log/nginx && \ mkdir -p /etc/nginx/conf.d && \ mkdir -p /app/web && chown -R www:www /app && \ ln -s /usr/local/php/bin/php /usr/local/bin/php && \ ln -s /usr/local/php/bin/phpize /usr/local/bin/phpize && \ ln -s /usr/local/php/bin/pecl /usr/local/bin/pecl && \ ln -s /usr/local/php/bin/php-config /usr/local/bin/php-config && \ ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx && \ chmod 755 /start.sh && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ apt-get update && apt-get install -y tzdata ca-certificates && apt-get clean && rm -rf /var/lib/apt/lists/*# 先建软链,再安装tzdata 就不需要dpkg-reconfigure -f noninteractive tzdata; 或者参考:https://serverfault.com/questions/949991/how-to-install-tzdata-on-a-ubuntu-docker-imageCOPY ./html /app/webCOPY ./mv /COPY php.ini /usr/local/php/etcRUN chown -R www:www /app/web \&& chmod 755 /app/webWORKDIR /app/webVOLUME ["/app/web/i"] ### VOLUME /XXX 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。VOLUME ["/app/web/config"]#Set portEXPOSE 80 ### EXPOSE XX 仅仅只是声明端口。#Start itENTRYPOINT ["/start.sh"] ### 类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:### CMD 在docker run 时运行。### RUN 是在 docker build。### ENTRYPOINT 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。]]>



前几篇文章已经介绍过安装方法了,这次就不演示了,安装文章

docker run -it -d --name halo -p 8091:8090 -v /root/data/docker_data/halo:/root/.halo halohub/halo:latest
需要等待一会儿才可以进入管理界面
DockerHub仓库 我使用的是meteorkong的镜像
因为本次使用Docker安装H5ai,所以首先安装Docker
apt-get update && apt-get install -y wget vimwget -qO- get.docker.com | bashdocker -vsystemctl enable dockersudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --versiondocker run -d -p 8002:80 -v /home/暂存/docker/h5ai:/h5ai --name h5ai ilemonrain/h5ai:full

docker run -d \-v /home/暂存/docker/h5ai:/srv \-v /root/data/docker_data/h5aifile/filebrowserconfig.json:/etc/config.json \-v /root/data/docker_data/h5aifile/database.db:/etc/database.db \--name h5aifile \-p 8005:80 \filebrowser/filebrowser]]>
DockerHub仓库 我使用的是nmtan的镜像
作者Github 地址
因为本次使用Docker安装Chevereto,所以首先安装Docker
apt-get update && apt-get install -y wget vimwget -qO- get.docker.com | bashdocker -vsystemctl enable dockersudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --versionmkdir -p /root/data/docker_data/cheveretocd /root/data/docker_data/cheveretoversion: '3'services: db: image: mariadb volumes: - /root/data/docker_data/chevereto/mysql:/var/lib/mysql:rw restart: always networks: - private environment: MYSQL_ROOT_PASSWORD: chevereto_root MYSQL_DATABASE: chevereto MYSQL_USER: chevereto MYSQL_PASSWORD: chevereto chevereto: depends_on: - db image: einverne/chevereto restart: always networks: - private environment: CHEVERETO_DB_HOST: db CHEVERETO_DB_USERNAME: chevereto CHEVERETO_DB_PASSWORD: chevereto CHEVERETO_DB_NAME: chevereto CHEVERETO_DB_PREFIX: chv_ volumes: - /home/暂存/docker/chevereto:/var/www/html/images:rw ports: - 8002:80networks: private:volumes: database: chevereto_images:]]>
下载安装termux
官方下载地址:https://f-droid.org/packages/com.termux/
我的文件仓库下载地址:https://file.ddsrem.in:998/termux.apk
termux上的软件安装设置pkg updatepkg upgradepkg install proot git python -ygit clone https://github.com/sqlsec/termux-install-linuxcd termux-install-linuxpython termux-linux-install.py
输入:3cd ..cd ~/Termux-Linux/Debian./start-debian.sh
Debian环境的安装配置apt updateapt upgradeapt-get install sudo vim -ysudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev -ysudo apt-get install python3 python3-pip python3-dev -y
安装homeassistantpip3 install --upgrade pippip3 install --upgrade setuptoolspip3 install netdiscopip3 install --upgrade homeassistant
启动 #我第一次用了5小时,后面基本几分钟(原因是homeassistant在启动时会安装许多软件,但是许多软件没有arm版本的,所以就要进行编译安装,所以需要花费许多时间)
hass
ps:本次使用的手机是荣耀8c
homeassistant目录在/root/.homeassistant下
安装插件面前需要很长时间
本次安装的版本不带Supervisor
版本为core
Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
Debian安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
Fedora安装脚本 wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
wget -qO- get.docker.com | bash
systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
mkdir -p data/docker_data
docker run -d -p 8000:8000 -p 9000:9000 --name portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v /root/data/docker_data/portainer/data:/data
cr.portainer.io/portainer/portainer-ce:2.11.0
docker run -d
--name=qbittorrent
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-e WEBUI_PORT=8989
-p 6881:6881
-p 6881:6881/udp
-p 8989:8989
-v /root/data/docker_data/qbittorrent/config:/config
-v /home/下载/qbittorrent:/downloads
--restart unless-stopped
lscr.io/linuxserver/qbittorrent
docker run -d
--name=transmission
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-p 9091:9091
-p 51413:51413
-p 51413:51413/udp
-v /root/data/docker_data/transmission/config:/config
-v /home/下载/transmission:/downloads
-v /home/下载/transmission/watch:/watch
--restart unless-stopped
lscr.io/linuxserver/transmission
docker pull p3terx/aria2-pro
docker run -d
--name aria2
--restart unless-stopped
--log-opt max-size=1m
-e PUID=$UID
-e PGID=$GID
-e UMASK_SET=022
-e RPC_SECRET=
-e RPC_PORT=6800
-e LISTEN_PORT=6888
-p 16800:6800
-p 16888:6888
-p 16888:6888/udp
-v /root/data/docker_data/aria2/config:/config
-v /home/下载/aria2:/downloads
p3terx/aria2-pro
docker pull p3terx/ariang
docker run -d
--name ariang
--log-opt max-size=1m
--restart unless-stopped
-p 6801:6880
p3terx/ariang
docker pull codeskyblue/gohttpserver
docker run -d -it -p 8001:8000 -v /home/下载/共享:/app/public --name gohttpserver codeskyblue/gohttpserver
apt update -y
mkdir -p ~/data/docker_data/Ward
cd ~/data/docker_data/Ward
git clone https://github.com/B-Software/Ward.git
cd Ward
docker build . --tag ward
docker run -d --name ward -p 4000:4000
-p 4001:4001
--privileged=true
--restart always
ward:latest
docker run -d
--name=nginx-proxy-manager
-p 8181:8181
-p 8081:8080
-p 4443:4443
-v /root/data/docker_data/npm/config:/config:rw
jlesage/nginx-proxy-manager
docker pull jellyfin/jellyfin
docker run -d --name jellyfin -p 8096:8096 -v /root/data/docker_data/jellyfin/config:/config -v /root/data/docker_data/jellyfin/cache:/cache-v -v /home/video/电影:/media1 -v /home/video/电视剧:/media2 jellyfin/jellyfin
docker pull cym1102/nginxwebui:latest
docker run -itd
--name nginxwebui
-v /home/nginxWebUI:/home/nginxWebUI
-e BOOT_OPTIONS="--server.port=8080"
--privileged=true
--net=host
cym1102/nginxwebui:latest
apt-get install
jq
wget
curl
udisks2
libglib2.0-bin
network-manager
dbus -y && wget https://github.com/home-assistant/os-agent/releases/download/1.2.2/os-agent_1.2.2_linux_x86_64.deb && sudo dpkg -i os-agent_1.2.2_linux_x86_64.deb && gdbus introspect --system --dest io.hass.os --object-path /io/hass/os && wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb && dpkg -i homeassistant-supervised.deb
docker run -d
--name=resilio-sync
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-p 28888:8888
-p 55555:55555
-v /root/data/docker_data/resilio-sync/config:/config
-v /home/下载/resilio-sync备份/downloads:/downloads
-v /home/下载/resilio-sync备份:/sync
--restart unless-stopped
lscr.io/linuxserver/resilio-sync
docker run -d --name mrdoc -p 10086:10086 -v /root/data/docker_data/mrdoc/config:/app/MrDoc/config -v /home/下载/mrdoc:/app/MrDoc/media jonnyan404/mrdoc-alpine
docker run -d --net=host --name=homebridge -v /root/data/docker_data/homebridge:/homebridge oznu/homebridge:ubuntu
docker run --name webdav
--restart=unless-stopped
-p 1080:80
-v /home:/media
-e USERNAME=nas
-e PASSWORD=lkh662519
-e TZ=Europe/Madrid
-e UDI=1000
-e GID=1000
-d ugeek/webdav:amd64
docker run -d
--name=heimdall
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-p 1088:80
-p 4434:443
-v /root/data/docker_data/heimdall/config:/config
--restart unless-stopped
lscr.io/linuxserver/heimdall
docker exec -it heimdall bash
mv -f /config/app.php /var/www/localhost/heimdall/resources/lang/de/
mv -f /config/Search.php /var/www/localhost/heimdall/app/
文件下载:https://file.ddsrem.in/UbuntuNAS/app.php?download=true
https://file.ddsrem.in/UbuntuNAS/Search.php?download=true
mkdir -p /root/data/docker_data/minimalist
cd /root/data/docker_data/minimalist
wget https://github.com/pereorga/minimalist-web-notepad/archive/refs/heads/docker.zip
unzip docker.zip
cd minimalist-web-notepad-docker/
docker build -t minimalist-web-notepad .
docker run -d -it --restart=always --name minimalist-web-notepad -v /root/data/docker_data/minimalist/minimalist-data:/var/www/html/_tmp -p 8006:80 minimalist-web-notepad
mkdir -p /root/data/docker_data/wiznote/data
docker run --name wiz --restart=always -it -d -v /root/data/docker_data/wiznote/data:/wiz/storage -v /etc/localtime:/etc/localtime -p 8008:80 -p 9269:9269/udp wiznote/wizserver
docker run -d
--name=chevereto
-e PUID=1000
-e PGID=1000
-e TZ=Asia/Shanghai
-p 8002:80
-v /root/data/docker_data/chevereto/config:/config
-v /home/暂存/docker/chevereto:/data
--restart unless-stopped
lscr.io/linuxserver/chevereto
docker run -d
--name=mariadb
-e PUID=1000
-e PGID=1000
-e MYSQL_ROOT_PASSWORD=lkh662519
-e TZ=Europe/London
-p 3307:3306
-v /home/暂存/docker/mariadb:/config
--restart unless-stopped
lscr.io/linuxserver/mariadb
docker run --name myadmin -d -e PMA_ARBITRARY=1 -p 8003:80 phpmyadmin
docker run -it -d --name halo -p 8090:8090 -v /home/暂存/docker/halo:/root/.halo halohub/halo:latest
]]>