友善r4s相关配置

安装 Openwrt

这里用到的是编译好的集成版,下载地址,推荐下载高大全版本
enter description here

portainer

1
2
3
4
5
6
7
8
docker run -d \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--name portainer \
--restart always \
6053537/portainer-ce:latest

filebrowser文件浏览器安装

arm64拉取镜像

1
docker pull 80x86/filebrowser:arm64

x86拉取镜像

1
docker pull 80x86/filebrowser

enter description here
enter description here
容器/myfiles 主机/opt/docker/filebrowser/data
容器/config 主机/opt/docker/filebrowser/config
容器/myfiles/volume1 主机/opt
容器/myfiles/volume2 主机/mnt

如果通过filebrowser写入或删除homepage文件,给与权限

1
chmod -R 777 /opt/docker/homepage

hexo博客

1
docker pull --platform=arm64 bloodstar/hexo:latest

enter description here
enter description here

安装主题

切换到博客的主题根目录下打开Git Bash并执行以下命令:

1
git clone https://github.com/next-theme/hexo-theme-next.git themes/next

下载完成后,会在项目themes目录下生成next文件夹。

enter description here
如果没有修改代码的需求可以直接通过npm来安装。

1
npm install hexo-theme-next

与所有 Hexo 主题启用的模式一样。当 克隆/下载 完成后,打开 站点配置文件, 找到 theme 字段,并将其值更改为 next。

1
theme: next

到此,NexT 主题安装完成。
验证主题 启动服务并访问http://localhost:4000查看效果.

1
hexo clean && hexo s

添加搜索功能

在博客根目录下,执行如下命令

1
npm install hexo-generator-searchdb --save

修改站点配置文件
修改根目录下_config.yml,在最底部添加如下配置

1
2
3
4
5
search:
path: search.xml
field: post
format: html
limit: 10000

修改主题配置文件
修改主体下的themes\next_config.yml配置文件,搜索local_search,修改enable为true

1
2
local_search:
enable: true

字数统计以及阅读时间配置

安装

1
2
npm install hexo-word-counter
hexo clean

然后在站点配置文件Hexo _config.yml的文件尾部添加

1
2
3
4
5
6
7
8
9
symbols_count_time:
symbols: true
time: true
total_symbols: true
total_time: true
exclude_codeblock: false
awl: 4
wpm: 275
suffix: "mins."

3.然后在主题配置文件NexT _config.yml中修改

1
2
3
4
5
# Post wordcount display settings
# Dependencies: https://github.com/next-theme/hexo-word-counter
symbols_count_time:
separated_meta: true
item_text_total: false

将设置item_text_total为true

homepage导航

1
docker pull --platform=arm64 gethomepage/homepage:latest

enter description here
enter description here
容器/var/run/docker.sock 主机/opt/docker/homepage/docker.sock
容器/app/config 主机/opt/docker/homepage/config
容器/app/public/icons主机/opt/docker/homepage/icons
容器/app/public/images主机/opt/docker/homepage/images
enter description here
添加环境变量

1
HOMEPAGE_ALLOWED_HOSTS=192.168.5.1:3000 #按实际更改

calibre-web

1
docker pull --platform=arm64 linuxserver/calibre-web:latest

enter description here
enter description here

jellyfin

1
docker pull --platform=arm64 jellyfin/jellyfin:latest

enter description here
enter description here

迅雷远程下载服务(非官方)

ARM版安装

1
docker pull --platform=arm64 cnk3x/xunlei:latest

amd64版安装

1
docker pull cnk3x/xunlei

从迅雷群晖套件中提取出来用于其他设备的迅雷远程下载服务程序。仅供研究学习测试。
本程序仅提供 Linux 模拟和容器化运行环境,未对原版迅雷程序进行任何修改。
使用 镜像

1
2
3
cnk3x/xunlei:latest
registry.cn-shenzhen.aliyuncs.com/cnk3x/xunlei:latest
ghcr.io/cnk3x/xunlei:latest

常规的容器,还是要在特权模式下运行。 如果 docker 的存储驱动如果是 btrfs 或者 overlayfs,可以支持的非特权运行。
环境变量参数

