马卫青的博客

爱思思爱猫爱技术

安装 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 ## 完全删除

前言

由于 Synology 的 DSM 7 不允许第三方应用程序以 root 用户身份运行。所以 DSM7 以上的版本将只能使用 docker 的方式来安装 zerotier(而 DSM6 的 zerotier 将在 2023 年进入 EOL 阶段(停止服务),且用且珍惜吧。
通过 docker 安装 zerotier 主要分为以下四个步骤:
1、在 nas 启动 ssh 访问;
2、创建 TUN 服务;
3、安装 docker 服务(群晖套件直接安装即可,这里略过);
4、拉取并启动 zerotier one 镜像;
5、将 zerotier-one 镜像加入你的网络,并添加 moon 节点

在 nas 启动 ssh 访问

在群晖页面控制面板下,找的 “终端机和 SNMP” 这一项,把 “启动 SSH 功能” 勾上即可,默认使用 22 端口即可;
enter description here
之后使用远程访问工具(我这里使用 putty)登录群晖;
enter description here

创建 TUN 服务

首先切换到 root 用户(以下所有的操作都需要有 root 权限)

1
sudo -i

创建一个 /usr/local/etc/rc.d/tun.sh 脚本 到 /dev/net/tun 目录下

1
echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh

给刚刚创建的 tun 脚本授予所有用户均可执行的权限

1
chmod a+x /usr/local/etc/rc.d/tun.sh

使用以下命令检查以下 tun.ko 是否存在

1
lsmod | grep tun

enter description here
由于我的群晖默认已经有 tun 这个包了,所以就不需要安装,直接用即可,如果使用 lsmod 命令找不到 tun 这个包,则执行以下脚本,创建 TUN

1
/usr/local/etc/rc.d/tun.sh

如果执行脚本遇到以下报错,说明 tun.ko 模块可能已存在,不需要重新编译
enter description here
检查一下 TUN

1
ls /dev/net/tun

如果您在让 TUN 工作时遇到困难,请查看‎‎ Rui Marinho 的指南‎

创建 zerotier 镜像

创建一个文件夹用于挂载 zerotier-one 的配置文件和认证信息(我这里路径指定到我自己创建的 docker/zerotier 文件夹下)

1
mkdir /volume1/docker/zerotier

这里也可以直接在群晖 file Station 上创建,然后再文件夹属性中获取实际路径(建议使用这步,比较直观,不容易出错)
enter description here
以下是 zerotier 官方给的注意: In the next step we bind mount to the host’s created above in order to store ZeroTier’s identity. This is not guaranteed to survive DSM updates. I would suggest placing this on an automatically-mounted volume where your other private user data resides. The location you choose to store your identities should be kept secure and never placed on a shared volume that others can access./var/lib/zerotier-one 译文版本: ‎在下一步中,我们将装载绑定到上面创建的主机,以存储 ZeroTier 的身份(我的理解是 config 配置和用户信息)。这不能保证在 DSM 更新后仍然有效(zerotier 自己也不确定,为了群晖更新后,会不会不再允许用户使用 zerotier 做内网穿透,毕竟 DSM7 之后,群晖直接不再支持 zerotier 的套件了,可能 zerotier 自己也感觉后续可能会被不再支持,故在此给用户打个预防针)。zerotier 建议将其放在其他私人用户数据所在的自动装载卷上。您选择存储身份(用户信息和 config 信息)的位置应保持安全,切勿放置在其他人可以访问的共享卷上‎。
构建 zerotier-one 镜像 (Repo: zerotier/zerotier-synologyzt)

1
docker run -d \ --name zt \ --restart=always \ --device=/dev/net/tun \ --net=host \ --cap-add=NET_ADMIN \ --cap-add=SYS_ADMIN \ -v /volume1/docker/zerotier:/var/lib/zerotier-one zerotier/zerotier-synology:latest

enter description here
执行完,出现一串检验码即表示镜像部署启动成功,回到群晖管理页面,既可以看到多了一个群晖镜像;
enter description here

配置 zerotier-one 加入网络,并配置 moon 节点

配置 zerotier-one 加入网络

使用以下命令检查 zerotier-one 的运行状态

1
docker exec -it zt zerotier-cli status

再使用以下命令加入你的 zerotier-one 网络(其中后面的 e5cd7a9e1cae134f 换成你自己的 zerotier-one 生成的网络 id)

1
docker exec -it zt zerotier-cli join e5cd7a9e1cae134f

enter description here
当看到 200 join OK,既是表示加入网络成功,这时候登录 zerotier 控制台,即可看到网络列表多了一条未授权加入的网络,勾选允许其加入即可;
enter description here

接下来在为 docker 环境下的 zerotier-one 添加 moon 节点

这个比较简单,直接在群晖 file station 下,找到你上面创建的 docker 文件夹下的 zerotier 文件夹,将你的 moon.d 拖拽进入即可
enter description here
最后,重启 zerotier docker 容器,在 ssh 端执行以下命令,检查 moon 节点是否加载成功(看到多了 moon 的那行即表示成功)

1
docker exec -it zt zerotier-cli listpeers 

enter description here
最后在手机上使用 zerotier 分配的 ip 即可顺便在 4G 网络下接入局域网内的群晖了(前提是你的手机需要先安装 zerotier 客户端,并已加入同一个网络 id)
enter description here

连接群晖及WinScp使用见上一篇文章

产品型号:DS3622xs+

DSM版本:DSM 7.2-64570 Update 1 

先看一下效果图

我们最终想要的:屏蔽系统更新,但是不能影响套件更新!!是的,做到了!

之前看博主“GXNAS”猜测的的套件和系统更新共用一个升级地址了,建议劝退了


可是黑群晖心不甘啊。。。。。。。。。。。。万一哪天手残,数据(小姐姐)可容不得半点马虎。。。。  可能不需要这么麻烦的,一年前搭建过一台7.1版本的黑群晖,忘了咋搞的了,应该是用了啥脚本,木得记录了,有用脚本搞定的欢迎留言,后来比对了一下配置文件,直接改 这里假装你已经用WinSCP连上系统了
enter description here
根目录下找到如下文件夹,一会要用
enter description here
其实两个文件夹里文件名都是一样的,改的项目也一样,九处
在两个文件夹下分别找到synoinfo.conf文件
enter description here
双击打开,找到如下行,在域名后面添加example,其实就是将域名地址改为一个不存在的网址就可以了
注意:这几行不是在一起的 原配置

1
2
3
4
5
6
7
8
9
myds_region_api_base_url="https://account.synology.com/"
rss_server="http://update7.synology.com/autoupdate/genRSS.php"
rss_server_ssl="https://update7.synology.com/autoupdate/genRSS.php"
rss_server_v2="https://update7.synology.com/autoupdate/v2/getList"
security_version_server="https://update7.synology.com/securityVersion"
small_info_path="https://update7.synology.com/smallupdate"
update_server="http://update7.synology.com/"
update_server_ssl="https://update7.synology.com/"
updateurl="http://www.synology.com/"

更新为

1
2
3
4
5
6
7
8
9
myds_region_api_base_url="https://account.synologyexample.com/"
rss_server="http://update7.synologyexample.com/autoupdate/genRSS.php"
rss_server_ssl="https://update7.synologyexample.com/autoupdate/genRSS.php"
rss_server_v2="https://update7.synologyexample.com/autoupdate/v2/getList"
security_version_server="https://update7.synologyexample.com/securityVersion"
small_info_path="https://update7.synologyexample.com/smallupdate"
update_server="http://update7.synologyexample.com/"
update_server_ssl="https://update7.synologyexample.com/"
updateurl="http://www.synologyexample.com/"

群晖版本不同该配置所在的行也会不同 其它的不要动! 其它的不要动! 其它的不要动! 改不好会影响套件的更新! 保存,然后改一下另一个目录下相同的文件,改法和内容都一致!!!!不再赘述!! 关机!!!开机!!!我直接重启后不好使,也不知道是不是浏览器缓存的问题,自测吧,后期要更新就把配置文件改回去就行。
————————————————————————————华丽的分割线——————————————————————————————————
还有网友修改hosts文件的方法,我试了一下不管用,当然,不放心可以双管齐下
我改的hosts文件内容

1
2
3
4
5
127.0.0.1    global.download.synology.com
127.0.0.1 global.synologydownload.com
127.0.0.1 update7.synology.com
127.0.0.1 autoupdate7.synology.com
127.0.0.1 autoupdate7.synology.cn

依据是官方提到的
enter description here
见 https://kb.synology.cn/zh-cn/DSM/tutorial/What_websites_does_Synology_NAS_connect_to_when_running_services_or_updating_software
可以都加上试试,欢迎自测留言哈~~~
希望对同样爱瞎捣鼓的您有所帮助~~~~O(∩_∩)O哈哈~
还有一点要注意:
如果你使用Virtual Machine Manager套件要从官方下载映像,屏蔽上述更新后也是无法获取映像文件的,方法一:改回原配置文件,下载后再屏蔽更新;方法二:如图示,example是我在屏蔽网址中添加的,改成你改的就行
enter description here

收工了,妈妈再也不用担心我手贱点击更新了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

原本计划先发 GPT4Free 的,但看很多人在后台反馈 FreeGPT35aurora 遇到的问题,基本上都是网络原因,所以先发个不用折腾网络的国产 API 服务,让大家先用起来

什么是 kimi-free-api ?

kimi-free-api 是长文本大模型白嫖服务,支持高速流式输出、联网搜索、长文档解读、图像解析、多轮对话,零配置部署,多路 token 支持,自动清理会话痕迹。与 ChatGPT 接口完全兼容。

最近一段时间,国产大模型 Kimi 火了,起因是它的 200 万字超长上下文输入,这使得它能够处理和分析大量的文本信息,为用户提供深度的理解和分析

kimi-free-api 是和 FreeGPT35 、aurora 类似的 Kimi 的免费大模型接口,由 LLM 大模型红队(LLM Red Team) 提供,除此之外,还提供了其他几家大模型的 API,有兴趣的可以去看看

kimi-free-api 相比 FreeGPT35 、aurora 等国外大模型 API 服务,最大的优势不是长文本,而是不用折腾网络 ߘ⊊在使用前,请仔细阅读并理解官方的免责申明

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 kimi-free-api ,选择第一个 vinlic/kimi-free-api,版本选择 latest

本文写作时, latest 版本对应为 0.0.25
Blockquote

enter description here

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8126 8000
enter description here

环境

可变
TZ 时区,设为 Asia/Shanghai
enter description here

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
# 运行容器
docker run -d \
--restart unless-stopped \
--name kimi-free-api \
--init \
-p 8126:8000 \
-e TZ=Asia/Shanghai \
vinlic/kimi-free-api:latest</pre>

--init 标志用于在容器内部启动一个 init 进程。

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
<pre>version: '3'

services:
kimi-free-api:
image: vinlic/kimi-free-api:latest
container_name: kimi-free-api
restart: always
ports:
- "8126:8000"
environment:
- TZ=Asia/Shanghai</pre>

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 kimi 和 子目录
mkdir -p /volume1/docker/kimi

# 进入 kimi 目录
cd /volume1/docker/kimi

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d</pre>

运行

在浏览器中输入 http://群晖IP:8126 就能看到主界面

获取 refresh_token

从 kimi.moonshot.cn 获取 refresh_token

进入kimi 先要登录,然后随便发起一个对话,接着按 F12 打开开发者工具,从Application –> Local Storage 中找到 refresh_token的值,这将作为Authorization 的 Bearer Token 值:Authorization: Bearer TOKEN
enter description here

下面这种情况没遇到过,来自于 kimi-free-api 的说明

如果你看到的 refresh_token 是一个数组,请使用 . 拼接起来再使用。

目前 kimi 限制普通账号每 3 小时内只能进行 30 轮长文本的问答(短文本不限),你可以通过提供多个账号的 refresh_token 并使用,拼接提供:

1
Authorization: Bearer TOKEN1,TOKEN2,TOKEN3

每次请求服务会从中挑选一个

命令行

kimi-free-api 支持与 OpenAI 兼容的 /v1/chat/completions 接口,所以要验证 API 服务是否正常,可以用下面的示例

用 SSH 客户端登录到群晖后,在命令行执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl http://192.168.0.197:8126/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [refresh_token]" \
-d '{
"model": "kimi",
"messages": [
{
"role": "user",
"content": "你是谁?"
}
],
"use_search": true,
"stream": false
}'

