浮云遮眼 https://blog.ddsrem.com 一只努力变可爱的 mtf Halo-Plus 1.1.4 Mon, 19 Jan 2026 07:58:00 CST <![CDATA[【115网盘STRM助手】FUSE 挂载详细配置指南]]> https://blog.ddsrem.com/archives/115strmhelper-fuse-use 功能简介

115网盘STRM插件在 v2.4.0 版本中正式引入了 网盘本地挂载 功能。

该功能基于 FUSE 技术实现,旨在深度解决 ISO 格式媒体文件的信息提取(刮削)与播放难题。

此项更新不仅进一步完善了媒体库的兼容性,也为广大用户提供了更灵活的使用选择。

前置要求

  • 115网盘STRM插件 版本不低于 v2.4.0
  • Windows 无法使用该功能,推荐 MoviePilot Docker 容器内使用

环境准备

在所有操作之前,我们首先需要确认一个本地挂载目录

这个目录为网盘挂载到宿主机的路径,跟 CloudDrive -v xxx:/CloudNAS:shared 配置项原理相同。

本教程我们规定宿主机路径。/mnt/pan_115 为本地挂载目录。

接下来我们正式进入环境准备环节

1. MoviePilot 容器更改

  1. 完善 FUSE 配置文件

为了允许非 root 用户或容器内进程访问挂载点,需在 MoviePilot 的 配置目录 下创建 fuse.conf 文件,并开启权限。

请您在 MoviePilot 配置目录下创建名为 fuse.conf 的文件,写入以下内容:

user_allow_other

也可以使用 Linux 命令创建此文件

echo "user_allow_other" > fuse.conf
  1. 调整容器启动配置

由于挂载功能涉及底层文件系统的操作,需要修改 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 配置文件
  1. 完成配置修改

完成以上两步后,您只需要重新创建容器,即可完成 MoviePilot 的环境准备工作。

⚠️ 部分系统可能需要执行特定命令确保具有挂载权限。

群晖

mount --make-shared /volume1  # volume1 改为你的实际盘符

2. 媒体服务器容器更改(Emby 为例)

假设您已经映射STRM文件目录,那我们只需要再将网盘挂载目录映射到容器内即可。

本教程我们统一将目录映射到 Emby 容器内的 /pan_115 目录下面。

Docker Compose 配置参考

volumes:  - '/mnt/pan_115:/pan_115:rslave'  # 注意:rslave参数是必须的

3. MediaLinker 容器

如果您使用的媒体服务器 302 反代项目为MediaLinker或者emby2Alist,则可以忽略此步。

如果您使用的媒体服务器 302 反代项目支持类似于emby2AlistmediaMountPath这种类型的配置,也可以忽略此步。

如果您不符合以上两点,请参考 此教程 搭建 MediaLinker 项目,并确保容器正常启动。

项目配置

  1. 配置插件

插件内选择网盘挂载选项卡,按照插件内的提示完成具体配置。

image-20260118183906900

  1. 媒体服务器配置

按照正常配置流程添加STRM文件媒体库即可。

⚠️ 注意:严禁将网盘挂载路径添加至媒体库刮削,极有可能造成风控或其它未知错误。

  1. MediaLinker 配置

您需要修改配置文件目录下的 constant.js 文件,以下是必须要修改的配置项:

  • embyHost:Emby 地址
  • embyApiKey: Emby APIKEY
  • mediaMountPath:修改为 [""]
  • mediaPathMapping:通过插件生成 emby2Alist 配置自动生成后填入

image-20260118200836437

⚠️ 注意:配置完成后需要重启容器

Done!

完成以上配置后您就可以重新生成STRM文件测试并享用了!

]]>
Sun, 18 Jan 2026 20:12:43 CST
<![CDATA[【Life】彷徨于世--2025 年度总结(⚠️负能量警告)]]> https://blog.ddsrem.com/archives/2025年度总结 彷徨于世

DDSRem 2025 年度总结(回忆)

导言

其实dds是一个不太喜欢写年度总结的人。很多年来,我始终认为过去的事情就让它过去,后面的日子总会有所希望的...

而2025年,似乎是与众不同的一年。我经历了许多变故,在我身边也发生了许多事情,关乎着学校里的我,项目上的我,生活中的我,甚至改变了内心世界的我....

我想写点文字,回忆一下过往,也希望能通过文字,保留我脑海中所剩不多的美好...

挽留

dds在确诊双向 重度抑郁 焦虑后开始吃起了精神类药物,也使她的记忆越来越差,再加上生活中一件件事情对她的打击,导致美好总是难以挽留,脑海中也仅剩痛苦之事....

之所以用第三人称视角来叙述这段,是我想尽可能保持冷静,我无法承受代入后的痛苦,但是后文,我会以第一视角真实得表达,这一年的记忆...

一月

如同往常一般

一月在我的印象里似乎没有发生什么,我如同往常一般和汐在学校一起生活,也会在周末跟汐讲讲以前我的故事。我那时也才刚开始打maimai不久,很多时候也是汐宝带着我打mai。虽然那时候的我依旧十分地雷,但是似乎生活总是有规律的进行着。我也还会时常骚扰楛葉宝几句...

image-20260105181157947

image-20260105181311604

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

image-20260105181342432

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

image-20260105181412230

二月-三月

新旧交替

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

image-20260105181708373

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

image-20260105181729095

二月-三月就是如此简单,在游戏中飞快度过,或许欢乐的时光总是让人觉得短暂吧...

回忆中的楛葉宝宝也在慢慢消失...

四月

往常的校园生活

四月让我印象最深刻的就是学校期中考试后的春游了吧...那天汐似乎心情不好。汐不太喜欢集体活动,那天我带着汐走了西溪湿地里面的一条小道,最后绕路半天也没有找到出口,但是两人独自聊天与探索的时光真得挺令人怀念的...那时候的我还挺乐观的,我也会在意汐的情绪,尽可能让她开心...

春游那天还遇到了一辆Xiaomi Su7 Ultra

image-20260105183447590

五月

欢愉至极

五月是漫展的月份,月初我被同学拉去了HD03,当时和同学在一起抓了许多好看的Coser拍了场照。其实当时的我还是一个摄影吧,很多照片也被Coser老师夸好看...真的很开心很满足。

五月中旬去了CP31,当时在现场领了很多无料,也帮自己的亲友拍了场照,当时的CP气氛还是好好,企业馆也有很多可以逛和白嫖的地方。

月末就是杭州国漫,我依旧参加,不过这次我是轻装上阵,只带了一台手机,也体验到了真正没有束缚的逛展。

似乎待着相机逛展总是不太方便,也总是一直想着为Coser拍照,而失去了漫展真正的乐趣,从这以后,我带相机的时间越来越少了...

image-20260105183540432

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

image-20260105183631150

image-20260105183615251

六月

学考与BW

六月是学考冲刺的一个月。我似乎也比往常更加认真许多,和汐的关系也慢慢变得友好起来,我不会再经常雷她,纠缠她。我还会在课余时间和她交流题目。不过我们的maimai生活依旧继续...

六月底也是BW抢票的准备,那时候我重新加入了BHYG的QQ群(以前太久没有水群被踢了)。因为有些反感BHYG的实名政策,也自己在研究B站抢票。

那时候忙碌中带着目标,虽然也会有emo的情绪伴随,但很快就会消散...

image-20260105183755921

慢下来...

上半年的时光似乎平平无奇,也没有什么巨大的变故...

对比其它时间来说,我只是生病的次数变多了许多,有可能是因为自己的情绪,但是明显自己的体质越来越差了...

而从七月开始,一切似乎都要开始...

我会在此刻畏惧,不愿再回忆往事...

一切的一切,终究还是发生了...

七月

先兆

七月在我记忆里似乎只剩下了BW,在漫展上毛豆精带我见了好多群友。那是我第一次和玖殇见面,给他带了一杯星巴克,那时的我似乎怎么都不会想到一杯星巴克的影响有如此之大...我也见到的子安,十一,似乎也摸到了十一的腿子...

本来学校是在暑假补课的,因为7月也代表我进入了高三,但是为了去BW我请了几天假,也不知道为何,与汐的关系似乎也将慢慢疏远,而当时的我,一切都还没有意识到....

我沉浸在暑假和BW的快乐中,没有意识到危机的到来...

八月

第一次彻彻底底的崩溃

一开始的日子我基本在水群中度过...白天我独自在家写着自己的项目,晚上我会去ZianTT的群里面水水,和群友聊着mtf,od,自杀等吧。几乎都是一些不好的东西...

那时我加了两个好友——阳春瑞雪和铛铛,似乎是和铛铛比较聊得来吧,我和她谈了很多,包括以前的故事,后面的规划。

有一天晚上吧,我在自己内心的驱使下买了pr80,我od了6t,铛铛陪着我语音。后面似乎好奇od后玩郊狼是什么感觉,也在迷迷糊糊之中玩了好久的郊狼...

因为od的原因,我学校补课的最后一周都请了假,几乎是天天在od中度过的,那时候的我发病真的很严重,也没有药物可以控制,只能在od中艰难的度过着每一天...

好像是因为请假的原因,上学回来的汐提出了要离开我的想法...那时的我崩溃万分吧,我没有阻拦,也直接答应下来了...那时是我第一次和我家里人诉说我的情况...但是似乎在他们面前我的病情不值一提...和汐的故事似乎到此已经结束了,但是在后面的挽留下,我们依然做着朋友吧,或许这已经是最好的结果了...

毛豆精似乎在8月的某刻,也把我单删了...也许是我做错了什么吧...就此告一段落...

