OpenClash 深入解析:架构与原理 – 系列之一

本系列介绍clash,特别是在openwrt中安装的openclash程序的内在结构。在实际使用过程中,软件里有大量选项,需要了解他们的实际功能。

要真正理解 OpenClash 里的那些繁杂选项,我们确实不能只看表面,而必须深入到它的架构设计数据流向中去。

简而言之,OpenClash 本质上是一个运行在 OpenWrt 上的“管家”(由 Lua 脚本和 Shell 脚本组成),它指挥着一个核心引擎——Clash(由 Go 语言编写的二进制文件)。你在界面上看到的每一个复选框,最终都会转化成 Clash 核心的一行配置,或者是 OpenWrt 防火墙(iptables/nftables)的一条规则。 继续阅读OpenClash 深入解析:架构与原理 – 系列之一

小狼毫设置

2025年9月,火绒发布信息,搜狗输入法检测用户电脑上的杀毒软件设置,之后篡改浏览器启动页。类似的情况发生过太多次了。 我有一台电脑上还有搜狗,是我的错误。马上改正。 都同步改成小狼毫吧:https://rime.im/

安装后,按个人习惯,调整设置

1. 安装五笔拼音

windows设置: https://github.com/rime/plum?tab=readme-ov-file#windows

  1. 下载,解压windows启动工具 https://github.com/rime/plum-windows-bootstrap/archive/master.zip 注意:文件保存在合适位置,后续安装文件会保存在子目录内
  2. 运行 rime-install-bootstrap.bat 程序下载rime-install.bat rime-install-config.bat
  3. 安装输入法:rime-install wubi pinyin-simp 参考:https://github.com/rime/rime-wubi

2. 默认英文模式

C:\Users\{USERNAME}\AppData\Roaming\Rime\build
目录中 XXXXX.schema.yaml文件, 修改如下:

switches:
  - name: ascii_mode
    reset: 1
#1 默认英文,0默认中文

小狼毫设置

2025年9月,火绒发布信息,搜狗输入法检测用户电脑上的杀毒软件设置,之后篡改浏览器启动页。类似的情况发生过太多次了。 我有一台电脑上还有搜狗,是我的错误。马上改正。 都同步改成小狼毫吧:https://rime.im/

安装后,按个人习惯,调整设置

1. 安装五笔拼音

windows设置: https://github.com/rime/plum?tab=readme-ov-file#windows

  1. 下载windows启动工具 https://github.com/rime/plum-windows-bootstrap/archive/master.zip 文件保存在合适位置!
  2. 运行 rime-install-bootstrap.bat 程序下载rime-install.bat rime-install-config.bat
  3. 安装输入法:rime-install wubi pinyin-simp 参考:https://github.com/rime/rime-wubi

2. 默认英文模式

C:\Users\{USERNAME}\AppData\Roaming\Rime\build
目录中 XXXXX.schema.yaml文件, 修改如下:

switches:
  - name: ascii_mode
    reset: 1
#1 默认英文,0默认中文

zerotier server迁移

说明

自建内网穿透工作ZeroTier服务端。需要从原服务器迁移到新的主机上,进行以下操作。我使用ubuntu 22,其他debian类服务器应该也可以。原服务器上直接安装服务程序,不使用docker。

旧服务器

1. 停止服务

  • SSH 登录
  • 停止ztncui,zerotier-one服务
sudo systemctl stop ztncui  
sudo systemctl stop zerotier-one

2. 拷贝数据目录

  • 在旧服务器上备份以下两个服务的配置与数据目录
sudo cp -a /opt/key-networks/ztncui/etc /path/to/backup_location
sudo cp -a /var/lib/zerotier-one /path/to/backup_location

新服务器

1. 安装ZeroTier-One Controller和ztncui

A 安装zerotier

https://www.zerotier.com/download/#linux

curl -s https://install.zerotier.com | sudo bash
curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && 
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

B 安装ztncui。服务器的web控制面板 https://key-networks.com/ztncui/

2. 停止服务

sudo systemctl stop ztncui  
sudo systemctl stop zerotier-one

3. 拷贝数据

  • 使用SCP,rsync,WinSCP等工具拷贝

rsync -rva user@old_host:/path/to/backup_location/etc /opt/key-networks/ztncui/