服务正常的话,很快会得到响应数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"id": "cobts9maoforsk2g47c0",
"model": "kimi",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我是Kimi,由月之暗面科技有限公司开发的人工智能助手。我擅长中英文对话,并且能够提供安全、有帮助、准确的信息。如果你有任何问题或需要帮助,随时可以问我!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1,
"completion_tokens": 1,
"total_tokens": 2
},
"created": 1712840230
}

enter description here

kimi-free-api 除了对话接口,还有文档解读、图像解析、refresh_token 存活检测等接口

因为 refresh_token 比较长,所以还是推荐用 API 工具比较好,比如 PostmanApifox 、ApiPost 等

客户端

还可以使用与 OpenAI 或其他兼容的客户端接入接口,还是以 ChatGPT-Next-Web 为例

文章传送门:跨平台私人ChatGPT应用ChatGPT-Next-Web

如果你还没安装 ChatGPT-Next-Web ,可以用下面的命令一键搞定

1
2
3
4
5
6
7
8
9
# 运行容器  
docker run -d \
--restart unless-stopped \
--name chatgpt-next-web \
-p 3059:3000 \
-e OPENAI_API_KEY=<你的refresh_token> \
-e BASE_URL=http://<你的群晖IP>:8126 \
-e CUSTOM_MODELS="-all,+kimi" \
yidadaa/chatgpt-next-web