1
2
3
4
5
6
7
8
9
10
11
12
XL_DASHBOARD_PORT      #网页访问的端口,默认 2345
XL_DASHBOARD_IP #网页访问的端口,默认 0.0.0.0(代表所有IP
XL_DASHBOARD_USERNAME #网页访问的用户名
XL_DASHBOARD_PASSWORD #网页访问的密码
XL_DIR_DOWNLOAD #下载保存默认文件夹,默认 /xunlei/downloads,多个文件夹用冒号:分隔
XL_DIR_DATA #程序数据保存文件夹,默认 /xunlei/data
XL_UID #运行迅雷的用户ID
XL_GID #运行迅雷的用户组ID
XL_PREVENT_UPDATE #是否阻止更新,默认 true, 可选值 true/false, 1/0
XL_CHROOT #隔离运行主目录, 指定该值且不为`/`则以隔离模式运行, 用于在容器内隔离环境,容器内默认为 /xunlei,隔离模式运行需要特权模式(--privileged),可以将该值设置为`/`来以非特权模式运行。非特权模式运行有条件,可以尝试失败后使用特权模式重新运行。
XL_DEBUG #调试模式, 可选值 true/false, 1/0

1
2
3
4
5
6
7
8
9
10
11
12
# docker run -d \
# -v <数据目录>:/xunlei/data \
# -v <默认下载保存目录>:/xunlei/downloads \
# -p <访问端口>:2345 \
# --privileged \
# cnk3x/xunlei

# example
docker run --privileged -v /mnt/sdb1/configs/xunlei:/xunlei/data -v /mnt/sdb1/downloads:/xunlei/downloads -p 2345:2345 cnk3x/xunlei

# 如果你的docker存储驱动是 overlayfs 或者 btrfs等, 可以不用特权运行
docker run -e XL_CHROOT=/ -v /mnt/sdb1/configs/xunlei:/xunlei/data -v /mnt/sdb1/downloads:/xunlei/downloads -p 2345:2345 cnk3x/xunlei

10分钟搭建一个可以实现音乐自由的音乐服务器 - Navidrome

前言

随着国内版权意识的提高,现在想听一首歌曲,往往我们可能要切换好几个个 APP —— 网易云音乐、QQ 音乐、咪咕音乐等,切换起来很麻烦,并且还需要开通 VIP,有的 APP 就算你买了 VIP 服务,下载的歌曲还是加密的,一旦 VIP 到期后某些歌你还听不了,非常蛋疼,最蛋疼的是有的歌曲还需要单独付费购买,不禁想问这 VIP 的用处是啥。

于是我不得不转到了 YouTube Music 加入一个家庭组会员一年仅需 40 元 左右,即可获得 YouTube Music & YouTube 视频双会员,就目前来看,我想听的歌都是找得到的,我非常满意,但是有一个缺点,必须得富强,才能使用,有时候场合也不是很方便,还是想低调点使用。

后续不得不考虑自建方案,不用太多,把自己经常听的几首放进去就够用了,但是找来找去一直没找到合适的方案,感觉都很繁琐,不适合我这种懒人,好在功夫不负有心人,终于让我找到了 Navidrome,它支持 docker compose 部署,界面也是简洁、美观,让我十分喜欢。

Navidrome ⁠是一款基于 Web 的开源音乐收藏服务器和流媒体播放器。它让您可以自由地从任何浏览器或移动设备收听您的音乐收藏。它就像您的个人 Spotify!

1、优点:

  • 处理非常大的音乐收藏
  • 播放几乎所有可用的音频格式
  • 读取并使用您精心策划的所有元数据(id3 标签)
  • 多用户,每个用户都有自己的播放次数、播放列表、收藏夹等。
  • 资源占用极低:例如:300GB 的曲库(约 29000 首歌曲)占用的 RAM 不到 50MB
  • 多平台,可在 macOS、Linux 和 Windows 上运行。还提供 Docker 镜像
  • 可立即使用的 Raspberry Pi 二进制文件和 Docker 镜像
  • 自动监控库中的变更,导入新文件并重新加载新元数据
  • 基于 Material UI 的主题化、现代化、响应式的 Web 界面,用于管理用户和浏览您的图书馆
  • 与所有 Subsonic/Madsonic/Airsonic 客户端兼容。查看已测试客户端列表⁠
  • 即时转码 / 降采样。可按用户 / 玩家设置。支持 Opus 编码
  • 集成音乐播放器

2、缺点:

  • 暂时没找到自动获取歌词的方法 (已找到方案,可参考 Navidrome 番外,解决歌词显示问题)
  • 不支持通过界面 上传 & 删除 歌曲(后续我们会通过其他的方式实现 上传 & 删除 功能)

