马卫青的博客

爱思思爱猫爱技术

什么是小书匠 ? 小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖笔记软件,是专注于 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

欢迎使用 {小书匠}(xiaoshujiang)笔记软件,您可以通过 小书匠主按钮>模板 里的模板管理来改变新建文章的内容。


简介

上一篇介绍的 deepseek-free-api ,主要是提供接口服务,允许用户通过网络访问 DeepSeek 模型的能力。这意味着,尽管用户可以在本地容器中运行该 API,但实际的模型推理和处理仍依赖于远程服务器或云服务,用户在使用时需要考虑网络连接的稳定性和访问权限。

文章传送门:深度思考大模型API服务deepseek-free-api

今天我们来研究通过 ollama 完全本地化部署 DeepSeek-R1

什么是 DeepSeek-R1 ?

DeepSeek-R1 是 DeepSeek 的第一代推理模型,在数学、代码和推理任务中,其性能与 OpenAI-o1 相当,包括基于 Llama 和 Qwen 的六个从 DeepSeek-R1 蒸馏出的密集模型。

什么是蒸馏 ?

蒸馏技术(Distillation)是一种模型压缩和优化的方法,主要用于将一个大型、复杂的模型的知识转移到一个较小的模型中。这个过程通常被称为“知识蒸馏”(Knowledge Distillation

其中 671b 是教师模型Teacher Model), 另外的 6 个蒸馏模型为学生模型Student Model

  • 1.5b:全称是 DeepSeek-R1-Distill-Qwen-1.5B,蒸馏模型源自 Qwen-2.5 系列;
  • 7b:是 DeepSeek-R1-Distill-Qwen-7B,蒸馏模型源自 Qwen-2.5 系列;
  • 8b:是 DeepSeek-R1-Distill-Llama-8B,蒸馏模型源自 Llama3.1-8B-Base
  • 14b:是 DeepSeek-R1-Distill-Qwen-14B,蒸馏模型源自 Qwen-2.5 系列;
  • 32b:是 DeepSeek-R1-Distill-Qwen-32B,蒸馏模型源自 Qwen-2.5 系列;
  • 70b:是 DeepSeek-R1-Distill-Llama-70B,蒸馏模型源自 Llama3.3-70B-Instruct

安装

ollama

  1. 首先要安装本地大模型运行框架 ollama ;
  2. 再根据机器的性能,下载对应参数的 DeepSeek-R1 模型;
模型版本 适用场景 内存占用 推理速度
1.5b 轻量级任务 3GB 15 token/s
7b 常规对话 10GB 8 token/s
70b 复杂推理 48GB 2 token/s

需要说明的是,ollama 除了 docker 方式部署外,也支持主流操作系统(WindowsmacOS 或 Linux)的二进制安装包

当然老苏还是更喜欢在 NAS 上用 docker 方式部署

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

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
# 新建文件夹 ollama 和 子目录
mkdir -p /volume1/docker/ollama/data

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

# 运行容器(仅 CPU)
docker run -d \
--restart unless-stopped \
--name ollama \
-p 11434:11434 \
-v $(pwd)/data:/root/.ollama \
ollama/ollama

# 进入容器
docker exec --user root -it ollama /bin/bash

# 下载模型
ollama pull deepseek-r1:1.5b

# 运行模型
ollama run deepseek-r1:1.5b

# 联网会用到的文本嵌入式模型
ollama pull nomic-embed-text

enter description here

WebUI

命令行方式用起来毕竟还是不太方便,虽然支持 ollama 的 WebUI 很多,而且也可以接入 One API 进行统一管理 ,但老苏觉得最佳的交互体验组合应该还是 Open WebUI

文章传送门:适配Ollama的前端界面Open WebUI

不过今天老苏不打算使用 Open WebUI,而是给大家推荐一款浏览器插件 Page Assist

它通过插件形式直接集成到侧边栏,无需复杂配置即可一键调用本地部署的 AI 模型,让您可以从任何网页与您的模型进行交互。

相比传统 WebUIPage Assist 具备一定的技术优势

特性 传统 WebUI Page Assist
部署复杂度 需独立服务部署 浏览器插件即装即用
资源占用 200MB+ 内存 <50MB 内存
上下文感知能力 手动复制粘贴 自动捕获网页选区
多模型切换 需重新加载页面 实时无缝切换

目前支持的浏览器

浏览器 侧边栏 与网页聊天 网页界面
Chrome
Brave
Firefox
Vivaldi
Edge
LibreWolf
Zen Browser
Opera
Arc

运行

设置

在浏览器中打开插件,会看到错误信息 Unable to connect to Ollama
enter description here