如果你已经安装过ChatGPT-Next-Web,需要修改三个环境变量参数

  • OPENAI_API_KEY:之前不论你是安装的 FreeGPT35 还是 aurora,这个值都是随便填的,现在必须改为我们前面获取的 refresh_token
  • BASE_URL:填写 kimi-free-api 服务的地址 + 端口
服务名称 服务地址
FreeGPT35 http://192.168.0.197:3044
aurora http://192.168.0.197:8328
GPT4Free http://192.168.0.197:1337
kimi-free-api http://192.168.0.197:8126
  • CUSTOM_MODELS :用来控制模型列表,使用 + 增加一个模型,使用 - 来隐藏一个模型,使用 模型名=展示名 来自定义模型的展示名,用英文逗号隔开。需从 -all,+gpt-3.5-turbo 改为 -all,+kimi
    enter description here

进入 ChatGPT-Next-Web 的设置,可以看到模型已经被设置为 kimi

enter description here
现在可以开始聊天了
enter description here

做个文档解读,

文档地址:https://mj101-1317487292.cos.ap-shanghai.myqcloud.com/ai/test.pdf

enter description here

还能做图像解析

图片地址:https://www.moonshot.cn/assets/logo/normal-dark.png

enter description here

自己用用就行,千万不要对外提供服务或商用,避免对官方造成服务压力,且用且珍惜!

其他

这块的内容和上文没啥直接关系,是给大家推荐两款 Kimi 的 chrome 插件,功能都是用来做网页内容总结的

  • Kimi copilot 网页总结助手,特点是极简,除了一键总结没有其它花里胡哨的功能

  • Kimi 阅读助手,可以自己预设提示词,根据自己需要定义提示词工程

参考文档

LLM-Red-Team/kimi-free-api: ߚࠋIMI AI 长文本大模型白嫖服务,支持高速流式输出、联网搜索、长文档解读、图像解析、多轮对话,零配置部署,多路token支持,自动清理会话痕迹。
地址:https://github.com/LLM-Red-Team/kimi-free-api

1、阅读项目文档

谷歌浏览器

https://github.com/linuxserver/docker-chromium

Edge浏览器

https://github.com/linuxserver/docker-msedge

火狐浏览器

https://github.com/linuxserver/docker-firefox

2、配置国内镜像源(解决中文字体安装问题)

新建文件sources.list,内容填写国内镜像源地址,保存。

1
2
3
4
deb https://mirrors.bfsu.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.bfsu.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.bfsu.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.bfsu.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

3、部署参数

docker cli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker run -d \
--name=chromium \
--hostname=chromium \
--security-opt=no-new-privileges:true \
--security-opt seccomp=unconfined \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e CUSTOM_USER=admin \
-e PASSWORD=admin \
-e DOCKER_MODS=linuxserver/mods:universal-package-install \
-e INSTALL_PACKAGES=fonts-noto-cjk \
-e LC_ALL=zh_CN.UTF-8 \
-e TITLE=Chromium \
-p 3000:3000 \
-p 3001:3001 \
-v /opt/docker/chromium:/config \
-v /opt/docker/chromium/sources.list:/etc/apt/sources.list \
--shm-size="2gb" \
--restart unless-stopped \
linuxserver/chromium:latest

docker-compose

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
services:
chromium:
image: linuxserver/chromium:latest
container_name: chromium
hostname: chromium
security_opt:
- no-new-privileges:true
- seccomp=unconfined
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- CUSTOM_USER=admin
- PASSWORD=admin
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=fonts-noto-cjk
- LC_ALL=zh_CN.UTF-8
- TITLE=Chromium
volumes:
- /opt/docker/chromium:/config
- /opt/docker/chromium/sources.list:/etc/apt/sources.list
ports:
- 3000:3000
- 3001:3001
shm_size: 2gb
restart: unless-stopped

4、运行容器