rsync -rva user@old_host:/path/to/backup_location/zerotier-one /var/lib/

4. 设置用户所有权

  • 查看

ls -l /opt/key-networks/ztncui/etc

  • 用户和群组应该是:ztncui
-rw------- 1 ztncui ztncui 148 Jul 26 09:48 default.passw  
-rw------- 1 ztncui ztncui 435 Jul 26 09:48 passwd  
drwxr-xr-x 2 ztncui ztncui 4096 Jul 26 09:48 storage  
drwxr-x--- 2 ztncui ztncui 4096 Jul 26 09:48 tlsd
  • 查看
ls -l /var/lib/zerotier-one
  • 用户和群组应该是:zerotier-one
-rw------- 1 zerotier-one zerotier-one       24 Jul 26 09:54 authtoken.secre  
drwx------ 4 zerotier-one zerotier-one     4096 Jul 26 09:54 controller.d  
-rw-r--r-- 1 zerotier-one zerotier-one      141 Jul 26 09:54 identity.public  
-rw------- 1 zerotier-one zerotier-one      270 Jul 26 09:54 identity.secret  
drwxr-xr-x 2 zerotier-one zerotier-one     4096 Jul 26 09:54 networks.d  
drwxr-xr-x 2 zerotier-one zerotier-one     4096 Jul 27 12:22 peers.d  
-rw-r--r-- 1 zerotier-one zerotier-one      570 Jul 26 09:54 planet  
-rwxr-xr-x 1 zerotier-one zerotier-one 10892304 Jul 26 09:54 zerotier-cli  
-rwxr-xr-x 1 zerotier-one zerotier-one 10892304 Jul 26 09:54 zerotier-idtool  
-rwxr-xr-x 1 zerotier-one zerotier-one 10892304 Jul 26 09:54 zerotier-one  
-rw-r--r-- 1 zerotier-one zerotier-one        4 Jul 26 09:58 zerotier-one.pid  
-rw-r--r-- 1 zerotier-one zerotier-one        4 Jul 26 09:58 zerotier-one.port  
-rw-r--r-- 1 zerotier-one zerotier-one      276 Jul 26 09:54 zerotier-one.te
  • 如果不是的话,执行以下命令设置

sudo chown -R ztncui:ztncui /opt/key-networks/ztncui/etc sudo chown -R zerotier-one:zerotier-one /var/lib/zerotier-one

5. 设置配置文件,密钥等

  • After ztncui upgrade, migration, or system kernel upgrade (effective after reboot), you need to generate a new secret for the controller and set correct access privileges.
  • 运行以下命令,设置配置文件
sudo sh -c "echo ZT_TOKEN=$(sudo cat /var/lib/zerotier-one/authtoken.secret) > /opt/key-networks/ztncui/.env"  
sudo sh -c "echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env"  
sudo sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env"  
sudo chmod 400 /opt/key-networks/ztncui/.env  
sudo chown ztncui:ztncui /opt/key-networks/ztncui/.env

6. 配置ztncui

  • 打开环境变量
sudo vim /opt/key-networks/ztncui/.env
  • 设置IP地址: HTTPS_HOST= 注:我写入IP造成ztncui无法启动,可以不要这一行
  • 保存退出

7. 重启ztncui和zerotier-one

sudo systemctl start ztncui  
sudo systemctl start zerotier-one

8. 验证迁移

  • 查看运行状态

sudo systemctl status ztncui sudo systemctl status zerotier-one

  • 查看运行日志

sudo journalctl -u ztncui -u zerotier-one -f

  • 注意web端运行在3443,调整防火墙

后续收尾

1. 验证zerotier运行正常

2. 旧服务器停用服务

避免两台服务器同时运行,旧服务器上停用服务

sudo systemctl stop ztncui sudo systemctl stop zerotier-one sudo systemctl disable ztncui sudo systemctl disable zerotier-one

3. 旧服务器清除数据

 

sudo rm -rf /var/lib/zerotier-one

  • 清除数据之后,重新启动服务会生成一个新的服务ID

sudo systemctl enable –now zerotier-one

本文引自https://medium.com/@KarolDanisz/full-guide-migrating-zerotier-controller-ztncui-and-data-to-a-new-host-34abcd30d8fb 授权:Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0).