九月

HRT的开始

似乎是因为汐宝的离开,让我对生活失去了希望,我开始逐渐遵循自己的内心,我想真正的作一名女孩子,所以9月5号,星期五,拿到色谱龙和雌二醇的我正式开始了hrt,糖的感觉依旧是甜甜的,那时候的我没有把这个决定告诉其他人,仅仅和汐宝聊过,似乎她也默认同意了...

身边依旧是铛铛陪着我,我也依旧每天同阳春和铛铛发着早安晚安,我也不知道这些问好有没有意义,但是似乎能证明着,我还活着,就足够了...

和铛铛相处的日子我其实挺自卑的,因为感觉在她面前我一文不值,几乎没有可比性,那时的我真的希望自己是一名天赋党,可惜老天也没有眷顾我...(前提铛铛还不是mtf)

月底就是CPSP抢票了,我也顺利抢到了...仅仅如此...

image-20260105184033506

歇歇

真希望时间能到此就暂停,后面的一切都是那么得不真实,却又实实在在得发生了...

我想过放过自己,但是一切已经不可能回到以前...我已经不可能乐观面对生活了...

躯体化将时刻折磨着我...流泪已经是常态...

十月-十一月

突如其来的爱情与悲剧

CPSP,我大概是十一点多进的场馆,一进场我就想着找寻群友,因为感觉同人展一个人逛没什么意思。后面很快就见到了玖殇,也看到了很多群友。脑海里记忆最深的就是当时毛豆精和神里战斗的画面吧(神里完败)。后面群友们也去各逛各的了。我和玖殇在一起,因为他请我和星巴克,也算还我之前的人情吧...当时我在玖殇面前给自己的星巴克加了2mg补,补+星巴克也确实挺好喝的...

因为还要上学的原因,我去CPSP也是特种兵,晚上就坐高铁回了杭州...感觉这次CPSP还挺不错的,最起码挺开心的吧...

image-20260105184140169

10月9号的那天晚上...我给玖殇玩我的郊狼...后面提了一嘴能不能给子安玩...玖殇似乎吃醋了...

那天晚上我和玖殇聊了很多,我也真得很愧疚...似乎我已经喜欢上了玖殇,玖殇也喜欢上了我,我好害怕玖殇因为这件事离开我...那天晚上,我们互相表白,开启了属于我们俩的新篇章...

那些天我和玖殇聊了很多,我自己以往的故事,讲了好多心理憋了好久的话...玖殇能给我很强的安全感,我愿意在他面前展现出我最脆弱的一面,我完全信任与他,甚至想把自己的生命交付与他...他也在不断努力,想将我拯救...

10月12号,我坐着高铁,再次来到上海,去往了世博园,与其说是去看乐子的,还不如说是去见玖殇的...那天我和他吃了下午茶,天色黑下去时,我和他坐在世博园楼顶的椅子上,我倚靠着他...安心...无比得安心...

image-20260105184210867

十月的某一天,因为我和铛铛是同担的原因吧,加上铛铛当时状态不好,所以她把我单删了。但是我真的好崩溃,我不知道为什么会到这种地步,我和玖殇倾诉了很多,也讲起了毛豆精把我单删的事。我不知道为什么身边的人会一个个都把我删掉,我也慢慢开始怀疑自己是否要继续活着...后面在玖殇的安慰与陪伴下,我似乎好了一些,但也仅限于好受一点吧...内心的想法,始终困扰着我...

十月的下旬,玖殇周末会来杭州陪我,我和他第一次逛了西湖,也和他第一次一起看电影——无法歌唱的初音未来。那时候的周末我真的好开心,能和自己喜欢的人在一起,对于我来说就足够了....

image-20260105184238876

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

后面似乎因为我对子安的刺激,他黑头了...后来的事情越来越糟糕...

image-20260105184259079

我曾想和玖殇共同处理好和子安的这件事,只可惜,最后一切都无法控制...我和玖殇之间也产生了一层无形的隔阂吧...

接下来的两周,我和玖殇继续一起度过了周末,一起打maimai,一起吃饭饭,也第一次do love,这段时间里,更多的还是开心,但是内心的不安与悲痛时常会显现出来...

与子安的事,放几张图片,这段故事无法讲述吧...

image-20260105184334032

image-20260105184344805

11月22号,我带着玖殇见了我的家长,但是故事情节似乎没有往好的方向发展,那天晚上我痛苦万分。我想跳河结束我的生命,但是玖殇把我拉住了...他带我回到了他的酒店,后面家里人不断得联系我,我也和他们说好在外面和玖殇住一个晚上...

但是,总是事与愿违,11月23号凌晨,我被家里人报警抓回了家,从那刻起,我似乎对一切都不抱有希望了,我再也不相信家里人是为我好,我也不会再对他们有任何期待...我的生命已经被毁了...我也无法再面对生活...那天凌晨,我哭了好久好久...

image-20260105184412487

image-20260105184422987

后面的几天,我努力想让自己恢复,但是我早已知道,很难再变成以前那个我了...

11月29号,我去了上海,和玖殇一起在环球港出勤,那是我这辈子第一次见到那么多的maimai和中二,还有其它的音游机器。那天的时光是短暂的...

image-20260105184445707

十一月也到了尾声,这两个月在我的印象里似乎十分得漫长,我在这两个月里,病情似乎是越来越严重了,很多时候甚至到了无法控制的地步。我在项目和学习上也开始停摆,几乎没有动力做其它的事情...每天只能浑浑噩噩得过着日子,生命似乎也即将迎来倒计时。这段时间内,躯体化和药物陪着我...呜...煎熬...

十二月

挣扎中继续生存

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年...也就此结束了吧...

image-20260105184610923

故事之外聊聊

其实还有很多细节没有仔细叙述,我也不敢仔细叙述吧。这篇年度总结充斥着负面情绪,但是这也的的确确是我今年的真实写照。

我其实跟阳春瑞雪表白过,但是后面因为很多原因,似乎做“兄弟”是最好的结果...

我无法接受心爱之人的离去。有天晚上和阳春聊起病情,我似乎很悲观,想法基本是过几年或许就自杀死了。我似乎无法给出一个活下去的具体理由,也无法保证自己能活下去。

我其实一次次想念着和汐的过往,但是现实却没有给我回忆和重来一次的机会...

后来的12月,我和铛铛的关系有所缓和,也重新和楛葉有了联系...

生活总是这样,充满了不确定性,而如何稳定得活着,至今我无法理解

感谢有你们陪着我...

  • 铛铛:在我od后愿意陪着我的宝宝
  • Koileo:好久的好朋友
  • 玖殇:永远想着拯救我的老公
  • 阳春瑞雪:还是喜欢着你...
  • 楛葉:想去日本见见宝宝...
  • Ushio_汐:在学校一起陪着我,照顾着我的好宝宝...
  • 墨守姐姐:一个真正知心的大姐姐
  • 神里:让我懂得了一些道理...
  • 赵姐:帮我买的贴片
  • MTF Wiki:https://mtf.wiki
  • Github:https://github.com
  • 药娘的天空:对于下半年的我,在学校的无聊时光基本都是靠这本书度过的吧...

Days

截止2025年12月31日11点59分59秒

  • 玖殇: 84天
  • HRT:117天
  • 阳春瑞雪:138天
  • 汐:459天
  • 楛葉:608天

黄昏

暮色将尽时,我常立于窗畔看流云染血。那些被晚风揉碎的霞光,总让我想起你眼底闪烁的星子,明亮得足以灼伤每个凝望的暗夜。

我早已在感情的泥淖中溺毙成标本。当它说"何必郁郁"时,我分明看见自己的影子在月光下寸寸龟裂。像一具提线木偶反复吞咽着钝痛的铁钉,却还要为每个牵动嘴角的弧度寻找合适的弧度。原来爱到极处,连呼吸都会变成锋利的玻璃碎片。

潮水漫过礁石的时刻,我终于看清自己不过是命运笔下的错别字。那些为你折腰的晨昏,为你吞咽的荆棘,为你将心跳碾作尘埃的昼夜,终究只是荒原上一场无声的雪崩。我数着掌纹里蜿蜒的伤口,恍然惊觉连疼痛都成了奢侈的纪念。

生命于我不过是一盏将熄的烛火,在风中摇曳着最后的倔强。若某日连这微光都湮灭,请不必讶异——那不过是个迟到的句号终于找到了它的位置。就像春樱坠落时从不与枝桠道别,我亦会在某个霜白的黎明,把自己还给永恒的寂静。

此去长夜,愿你的星轨永远明亮。

附图

image-20260105184907233

image-20260105184917267

image-20260105184933395

image-20260105184946148

image-20260105184958794

]]>
Mon, 05 Jan 2026 18:52:44 CST
<![CDATA[【MoviePilot系列】媒体目录精细化配置指南]]> https://blog.ddsrem.com/archives/mediadirconfig 情景一:一级目录【电影,电视剧,动漫】

1.1 儿童节目归于动漫,无需一级目录下自动分类

  1. 插件 - 二级分类策略 - 修改配置文件如下
# 配置电影的分类策略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'  # 未匹配以上分类,则命名为未分类  未分类:
  1. 媒体目录配置如下:

image-20240525161120253

1.2 儿童节目与普通动漫分离,无需一级目录下自动分类

  1. 插件 - 二级分类策略 - 修改配置文件如下
# 配置电影的分类策略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'  # 未匹配以上分类,则命名为未分类  未分类:
  1. 媒体目录配置如下:

image-20240525161046042

1.3 【电影 电视剧 动漫】一级目录下自动分类