1
docker compose up -d

5、Edge浏览器、火狐浏览器部署思路与此相同。

 发表于 2024-03-04  更新于 2025-02-14  分类于 各种折腾  Waline:  阅读次数: 本文字数: 2.4k  阅读时长 ≈ 2 分钟Open WebUI 是针对 LLM 的用户友好的 WebUI。


在前文 本地大模型运行框架Ollama 中,老苏留了个尾巴,限于篇幅只是提了一下 Open WebUI,有网友留言说自己安装没搞定,今天我们来补上

文章传送门:本地大模型运行框架Ollama

什么是 Open WebUI ?

Open WebUI 是针对 LLM 的用户友好的 WebUI,支持的 LLM 运行程序包括 Ollama 和 OpenAI 兼容的 API

Open WebUI 系统旨在简化客户端(您的浏览器)和 Ollama API 之间的交互。此设计的核心是后端反向代理,可增强安全性并解决 CORS 问题。

enter description here

【说明】:

  • 因为老苏的小机器不支持 Nvidia GPU,所以下面ߑ秚䥮騣姤ꤾ뤻妔歷ႠCPU

  • 本文假设你已经在 11434 端口启动了 Ollama 服务,但是否在本机是无所谓的。

安装

在群晖上以 Docker 方式安装。

镜像下载

官方没有在 docker hub 上发布镜像,而是发布在 ghcr.io,地址在 https://github.com/open-webui/open-webui/pkgs/container/open-webui

用 SSH 客户端登录到群晖后,依次执行下面的命令

1
2
3
4
5
6
7
8
# 新建文件夹 open-webui 和 子目录
mkdir -p /volume1/docker/open-webui/data

# 进入 open-webui 目录
cd /volume1/docker/open-webui

# 拉取镜像
docker pull ghcr.io/open-webui/open-webui:main

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

1
2
3
4
5
6
7
8
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/open-webui/open-webui:main

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/open-webui/open-webui:main ghcr.io/open-webui/open-webui:main

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/open-webui/open-webui:main

下载完成后,可以在 映像 中找到

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
# 运行容器(仅CPU
docker run -d \
--restart unless-stopped \
--name ollama-webui \
-p 11433:8080 \
-v $(pwd)/data:/app/backend/data \
-e OLLAMA_API_BASE_URL=http://192.168.0.197:11434/api \
-e WEBUI_SECRET_KEY=TkjGEiQ@5K^j \
ghcr.io/open-webui/open-webui:main

环境变量的简单说明

没有找到官方说明,但是这两个是必须要设置的

可变
OLLAMA_API_BASE_URL Ollama 服务器的地址
WEBUI_SECRET_KEY 可以理解成密码,老苏是用 Vaultwarden 生成的

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
ollama-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: ollama-webui
restart: unless-stopped
ports:
- 11433:8080
volumes:
- ./data:/app/backend/data
environment:
- OLLAMA_API_BASE_URL=http://192.168.0.197:11434/api
- WEBUI_SECRET_KEY=TkjGEiQ@5K^j

然后执行下面的命令

1
2
3
4
5
6
7
# 进入 open-webui 目录
cd /volume1/docker/open-webui

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:11433 就能看到登录界面

第一次需要注册账号

enter description here

登录成功后的主界面

点左下角的用户名,进 Settings

也可以点 Select a model 后面的设置图标;

enter description here

Modles 中可以添加、删除和切换模型

感谢网友 Zzz 推荐的 qwen:0.5b,这是阿里云推出的基于 Transformer 的大型语言模型,推理最低内存需求小于 2GB ,在老苏的机器上,运行都非常流畅。

可以在 Ollama 中用命令行安装

感谢网友 潇雨 推荐的 gemma:2b,这是 Google 及其 DeepMind 团队开发的新型开放模型。

也可以在这里直接下载

  • ①中输入模型名称及版本
  • ②点击开始下载
  • ③跳转到模型库查询页面

过程中有进度显示

回到首界面,选择模型

刚下载的模型可能要等一会才会显示出来,现在老苏已经有了 2 模型了

现在可以开始提问了

同样的问题,换个模型试试

目前的这种应用场景下,老苏暂时倾向于使用 qwen:0.5b ,不仅速度快,答案看起来也更丰满一些

参考文档

open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI)
地址:https://github.com/open-webui/open-webui

ߏ᠈ome | Open WebUI
地址:https://docs.openwebui.com/

选择软路由和openwrt的原因在这里就不再阐述了,相信既然搜到这篇文章的你心中已经有了答案。这里说一下为什么选择esir的高大全版本,在这个版本里几乎集合了你想要的所有功能,基本无需再额外下载配置,所以非常推荐这一个!!! 此教程及其资源适用于x86_64架构,即适用于Intel各芯片如j4125/n4100/n5105等,不适用于arm系列
硬件准备: 对于未购买者,这里建议直接在拼多多购买整机,如倍控的j4125和幻网的N4100,自带4个2.5g网口。经过测试2.5g局域内交换跑满,J4125占用比为39%.性能足够且价格相对较低,j4125倍控带电源价格为560,幻网n4100带电源券减完后为399. 对于软路由物理机内存,准备ddr4 笔记本2g内存条已非常满足。固态若不作为nas使用,仅安装系统可选择24g/32g msata硬盘
资源下载:
1 、esir openwrt高大全版:
百度网盘:https://pan.baidu.com/s/1zbrWEhi_Iiy--raQgAiKNQ?pwd=ll2s 提取码:ll2s esir官方链接:https://drive.google.com/drive/folders/1uRXg_krKHPrQneI3F2GNcSVRoCgkqES
2、工具
百度网盘:https://pan.baidu.com/s/1gTsTIX5VND8fu23x4g7XZg?pwd=bxyb 提取码:bxyb
3、PE制作 大白菜:http://www.winbaicai.com/ 老毛桃:https://www.laomaotao.net/

一、openwrt系统安装