3、官方演示站点:

https://demo.navidrome.org/app/

4、 项目地址:

Docker Hub 地址:https://hub.docker.com/r/deluan/navidrome

Github 地址:https://github.com/navidrome/navidrome

开始搭建

1、 搭建 Navidrome

我们将采用 docker compose 来搭建,docker & docker compose 的安装我就不赘述了,谷歌随便一搜一大把。

1
2
3
4
5
6
7
apt update -y ## 安装前先升级系统包

mkdir /home/docker/navidrome ## 创建文件夹

cd /home/docker/navidrome ## 进入文件夹

nano docker-compose.yml ## 创建 yml 文件

贴一个实际我在用的 docker-compose 配置示例(可以通过 LASTFM & SPOTIFY 削刮封面图等信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: "3"
services:
navidrome:
image: deluan/navidrome:latest # 指定程序版本版本,例如: 0.56.1
ports:
- "4533:4533" # 左边可以改成自己服务器未被占用的端口
environment:
# 可选配置选项,以下是一些示例:
ND_SCANSCHEDULE: 5m # 扫描音乐文件夹的时间间隔
ND_LASTFM_ENABLED: "true" # 是否启用 Last.fm 集成(留空表示禁用)
ND_LASTFM_APIKEY: a0ac723bb9917c49f65ad # 替换为你自己的 Last.fm API Key
ND_LASTFM_SECRET: 3d0c1db7ded3af # 替换为你自己的 Last.fm Secret
ND_SPOTIFY_ID: 567e1ab95ad9cd2393af # 替换为你自己的 Spotify ID
ND_SPOTIFY_SECRET: 34b420f48d51520c # 替换为你自己的 Spotify Secret
ND_LASTFM_LANGUAGE: zh # 设置 Last.fm 的语言为中文
ND_LOGLEVEL: info # 日志级别,推荐使用 info
ND_SESSIONTIMEOUT: 72h # 用户会话超时时间,例如 72 小时
ND_BASEURL: "" # 如果需要反向代理,设置基础 URL(留空表示不使用)
ND_MUSICFOLDER: "/music" # 指定多个音乐文件夹路径,用冒号分隔
ND_LYRICSPRIORITY: "embedded,.lrc,.txt" #歌词优先
ND_ENABLEDOWNLOADS: "false" #启用下载
ND_SUBSONIC_DEFAULTREPORTREALPATH: "false" #在 API 中报告音乐文件的真实路径
ND_ENABLESHARING: "false" #启用共享
ND_ENABLETRANSCODINGCONFIG: "false" #启用转码
volumes:
- "/home/docker/navidrome/data:/data" # 冒号左边修改为本地存储 Navidrome 数据的路径
- "/home/docker/navidrome/music:/music:rw" # 冒号左边修改为本地音乐文件夹路径,挂载模式改为 rw
restart: unless-stopped # 容器在意外停止时自动重启

2、获取 LASTFM & SPOTIFY 密钥信息

1). 获取 LASTFM 密钥信息

首先需要一个 Last.fm 免费帐户,其次你要能访问 Last.fm

转到 https://www.last.fm/api/account/create 并创建一个 API 帐户。只有应用程序名称 字段是强制性的

提交表单后,可以从 API account Created 页面获取 API Key 和 Shared Secret

将获取的密钥信息复制到刚才的 docker-compose.yml 文件内进行替换。

2). 获取 SPOTIFY 密钥信息

在 Spotify 中创建一个免费帐户,然后按照以下步骤操作:

单击 Spotify 的开发者仪表板中的 CREATE AN APP 按钮:https://developer.spotify.com/dashboard/applications

填入 应用名称 应用程序描述 重定向 URL(可以随意填写)计划使用(建议全部勾选)然后保存即可

将获取的密钥信息复制到刚才的 docker-compose.yml 文件内进行替换。

3、运行

密钥替换完毕后,我们同时按住 Ctrl+X 键,输入 Y , 回车

然后输入以下命令启动:

1
docker compose up -d

输入 IP:4533 就可以访问了

域名访问,可以参考这篇文章最后的配置域名访问部分:https://makifx.com/1240.html

4、成品展示

目前刚部署上,还没存几首,仅作展示:

更新

1
2
3
4
cd /home/docker/navidrome # 进入安装目录/
docker compose pull # 拉取最新镜像/
docker compose up -d # 直接升级容器,自动停止并立刻重建新的容器。/
docker image prune # 删除所有未被 tag 标记和未被容器使用的镜像