此配置下目录情况

├── 电影│   ├── 动画电影│   ├── 华语电影│   └── 外语电影├── 电视剧│   ├── 国产剧│   ├── 纪录片│   ├── 欧美剧│   ├── 日韩剧│   ├── 未分类│   └── 综艺└── 动漫    ├── 儿童    └── 番剧
  1. 插件 - 二级分类策略 - 修改配置文件如下
# 配置电影的分类策略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'  # 未匹配以上分类,则命名为未分类  未分类:
  1. 媒体目录配置如下:

image-20240525162802797

情景二:一级目录【电影,电视剧】

1.1 一级目录下自动分类

此配置下目录情况

├── 电影│   ├── 动画电影│   ├── 华语电影│   └── 外语电影└── 电视剧    ├── 国产剧    ├── 纪录片    ├── 欧美剧    ├── 日韩剧    ├── 未分类    ├── 综艺    ├── 儿童    ├── 日番    └── 国漫
  1. 插件 - 二级分类策略 - 修改配置文件如下
# 配置电影的分类策略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'  # 未匹配以上分类,则命名为未分类  未分类:
  1. 媒体目录配置如下:

image-20240525163425298

1.2 无需一级目录下自动分类

此配置下目录情况

├── 电影└── 电视剧
  1. 插件 - 二级分类策略 - 修改配置文件如下
# 配置电影的分类策略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'  # 未匹配以上分类,则命名为未分类  未分类:
  1. 媒体目录配置如下:

image-20240525163447713

]]>
Sat, 25 May 2024 16:36:46 CST
<![CDATA[【小雅系列】小雅相关周边介绍]]> https://blog.ddsrem.com/archives/alist-xiaoya xiaoya-alist

main.sh