1.1 制作PE盘

  1. 可选择资源下载3中提供的两个链接,大白菜或老毛桃官网下载制作一个PE启动盘。这里我选择的是大白菜,也是我从大学就开始用的PE。这里我选择了在线安装,虽然下载下来只有3m左右,但是在制作PE盘时还会在线下载500m左右。

  1. 插入U盘,打开安装好的PE制作软件。在默认模式->请选择 中选择你要制作为PE盘的u盘。选择好后选择 “一键制作USB启动盘”,等一会就制作好了,是不是很简单。

  1. 拷如openwrt系统镜像和写盘工具:

PE启动盘制作完成后,会出现大白菜U盘 设备,这时将我们的openwrt和镜像写入工具复制进去即可。

openwrt系统镜像可从本文开始资源下载->esir openwrt高大全版 处下载,esir提供了两个版本分别为uefi启动和传统legacy启动。除了很老的主板不支持uefi,大部分主板都支持uefi,所以这里我也是仅拷了uefi镜像到u盘。

镜像写入工具即physdiskwrite,可从本文开始资源下载->工具 中获取。

1.2 写入openwrt系统

  1. 将制作好的PE盘插入到软路由上,点击开机键,选择第一项回车后,随即进入大白菜的PE界面

  1. 删除硬盘所有分区:安装openwrt前,需要将你软路由上要安装openwrt系统的硬盘所有分区都删掉。PE桌面上有一个DiskGenius软件,打开后,对应你要安装的硬盘右击选择“删除所有分区(A)”,然后点击确定即可

  1. openwrt系统写入,点击左下角的Windows图标->所有程序,继续选择最上方的命令提示符

  1. 将之前复制到U盘中的写盘工具拖入命令提示符窗口中,此时会显示类似“U:\physdiskwrite” 在后面继续输入 “空格 -u 空格”,在其后面将我们的openwrt镜像拖入,如下图:

按回车,此时会出现你当前软路由上的硬盘列表,你需要关注的是硬盘的编号和Model。如下图,软路由上我插了两块硬盘,其中镁光 C400编号为0,浦科特PX 256M6S编号为1.

此时,会问你写入那块硬盘。这里我想将openwrt系统写入浦科特PX 256M6S中,故回复其编号1,回车后,继续输入y,如图:

稍等片刻,软路由系统即写入完毕。

二、配置openwrt

2.1 设置密码和IP网关

  1. 设置密码

开机,进入系统后,按回车进入指令输入。输入:

passwd

即可输入密码,输入后会让你再次输入以验证(Linux下输入密码是看不到,所以只管输入即可,输完后按回车)

  1. 设置默认网关

这里对以后我们连接软路由设备的IP进行设定,默认为192.168.5.1。这里可以根据我们自己喜好来设定,比如我修改为192.168.1.1。修改方式如下,继续输入指令:

vi /etc/config/network

回车后,出现以下界面。键盘按i,进入编辑模式。

这里我把可能修改的三处已画出,其中192.168.1.1是我修改的自己设置的软路由的默认网关,你可以自行修改。eth1是我将连接软路由的lan口(连接PC、AP等)设置为编号为eth1的网口,将eth0设置为上级路由/光猫连接的wan口。

修改完成后,按esc退出编辑。键盘同时按shift 和 :按键,再输入wq回车,即保存修改的设定(若要放弃保存退出输入q回车)。

  1. 重启软路由或重启网络

我个人比较喜好重启软路由,继续输入指令:

reboot

稍等一两分钟,即可重启。

  1. 连接网线

此时将我们上级路由/光猫出来的网线连接至我们设定的wan口上(比如,我设定为eth0口)。将我们的电脑连接至lan口(比如,我设定为eth1口)。

  1. 登录openwrt管理界面

在第三步设置默认网关,我设定为192.168.1.1。因此,我在浏览器输入192.168.1.1回车后,就可以看到如下界面,其中密码为步骤1所设定:

2.2 配置网络

  1. 多LAN口桥接

进入openwrt管理界面,选择:网络->接口->LAN->物理设置,将除wan口的其它以太网适配器eth勾选,并在下方点击“保存&应用”,这样就可以拥有多个LAN口了。

  1. WAN口拨号上网

如果软路由存在上级路由,则此处无需进行配置,当前通过网线连接的电脑已经可以上网。

若需软路由进行拨号,则进行如下操作:

进入openwrt管理界面,选择:网络->接口->WAN->基本设置,传输协议更改为PPPoE,点击切换协议,输入用户名和密码,并点击“保存&应用”,稍等片刻即可以拨号上网了。

2.3 配置存储

此步骤为扩增 openwrt内部软件包安装存储、Docker存储以及增加网络存储。由于esir的高大全版本基本已装好所需要的程序,所以此步骤视自己的需求而定。

  1. 进入指令窗口

esir高大全版本在管理界面即提供了指令窗口,选择 系统->TTYD终端。

在OpenWrt输入用户名即root,回车后输入你的密码.得到如下:

  1. 规划分区

输入指令:

lsblk

可以看到,软路由中只有一块硬盘sda,且其当前已有两个分区分别为:sda1和sda2,接下来分别对openwrt overlay、docker和网络存储,扩增内存。扩增方式也很简单就是创建一个新的分区挂载上去。

这里我为overlay扩增为5g内存,docker扩增为10g内存,剩下的全部为网络存储。需注意的是,如果有多块硬盘,可以按照以下步骤多划分几个分区,然后进行挂载到网络存储,当做nas使用。

  1. 创建分区

现在对我的硬盘sda(若存在多块硬盘可以修改下方的sda为其它),进行分区,输入指令:

cfdisk /dev/sda

回车后,可以看到当前此硬盘的分区情况:

其中,绿色字体为当前还为进行分区的空间,共有29.3G。

键盘向下移动至绿色 Free space,下方为New,按回车,会让输入分区的大小:

由于这一个分区是位overlay所划分,因此我这里输入5G,然后回车