卸载

1
2
3
4
cd /home/docker/navidrome
docker compose down
cd ..
rm -rf /home/docker/navidrome # 完全删除

解决音乐 上传 & 删除 问题(番外)

1、搭建

我们将采用 filebrowser 来管理歌曲文件,可以有效解决音乐 上传 & 删除 问题。

直接输入以下命令运行即可:

1
2
3
4
5
docker run -d --restart=always \
-v /home/docker/navidrome/music:/srv \ # 冒号左边的文件夹路径需与 Navidrome 保持一致
-p 8003:80 \ # 冒号左边可以改成自己服务器未被占用的端口
--name filebrowser \
langren1353/filebrowser-ckplayer

2、 成品展示

至此,属于你自己的音乐服务器就搭建完毕了,赶紧扩充你的音乐库,开始享受吧!

Navidrome 解决歌词显示问题

背景:

上一期我们搭建了属于自己的音乐服务器 Navidrome,详情参考:10 分钟搭建一个可以实现音乐自由的音乐服务器 - Navidrome

直接调用 115 网盘资源,不占用服务器空间,使用起来也是非常的舒服,上传了一些我常听的歌,顺便把我收集来的一个 880G 的音乐资源包一起放进去了,但是有一个痛点就是没有歌词显示,让习惯了听歌看歌词的我非常的不习惯,几经周折也是让我发现了一款名为 【音乐标签】 的开源项目,可以专门针对音乐进行削刮,效果我也是比较满意。

Music Tag Web

【音乐标签】Web 版是一款可以编辑歌曲的标题,专辑,艺术家,歌词,封面等信息的音乐标签编辑器程序, 支持 FLAC, APE, WAV, AIFF, WV, TTA, MP3, M4A, OGG, MPC, OPUS, WMA, DSF, DFF, MP4 等音频格式。

项目特点:

  • 支持大部分音频格式元数据的查看、编辑和修改
  • 支持批量自动修改(刮削)音乐标签
  • 支持音乐指纹识别,即使没有元数据也可以识别音乐
  • 支持整理音乐文件,按艺术家,专辑分组, 或者自定义多级分组
  • 支持文件排序,按照文件名,文件大小,更新时间排序
  • 支持批量转换音乐元数据繁体转简体,或者简体转繁体
  • 支持文件名称的拆分解包,补充缺失元数据信息
  • 支持文本替换,批量替换音乐元数据中脏数据
  • 支持音乐格式转换,引入 ffmpeg 支持音乐格式转换
  • 支持整轨音乐文件的切割
  • 支持多种音乐标签来源
  • 支持歌词翻译功能
  • 支持显示操作记录
  • 支持导出专辑封面文件,支持自定义上传专辑封面
  • 支持适配移动端 UI,支持手机端访问
  • 支持使用小爱同学播放本地音乐,播放 NAS 本地音乐

需要注意的一点是有的功能是 V2 专属(付费),不过免费版对于削刮来说也够用了。

项目地址:

【Music Tag Web】Github 地址:https://github.com/xhongc/music-tag-web

【Music Tag Web】官网:https://xiers-organization.gitbook.io/music-tag-web

本人自用客户端推荐:https://github.com/gitbobobo/StreamMusic

搭建:

1、 搭建 Music Tag Web

1
2
3
mkdir -p /home/docker/tag   ## 路径和名称可以自定义
cd /home/docker/tag ## 与上述路径名称保持一致
nano docker-compose.yml

下面是 docker-compose.yml 配置文件

1
2
3
4
5
6
7
8
9
10
11
version: '3'
services:
music-tag:
image: xhongc/music_tag_web:latest
container_name: music-tag-web
ports:
- "8992:8002" ## 冒号左边端口可自定义为为占用端口
volumes:
- /home/docker/navidrome/music:/app/media:rw ## 冒号左边路径请与Navidrome保持一致
- /home/docker/tag/config:/app/data ## 冒号左边路径请填写config配置文件路径
restart: unless-stopped

2、 运行

1
docker compose up -d

输入 IP:8992 就可以访问了,默认账号密码均为:admin

域名访问,可以参考这篇文章最后的配置域名访问部分:https://makifx.com/1240.html

3. 成品展示

卸载:

1
2
3
4
cd /home/docker/tag
docker compose down
cd ..
rm -rf /home/docker/tag ## 完全删除