[!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,再选x

PS: 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 | amd64arm64 | arm64v8armhf | 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.shemby_config_editor.shxiaoya_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 (飞牛私有云)

Star History

Star History Chart

小雅周边工具集合

感谢

捐赠

许可证

此项目根据 GNU General Public License v3.0 许可证进行许可,详见LICENSE 文件。

附加条款

  • 请勿将 小雅系列软件 用于商业用途。
  • 请勿将 小雅系列软件 用于任何违反法律法规的行为。
  • 本仓库所有脚本均基于官方脚本制作,使用请自行承担数据损失但不限于此的风险。
  • 本仓库所有脚本仅供学习交流,使用本仓库脚本进行违法操作产生的法律责任由操作者自行承担。

免责声明

使用此项目则意味着你接受以上规定和 GNU General Public License v3.0 许可证。

]]>
Sun, 28 Jan 2024 15:56:02 CST
<![CDATA[【MoviePilot系列】常见问题及其解决办法 & 部分自建功能教程]]> https://blog.ddsrem.com/archives/moviepilot-issue-solution-outorial
  • 免责声明
  • MoviePilot 始终坚持
  • MoviePilot Awesome
  • 部署实例
  • 自建OCR教程
  • MoviePilot 图标地址
  • Playwright 离线安装(通过Docker)
  • 免责声明

    • 请勿在任何国内平台宣传 MoviePilot,MoviePilot 仅用于学习交流使用。
    • 请勿将 MoviePilot 用于商业用途。
    • 请勿将 MoviePilot 制作为视频内容,于境内视频网站(版权利益方)传播。
    • 请勿将 MoviePilot 用于任何违反法律法规的行为。
    • 请勿将本仓库教程在国内任何平台宣传,本仓库作为官方仓库部署教程补充。

    MoviePilot 始终坚持

    • 人性化的设置方法
    • 简洁明了的UI界面
    • 风驰电掣的运行速度

    MoviePilot Awesome

    Star History

    Star History Chart

    Thanks

    部署实例

    docker-cli 实例

    docker 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:latest

    docker-compose 实例

    docker-compose.yml

    version: '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: moviepilot

    UnRaid 配置模板

    Unraid-MoviePilot.xml by 群友支持

    1. 步骤01

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

    1. 步骤02

    复制如下一键命令,粘贴进“终端”并回车执行

    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
    1. 步骤03

    打开Docker页面,下方找到添加容器并点击

    1. 步骤04

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

    1. 步骤05

    依照MoviePilot项目中作者的说明进行修改并填写

    自建OCR教程

    1. 搭建OCR服务

    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:latest

    docker-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'

    2. 测试服务是否正常

    如图使用程序进行测试

    地址为http(s)://ip:port的形式

    3. MoviePilot设置

    启动时添加以下环境变量

    -e OCR_HOST=http(s)://ip:port

    MoviePilot 图标地址

    https://raw.githubusercontent.com/jxxghp/MoviePilot-Frontend/main/public/logo.png

    Playwright 离线安装(通过Docker)

    docker run -d \    --name=playwright-downloader \    -e PUID=1000 \    -e PGID=1000 \    -e UMASK=022 \    -v /your/moviepilot/dir:/downloads \    ddsderek/moviepilot:playwright
    version: '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映射到主机的目录一致

    运行完成后即可删除容器和镜像

    ]]>
    Sun, 03 Sep 2023 14:26:18 CST
    <![CDATA[【Linux笔记】Ubuntu20.04升级22.04后SSH连接不上解决方法]]> https://blog.ddsrem.com/archives/fix-ubuntu2204-ssh 最近我把我的Ubuntu20.04升级到了22.04,升级完成后出现SSH连接不上。

    原因

    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 sshd

    参考教程

    https://blog.csdn.net/huangruifeng/article/details/127637015

    ]]>
    Wed, 05 Apr 2023 17:35:24 CST
    <![CDATA[【NAStool系列】 Autosub 插件使用方法]]> https://blog.ddsrem.com/archives/nastool-autosub-use-way 本教程已过期,不再维护!

    软件安装和模型下载

    脚本安装和手动安装二选一,安装完成后即可进入NAStool界面设置

    使用一键脚本

    1. 进入容器
    docker exec -it --user nt nas-tools /bin/bash
    1. 执行脚本

    以下脚本选择一个适合自己的执行即可

    安装并下载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 cn

    手动安装

    1. 进入容器
    docker exec -it --user nt nas-tools /bin/bash

    注意,后面的所有命令都是在容器内执行的。

    1. 编译安装
    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 path
    1. 下载模型
    bash ./models/download-ggml-model.sh base.en # base.en 可选,详见下表ls models/ggml* # 查看模型名称,复制输出内容,后面要用到。我的输出是这样的models/ggml-base.en.bin
    ModelDiskMemSHA
    tiny75 MB~390 MBbd577a113a864445d4c299885e0cb97d4ba92b5f
    tiny.en75 MB~390 MBc78c86eb1a8faa21b369bcd33207cc90d64ae9df
    base142 MB~500 MB465707469ff3a37a2b9b8d8f89f2f99de7299dac
    base.en142 MB~500 MB137c40403d78fd54d454da0f9bd998f78703390c
    small466 MB~1.0 GB55356645c2b361a969dfd0ef2c5a50d530afd8d5
    small.en466 MB~1.0 GBdb8a495a91d927739e50b3fc1cc4c6b8f6c2d022
    medium1.5 GB~2.6 GBfd9727b6e1217c2f614f9b698455c4ffd82463b4
    medium.en1.5 GB~2.6 GB8c30f0e44ce9560643ebd10bbe50cd20eafd3723
    large-v12.9 GB~4.7 GBb1caaf735c4cc1429223d5a74f0f4d0b9b59a299
    large2.9 GB~4.7 GB0f4c8e34f21cf1a914c59d8b3ce882345ad349d6

    模型详解请看官方介绍:https://github.com/ggerganov/whisper.cpp/tree/master/models

    NAStool设置

    image-20230324225720140

    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

    文件大小自己设置。

    媒体路径自己设置。

    立刻运行一次勾上,用于第一次测试。

    剩下的就按照自己需求来吧。

    ]]>
    Fri, 24 Mar 2023 23:07:19 CST
    <![CDATA[【Docker项目】一个好用的笔记软件 —— Joplin]]> https://blog.ddsrem.com/archives/joplin Joplin 简介

    Joplin是一个免费的开源笔记记录和待办事项应用程序,它可以处理组织到笔记本中的大量笔记。这些笔记是可搜索的,可以直接从应用程序或您自己的文本编辑器中复制、标记和修改。笔记采用Markdown 格式

    • 全平台 客户端支持Windows MacOS IOS Android Linux
    • 易分享 内置分享模块,可以方便的把笔记分享给别人
    • 多端同步 通过Docker部署Joplin Server、Nextcloud、Dropbox、OneDrive等方式存储笔记,可以实现笔记多端同步
    • 开源 开源项目,安全性肯定不用担心了

    Docker 部署 Joplin Server

    地址

    Github:https://github.com/laurent22/joplin

    DockerHub:https://hub.docker.com/r/joplin/server

    安装Docker

    wget -qO- get.docker.com | bash
    systemctl 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.yaml
    version: '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使用非常简单了,所以客户端的安装和设置方法就不演示了

    展示几张Joplin客户端的界面

    Windows

    image-20221221173611542

    iPad

    IMG_2436

    iPhone

    IMG_1537

    ]]>
    Wed, 21 Dec 2022 17:45:49 CST
    <![CDATA[【Linux系统折腾】SnapRAID:一个目录级别的存储方案]]> https://blog.ddsrem.com/archives/snapraid 起因

    最近我的蜗牛星际测试机在测试一些项目,并且存储了许多重要的测试数据,所以我就准备组一个Raid,保证我的数据安全。但是我又不想动我现有的存储方案,最终就找到了SnapRAID这个解决方案。

    SnapRAID简介

    SnapRAID介绍:是磁盘整列的备份程序,可存储磁盘的奇偶校验信息,在两个磁盘损坏时也能恢复数据。

    SnapRAID定位:家庭媒体中心,特别适合于文件较大较多且较少改变的系统。

    SnapRAID特点:

    1. 所有数据都有完整性校验,避免数据悄然损坏;
    2. 如果磁盘损坏的过多影响恢复,那么你损坏的也不是全部数据,未损害硬盘的数据不受影响,可以单独读取;
    3. 如果你不小心删掉了一些数据,你仍然可以恢复它们;
    4. 对于已有数据的磁盘,你无需格式化硬盘便可以加入整列,磁盘中的已有数据不受影响;
    5. 整列的磁盘可以容量不同;
    6. 随时添加磁盘;
    7. 每个磁盘数据相互独立,每个磁盘读写也独立,也就是说可以单盘读写,其余磁盘休眠,节能环保延长磁盘寿命;
    8. 基于上一点特性,你不会因为SnapRAID而提高整个整列的读写性能;
    9. 它不会锁定数据,可以随时停止使用SnapRAID而不需要移除数据或者格式化硬盘,各个磁盘中的数据不受影响,可以单独读写。

    各种RAID特性比较

    除标准RAID磁盘部署解决方案外,还有众多解决方案。根据奇偶校验的实时性可以把各种冗余分为两大类:

    1. 一类是实时(realtime)奇偶校验的冗余方案,这类方案的冗余不需要人为干预,实时更新,像RAID;
    2. 一类是快照(snapshot)奇偶校验的冗余方案,这类方案的冗余是在接收到人为指令后更新,像Backup。

    主要解决方案有:

    1. unRAID-商业和开源GPL2的解决方案,修改版可实现Linux下ReiserFS文件系统实时冗余,不支持任何完整性校验。
    2. FlexRAID-Windows下商业和专有C ++ / Java应用,可有限支持linux。它同时支持快照冗余和实施冗余,支持完整性校验。
    3. disParity-Windows下专有的. NET应用,支持快照冗余和完整性校验。
    4. ZFS-开源文件系统(但与GPL不兼容),支持实时冗余和完整性校验。
    5. Btrfs-开源GPL2授权的文件系统,支持实时冗余,Linux内核3.9以上开始支持RAID 5 / 6冗余和完整性校验。
    6. Storage Spaces-最后是来自微软的方案,改方案已经集成到Win8了,支持专有的实时冗余,不支持完整性校验,但是在ReFS文件系统开始提供一些有限的支持。

    这些方案各有优缺点,综合各特性针对于家庭媒体中心的解决方案SnapRAID应运而生:

    SnapRAIDunRAIDFlexRAIDdisParityZFSBtrfsStorage Spaces
    冗余模式快照实时快照和实时快照实时实时实时
    完整性校验 默认校验方式支持SpookyHash 128 bit不支持支持Adler3232 bit支持MD5 128 bit支持fletcher4 256 bit支持CRC32C 32 bit不支持
    如果发生silent errors可否通过校验盘计算修复支持不支持不支持不支持支持支持不支持
    允许磁盘故障数1 2 3 4 5 611 2 3 4 5 6+11 2 31 21
    如果磁盘损坏块数超过冗余数可否恢复未损坏磁盘数据支持支持支持支持不支持不支持不支持
    读取单个文件时有几块硬盘运行1111全部全部全部
    可否添加已有数据的磁盘而不影响磁盘中的数据支持不支持支持支持不支持不支持不支持
    支持的操作系统Linux | Windows | Mac OS X | OpenIndiana | Solaris | BSDLinuxWindows | LinuxWindowsMac OS X | OpenIndiana | Solaris | BSDLinuxWindows
    首次正式支持RAID5冗余及更高冗余的时间2011200520082009200620132012
    授权和价格Open Source GPL3 FreeOpen Source GPL2 69/119/119Proprietary 40/100/100Proprietary FreeOpen Source CDDL FreeOpen Source GPL2 FreeProprietary Windows 8
    交互方式命令行或 Elucidate图形图形命令行命令行命令行图形

    snapraid安装

    安装编译软件

    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 是工作在文件系统之上、基于目录的冗余存储方案,因此可以很方便选择哪些目录和文件需要做冗余,哪些不需要。在配置文件中 includeexclude 的规则如下:

    • 可以使用 * ? [1-3] 这样的简单通配符;
    • / 开头的路径匹配的是数据盘的根目录,而不是系统的根目录;
    • / 结尾的路径只会匹配目录;
    • 不以 / 结尾的路径只会匹配文件;
    • 如果最后一条规则是包含include),则所有未匹配的路径都会被排除
    • 如果最后一条规则是排除exclude),则所有未匹配的路径都会被包含

    常用的 SnapRAID 命令

    • snapraid sync:根据数据盘生成校验盘;
    • snapraid diff:查看有哪些数据需要 sync;
    • snapraid status:查看磁盘阵列的状态;
    • snapraid scrub:进行数据擦洗,提早发现磁盘阵列中的错误。

    SnapRAID 首次同步完成之后,可以将 snapraid syncsnapraid 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

    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>&1
    nano /etc/systemd/system/snapraid.service

    snapraid.service

    [Unit]Description=Logs system statistics to the systemd journalWants=snapraid.timer[Service]Type=oneshotExecStart=/etc/snapraid/snapraid.sh[Install]WantedBy=multi-user.target
    nano /etc/systemd/system/snapraid.timer

    snapraid.timer

    [Unit]Description=Logs some system statistics to the systemd journalRequires=snapraid.service[Timer]Unit=snapraid.serviceOnCalendar=*-*-* 00:00:00 #每天0点自动运行[Install]WantedBy=timers.target
    systemctl 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

    https://zackreed.me/setting-up-snapraid-on-ubuntu/

    http://www.snapraid.it/manual

    ]]>
    Sat, 23 Jul 2022 21:17:51 CST
    <![CDATA[【Docker项目】简单明了的反向代理工具-nginxWebUI]]> https://blog.ddsrem.com/archives/nginxwebui 1. 简介

    1. 地址

    官网:https://www.nginxwebui.cn/

    Github:https://github.com/cym1102/nginxWebUI

    以下为官网介绍

    2. 操作流程

    img

    3. 具体页面

    打开 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.

    2.安装

    安装

    创建文件

    mkdir -p /root/data/docker_data/nginxwebuicd /root/data/docker_data/nginxwebuinano docker-compose.yml

    docker-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界面直接更新

    image-20220624194353789

    3. 配置

    自己配置好用户密码,进入Web管理界面

    获取证书

    1. VPS

    选择证书管理-添加证书 获取方式选择DNS验证获取 填入自己域名 点击提交

    屏幕截图 2022-06-24 200033

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

    image-20220624200339540

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

    image-20220624201005690

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

    image-20220624200502319

    1. 家庭服务器或者国内服务器

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

    image-20220624200635648

    配置反向代理

    1. VPS或者云服务器

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

    屏幕截图 2022-06-24 194651

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

    image-20220624195549924

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

    屏幕截图 2022-06-24 195654

    这样就配置完成了

    剩下功能可以自己研究,基本都很简单

    1. 家庭服务器

    家庭服务器因为没有443和80端口,所以设置有点改动

    反向代理设置与前面差不多

    将端口改为你的端口,比如说我用的是998

    关闭http跳转https

    image-20220624201836350

    设置完成后一定要进入启用配置-点击替换文件-点击重新装载

    这样做应该是就可以正常访问了,但是不会跳转https,所以我们还要再设置一下

    进入参数模板 添加参数模板 按照图片设置

    #名称error_page 497 301 =307#值https://$host:998$request_uri #998修改为自己的端口

    选择提交

    image-20220624202108509

    设置完成后一定要进入启用配置-点击替换文件-点击重新装载

    之后可以去测试一下,应该可以自动跳转https了

    并且这样设置完成后每个反向代理都会多出这一条,表示强制https

    error_page 497 301 =307 https://$host:998$request_uri

    屏幕截图 2022-06-24 203128

    屏幕截图 2022-06-24 203143

    4. 注意事项

    目前只有一个

    每次设置完成必须要进入启用配置-点击替换文件-点击重新装载

    不然设置是不会生效的,这个一定要注意!!!

    如果设置有误,在重新装载时会告诉你,你只需要按照提示修改就行了

    屏幕截图 2022-06-24 195654

    ]]>
    Fri, 24 Jun 2022 20:16:17 CST
    <![CDATA[【Docker项目】NextCloud安装和使用合集]]> https://blog.ddsrem.com/archives/nextcloud 1. 介绍

    官方列举的特点

    • Nextcloud 让您的数据触手可及,尽在您的掌控之中。将您的文档、日历、联系人和照片存储在家里的服务器、我们的供应商之一或您信任的数据中心。
    • Nextcloud 仪表板是您一天的起点,为您提供即将到来的约会、紧急电子邮件、聊天消息、收到的票证、最新推文等等的概览!用户可以设置他们的状态,以便其他人知道他们在做什么。
    • 简单的 Web 界面允许您与服务器上的其他用户共享文件,创建和发送受密码保护的公共链接,让其他人将文件上传到您的云,并在另一个云服务器上的用户共享时在您的手机和桌面上获得通知文件直接与你。您也可以从桌面或移动客户端执行所有这些操作。
    • 运行您自己的服务器需要工作,但 Nextcloud 可以尽可能轻松地为您和您的家人运行可靠、安全的服务。我们在设置屏幕中为您提供提示和建议,警告您更新并让您在 Web 界面中单击几下即可运行更新,提供 Web 安装程序和超级易于管理的 Snap 和 VM 映像等等。
    • 高效、易于使用的界面是 Nextcloud 在竞争中脱颖而出的主要因素之一。设计不仅仅是漂亮。目标是让用户以最少的努力完成工作,使如何完成任务变得一目了然,并减少了完成任务所需的步骤数。良好的设计可以在整个用户界面中看到,每个版本都会向前迈进。
    • 适用于 Android、iOS 和桌面系统的免费 Nextcloud 客户端允许您通过加密连接以完全安全的方式同步和共享文件。移动客户端具有自动上传您拍摄的照片和视频的功能,并且可以同步选择的文件和文件夹。客户端可以处理多个帐户,显示您服务器上发生的所有活动,并通知您新事件,例如新共享的可用性。
    • 等等…

    总结一下就是美观,方便,安全,多平台,扩展性强

    常用地址

    官网:https://nextcloud.com/

    Github:https://github.com/nextcloud

    官方DockerHub:https://hub.docker.com/_/nextcloud/

    本次使用的镜像仓库:https://hub.docker.com/r/crazymax/nextcloud

    image-20220618190252201

    2. 安装

    1. 镜像简介

    本次使用的NextCloud并不是官方仓库镜像

    使用的是由crazy-max大佬制作的NextCloud镜像

    2. 安装

    创建文件夹

    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=nextcloud

    msmtpd.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.com

    nextcloud.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

    3. 简单配置和解决问题

    1. 初始化

    设置用户名密码

    image-20220618191716988

    安装推荐应用

    image-20220618191824244

    2. 解决问题

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

    image-20220618192005115

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

    cd /root/data/docker_data/nextcloud/nextcloud/confignano config.php

    在倒数第二行添加这条

    'default_phone_region' => 'CN',

    image-20220618192416834

    再次刷新,发现解决了

    image-20220618192501080

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

    进入设置-管理-基本设置

    image-20220618192644700

    添加自己的SMPT服务就可以解决了

    解决**通过 HTTP 不安全访问站点。强烈建议你将服务器设置为要求 HTTPS,参考步骤见 安全小贴士 ↗**问题

    自己配置SSL

    配置完成后会遇见这个问题

    image-20220618194219227

    cd /root/data/docker_data/nextcloud/nextcloud/confignano config.php

    加入

    1 => 'nextcloud.rcbczd.ga',

    nextcloud.rcbczd.ga改为你的域名

    image-20220618194715760

    更改'overwrite.cli.url' => 'xxxxxxxx',

      'overwrite.cli.url' => 'https://xxxx.xxxx.xxxx',    'overwriteprotocol' => 'https',

    https://xxxx.xxxx.xxxx为你的域名

    image-20220619144842278

    全部解决

    image-20220619145102639

    3. 配置

    解决完成问题后我们开始配置

    基本设置 选择Cron

    image-20220619144243347

    配置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重启

    4. 安装OnlyOffice(自选,非必要)

    安装OnlyOffice连接器

    选择应用

    image-20220618195608554

    搜索OnlyOffice

    image-20220618195716591

    下载并启用

    image-20220618195753169

    安装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

    选择启用

    image-20220618200127321

    再次启用

    image-20220618200154034

    完成

    image-20220618200224005

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

    image-20220618200314875

    可以正常使用了

    ]]>
    Sat, 18 Jun 2022 20:10:55 CST
    <![CDATA[【巨大的Docker整合】影视下载全自动化的部署]]> https://blog.ddsrem.com/archives/film 19/08/2022 22:23

    1. 前言

    1. 初衷

    最近在折腾自建电影和电视剧库,但是发现搜集资源并不简单

    很多资源都没有中文字幕,非常难受,得自己去寻找

    整理电影和电视剧也不简单

    所以就有了这篇文章,来解决以上痛点,实现资源下载整理全自动

    注:所有涉及版权问题的地方都不会讲解,请知悉

    2. 搭建方式

    • 为了这次搭建的方便,所以选用Docker来部署

    • 为了安全性和隐私,本次采用的都是开源项目

    2. 项目介绍

    1. Docker Docker-compose

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

    2. Radarr

    简介

    Radarr 是 Usenet 和 BitTorrent 用户的电影收藏管理器。它可以监控新电影的多个 RSS 提要,并将与客户端和索引器交互以抓取、排序和重命名它们。它还可以配置为在质量更好的格式可用时自动升级库中现有文件的质量。请注意,仅支持给定电影的一种类型。如果您想要给定电影的 4k 版本和 1080p 版本,您将需要多个实例。

    地址

    官网:https://radarr.video/

    Github:https://github.com/Radarr/Radarr

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/radarr

    特点

    • 添加包含大量信息的新电影,例如预告片、收视率等。
    • 可以观看更好质量的电影并进行自动升级。例如从 DVD 到蓝光
    • 如果一个版本失败,自动失败的下载处理将尝试另一个版本
    • 手动搜索,以便您可以选择任何版本或查看未自动下载版本的原因
    • 与 SABnzbd 和 NZBGet 完全集成
    • 自动搜索版本以及 RSS 同步
    • 自动导入下载的电影
    • 识别特别版、导演剪辑版等。
    • 使用硬编码的 sub 识别版本
    • 识别具有 AKA 电影名称的版本
    • 支持并集成 SABnzbd、NZBGet、QBittorrent、Deluge、rTorrent、Transmission、uTorrent 和其他下载客户端
    • 与 Kodi 和 Plex 完全集成(通知、库更新)
    • 导入元数据,例如预告片或字幕
    • 添加元数据,例如海报和信息,供 Kodi 和其他人使用
    • 配置文件的高级自定义,这样 Radarr 将始终下载您想要的副本
    • 漂亮的用户界面

    image-20220724123036196

    3. Sonarr

    简介

    Sonarr 是供 Usenet 和 BitTorrent 用户使用的 PVR。它可以监控多个 RSS 提要以获取您最喜欢的节目的新剧集,并将抓取、排序和重命名它们。它还可以配置为在质量更好的格式可用时自动升级已下载文件的质量。

    地址

    官网:https://sonarr.tv/

    Github:https://github.com/Sonarr/Sonarr

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/sonarr

    特点

    • 支持主流平台:Windows、Linux、macOS、树莓派等。
    • 自动检测新剧集
    • 可以扫描您现有的图书馆并下载任何缺失的剧集
    • 可以观看您已经拥有的剧集的更好质量并进行自动升级。例如。从 DVD 到蓝光
    • 如果一个版本失败,自动失败的下载处理将尝试另一个版本
    • 手动搜索,以便您可以选择任何版本或查看未自动下载版本的原因
    • 完全可配置的剧集重命名
    • 与 SABnzbd 和 NZBGet 完全集成
    • 与 Kodi、Plex 完全集成(通知、库更新、元数据)
    • 完全支持特价和多集发行
    • 和漂亮的用户界面

    image-20220724123054475

    4. BGMI

    简介

    BGmi 是一个用来追番的命令行程序。

    地址

    Github:https://github.com/BGmi/BGmi

    本次使用的Docker镜像:https://hub.docker.com/r/ddsderek/bgmi-docker-all-in-one

    5. Jackett

    简介

    Jackett 充当代理服务器:它将来自应用程序(SonarrRadarrSickRageCouchPotatoMylar3LidarrDuckieTVqBittorrentNefarious等)的查询转换为特定于跟踪器站点的 http 查询,解析 html 或 json 响应,以及然后将结果发送回请求软件。这允许获取最近的上传(如 RSS)和执行搜索。Jackett 是维护索引器抓取和翻译逻辑的单一存储库 - 消除了其他应用程序的负担。

    地址

    Github:https://github.com/Jackett/Jackett

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/jackett

    6. Prowlarr

    简介

    prowlarr是建立在流行的 arr .net/reactjs 基础堆栈上的索引器管理器/代理,可与您的各种 PVR 应用程序集成。Prowlarr 支持对 Torrent Trackers 和 Usenet Indexers 管理。它与 Lidarr、Mylar3、Radarr、Readarr 和 Sonar 无缝集成,为您的索引器提供完整的管理,无需为每个应用程序设置索引器

    特点

    • Usenet 原生支持 24 个索引器,包括 Headphones VIP
    • Usenet 通过“Generic Newznab”支持任何与 Newznab 兼容的索引器
    • 对 500 多个跟踪器的 Torrent 支持,并且一直在添加更多跟踪器
    • 通过“通用 Torznab”支持任何 Torznab 兼容跟踪器的 Torrent 支持
    • 通过 Cardigann 支持自定义 YML 定义,包括 JSON 和 XML 解析
    • 索引器同步到 Lidarr/Mylar3/Radarr/Readarr/Sonarr,因此无需手动配置其他应用程序
    • 索引器历史和统计
    • 在类别级别手动搜索跟踪器和索引器
    • 基于参数的手动搜索
    • 支持从 Prowlarr 一次将多个版本直接推送到您的下载客户端
    • 索引器运行状况和状态通知
    • 每个索引器代理支持(SOCKS4、SOCKS5、HTTP、Flaresolverr)

    地址

    Github:https://github.com/Prowlarr/Prowlarr

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/prowlarr

    image-20220724123141131

    7. Overseerr

    简介

    Overseerr是一个请求管理和媒体发现工具,专为与您现有的Plex生态系统协同工作而构建。

    特点

    • 全 Plex 集成。使用 Plex 验证和管理用户访问权限!
    • 与您现有的服务轻松集成。目前,Overseerr 支持 Sonarr 和 Radarr。更多即将到来!
    • Plex 库扫描,以跟踪已经可用的标题。
    • 可定制的请求系统,允许用户在友好、易于使用的界面中请求单个季节或电影。
    • 非常简单的请求管理 UI。不要浏览应用程序来简单地批准最近的请求!
    • 细粒度的权限系统。
    • 支持各种通知代理。
    • 适合移动设备的设计,当您需要在旅途中批准请求时!

    地址

    Github:https://github.com/sct/overseerr

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/overseerr

    image-20220724123208140

    jellyseerr与Overseerr区别

    jellyseerr与Overseerr类似,但是jellyseerr是专门为jellyfin服务的,而Overseerr是为plex服务的,本次教程用的是Overseerr,大家可以自己选择

    8. Nas-Tools

    介绍

    NAS媒体库资源归集整理工具

    1、资源检索和订阅

    • 站点RSS聚合,想看的加入订阅,资源自动实时追新。
    • 通过微信、Telegram或者WEB界面聚合资源搜索下载,最新热门资源一键搜索或者订阅。
    • 与豆瓣联动,在豆瓣中标记想看后台自动检索下载,未出全的自动加入订阅。

    2、媒体库整理

    • 监控下载软件,下载完成后自动识别真实名称,硬链接到媒体库并重命名。
    • 对目录进行监控,文件变化时自动识别媒体信息硬链接到媒体库并重命名。
    • 解决保种与媒体库整理冲突的问题,专为中文环境优化,支持国产剧集和动漫,重命名准确率高,改名后Emby/Jellyfin/Plex 100%搜刮。

    3、站点养护

    • 全面的站点数据统计,实时监测你的站点流量情况。
    • 全自动化托管养站,支持远程下载器。
    • 站点每日自动登录保号。

    4、消息服务

    • 支持ServerChan、微信、Telegram、Bark等图文消息通知
    • 支持通过微信、Telegram远程控制订阅和下载。
    • Emby/Jellyfin/Plex播放状态通知。

    地址

    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

    9. Aria2

    简介

    Aria2 是一个多平台轻量级,支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具

    地址

    官网:https://aria2.github.io/

    本次使用的Docker镜像:https://hub.docker.com/r/p3terx/aria2-pro

    10. Ariang

    简介

    AriaNg 是一个让 aria2 更容易使用的现代 Web 前端. AriaNg 使用纯 html & javascript 开发, 所以其不需要任何编译器或运行环境. 您只要将 AriaNg 放在您的 Web 服务器里并在浏览器中打开即可使用. AriaNg 使用响应式布局, 支持各种计算机或移动设备。

    特点

    1. 纯 Html & Javascript 实现, 不依赖任何运行时
    2. 响应式布局设计, 兼容计算机与移动设备
    3. 友好的界面交互
      • 任务排序 (按文件名, 文件大小, 进度, 剩余时间, 下载速度等.), 文件排序, Bittorrent 连接节点排序
      • 任务搜索
      • 任务重试
      • 拖拽调整任务顺序
      • 更详细的任务信息 (健康度, 连接节点客户端信息等.)
      • 根据特定文件类型或文件扩展名筛选文件 (视频, 音频, 图片, 文档, 应用程序, 存档文件等.)
      • 多目录任务支持树形结构显示
      • aria2 及单个任务的下载/上传速度图表
      • 完整支持 aria2 设置选项
    4. 深色主题
    5. 支持网页地址命令行 API
    6. 下载完成消息通知
    7. 多语言支持
    8. 支持配置多个 aria2 RPC
    9. 支持导出和导入设置
    10. 节省带宽, 仅请求增量数据

    地址

    官网:http://ariang.mayswind.net/

    Github:https://github.com/mayswind/AriaNg

    本次使用的Docker镜像:https://hub.docker.com/r/p3terx/ariang

    11. qBittorrent

    简介

    qBittorrent 是一款开源免费的种子和磁力链接下载工具

    地址

    官网:https://www.qbittorrent.org/

    本次使用的Docker镜像:https://hub.docker.com/r/superng6/qbittorrentee

    12. Transmission

    简介

    • Transmission是一种BitTorrent客户端

    • 比其他客户端使用更少的资源

    • 非常适合服务器、嵌入式系统和无头使用的守护程序

    • 本地对等发现

    • 完全加密、DHT、µTP、PEX和Magnet Link支持

    地址

    官网:https://transmissionbt.com/

    本次使用的Docker镜像:https://hub.docker.com/r/linuxserver/transmission

    13. ChineseSubFinder

    简介

    自动化搞定限定条件中文 字幕下载

    地址

    Github:https://github.com/allanpk716/ChineseSubFinder

    本次使用的Docker镜像:https://hub.docker.com/r/allanpk716/chinesesubfinder

    image-20220724123121700

    14. Watchtower

    简介

    Watchtower 会监视运行容器并监视这些容器最初启动时的镜像是否需要更新。当 watchtower 检测到一个镜像已经有变动时,它会使用新镜像,使用相同的参数自动重新启动相应的容器。同时 watchtower 本身也被打包为 Docker 镜像,用一行命令即可使用 watchtower 监控所有容器,然后所有容器都会自动更新,当然也包括 watch­tower 本身。

    地址

    Github:https://github.com/containrrr/watchtower

    本次使用的Docker镜像:https://hub.docker.com/r/containrrr/watchtower

    15. Plex

    简介

    影音播放器

    地址

    本次使用的Docker镜像:https://hub.docker.com/r/plexinc/pms-docker

    image-20220724123236746

    Jellyfin与Plex

    jellyfin和plex都是影音播放器,可以自己选择,plex收费,jellyfin开源免费,但是plex资源占用更小,刮削能力更强

    16. Kodi

    简介

    Kodi(以前称为XBMC)是一个免费强大的开放源代码媒体播放器软件应用程序。 Kodi可用于多种操作系统和硬件平台。

    • Kodi 是终极娱乐中心软件。它几乎可以播放您能找到的所有类型的媒体,而且在播放时看起来很棒!
    • Kodi 专为电影而生!Kodi 支持所有主要视频格式,包括可流式在线媒体,可以轻松导入、浏览和播放您的电影收藏。
    • Kodi 的电视节目库支持带有海报或横幅、观看标签、节目描述和演员的剧集和季节视图。非常适合跟踪您的进度。
    • Kodi 可以播放您的所有音乐,包括 mp3、flac、wav 和 wma 格式。它具有提示表、标签阅读支持和智能播放列表,可最终控制您的音乐收藏。
    • Kodi 允许您使用各种皮肤完全改变界面的整体外观。我们毫不怀疑您会找到适合您口味(或客厅)的东西。
    • Kodi 的真正力量来自大量社区创建的附加组件。有流行的网络服务、应用程序和脚本的附加组件

    地址

    官网:https://kodi.tv/

    下载地址:https://kodi.tv/download/

    支持平台

    Windows Linux Android Raspberry Pi macOS iOS tvOS

    各种设备上的 Kodi

    17. RSSHub

    简介

    RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容

    地址

    Docs:https://docs.rsshub.app/

    Github:https://github.com/DIYgod/RSSHub

    DockerHub:https://hub.docker.com/r/diygod/rsshub

    3. 专有名词解释

    在部署前我首先要来讲一些专有名词的意思,通过讲解这些名词的意思,有助于我们更好的理解部署中设置的作用,和为什么要这样设置。

    1. PUID/GUID

    以下来自于Linuxserver的解释

    当在主机操作系统和容器之间使用卷(-v标志)权限问题时,我们通过允许您指定用户PUID和组来避免这个问题PGID

    确保主机上的任何卷目录都归您指定的同一用户所有,并且任何权限问题都会像魔术一样消失。

    在这种情况下PUID=1000PGID=1000找到你的用途id user如下:

      $ id username    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)

    2. 权限掩码Umask

    在计算中,umask是一个决定掩码设置的命令,该掩码控制如何为新创建的文件设置文件权限。它还可能影响文件权限的显式更改方式。umask也是一个设置掩码的函数,也可以指掩码本身,正式称为文件模式创建掩码**。掩码是一组,每个位都限制了如何为新创建的文件设置相应的权限。可以通过调用umask命令来更改掩码中的位。

    具体请看Wiki的介绍

    3. 硬链接hardlinking

    从英文翻译而来-在计算中,硬链接是将名称与文件系统上的文件相关联的目录条目。所有基于目录的文件系统都必须至少具有一个硬链接,为每个文件指定原始名称。术语“硬链接”通常仅在允许同一文件使用多个硬链接的文件系统中使用。

    img

    没有看懂也没关系,总之就是帮你省地方,省磁盘IO,一个文件可以出现在多个地方,但只占用一次空间,如果没有启用硬链接,就会执行 复制粘贴/剪切 操作

    4. 开始部署

    1. 安装Docker Docker-compose

    更新、安装软件

    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

    2. 部署

    创建目录

    mkdir -p /root/data/docker_data/filmcd /root/data/docker_data/filmnano docker-compose

    Dokcer-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

    注释补充

    • 电影(movies)目录,电视剧(tv)目录,动漫(cartoon)目录和downloads建议放在同一级目录下(如果不放在同一级目录下,也没事,但是一定要注意配置文件的目录,不能写错)
    vedio└── downloads└── cartoon├── movies├── tv└── movies├── tv├── cartoon└── unkown
    • 所有端口都不建议修改,除非有占用
    • 配置文件目录建议统一存放,影视文件目录按照你的需求来
    • 所有目录一定要能对应上,比如说设置了/vedio/movies为电影目录,那么剩下所有电影目录都得填写这个
    • jackett目前以弃用,换为prowlarr
    • 如果网络不佳,下载很慢,可以启用clash,设置请自行完成
    • PUID和PGID建议使用1000,UMASK建议设置为022

    启动

    docker-compose up -d

    3. 参数具体解释

    1. Jackett

    ParameterFunction
    -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 /configJackett 应该存储其配置文件的位置。
    -v /downloadstorrent blackhole的路径。

    2. Prowlarr

    ParameterFunction
    -p 9696Prowlarr Web 界面的端口
    -e PUID=1000对于 UserID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e TZ=Asia/Shanghai指定时区以使用,这是 Prowlarr 所必需的
    -v /config数据库和 Prowlarr 配置

    3. Radarr

    ParameterFunction
    -p 7878Radarr Web 界面的端口
    -e PUID=1000对于 UserID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e TZ=Asia/Shanghai指定时区以使用,这是 Radarr 所必需的
    -v /config数据库和雷达配置
    -v /movies电影库在磁盘上的位置
    -v /downloads下载管理器输出目录的位置

    4. Sonarr

    ParameterFunction
    -p 8989Sonarr Web 界面的端口
    -e PUID=1000对于 UserID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e TZ=Asia/Shanghai指定时区以使用,这是 Sonarr 所必需的
    -v /config数据库和声纳配置
    -v /tv电视库在磁盘上的位置
    -v /downloads下载管理器输出目录的位置

    5. BGMI

    ParameterFunction
    -p 80:80BGMI Web端口
    -p 9091:9091transmission web端口 当下载器设置为-e DOWNLOADER=transmission时,需要映射9091端口,68006880端口无需映射
    -p 6800:6800aria2 端口 当下载器设置为-e DOWNLOADER=aria2时,需要映射68006880端口,9091端口无需映射
    -p 6880:6880ariang Web端口
    -p 51413:51413/tcpTorrent 端口 TCP
    -p 51413:51413/udpTorrent 端口 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_projectBGMI 默认数据源(bangumi_moe、mikan_project 或 dmhy)
    -e BGMI_ADMIN_TOKEN=password设置 BGMI Web 界面身份验证令牌
    -v /bgmi:/bgmiBGMI 配置文件目录 /
    -v /home/video2/NEW:/media媒体文件目录,包含下载文件和硬链接后的文件

    6. Overseerr

    ParameterFunction
    -p 5055Web界面的端口。
    -e PUID=1000对于 UserID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e TZ=Asia/Shanghai指定时区以使用
    -v /config包含所有相关的配置文件。

    7. Nas-Tools

    ParameterFunction
    -p 3113:3000nas-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.gitGithub加速,网络很差可以选择
    -v /config包含所有相关的配置文件。
    -v /media媒体文件夹

    8. Plex

    ParameterFunction
    -p 32400:32400/tcpPlex 媒体服务器 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 /configplex配置文件目录
    -v /transcode转码文件临时存放目录
    --device /dev/dri:/dev/dri硬件加速

    9. qbittorrentee

    ParameterFunction
    -p 6881:6881BT下载监听端口
    -p 6881:6881/udpBT下载DHT监听端口
    -p 8080Web 端口
    -e PUID=1000对于 UserID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e TZ=Asia/Shanghai时区
    -v /configqb配置文件目录

    10. Transmission

    ParameterFunction
    -p 9091网页界面
    -p 51413种子端口 TCP
    -p 51413/udpTorrent 端口 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 文件的文件夹。

    11. Aria2

    ParameterFunction
    -e PUID=1000对于 User ID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e UMASK_SET=022权限掩码设置
    -e RPC_SECRET=passwordRPC 密钥设置,即 WebUI 连接时需要填写的密码,只建议使用字母和数字。
    -e RPC_PORT=6800RPC 端口设置。
    -e LISTEN_PORT=6888BT 监听端口(TCP)、DHT 监听端口(UDP)设置,即 Aria2 配置中
    -e DISK_CACHE=64M磁盘缓存设置,默认值64M。建议在有足够的内存空闲情况下设置为适当增加大小,以减少磁盘 I/O ,提升读写性能,延长硬盘寿命。比如128M256M等。此项值仅决定上限,实际对内存的占用取决于网速(带宽)和设备性能等其它因素。当下载文件超过这个大小且网速足够快时最多会占用所设置大小的内存,所以不宜过大,设置不当轻则进程终结、重则宕机。
    -e IPV6_MODE=falseIPv6 模式。
    -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 网络。

    12. ChineseSubFinder

    ParameterFunction
    -e PUID=1000对于 User ID - 请参阅上面的说明
    -e PGID=1000对于 GroupID - 请参阅上面的说明
    -e PERMS=true是否重设/media权限
    -e TZ=Asia/Shanghai时区
    -e UMASK=022权限掩码
    -p 19035Web界面
    -p 19037用于webui 的视频列表读取图片,务必设置不要暴露到外网
    -v /config保存配置、日志等文件的路径
    -v /media媒体目录
    -v /root/.cache/rod/browserchrome存放目录

    5. 设置

    大致思路讲解

    如果直接开始设置,有些人可能比较蒙,我这边先讲解一下过程

    首先你在Overseerr选择好你想看的电影或者电视剧,它会把这个请求发给Radarr或者Sonarr,Radarr或者Sonarr会配合Prowlarr索引器找到你想看的电影或者电视剧的下载用的种子,然后Radarr或者Sonarr会把下载种子发给aria2或者qb进行下载,下载完成后电影会在下载目录,Radarr或者Sonarr会把电影或者电视剧移动到movies或者tv目录,plex会进行扫描,如果扫描到了这部电影或者电视剧,它就会把下载完成发给Overseerr,这样子就完成了一部电影的自动下载

    设置开始前,先给个提醒:每个人环境不同,填写的IP也是不同的。

    1. 双qbittorrentee

    访问IP+8081,IP+8082

    默认是帮忙已经设置好了,无需过多设置

    只需要在连接这边,勾上Automatically update public trackers list即可

    image-20220724115432353

    2. 双Aria2与ariang设置

    访问IP+6880,进入ariang管理界面

    像图中这样设置,连接好两个aria2下载器,ip可以写dockerIP,端口一个6800(movies),一个6801(tv)

    image-20220724115411525

    image-20220724115719149

    Radarr Sonarr 连接下载器解释

    前面创建了两个aria2和qb,我这边分配的是Radarr一个aria2加上qb,Sonarr也是一个aria2加上qb

    Radarr是为电影服务的,所以连接的是qbittorrentee-movies(端口8081)和 aria2-movies(端口6800)这两个下载器

    Sonarr是为剧集动漫服务的,所以连接的是qbittorrentee-tv(端口8082)和 aria2-tv(端口6801)的这两个下载器

    那么接下来就开始设置Radarr和Sonarr吧

    3. Radarr设置

    访问IP+7878,进入管理界面

    先将语言的两项全部设置为中文

    image-20220724120428052

    然后进入媒体管理,设置根目录,与图片一致即可

    image-20220724120517234

    然后进入影片质量,将Unknown拉到无限制

    image-20220724120637201

    到下载客户端,添加两个下载器,分别是容器名称为qbittorrentee-movies(端口8081) aria2-movies(端口6800)的这两个下载器

    image-20220725175714814

    image-20220724120740442

    进入元数据,按照图片设置

    image-20220724121033578

    image-20220724121112747

    image-20220724121127386

    4. Sonarr设置

    访问IP+8989,进入管理界面

    设置与Radarr基本一致,这边就放几张图片

    要注意的是,Sonarr目前没有中文

    image-20220724121941905

    image-20220724121959752

    到下载客户端,添加两个下载器,分别是容器名称为qbittorrentee-tv(端口8082) aria2-tv(端口6801)的这两个下载器

    image-20220724122014652

    image-20220724122119520

    image-20220724122129259

    5. Prowlarr设置

    访问IP+9696,进入管理界面

    进入设置 将UI语言改为中文

    image-20220724121251993

    选择添加索引器,添加自己想要的索引器即可

    image-20220724120046096

    选择好url,先点击测试,然后保存

    image-20220724120231670

    进入设置-应用程序,添加Radarr和Sonarr,apikey获取分别进入Radarr和sonarr,来到设置-通用-安全即可看到

    image-20220724121340542

    image-20220724121450194

    image-20220724121210190

    image-20220724121629007

    image-20220724121649693

    6. Plex设置

    plex设置这里就不过多演示了,可以去看看其他教程

    我这边推荐韩风Talk大佬的plex教程视频

    https://www.bilibili.com/video/BV1EL411E7E9?share_source=copy_web

    放几张图片

    image-20220724122523439

    image-20220724122549880

    7. Overseerr设置

    overseerr是有设置引导的,按照引导一步步设置好plex,radarr,sonarr即可

    这里不过多展示了,每个人环境不同。填写的IP也是不同的

    Plex设置

    image-20220725181114924

    image-20220725181133434

    Radarr设置

    image-20220725181220951

    image-20220725181241102

    Sonarr设置

    image-20220725181326469

    image-20220725181341681

    这边通知可以选择telegram,具体自行百度

    image-20220724122908577

    自动化下载设置完成,测试方法

    设置完成后,可以在Overseerr里面选择一部电影,看看能不能正常搜刮然后自动下载,如果可以,就表明设置成功了

    8. 配合Kodi

    6. 参考资料及感谢

    https://www.plex.tv/

    https://overseerr.dev/

    https://sonarr.tv/

    https://radarr.video/

    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.baidu.com/link?url=1l6_-N8Q_mDqi6HKI2V3T2T-MXpenofzveyb0ghou2v0ICNHnCTSJPxGc47AmeM5vTjeLqZ1ydUcah1BLko0BK&wd=&eqid=c21573d30043b5a10000000462dccd82

    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

    https://www.bilibili.com/read/cv16515847

    https://space.bilibili.com/472755599

    ]]>
    Sun, 05 Jun 2022 15:35:52 CST
    <![CDATA[【Docker项目】快速搭建一个强大的图片管理工具---Piwigo]]> https://blog.ddsrem.com/archives/piwigo 1. 介绍

    1. 简介

    官网:https://cn.piwigo.org/

    • Piwigo 是一款可以用来管理您的图片集与其他媒体的网站程序。 内置强大功能,全世界都在使用它管理图片库。

    • Piwigo 的用户群将它用在了各个方面。 从中型图片集到巨大的图库,Piwigo 都能替您省时省力,轻松搞定工作。

    • 公共部门、公司、基金会……等,都有管理自己的图片资料的需要。 在数字资产管理领域,Piwigo 专注于易用性、承受能力、性能与可持续性。

    • 专业摄影师需要向客户公开或私下展示他们的作品。 Piwigo 提供了高级的权限设置。 用户可以下载单张图片或整个相册。

    • 以20年的时间跨度建立一个家庭影集,管理维护一个欧洲蜘蛛种类的图片收藏,作为摄影爱好者展示自己最棒的风光摄影作品…… 这里有 Piwigo 的粉丝们如何使用它的一些范例。

    2. 特点

    • 选用主题改变图库与相册的外观。 利用插件增加更多的功能。 扩展只需点击几次鼠标即可完成安装。 现有 350 个扩展 可用,并且仍在增加!
    • 您可以通过web表单添加图片,任何FTP客户端或digiKam, Shotwell, Lightroom 等桌面应用或移动端app。

    更多特点可以去官方文档查看

    3. 安装环境

    • A web server like Nginx or Apache
    • MySQL 5.6+ or MariaDB 10.1+. MySQL 5.0 works but is no longer maintained.
    • PHP 7.3+. Piwigo can run with PHP 5.3+ but these end-of-life versions are no longer maintained and may expose your site to security vulnerabilities. See officially PHP supported versions.
    • A graphic library: ImageMagick is recommended for its performances and image quality but GD, often bundled with PHP, can also do the job.
    • an FTP client software will be required to upload the files (netinstall or full package): Piwigo team recommends FileZilla as FTP client software, because it is free as Piwigo is, and compatible with Windows, Mac and Linux.
    • Enough disk space for your pictures: in addition to the photos you upload, Piwigo will store the “multiple sizes” in a cache directory of your server.

    用Docker安装,全部不需要管

    2. 项目展示

    image-20220528224821944

    3. 搭建方法

    1. 搭建环境

    Cloudcone VPS一台

    域名一个(做好解析)

    2. 准备

    sudo -i # 切换到root用户apt update -yapt install wget curl sudo vim git

    3. 开始搭建

    1. 创建文件

    mkdir -p /root/data/docker_data/piwigocd /root/data/docker_data/piwigonano docker-compose.yml

    2. docker-compose

    version: '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

    image-20220528230552508

    3. 更新

    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   # 重新更新当前镜像

    4. 卸载

    cd /root/data/docker_data/piwigo  # 进入docker-compose所在的文件夹docker-compose down    # 停止容器,此时不会删除映射到本地的数据rm -rf /root/data/docker_data/piwigo  # 完全删除映射到本地的数据

    4. 反向代理

    这里不过多赘述

    可以去看咕咕的教程(相关地址

    PS:懒得写

    image-20220528230256285

    5. 配置与使用

    访问安装界面

    • MySQL主机地址一点要填db
    • 数据库用户名密码按你自己的设置

    image-20220528230833823

    点击开始安装

    完成安装

    image-20220528231313215

    使用方法自己研究吧

    有可能会出使用方法

    6 结束

    piwigo的安装与配置就到这里

    剩下的自己探索吧

    手机版也值得玩味

    ]]>
    Sat, 28 May 2022 23:24:58 CST
    <![CDATA[【Docker项目】好玩的白板--Excalidraw]]> https://blog.ddsrem.com/archives/excalidraw 1. 介绍

    懒得写,去看Github介绍吧
    Demohttps://excalidraw.com
    官方文档https://github.com/excalidraw/excalidraw#documentation
    官方博客https://blog.excalidraw.com

    2. 部署

    1. 方法一:编译安装

    1.1 安装好docker与docker-compose

    1.2 安装好反向代理工具

    1.3 开始部署Excalidraw

    1.3.1 创建目录

    mkdir /root/data/docker_data/excalidrawcd /root/data/docker_data/excalidrawnano docker-compose.yml

    docker-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 -d

    3. 访问http://ip:端口即可

    ]]>
    Sun, 15 May 2022 16:53:36 CST
    <![CDATA[EasyImage DockerFile文件制作]]> https://blog.ddsrem.com/archives/easyimagedockerfile-wen-jian-zhi-zuo EasyImage DockerFile文件制作

    1. Dockerfile文件介绍

    1. 先看几个我制作的dockerfile文件

    image-20220508220727323

    image-20220508220940338

    2. dockerfile简介

    Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。

    2. Dockerfile实例解析

    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 指令指定的程序。
    ]]>
    Fri, 13 May 2022 20:43:15 CST
    <![CDATA[Halo Docker安装方法]]> https://blog.ddsrem.com/archives/halodocker安装方法 Halo Docker安装方法

    1. 展示



    2. 官方地址

    1. 官网
    2. 官方安装文档
    3. Github地址
    4. DockerHub地址

    3. Docker安装

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

    4. Halo安装

    1. 安装halo镜像
    docker run -it -d --name halo -p 8091:8090 -v /root/data/docker_data/halo:/root/.halo halohub/halo:latest

    需要等待一会儿才可以进入管理界面

    1. 按照提示一步步设置就完成了
    ]]>
    Sat, 19 Mar 2022 20:56:19 CST
    <![CDATA[H5ai Docker版安装]]> https://blog.ddsrem.com/archives/h5aidocker版安装 H5ai Docker版安装

    1. 下载地址

    DockerHub仓库 我使用的是meteorkong的镜像

    2. 安装Docker

    因为本次使用Docker安装H5ai,所以首先安装Docker

    1. 常用软件安装
    apt-get update && apt-get install -y wget vim
    1. 安装Docker
    wget -qO- get.docker.com | bash
    1. 查看版本
    docker -v
    1. 设置开机自动启动
    systemctl enable docker
    1. 安装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

    3. 安装H5ai命令

    docker run -d -p 8002:80 -v /home/暂存/docker/h5ai:/h5ai --name h5ai ilemonrain/h5ai:full

    4. 可视化文件上传管理

    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
    ]]>
    Fri, 18 Mar 2022 20:34:17 CST
    <![CDATA[Chevereto Docker版安装]]> https://blog.ddsrem.com/archives/cheveretodocker版安装 Chevereto Docker版安装

    1. 下载地址

    DockerHub仓库 我使用的是nmtan的镜像
    作者Github 地址

    2. 安装Docker

    因为本次使用Docker安装Chevereto,所以首先安装Docker

    1. 常用软件安装
    apt-get update && apt-get install -y wget vim
    1. 安装Docker
    wget -qO- get.docker.com | bash
    1. 查看版本
    docker -v
    1. 设置开机自动启动
    systemctl enable docker
    1. 安装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

    3. 安装Chevereto

    1. 创建目录
    mkdir -p /root/data/docker_data/cheveretocd /root/data/docker_data/chevereto
    1. 创建docker容器
    version: '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:
    ]]>
    Fri, 18 Mar 2022 19:49:36 CST
    <![CDATA[手机上通过termux安装homeassistant]]> https://blog.ddsrem.com/archives/shou-ji-shang-tong-guo-termux-an-zhuang-homeassistant !!!不推荐长期使用!!!

    下载安装termux
    官方下载地址:https://f-droid.org/packages/com.termux/
    我的文件仓库下载地址:https://file.ddsrem.in:998/termux.apk
    termux上的软件安装设置
    pkg update
    pkg upgrade
    pkg install proot git python -y
    git clone https://github.com/sqlsec/termux-install-linux
    cd termux-install-linux
    python termux-linux-install.py
    输入:3
    cd ..
    cd ~/Termux-Linux/Debian
    ./start-debian.sh
    Debian环境的安装配置
    apt update
    apt upgrade
    apt-get install sudo vim -y
    sudo 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 -y
    sudo apt-get install python3 python3-pip python3-dev -y
    安装homeassistant
    pip3 install --upgrade pip
    pip3 install --upgrade setuptools
    pip3 install netdisco
    pip3 install --upgrade homeassistant
    启动 #我第一次用了5小时,后面基本几分钟(原因是homeassistant在启动时会安装许多软件,但是许多软件没有arm版本的,所以就要进行编译安装,所以需要花费许多时间)
    hass

    ps:本次使用的手机是荣耀8c
    homeassistant目录在/root/.homeassistant下
    安装插件面前需要很长时间
    本次安装的版本不带Supervisor
    版本为core

    ]]>
    Tue, 22 Feb 2022 21:28:04 CST
    <![CDATA[UbuntuNASDocker配置]]> https://blog.ddsrem.com/archives/ubuntunasdocker配置 apt-get update && apt-get install -y wget vim git nano

    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

    ]]>
    Sun, 20 Feb 2022 21:57:12 CST