继续,为docker划分10G,选择Free space回车后输入10G。

最后,剩下所有空间都交由网络存储,所以只分一个区,在Free space回车后,不修改空间数值,直接回车。

可以看到经过三此分区后,当前的硬盘分区列表,键盘控制左右键至下方的Write,回车后输入y,再回车:

键盘控制左右键至Quit退出。

  1. 格式化和挂载分区

对新创建的三个分区,即sda3/sda4/sda5进行格式化,输入指令:

mkfs.ext4 /dev/sda3

按回车后,即对sda3进行格式化。此后,以此将sda3更改为sda4和sda5,依次格式化。

格式化后,对分区进行挂载,输入指令:

mount /dev/sda3 /mnt/sda3

同样,将上述的sda3均改为sda4和sda5,将三个分区均进行挂载。

  1. 备份overlay中的文件至overlay对应的新建分区:

这里overlay的新分区,即为我设定的sda3,因此,输入指令:

cp -r /overlay/* /mnt/sda3
  1. 设置中进行挂载

进入openwrt管理界面,选择 系统->挂载点,选择下方的挂载点,点击添加。

勾选“启用此挂载点”,UUID选择sda3,挂载点选择“作为外部overlay使用”,点击“保存&应用”;

继续点击添加,勾选“启用此挂载点”,UUID选择sda4,挂载点选择“作为Docker数据分区使用”,点击“保存&应用”;

点击添加,勾选“启用此挂载点”,UUID选择sda5,挂载点选择“–自定义–”,输入/mnt/sda5,点击“保存&应用”。

最后,挂载情况如下:

记得,点击下方的“保存&应用”

为了确保,overlay的挂载情况,避免重启消失,在配置文件再进行修改:

再次进入 系统->TTYD终端,输入指令:

vi /etc/rc/local

键盘按i,进入编辑模式,在exit 0前方一行输入:

mount /dev/sda3 /overlay

修改完成后,键盘按esc退出编辑。键盘同时按 shift和 : ,输入wq回车(若不想保存修改则输入q回车)。

  1. 配置网络存储:

进入openwrt管理界面,选择 网络存储->网络共享,在共享目录中选择要挂载的分区,如我的sda5,名称可以随意,输入完成后点击添加。对于不需要共享的分区可在对应行最后面点击删除。最后,点击“保存&应用”

  1. 重启软路由

选择 系统->重启->执行重启

三、优化及使用

3.1 校园网无法访问

进入openwrt系统管理,选择网络->DHCP/DNS,取消重绑定保护,并点击

“保存&应用”

什么是小书匠 ? 小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖笔记软件,是专注于 markdown 写作的客户端编辑器。它支持多种平台,包括 Windows、Mac、Linux 和 Android,并且还提供了 Docker 自部署版本,方便用户在自己的服务器上部署和管理。
enter description here
在开始折腾前,建议看看官方的视频,会解答你的很多疑问,比如软件是怎么实现的去中心化,又是如何实现分布式的,包括同步的方式等等 如果不想折腾,也可以去先进行在线体验:https://markdown.xiaoshujiang.com

安装

在群晖上以 Docker 方式安装。

小书匠的 Docker 又分为两个版本,天马版(suziwen/pegasus) 和 天马飞天版(suziwen/dragon) ,从功能上来说,天马飞天版 提供了服务器文章管理,比如服务器全文搜索(lucene),因此可能会需要更高一点的性能要求。

如果你只是想要多端同步,天马版 完全满足你的需求。如果想把服务器做为自己的数据中心,并且想要更好的管理文章,可以考虑使用 天马飞天版

这里老苏采用的是 天马飞天版(suziwen/dragon)

在注册表中搜索 dragon ,选择第二个 suziwen/dragon,版本选择 latest

本文写作时, latest 版本对应为 1.5.0

enter description here
在 docker 文件夹中,创建一个新文件夹 xsj,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/xsj/data /opt/couchdb/data 存放数据文件
docker/xsj/indexes /opt/couchdb-lucene/indexes 存放索引文件

enter description here

端口 本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
5083 80

默认暴露了 4 个端口,但官方也没介绍,只知道 5984 是 couchdb 数据库的端口,但官方并不建议直接对外开放 5984 端口
enter description here
所以老苏只留了一个 Web 端口
enter description here
环境

可变
COUCHDB_USER 例如设为 laosu
COUCHDB_PASSWORD 例如设为 password

这两个变量是 couchdb 数据库的用户名及密码,都有默认值
enter description here
可以根据自己的需要进行修改
enter description here
如果你希望页面需要登录才能访问,可以增加 NGINX_USER 和 NGINX_PASSWORD,如果有一个值为空,表示可以直接访问,不需要登录。
命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 xsj 和 子目录
mkdir -p /volume1/docker/xsj/{data,indexes}

# 进入 xsj 目录
cd /volume1/docker/xsj

# 运行容器
docker run -d \
--restart unless-stopped \
--name story-writer \
-p 5083:80 \
-v $(pwd)/data:/opt/couchdb/data \
-v $(pwd)/indexes:/opt/couchdb-lucene/indexes \
-e COUCHDB_USER=laosu \
-e COUCHDB_PASSWORD=password \
suziwen/dragon:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'

services:
story-writer:
image: suziwen/dragon:latest
container_name: story-writer
restart: unless-stopped
ports:
- "5083:80"
volumes:
- ./data:/opt/couchdb/data
- ./indexes:/opt/couchdb-lucene/indexes
environment:
- COUCHDB_USER=laosu
- COUCHDB_PASSWORD=password

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 xsj 和 子目录
mkdir -p /volume1/docker/xsj/{data,indexes}

# 进入 xsj 目录
cd /volume1/docker/xsj

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

enter description here
运行 在浏览器中输入 http://群晖IP:5083 就能看到注册界面
enter description here
纯中文界面,使用起来挺简单的
enter description here
点左上角的 logo 可以进入设置界面
enter description here
客户端同步 客户端下载地址:https://soft.xiaoshujiang.com/download,可以根据需要选择下载渠道和平台
enter description here
以 Windows 平台为例,第一次运行的主界面
飞天版做服务端
enter description here
如果要跟 docker 安装的网页版同步,需要点左上角的图标进入设置界面
enter description here
数据 –> 同步,发现不支持
enter description here
客户端做服务端 Windows 客户端可以作为 珍珑网格服务器
enter description here

但是发现网页端没有 同步 设置
enter description here
第三方数据源
群晖上启用 WebDAV Server 套件
enter description here

如果你不是用的群晖,也可以自己搭建 WebDAV 服务或者直接使用第三方的 WebDAV 服务,例如:坚果云
enter description here
网页端进入 设置 –> 绑定 –> WebDAV 文件系统
enter description here
添加成功后,还需要勾选启用
enter description here
回到主界面,发现多了 webdav 文件系统
enter description here
尝试了不能直接拖拽文章,只能另存
enter description here
另存之后,在 webdav 中就有了
enter description here
在 FileStation 中查看
enter description here
现在开始设置 Windows 客户端,客户端看起来是 electron 开发的,所以操作和网页端是一样的,只是支持的类型更多一些
enter description here
同样需要启动
enter description here
能直接找到文档
enter description here

但是这种模式应该是不能同时编辑的,会存在冲突

遇到不会的功能,可以去看官方的教程

  • 文字版:https://soft.xiaoshujiang.com/docs/tutorial/store/
  • 视频版:https://space.bilibili.com/349933393

参考文档

suziwen/markdownxiaoshujiang: 小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖知识管理笔记软件。
地址:https://github.com/suziwen/markdownxiaoshujiang

小书匠
地址:https://soft.xiaoshujiang.com/

suziwen/dragon - Docker Image | Docker Hub
地址:https://hub.docker.com/r/suziwen/dragon

suziwen/pegasus - Docker Image | Docker Hub
地址:https://hub.docker.com/r/suziwen/pegasus

szw_2018的个人空间-szw_2018个人主页-哔哩哔哩视频
地址:https://space.bilibili.com/349933393

用时间流方式改进知识管理,小书匠萤火虫模式使用说明 | 小书匠
地址:https://soft.xiaoshujiang.com/blog/file_manager/timeline_firefly/

一、脚本思维导图

Debian

二、脚本功能介绍

1、系统初始化配置

脚本名称:system_init.sh
功能:
a.备份初始软件源文件。
b.更换软件源为清华大学镜像源。
c.更新系统。
d.安装初始必备软件(sudo、curl、git、vim、wget、exim4、gnupg、apt-transport-https、ca-certificates、smartmontools)。
e.添加第一个创建的用户(ID:1000)至sudo组。

2、系统管理面板

2.1安装面板Cockpit

脚本名称:install_cockpit.sh
功能:
a.配置45Drives Repo安装脚本(用于安装Navigator、File Sharing、Identities组件)。
b. 安装Cockpit及其附属组件(Navigator、File Sharing、Identities组件)。
c. 配置Cockpit首页展示信息。
d.安装Tuned系统性能调优工具(设置高性能模式、低功耗模式等等)。
e.Cockpit调优,设置自动注销闲置,登陆界面公告,获取外网访问真实IP地址、设置登录屏幕的浏览器标题。
f.设置Cockpit接管网络配置(网络管理工具由network改为NetworkManager)。

2.2安装虚拟机组件

脚本名称:install_virtualization.sh
功能:
a.安装 cockpit-machines 组件(虚拟机组件)。
b.开启IP包转发功能(解决IP分配问题)。

2.3外网访问Cockpit

脚本名称:setup_cockpit_access.sh
功能:
a.设置Cockpit外网访问。
因Cockpit默认禁止内网IP以外地址访问,所以要想从内网以外地址访问,必须设置可信域名至/etc/cockpit/cockpit.conf配置文件中。

2.4删除外网访问配置

脚本名称:remove_cockpit_access.sh
功能:
a.删除Cockpit外网访问配置

3、邮件通知服务

3.1设置发送邮件账户

脚本名称:email_config.sh
功能:
a.实现通过exim4发送邮件通知。
需要提前准备好发送邮件的QQ邮箱账户和授权密码,强调一下,只能是QQ邮箱账户。
授权码获取帮助:https://service.mail.qq.com/detail/0/75

3.2用户登陆发送通知

脚本名称:login_notify.sh
功能:
a.实现系统用户登陆时发送告警通知,避免账户泄漏而未发现。这里需要设置一个接收通知的邮箱账户。

3.2取消用户登陆通知

脚本名称:cancel_login_notify.sh
功能:
a.取消接收用户登陆通知

4、系统安全防护

4.1配置基础安全防护

脚本名称:system_security.sh
功能:
a.限制非sudo组用户使用su命令切换到root的用户。
b.超时自动注销系统用户登陆状态。
c.记录所有用户的登录和操作日志。

4.2安装防火墙服务

脚本名称:install_firewalld.sh
功能:
a.安装firewalld防火墙服务。

4.3安装自动封锁服务

脚本名称:install_fail2ban.sh
功能:
a.安装Fail2ban防暴力攻击服务,3次错误密码登陆系统将被永久封锁IP。
b.设置一个邮箱账户接收被暴力攻击时告警通知。
c.设置防护Cockpit,默认只防护SSH服务。

5、Docker服务

5.1安装Docker

脚本名称:install_docker.sh
功能:
a.设置使用华为镜像源安装Docker
b.安装 docker-ce、ocker-compose-plugin等相关组件
c.添加第一个创建的用户(ID:1000)至docker组

5.2添加镜像地址

脚本名称:dockerhub_mirror.sh
功能:
a.添加Docker镜像加速地址,解决国内无法拉取镜像问题。

5.3安装容器应用

脚本名称:deploy-containers.sh
功能:
a.安装一些常用的docker容器应用。
dockge:一个docker容器管理工具,旨在简化管理多个 Docker Compose 文件的过程。
nginx-ui:简单易用的Nginx管理界面,可以实现SSL证书续签、反向代理等等功能。
portainer:一个轻量级的管理 UI ,可让你轻松管理Docker。此为官方英文原版。
portainer_zh-cn: portainer的中文版本,非官方。
scrutiny: 一款基于web端的硬盘状态查看与监控工具。

5.4备份与恢复

脚本名称:docker_backup_restore.sh
功能:
a.实现备份docker,备份的文件有/var/lib/docker、/etc/docker和/opt/docker三个。
b.恢复已备份的docker文件。

6、安装服务查询

脚本名称:service_checker.sh
功能:
a.查询通过脚本安装的服务访问地址及端口。

99、一键配置HomeNAS

功能:
a.直接自动执行:系统初始配置、安装面板Cockpit、设置发送邮件账户、用户登录发送通知、配置基础安全防护、安装防火墙服务、安装自动封锁服务、安装Docker、添加镜像地址、安装容器应用、安装服务查询脚本。


什么是obsidian?

Obsidian 是一款支持 macOS、Windows、Linux 多平台的 Markdown 编辑器,同时也支持双向链接,带有效果相当惊艳的网状笔记视图,它还支持标签管理、多种插件(例如日记、实时预览、星标、自定义CSS 样式等),是一款功能强大的知识库软件。

简介

Obisidian 最主要的特点是采用纯文本的 Markdown 文件,而且所有文件均存放于本地,可以使用任何形式的网盘/Git 进行同步,并且免费使用,当然如果你想的话,官方也即将提供加密同步服务——$4/月。

title

除此之外官方还提供发布分享服务,当然也是需要付费的,对我而言,Obsidian 的本地功能用于资料的梳理已完全足够了。

我目前同步用的是 Syncthing,关于 Syncthing 可以参考上一篇文章 《Syncthing文件夹同步神器

至于发布,除了一个月发几篇公众号之外,其他都是工作笔记,不存在发布的问题,所以暂时可以不用考虑。

基础

设置库

第一次运行

title

新建

title

首次首界面

title

设置中文

左下角【Setting】->【About】->【Language】,设置为中文

title

relaunch 之后就是中文界面了

title

中文的使用帮助

在 https://github.com/Jackiexiao/obsidian 可以找到中文版的帮助

直接下载 https://github.com/Jackiexiao/obsidian/archive/master.zip

解压后用 obsidian 打开。左下角 打开其他库 或者 Open another vault

title

我是直接将 中文帮助 目录丢到了刚才新建的库 KW 里

但是这样会导致图看不到,所以最好还是把整个文件夹丢进去比较好

title

返回到 obsidian 主界面

title

图谱

选中 插件列表

title

点击圆点

title

搜索

title

尝试最新版

在 Obsidian 的首页 https://obsidian.md/,就能看到和自己平台对应的版本

title

但是如果你想吃螃蟹,参与内部版本的测试,则需要在GitHub才能找到:https://github.com/obsidianmd/obsidian-releases/releases

title

但是我们解压出来是 .asar要怎么样使用呢?以 Mac 为例,选中 Obsidian 的图标右键 –> 显示包内容

title

进入 Contents 目录 –> Resources 目录, 替换掉 obsidian.asar 文件,在替换前记得备份,完成后再看版本

title

进阶

工具本身作为一个 Markdown 编辑器还是很容易上手的,但是想要提高也不太容易,B站有些关于 Obsidian 的视频还是不错的,重要的不是工具,而是方法,Obsidian背后的逻辑是卡片盒笔记法,这需要我们持续不断的实践。

chrome插件

插件本身和 Obsidian 没啥关系,但是对于记笔记这件事却有很大的帮助,当然如果你访问不了 Chrome 应用商店,那我也爱莫能助,还是直接跳过这个部分吧。

TabCopy

TabCopy 能够一键复制网页的标题和网址,这对需要记录一些资料的标题及链接或需要将网页分享给他人查看时非常方便。

title

像我的参考文档中的引用格式

title

下载地址:https://chrome.google.com/webstore/detail/tabcopy/micdllihgoppmejpecmkilggmaagfdmb?utm_source=chrome-ntp-icon

Roam-Highlighter

这应该是为 Roam Research 做的插件,可以方便的将 Web 中的文字高亮并导入到 Roam Researc 中,也支持 Obsidian 标签,也能很方便的导入 Obsidian 。

title

下载地址:https://chrome.google.com/webstore/detail/roam-highlighter/mcoimieglmhdjdoplhpcmifgplkbfibp?utm_source=chrome-ntp-icon

Web Clipper

支持 Notion、GitHub、OneNote、我来等各种笔记,也可以将网页转成 Markdown 格式直接下载到本地,这是个开源的插件。

title

下载地址:https://chrome.google.com/webstore/detail/web-clipper/mhfbofiokmppgdliakminbgdgcmbhbac?utm_source=chrome-ntp-icon

GitHub加速

这个插件和笔记都没关系,只是如果你经常要去下载 Obsidian 内测版的话,有了这个插件可能会快一些吧。

title

下载地址:https://chrome.google.com/webstore/detail/github%E5%8A%A0%E9%80%9F/mfnkflidjnladnkldfonnaicljppahpg?utm_source=chrome-ntp-icon

参考文档

官网
地址:https://obsidian.md/

How I use Obsidian to manage my goals, tasks, notes, and software development knowledge base
地址:https://www.anisanews.com/how-i-use-obsidian-to-manage-my-goals-tasks-notes-and-software-development-knowledge-base/

从卡片链接到大脑联想,基于 Obsidian 的卡片盒笔记法实践 - 少数派
地址:https://sspai.com/post/60802

Chrome扩展程序——TabCopy:一键复制网页标题和网址_Erik_ly的博客-CSDN博客
地址:https://blog.csdn.net/u012318074/article/details/77435724

0%