这是因为我们并没有在本机安装 ollama,而是安装在 NAS 上,因此不能通过 127.0.0.1 或者 localhost 进行访问。

  1. 单击右上角的 Settings 图标

  1. 单击选项卡 Ollama Settings

  1. 修改 Ollama URL 并点 save 保存

  1. 展开Advance Ollama URL Configuration选项,并启用 Enable or Disable Custom Origin URL
    enter description here

  2. 回到主界面,如果 Ollama URL 地址没问题,应该会看到 `Ollama is running ߦ頊

中文

这一步不是必须的,只是大部分人,也包括老苏,更习惯中文的使用环境

在设置界面 –> General Settings

设置为 简体中文

聊天

现在可以开始聊天了。因为机器性能的缘故,老苏用的是 1.5b 的模型

联网会需要用到文本嵌入模型

老苏使用了推荐的 nomic-embed-text

侧边栏

在任意一个网页,选中 Page Assist 插件点右键菜单,启动 侧边栏

勾选 与当前页面聊天

让模型总结一下页面的内容

参考文档

DeepSeek - 探索未至之境
地址:https://chat.deepseek.com/

deepseek-r1
地址:https://ollama.com/library/deepseek-r1

n4ze3m/page-assist: Use your locally running AI models to assist you in your web browsing
地址:https://github.com/n4ze3m/page-assist

page-assist/docs/connection-issue.md at main · n4ze3m/page-assist
地址:https://github.com/n4ze3m/page-assist/blob/main/docs/connection-issue.md

前言

本文主要介绍如何在群晖NAS安装MySQL与数据库管理软件phpMyAdmin,并结合cpolar内网穿透工具配置公网地址,实现异地远程访问本地部署的phpMyAdmin详细流程。

群晖安装MySQL具有高效、安全、可靠、灵活等优势,可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性,可以保障MySQL数据库的高效运行和数据安全.

而phpMyAdmin是用 PHP 脚本写的 MySQL 数据库的管理软件,可以使用 Web 图形模式直接管理 MySQL 数据库。可以用来创建、修改、删除数据库和数据表;导入和导出整个数据库;还可以完成许多其他的 MySQL 系统管理任务。

1. 安装MySQL

在群晖套件中心,我们搜索mariadb,出来搜索结果后点击安装
enter description here
安装过程中,会提示设置密码,需设置密码
enter description here
设置完成后,点击完成,开始安装
enter description here

安装完成后,我们打开配置界面,开启TCP/IP连接,勾选后点击应用
enter description here

2. 安装phpMyAdmin**

上面我们安装了数据库后,需要修改数据表中的root用户的访问方式,使我们可以远程访问,所以我们需要安装phpMyAdmin来修改相关参数.

运行它我们需要安装PHP7.4版本环境,所以我们在套件中心搜索php 7.4 然后安装.
enter description here
安装完成后,再次在套件中心中搜索phpMyAdmin,然后点击安装
enter description here
安装完成后我们在”已安装”的套件列表中找到phpMyAdmin,打开
enter description here
输入数据库用户名root 和我们上面安装数据库的时候设置的密码,登录
enter description here

3. 修改User表

登录后点击mysql数据库
enter description here
找到user表
enter description here
双击修改表中Host字段下面的localhost值
enter description here
改为%,表示不限制ip访问,这样修改后就可以远程mysql了
enter description here
然后在群晖套件中心中找到安装的mariadb,停止,然后重新启动,让我们修改的配置生效
enter description here

4. 本地测试连接MySQL

打开数据库连接工具,输入群晖的局域网ip地址,输入数据库用户名和密码,点击测试连接,出现successful!表示成功!
enter description here
5. 安装cpolar内网穿透
cpolar群晖套件下载地址:https://www.cpolar.com/synology-cpolar-suite,下载相应版本的套件
enter description here
打开套件中心,点击右上角的手动安装按钮。
enter description here
选择我们本地下载好的cpolar安装包。
enter description here
点击下一步按钮
enter description here
点击同意按钮
enter description here
之后,一路点击下一步按钮安装完成即可。
enter description here
在外部浏览器,我们通过群晖的局域网ip地址9200端口,cpolar的Web管理界面,默认端口为9200,输入cpolar邮箱账号与密码进行登录
enter description here
6. 配置MySQL公网访问地址
登录成功后,点击左侧仪表盘的隧道管理——创建隧道:

隧道名称:可自定义,注意不要与已有的隧道名称重复
协议:tcp
本地地址:3306
端口类型:临时随机TCP端口
地区:选择China VIP
点击创建
enter description here
然后打开在线隧道列表,查看tcp协议的mysql公网连接地址.
enter description here
接下来我们使用公网地址连接,打开mysql连接工具,输入公网地址和对应的公网端口,同时输入用户名和密码,点击测试连接,出现连接成功表示ok.
enter description here

7. 配置MySQL固定公网地址

要注意的是,以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址。

cpolar官网: https://www.cpolar.com

登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为MySQL保留一个固定tcp地址:

地区:选择China 描述:即备注,可自定义 点击保留
enter description here
地址保留成功后,系统会生成相应的固定公网地址,将其复制下来
enter description here
进入cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的tcp隧道,点击右侧的编辑
enter description here
修改隧道信息,将保留成功的固定tcp地址配置到隧道中

端口类型:修改为固定tcp端口
预留的tcp地址:填写官网保留成功的地址,
点击更新
enter description here
隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。
enter description here
上面我们固定了mysql连接地址,现在我们使用固定的公网地址连接测试,打开mysql连接工具,输入公网地址和对应的公网端口,同时输入用户名和密码,点击测试连接,出现 successful! 表示ok,这样一个在群晖NAS的远程固定的mysql连接地址就设置好了.
enter description here

8. 配置phpMyAdmin公网地址

同理,如果我们要实现远程访问phpMyAdmin的web页面对本地数据库进行管理,也可以为它配置公网地址:

首先,回到cpolar的Web管理界面(群晖的局域网ip地址加9200端口)

点击左侧仪表盘的隧道管理——创建隧道:

隧道名称:可自定义,注意不要与已有的隧道名称重复(本例使用的是 phpmad)
协议:http
本地地址:80
域名类型:随机域名
地区:选择China VIP
点击创建
enter description here
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网地址,然后复制地址
enter description here
打开浏览器,使用上面任意一个 公网地址/phpmyadmin 如: https://476b7e33.r21.vip.cpolar.cn/phpmyadmin

然后访问,即可看到登录界面:
enter description here
使用cpolar内网穿透生成的公网地址,成功实现了远程访问phpmyadmin的web页面对本地数据库进行管理。

9. 配置phpmyadmin固定公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称:(本例使用的是 myphpmad 大家可以自定义)
enter description here
保留成功后复制保留的二级子域名地址 myphpmad

回到cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的phpmad隧道,点击右侧的编辑:
enter description here
修改隧道信息,将保留成功的二级子域名配置到隧道中

域名类型:选择二级子域名
Sub Domain:填写保留成功的二级子域名 myphpmad
点击更新
enter description here
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了保留过的二级子域名名称,将其复制下来:
enter description here

然后使用固定https地址+/phpmyadmin打开浏览器访问,同样访问成功,且域名不会发生变化:

https://myphpmad.vip.cpolar.cn/phpmyadmin/
enter description here
enter description here

以上就是如何在群晖NAS安装MySQL与数据库管理工具phpMyAdmin,并使用cpolar内网穿透工具为其分别配置固定公网TCP地址与http地址,实现随时随地远程连接本地局域网内MySQL与使用phpMyAdmin管理数据库的全部流程。感谢您的观看,有任何问题欢迎留言交流。

前言

enter description here
说到远程控制,自己经常使用的是向日葵、Todesk、TeamViewer还有无界趣连。

但是最近因为个人某些原因的需求,需要用到电脑控制手机!但是之前我用的远控软件服务好像都不行,向日葵的话好像需要付费还是什么大致忘记了!

所以在网上找到一个开源的项目:RustDesk

比起其它的远程控制软件,RustDesk是完全开源的且可以自行搭建个人的服务器。通过个人搭建的服务地址,可以远程控制自己的电脑/手机/电视等等…

所以今天就来搭建一下试试效果!

介绍

enter description here

RustDesk 是一个功能齐全的开源远程控制替代方案,以最少的配置实现自托管和安全。

RustDesk 可以作为向日葵、TeamViewer 等远程桌面服务的替代品,让您完全掌控数据,避免了安全隐患。相较于由第三方公司运营的远程桌面软件,如向日葵和 TeamViewer,RustDesk 提供了更为安全和自主的选择。对于普通用户而言,使用这些第三方服务如果不付费,很难享受到高质量的服务。而且,一旦这些公司遭遇倒闭、黑客攻击,或内部员工滥用职权,我们的桌面数据安全将面临威胁。使用 RustDesk 可以避免这些问题。

此外,厂商共享公共服务器的另一个缺点是网络波动大,承诺的网速往往难以实现,无论是付费还是免费版本。然而,自建服务器则没有这种问题,您可以独享带宽,确保网络速度稳定和迅速。

特征

RustDesk 是一款功能齐全的远程桌面应用程序。

适用于 Windows、macOS、Linux、iOS、Android 和 Web。

支持 VP8 / VP9 / AV1 软件编解码器和 H264 / H265 硬件编解码器。

拥有自己的数据,轻松在您的基础设施上设置自托管解决方案。

基于 NaCl 的端到端加密的 P2P 连接。

Windows 无需管理权限或安装,可以根据需要在本地或远程提升权限。

官方首页:https://rustdesk.com/

官方文档:https://rustdesk.com/docs/zh-cn/

GitHub原项目地址(感谢作者的付出):https://github.com/rustdesk/rustdesk

搭建部署

进入群晖NAS后台,打开 File station 文件管理器,新建文件夹 RustDesk 。
enter description here
之后再在 RustDesk 文件夹下新建 data 文件夹用于存储项目文件。
enter description here
之后打开 Container Manager 点击项目,新建项目 rustdesk-server。

复制以下代码使用 docker-compose.yml 部署

注意:下面命令的 192.168.31.4 是本地NAS的IP,构建完成之后可以把他修改成你的外网访问域名,这样在外面可以随时控制设备。

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
29
30
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:1.1.10-3 # please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
command: hbbs -r 192.168.31.4:21117 -k _
# 192.168.31.4 修改成你的NAS.IP 或者 NAS外网域名。
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
restart: always

hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:1.1.10-3 # please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
command: hbbr -k _
volumes:
- ./data:/root
network_mode: host
restart: always

# Because using docker host mode
# Just in case you forgot the ports:
# 21114 TCP for web console, only available in Pro version
# 21115 TCP for NAT type test
# 21116 TCP TCP hole punching
# 21116 UDP heartbeat/ID server
# 21117 TCP relay
# 21118/21119 TCP for web socket if you want to run web client

enter description here
设置好之后直接下一步,Web Station 不需要设置 直接下一步创建。

等待镜像拉取完成,项目构建完成就可以了!
enter description here
回到项目查看,项目已经成功运行了!
enter description here
最后,我是需要再外网链接家里设备的。

所以我会把之前构建时候填写的内网IP修改成我的外网域名。

(你们也可以构建的时候直接使用域名,我是怕出错所以直接使用的NAS的IP)

停止项目 - YAML配置 - 修改IP成域名 - 保存 - 构建并启动 - 确定

enter description here
遇到的问题
这里说一下遇到的问题,第一次拉取镜像部署的时候出现项目启动不起来。

日志显示以下信息,提示邮件注册什么的一直启动不起来。

1
Registered email required (-m option).derr Please pay and register on https://rustdesk.com/server.

enter description here
最后查到到原因,解决办法就是拉取镜像的时候版本问题,官方文档显示使用 rustdesk-server:latest 拉取最新文档,但是结果拉去的并不是最新的,所以要解决这个问题,就是手动吧版本号修改为 rustdesk-server:1.1.10-3 重新拉取部署一下就OK了!

现在最新版本是 rustdesk-server:1.1.11-1 修改成这个版本也行!

提取秘钥

回到群晖后台,打开 File station 进入 RustDesk 下的 data 目录。

找到 【id_ed25519.pub】文件,并且下载到本地。
enter description here
下载完成后我们使用记事本打开文件,查看里面内容。
这一串字符串就是我们需要用到的密钥!
enter description here

客户端

下载客户端

我们打开 RustDesk 官方网站 下载客户端。

官网:https://rustdesk.com/zh/

大家自行选择自己对应版本下载即可。
enter description here
我这就以macOS版本做演示。

下载完后直接拖拽安装一下。
enter description here

系统配置权限

安装后打开 RustDesk 这可以看到这界面大家都很熟悉吧,和大部分的远控软件界面都是大同小异。
enter description here
开始我们给rusrdesk配置一下权限。
enter description here
按照提示我们给予配置录屏、声音、控制、开机启动权限。
enter description here
enter description here
enter description here
录屏、声音、控制权限都配置好之后,之后提示你需要重启打开RustDesk。

客户端设置

点击 RustDesk 的ID旁边的三个点…进入设置界面。
enter description here
点击【网络】之后点击解锁网络设置,输入一下密码解锁就可以了!
enter description here
然后添加你的服务器地址(域名:端口号)和密钥Key,完成后点击应用。
enter description here
设置好之后返回主页,查看最下面如果显示【就绪】就表示已经连接成功了,如果出现错误就表示之前步骤没设置好。
enter description here

端口映射

需要映射的端口:

TCP:21115, 21116, 21117

UDP:21116(关键:这个一定要别漏了否则外网访问不了)

21118和21119是网页客户端的,如果不需要用网页端就可以不映射
enter description here

连接测试

我直接在我另一台Windows笔记本上安装了RustDesk,远控成功!
enter description here
远控安卓手机(外网5G网络访问成功)
enter description here

结束

Rustdesk 确实非常实用,特别是它可以兼容各种手机客户端。无论是外出时需要用手机控制电脑,还是出差时不想带笔记本可以用平板进行简单操作,甚至是父母的手机出现问题时可以远程控制解决,都能轻松实现。

此外,Rustdesk 还支持无限设备连接,服务器可以部署在本地,并且完全免费,不用担心费用或带宽问题。

希望本次教程对大家有所帮助!创作不易希望大家能多多转发收藏本站!感谢感谢~~!

我是阿狸鹿丫,一个业余爱瞎折腾的数码软件爱好者,技术小白。

这是一个强大的本地托管的基于 Web 的 PDF 操作工具,使用 docker,允许您对 PDF 文件执行各种操作,例如拆分、合并、转换、重组、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序最初是 100% ChatGPT 制作的应用程序,现已发展到包含广泛的功能来满足您的所有 PDF 需求。

Stirling PDF 不会为任何记录保存或跟踪进行呼出。

所有文件和 PDF 要么仅存在于客户端,要么仅在任务执行期间驻留在服务器内存中,要么临时驻留在仅用于执行任务的文件中。届时,用户下载的任何文件都将从服务器中删除。
1、镜像 frooodle/s-pdf:latest
2、安装 2.1、基础设置
enter description here
重启策略:容器退出时总是重启容器。
2.2、网络
enter description here
网络选择桥接即可。

enter description here
装载路径/usr/share/tessdata:数据文件夹;
装载路径/logs:日志文件夹;
装载路径/configs:配置文件夹。
2.4、端口设置
enter description here

  • 容器端口8080固定,本地端口任意。
  • 2.5、环境变量
变量名称 变量值 变量描述 说明
TZ Asia/Shanghai 设置时区 建议设置
SYSTEM_ROOTURIPATH /pdf-app 设置URI子目录,设置后访问路径变为:localhost:8080/pdf-app 如需运行在子目录下则可设置
SYSTEM_CONNECTIONTIMEOUTMINUTES 60 系统连接超时时间,单位:分钟 可以设置较长超时时间避免下载超时
DOCKER_ENABLE_SECURITY true/false docker下载安全jar(auth登录需要true 默认false即可,如需安全或启用登录能力则必须设置为true
SECURITY_ENABLE_LOGIN true/false 启用登录 设置为true则启用登录默认账号:admin默认密码:stirling
SECURITY_INITIALLOGIN_USERNAME admin 登录用户名 若不想使用默认账户,则可设置此变量自定义
SECURITY_INITIALLOGIN_PASSWORD stirling 登录密码 若不想使用默认密码,则可设置此变量自定义

引言

最近刷抖音老刷到男人一旦过了25就只能聊聊天了,然后对于我们这种玩NAS的理工男评价更是不好!!!拜托,那只是你们不懂理工男的浪漫罢了,所以熊猫决定为咱们玩NAS的正名,刚好马上3.8妇女节了,推荐一款拿去讨好老婆的项目—like-girl-v520。
enter description here
这是一款用于记录情侣故事的工具,或者你可以理解为它是一款情侣博客,类似于QQ的情侣空间一样的东西。通过它你可以记录文章,记录你和他(她)之间的日常点滴,也可以一起上传生活相册,将定格的瞬间上传到站点展示,还可以一起来一个情侣计划,一起去约定你们的共同目标与完成它,甚至还开放了留言板能让你们收获到来自朋友们的祝福。(项目介绍:https://blog.kikiw.cn/index.php/archives/52/) like-girl-v520有开源版和,实际上开源版本就非常不错了,足够使用。付费版在开源版的基础上提供了小程序、程序源码、技术支持以及自动更新等服务,售价298.88。你花298买不到一个像样的礼物,但能获得一个你们共同经营的小站,这不比送花有心意?(当然,购买还是要酌情购买)

部署机

这次要用到的为绿联的DXP6800 Pro,主要是绿联现在提供的Docker管理方式我个人非常喜欢,项目能直接创建docker-compose堆栈项目,容器也支持一键更新部署,再加上全功能的手机端Docker管理和每周好几篇的官方教程更新,不得不说绿联现在的服务做的非常不错,毕竟作为NAS持续运营是根本。
enter description here
除了更方便的Docker管理,DXP6800 Pro目前的两个雷电口也能通讯了,通过它其实也能为NAS扩展出更多有趣的玩法,例如不拆机使用它自带的Pcle,通过雷电扩展坞直插显卡、网卡、扩展网口以及USB和SATA口等等,如此一来DXP6800 Pro的上限会变得非常高。
enter description here

项目部署

like-girl-v520作者自己制作好了Docker镜像,你可以直接通过网站https://pan.quark.cn/s/6abd997c3a04去下载已经打包好的镜像,其中提供了Docker-compose代码文件、有数据的数据库文件以及无数据的数据库文件,甚至还打包好了镜像直接导入NAS即可。
enter description here
将网盘文件全部下载并保存到我们的绿联NAS中,打开Docker界面点击镜像-本地镜像,选择左上角的添加镜像,选择从NAS导入,选择我们刚刚下载的打包好的镜像,如果提示格式不支持可以直接修改压缩文件的后缀名,例如tar。
enter description here
导入之后我们来到项目界面,创建新项目中导入我们下载的堆栈文件,给项目命好名,这里需要检查代码的映射路径以及端口,确保端口和路径无误,这需要根据你自身的NAS环境来检查。
enter description here
如果没什么问题,点击立即部署之后能看到likegirl-app和likegirl-db两个容器成功运行,不过这时候我们还不能直接通过端口打开项目,因为这时候数据库还没有完成初始化。
enter description here
我们切到容器这一栏,找到likegirl-db容器并打开控制台,在这里点击终端,命令默认的/bin/bash即可。
enter description here
连接之后我们输入命令mysql -u likegirl -p likegirl先进入数据库,这里是默认的数据库和用户名,输入后会要求你输入密码,默认无修改的情况下为likegirl。
enter description here
随后再输入source /var/all.sql/AllData.sql; 导入数据库,等待执行结束之后输入quit;即可退出。(熊猫这里用的是有测试数据的数据库AllData.sql)
enter description here
一切设置完之后这时候通过绿联IP:端口号就能访问项目的主页了。

enter description here
项目使用 通过输入http://<nas-ip>:1314/admin/login.php我们可以打开项目的后台登录界面,默认的用户名密码为admin/loveww
enter description here
后台首页会显示当前站点的一些情况,例如留言祝福数量、点点滴滴记录数、恋爱清单。通过基本设置界面,我们可以设置我们的站点标题、LOGO、展示文案以及男女主的名字、QQ以及恋爱时间等等。
enter description here
项目的其他选项提供了更多页面的设置功能,如文章故事、情侣相册、留言功能,这里相册会需要用到图床,个人比较推荐兰空图床,至于每一项的具体功能设置和展示就不一一介绍了,大家可以部署之后自行摸索体验。

写在最后

不得不说,很多时候理工男并不是不懂浪漫,而是会通过自己独有的方式去表达爱意,而通常这些方式会更用心。遇到理工男就嫁了吧,毕竟他们的浪漫其他人可做不出来!

最后目前绿联全系都有参加活动,DXP4800活动价2199,叠加1500-220元优惠卷、88vip-60优惠卷以及国补10%,到手价1727.1元,算是除开双十一到现在最低价了,有需求的可以入手哦!

以上便是本期的全部内容了,如果你觉得还算有趣或者对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!

欢迎使用 {小书匠}(xiaoshujiang)笔记软件,您可以通过 小书匠主按钮>模板 里的模板管理来改变新建文章的内容。


什么是 Ollama ?

Ollama 是一个简明易用的本地大模型运行框架。能在本地启动并运行 Llama 2MistralGemma 及其他大语言模型。

和老苏之前介绍的 LocalAI 比较类似,但是加载模型更容易,感觉上比较像 docker,也采用了 tags 来区分模型的不同版本,尤其是 CLI 也采用了 pullrmrun 等等;

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

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 ollama ,选择第一个 ollama/ollama,版本选择 latest

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

enter description here

在 docker 文件夹中,创建一个新文件夹 ollama,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/ollama/data /root/.ollama 存放模型数据

端口

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

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

容器名称

因为后面有进入容器的操作,所以这里规范下命名,就叫 ollama 吧

命令行安装

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

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

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

# 运行容器(仅 CPU)
docker run -d \
--restart unless-stopped \
--name ollama \
-p 11434:11434 \
-v $(pwd)/data:/root/.ollama \
ollama/ollama

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

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

services:
ollama:
image: ollama/ollama
container_name: ollama
restart: unless-stopped
ports:
- 11434:11434
volumes:
- ./data:/root/.ollama

然后执行下面的命令

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

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

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

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:11434 ,如果看到 Ollama is running,表示服务启动正常

下载模型

官方提供了一个模型库,地址:https://ollama.com/library

你可以根据需要进行搜索,例如搜索 llama2

选中 llama2 ,你会看到关于这个模型的简介

进入 tags 查看需要的版本

关于不同参数模型文件所需要的内存,之前提过,这里简单再说一下

  • 7b:至少需要 8GB 内存;
  • 13b:至少需要 16GB 内存;
  • 33b:至少需要 32GB 内存;

老苏接下来尝试了 llama2:7b 和 llama2-chinese:7b,从介绍看,后者采用了中文指令集来进行微调,使其具备较强的中文对话能力。目前这个中文微调参数模型总共发布了 7B13B 两种参数大小。

模型下载需进入容器内,不熟悉命令行的,可以进入 终端机 操作

执行下面的命令

1
2
3
4
5
# 下载模型
ollama pull llama2:7b

#下载模型(中文微调参数模型)
ollama pull llama2-chinese:7b

enter description here
老苏个人更喜欢用 SSH 客户端的命令行,多一步进入容器的命令,下载是一样的

1
2
3
4
5
6
7
8
# 进入容器
docker exec --user root -it ollama /bin/bash

# 下载模型
ollama pull llama2:7b

#下载模型(中文微调参数模型)
ollama pull llama2-chinese:7b

开始下载

下载完成

开始提问

接下里就可以提问了,比如: 为什么天空是蓝色的

命令行

假设已经进入容器或者尚未退出容器,可以直接运行下面的命令

1
2
3
4
# 运行模型
ollama run llama2-chinese:7b

# 填写问题

因网络中断,答案并没有生成完全,就这几个字已经花了近 2 小时

curl

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

1
2
3
4
curl -X POST http://192.168.0.197:11434/api/generate -d '{
"model": "llama2-chinese:7b",
"prompt": "你好吗"
}'

其中:

  • IP 需要改为你自己的主机 IP
  • model 后面是我们要使用的模型文件;
  • prompt 后面就是我们提的问题;

当然你还可以用 API 工具,不过可能还是 Web UI 的界面用起来更好,暂时找到了 Open WebUI ,有时间再找找

小结

跑大模型,需要的硬件资源是越高越好的。老苏的小机器既不支持 GPU,内存也仅仅够了最低要求的 8GB,所以每个问题回答的时间,都慢到让你怀疑人生。

但是,这并不能阻止我们追求知识和进行探索的热情。

参考文档

ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.
地址:https://github.com/ollama/ollama

Ollama
地址:https://ollama.com/

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

library
地址:https://ollama.com/library

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

外网访问家庭局域网方案

随着NAS、软路由的普及,越来越多的人产生了外网访问家庭网络的需求。当前访问家庭网络的方案主要分为三类:

1.公网ip

这一类当然是最方便的,也是花费较少的方案。可以通过ip地址直接访问家庭网络,即使是变动的公网ip,也只需购买域名配置DDNS即可。但随着政策的加严,获取ipv4公网ip的渠道越来越少,之前寄托了很多希望的ipv6现在看来也存在诸多问题。

2.隧道穿透

这一类是通过一台具有公网ip的机器(通常是一台云服务器)作为中转,在这台机器与家庭局域网内的机器建立隧道,借由公网下的服务器作为跳板访问家庭网络。这一类服务有自建的,如Frp、NPS等,也有商家提供服务的,如SakuraFrp、DDNSTO等。

3.虚拟局域网

这一类更适合私人或小团体使用,其原理是建立一个虚拟的广域网,并为加入这个虚拟网络的设备分配一个虚拟的ip,并在这个广域网内通过虚拟ip互访。最知名的代表就是Zerotier,也是我今天所要介绍的 。

zerotier的优缺点

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 。 Zerotier的优点在于其部署十分简便,只需在zerotier官网注册登陆并创建网络,在自己的设备安装客户端加入网络后,zerotier就会自动分配虚拟ip,无需了解ip、端口等配置。 但很可惜,zerotier的根服务器都在国外,我们到zerotier服务器需要经过层层的NAT中转,这导致我们通过zerotier网络互访时不仅存在较大的延迟,而且在网络高峰段非常容易断连。 在之前,对于这种情况,我们的解决方案是在国内的服务器上搭建一个zerotier的moon中转节点,作为zerotier根服务器的代理加速,但加速效果有好有坏(有的人说速度很快,但我的中转就很慢),而且这种方式的一个问题就是,安卓端的手机无法加入moon节点。这个问题很快就被解决了,kaaass大佬做了一个ZerotierFix的app,相比于官方增加了可以加入moon节点的功能。

Zerotier-planet

虽然大佬的app解决了安卓客户端不能加入moon节点的问题,但moon节点的搭建以及客户端的配置仍然不是一个比较简单的过程,又要配置服务器端又要配置客户端,zerotier便捷性的优点就体现不出来了。 前段时间,小众软件推荐的一分钟自建 zerotier-planet 行星服务器吸引了我,简单浏览了一下,发现过程是真的很简单。jonnyan404大佬的这个项目是基于另一个项目ztncui优化而来,简单而言就是用docker部署一个独立的zerotier虚拟网络。部署这个项目的全部准备只有在你的公网服务器上安装好docker和docker-compose。
jonnyan404大佬已经写好了zerotier-planet的docker配置脚本,我们只需登陆服务器执行以下几个命令
1、从gitee仓库下载docker配置文件
git clone https://gitee.com/Jonnyan404/zerotier-planet
2、 进入下载的项目文件夹 cd zerotier-planet
3、 docker安装zerotier-planet,如果服务器是Ubuntu系统,记得命令前加上 sudo docker-compose up -d
4、 然后就可以访问 http://ip:4000 访问web界面了(记得防火墙开放4000端口)
默认用户名:admin 默认密码:mrdoc.fun
建议登陆后立即创建新用户,并切换到新用户登陆,删除默认的admin账户,以保证安全 接下来的操作与官方版的zerotier没有太大区别了,这里新建一个虚拟网络test,ID是 119c41e47a8a0433。
zerotier-planet
enter description here
Private: 设置对设备的访问控制权,默认勾选上
Private
enter description here
Easy setup: 设置虚拟广域网段,可以自己设置
Easy setup
enter description here
Routes: 设置路由,一般就只有一个默认的路由(也就是刚刚设置的网段),稍后介绍它的扩展用法
Routes
enter description here
Assignment Pools: ip地址分配,你可以指定该网段下虚拟ip可供分配的范围
Assignment Pools
enter description here
接下来,只要在自己的设备上安装zerotier的客户端,然后通过ID加入网络,就可以在该页面刷新出设备列表了,为新设备勾选Authorized即可分配虚拟的ip地址了。
ip分配
enter description here
基于zerotier网络可以实现许多功能,例如windows端的远程桌面连接,ssh连接linux服务器,访问个人服务器上的博客

应用扩展-允许openwrt客户端自动NAT

尽管zerotier已经支持相当多的平台了,但仍有一些设备不受支持,比如我升级到DSM 7.0的小猫盘。为了让这些无法安装zerotier客户端的设备也加入到这个虚拟网络中,我们需要一个支持zerotier的openwrt路由器。以我的R2S为例

zerotier设置

1、 首先将R2S也加入虚拟网络,在openwrt后台管理中填入虚拟网络ID,并允许客户端NAT。
R2S-Openwrt

enter description here

2、设置虚拟网络路由

R2S-虚拟ip
enter description here

我的R2S分到的虚拟ip为10.81.33.114,在Routes我们再新建一个路由

新建路由
enter description here
我这里已经设置过了,Target应根据路由器的网段来决定,比如我的R2S局域网访问地址为192.168.2.1,则Target则应填192.168.2.0/24,Gateway则填R2S分配到的虚拟ip,这里是10.81.33.114。

openwrt设置

除了zerotier上的设置,还要对openwrt进行设置,使得流量可以通过虚拟广域网传播
新建zerotier接口
enter description here
我们在openwrt 网络>接口 里新增一个zerotier接口,系统会为其分配一个zt开头的物理接口,我的是zt6xtbbu66。对该接口进行设置,传输协议选择静态地址,ipv4地址填分配的虚拟ip,ipv4子网掩码是默认的225.225.225.0,在防火墙设置中创建/分配防火墙区域选择lan
接着在 网络>防火墙 里自定义防火墙规则,增加以下规则
ptables -I FORWARD -i zt6xtbbu66 -j ACCEPT
iptables -I FORWARD -o zt6xtbbu66 -j ACCEPT
iptables -t nat -I POSTROUTING -o zt6xtbbu66 -j MASQUERADE
记得将zt6xtbbu66换成你自己对应的物理接口,重启防火墙
测试
这个时候,R2S下的设备应当已经加入zerotier广域网了,以我的小猫盘为例,在局域网下它的访问地址为192.168.2.147:5000,在安卓手机上通过ZerotierOne连接zerotier广域网,并断开WiFi,在浏览器中访问192.168.2.147:5000
小猫盘
enter description here
访问成功,表明小猫盘已经通过R2S接入到局域网了

一分钟自建zerotier-plant

私有部署zeroteir-planet服务
基于 ztncui 整理成 docker-compose.yml 文件.

特别感谢 https://github.com/Jonnyan404/zerotier-planet/issues/11#issuecomment-1059961262 这个issue中各位用户的贡献,基于此issue中 @jqtmviyu 的步骤和kaaass的 mkmoonworld 制作成目前的patch(集成planet和moon)。

必要条件

  • 具有公网ip的服务器
  • 安装 docker
  • 安装 docker-compose
  • 防火墙开放TCP端口 4000/9993/3180 和UDP端口 9993

用法

1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/Jonnyan404/zerotier-planet
OR
git clone https://gitee.com/Jonnyan404/zerotier-planet

cd zerotier-planet
docker-compose up -d
# 以下步骤为创建planet和moon
docker cp mkmoonworld-x86_64 ztncui:/tmp
docker cp patch.sh ztncui:/tmp
docker exec -it ztncui bash /tmp/patch.sh
docker restart ztncui

然后浏览器访问 http://ip:4000 打开web控制台界面。

浏览器访问 http://ip:3180 打开planet和moon文件下载页面(亦可在项目根目录的./ztncui/etc/myfs/里获取)。

  • 用户名:admin
  • 密码:mrdoc.fun
    note: 如果未指定密码,可执行docker exec -it ztncui cat /var/log/docker-ztncui.log|grep Password获取密码.

客户端主要为 Windows, Mac,Linux, Android

zerotier官网: https://www.zerotier.com/download/

  • Windows 配置

    1. 首先去 zerotier 官网下载一个 zerotier 客户端
    2. 将 planet 文件覆盖粘贴到 C:\ProgramData\ZeroTier\One 中 (这个目录是个隐藏目录,需要运允许查看隐藏目录才行)
    3. Win+S 搜索 服务

enter description here
找到 ZeroTier One,并且重启服务
enter description here

  1. 使用管理员身份打开 PowerShell
    执行如下命令,看到 join ok 字样就成功了

 复制

1
2
3
PS C:\Windows\system32> zerotier-cli.bat join 网络id(就是在网页里面创建的那个网络)
200 join OK
PS C:\Windows\system32>

登录管理后台可以看到有个个新的客户端,勾选 Authorized 就行
enter description here

  • 执行如下命令:

     复制

    1
    2
    3
    4
    5
    6
    PS C:\Windows\system32> zerotier-cli.bat peers
    200 peers
    <ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
    fcbaeb9b6c 1.8.7 PLANET 52 DIRECT 16 8994 1.1.1.1/9993
    fe92971aad 1.8.7 LEAF 14 DIRECT -1 4150 2.2.2.2/9993
    PS C:\Windows\system32>

    可以看到有一个 PLANTET 和 LEAF 角色,连接方式均为 DIRECT(直连)
    到这里就加入网络成功了

  • Linux 客户端

    1. 安装 linux 客户端软件
    2. 进入目录 /var/lib/zerotier-one
    3. 替换目录下的 planet 文件
    4. 重启 zerotier-one 服务 (service zerotier-one restart)
    5. 执行 zerotier-cli join 网络id 加入网络
    6. 管理后台同意加入请求
    7. 执行 zerotier-cli peers 可以看到 planet 角色
  • 安卓客户端配置

  • ZerotierFix
    Zerotier 非官方安卓客户端发布:支持自建 Moon 节点 - V2EX

  • Mac 客户端 (参考 https://github.com/Jonnyan404/zerotier-planet/issues/35)

    1. 官网下载一个 zerotier 客户端
    2. 替换 /Library/Application Support/ZeroTier/One 目录下的 planet 文件
    3. 重启 zerotier-one 服务
    4. 命令行执行 zerotier-cli join 网络id
    5. 管理后台同意加入请求
    6. 执行 zerotier-cli peers 可以看到 planet 角色

私有 zerotier-planet 的优势:

  • 解除官方 25 的设备连接数限制
  • 提升手机客户端连接的稳定性

Reference Link

  • zerotier的planet服务器(根服务器)的搭建踩坑记
  • https://www.mrdoc.fun/doc/443/
  • https://github.com/key-networks/ztncui-aio
0%