<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Popular Topics]]></title><description><![CDATA[A list of topics that are sorted by post count]]></description><link>https://blog.clouldon.com/popular/alltime</link><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 18:39:51 GMT</lastBuildDate><atom:link href="https://blog.clouldon.com/popular/alltime.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Oct 2025 06:27:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[作为生活本身的哲学基础的操练]]></title><description><![CDATA[图书目录，索引，知道区块的分布，导览
]]></description><link>https://blog.clouldon.com/topic/6/作为生活本身的哲学基础的操练</link><guid isPermaLink="true">https://blog.clouldon.com/topic/6/作为生活本身的哲学基础的操练</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Fri, 31 Oct 2025 06:27:42 GMT</pubDate></item><item><title><![CDATA[哈基 项目推荐]]></title><description><![CDATA[@四折光曲 基于WireGuard
]]></description><link>https://blog.clouldon.com/topic/9/哈基-项目推荐</link><guid isPermaLink="true">https://blog.clouldon.com/topic/9/哈基-项目推荐</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Wed, 03 Dec 2025 12:55:33 GMT</pubDate></item><item><title><![CDATA[作为反理性的爱情的体验和思考]]></title><description><![CDATA[人类的感情真是黑箱中的黑箱，看不懂，完全看不懂（?
]]></description><link>https://blog.clouldon.com/topic/7/作为反理性的爱情的体验和思考</link><guid isPermaLink="true">https://blog.clouldon.com/topic/7/作为反理性的爱情的体验和思考</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Wed, 05 Nov 2025 07:44:33 GMT</pubDate></item><item><title><![CDATA[作为人类之物种有限的符号思考]]></title><description><![CDATA[抛开符号命题，咱终究是有所求的
]]></description><link>https://blog.clouldon.com/topic/8/作为人类之物种有限的符号思考</link><guid isPermaLink="true">https://blog.clouldon.com/topic/8/作为人类之物种有限的符号思考</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Sat, 22 Nov 2025 05:27:18 GMT</pubDate></item><item><title><![CDATA[神秘 软件推荐]]></title><description><![CDATA[https://www.cgsecurity.org/wiki/TestDisk_Download
免费开源的数据恢复软件
]]></description><link>https://blog.clouldon.com/topic/15/神秘-软件推荐</link><guid isPermaLink="true">https://blog.clouldon.com/topic/15/神秘-软件推荐</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Thu, 30 Apr 2026 03:15:28 GMT</pubDate></item><item><title><![CDATA[OPENPPP2 配置示例 与分流]]></title><description><![CDATA[[image: 1778464489356-qq20260511-095410.webp]
]]></description><link>https://blog.clouldon.com/topic/17/openppp2-配置示例-与分流</link><guid isPermaLink="true">https://blog.clouldon.com/topic/17/openppp2-配置示例-与分流</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Mon, 11 May 2026 01:52:29 GMT</pubDate></item><item><title><![CDATA[Welcome to your NodeBB!]]></title><description><![CDATA[BBS，互联网遥远的记忆（）
]]></description><link>https://blog.clouldon.com/topic/1/welcome-to-your-nodebb</link><guid isPermaLink="true">https://blog.clouldon.com/topic/1/welcome-to-your-nodebb</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Wed, 29 Oct 2025 03:12:44 GMT</pubDate></item><item><title><![CDATA[Mumble 语音服务器搭建]]></title><description><![CDATA[https://github.com/mumble-voip/mumble-docker
https://gitcode.com/gh_mirrors/mu/mumble/blob/master/auxiliary_files/mumble-server.ini
添加环境变量：
MUMBLE_CONFIG_PORT=3322
MUMBLE_CUSTOM_CONFIG_FILE=/data/mumble_server_config.ini   (不然每次重启都重置)
MUMBLE_SUPERUSER_PASSWORD=xxxxx    (超级用户名为：SuperUser)
MUMBLE_CONFIG_SERVERPASSWORD=xxxxx
MUMBLE_CONFIG_SENDVERSION=false
允许中文用户名:在配置文件添加
username=[-\w\x{4e00}-\x{9fa5}=\[\]{}\(\)\@\|\.]+
已注册用户，需要清除密码才能连接，即注册后无需密码连接，保留证书
]]></description><link>https://blog.clouldon.com/topic/10/mumble-语音服务器搭建</link><guid isPermaLink="true">https://blog.clouldon.com/topic/10/mumble-语音服务器搭建</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Sat, 11 Apr 2026 07:06:42 GMT</pubDate></item><item><title><![CDATA[四折の股票之路.WEBP]]></title><description><![CDATA[貌似长线收益多一些，每日的波动，上下上下，不也是归零了嘛
]]></description><link>https://blog.clouldon.com/topic/11/四折の股票之路.webp</link><guid isPermaLink="true">https://blog.clouldon.com/topic/11/四折の股票之路.webp</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Wed, 15 Apr 2026 04:56:06 GMT</pubDate></item><item><title><![CDATA[吉吉 网站推荐]]></title><description><![CDATA[https://www.softwareok.com/
神秘的小软件
https://www.softwareok.com/?seite=microsoft/autohidedesktopicons
]]></description><link>https://blog.clouldon.com/topic/16/吉吉-网站推荐</link><guid isPermaLink="true">https://blog.clouldon.com/topic/16/吉吉-网站推荐</guid><dc:creator><![CDATA[四折光曲]]></dc:creator><pubDate>Thu, 07 May 2026 03:48:39 GMT</pubDate></item><item><title><![CDATA[openppp2简易使用教程]]></title><description><![CDATA[1.openppp2项目简介
介绍一种VPN-openppp2，目前来看不会被墙，而且支持内网穿透，虚拟子网，UDP多线路宽频聚合，CDN转发，国内自动BGP分流等等更多功能看github
仓库：https://github.com/liulilittle/openppp2
使用指南：https://github.com/liulilittle/openppp2/blob/main/README_CN.md
下文将openppp2简称为ppp
ppp目前在IPv6上支持不好，不太能跑在IPv6上，使用前得把IPv4优先或者禁用IPv6（Window客户端），如果是直连比较吃线路，除非个人会调整网络调优，或是使用CDN转发。
其在Linux下运行支持较为良好，而在Windows上常常会遇到奇奇怪怪的问题（IPv6问题导致无法进行有效通讯），作者已给出部分解决方法，见使用指南。
原版安装参考原文-快速开始
2.脚本简介及服务端安装
因为最近使用了AI写了一键脚本，在Debian系统里面还是可用的。
wget -4 -O ppp_install.sh https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh &amp;&amp; chmod +x ppp_install.sh &amp;&amp; ./ppp_install.sh

脚本地址：https://github.com/zouazhi/zouazhi/blob/main/ppp/ppp_install.sh
拉取脚本之后，
✅ 脚本启动，进入主循环
openppp2一键脚本
请选择操作：
1) 服务端-自动交互安装[完整安装ppp及配置，系统服务]
2) 服务端-自行修改配置[跳过配置文件，直通系统服务]
3) 通用-更新[更新openppp2二进制文件并重新配置服务]
4) 通用-重启[重启ppp服务]
5) 通用-停止[停止ppp服务]
6) 通用-查看运行状况[查看ppp.log和系统服务状态]
7) 通用-卸载ppp[删除文件-删除重载系统服务]
8) 退出脚本
请输入选项[1-8]： 

2.1全新服务端安装
数字1就会安装jq、uuidgen 和 unzip，拉取启动脚本，和部分改好的配置文件，和系统服务功能。
工作目录默认放在opt/ppp下，此时可以选择（1自行修改或（2交互式输入，如下所示。
✅ ppp.sh 启动脚本 拉取完成
✅ ppp.sh 启动脚本 已具有可执行权限
是否自行修改 appsettings.json 文件？
1) 是（脚本将暂停）
2) 否（通过脚本输入 IP、端口和 GUID）
请输入选项 (1/2)： 

以下介绍两个1-1和1-2的不同
2.2修改配置文件和交互
（2交互较为简单，只需要输入数字2，然后输入IP，端口，GUID，后续会进行配置文件的补全，并完成启动，完成这一步的的直接转到[[#3.客户端使用]]
对于自行修改配置文件
（1则需要修改opt/pppppsettings.json里面tcp，udp监听端口（默认20000）以及udp下的"servers": ["1.1.1.1:20000"]，"client"下的"guid"，和"server"（默认为ppp://1.1.1.1:20000），其中1.1.1.1即为入口的IP，20000即为工作端口。
附GUID生成网站：https://www.guidgen.com/
该脚本拉取的配置文件是经修改的精简版本，方便快速启动并默认开启内网穿透，更多内容请看上文仓库原文配置文件及使用说明。
2.3自行修改配置文件后续
该为选择1-1之后脚本暂停之后重新执行脚本,即为主循环中的2。
优先参考原文
重新执行脚本：
bash /root/ppp_install.sh

即会自动拉取启动脚本和系统服务。
2.4服务端启动脚本及系统服务
若是选择服务端的启动脚本为下所示，放置于/opt/ppp/ppp.sh内
./ppp --mode=server &gt; ./ppp.log

脚本内系统服务为引用改sh文件进行服务运行，系统服务如下所示
[Unit]
Description=PPP PRIVATE NETWORK™ 2
After=network.target network-online.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/ppp
ExecStart=/bin/bash /opt/ppp/ppp.sh
Restart=always
RestartSec=20
StartLimitBurst=5
SyslogIdentifier=ppp

[Install]
WantedBy=multi-user.target

即可以使用service ppp stop等service系统服务命令进行控制
相应的查看当前运行状况可以采用检查service ppp status和/opt/ppp/ppp.log来判断运行状况。
其中/opt/ppp/ppp.log其实为实时运行图：
PPP                                                                             
--------------------------------------------------------------------------------
Application started. Press Ctrl+C to shut down.                             
Max Concurrent        : 1                                                   
Process               : 149273                                              
Triplet               : linux:X86_64                                        
Cwd                   : /opt/ppp             
Template              : /opt/ppp/appsettings.json  
Public IP             : ::               
Interface IP          : ::                  
Service 1             : [::]:20000/ppp+tcp   
Service 2             : [::]:20000/ppp+udp  
Hosting Environment   : server:production                                      
VPN                              
----------------------------------------------------------------------------
Duration              : 00:35:46   
Sessions              : 0        
TX                    : 0.000000 B   
RX                    : 0.000000 B    
IN                    : 21.000000 B   
OUT                   : 6.154297 KB   

实际上，openppp2的启动命令为./ppp --mode=server，在终端输入即可得到实时运行的流量变化，客户端数等内容，但其为前台运行，本脚本将其运行页面写入ppp.log以便管理
同样你也可以使用screen等工具使其在后台启动（目录下自行./ppp --mode=server），此时并不需要系统服务，望读者注意。
3.客户端使用
客户端和服务端使用同一套二进制文件，同样对于配置文件，其中包括服务端部分和客户端部分，最简化的配置文件只需包含各自服务端/客户端的配置内容。
上文所提到的配置文件已经包括客户端，服务端两部分，即是通用的。所以直接从服务端拉取配置文件即可，对于每个不同的客户端，其GUID不能相同，但从服务端拉取的配置文件是修改过的，且当前主机为第一客户端，所以不用修改，与其他小伙伴共享时也需修改其GUID。另外对于下文启用了--tun-vnet=yes的--tun-ip=10.0.0.5 同时在线的子网IP也不能相同。
3.1Windows
Windows用户若存在IPv4/IPv6双栈问题请阅读原文并尝试使用以下命令，或者直接禁用IPv6。
原文



命令
功能
格式




--system-network-reset
网络重置
--system-network-reset


--system-network-optimization
性能优化
--system-network-optimization


--system-network-preferred-ipv4
设置IPV4网络优先
--system-network-preferred-ipv4


--system-network-preferred-ipv6
设置IPV6网络优先
--system-network-preferred-ipv6


--no-lsp
禁用LSP
--no-lsp



优先参考原文

现于releases中下载openppp2-windows-amd64.zip
解压后去除cmcc_cidr.txt, crtc_cidr.txt, ip.txt, starrylink.net.key, starrylink.net.pem, appsettings.json,然后放入服务器拉取的appsettings.json。
新建bat文件start.bat填入以下命令

start ppp.exe --mode=client --config=./config/修改这里.json --auto-pull-iplist --tun-ip=10.0.0.5 --tun-gw=10.0.0.0 --tun-mask=24 --tun-host=yes --link-restart=3  --tun-vnet=yes --tun-static=no --block-quic=yes --set-http-proxy=no --tun-mux-acceleration=3 --tun-ssmt=4/st 

其中--tun-host为控制网络走VPN
--tun-static为是否启用udp静态隧道
--config=./config/修改这里.json为配置文件目录，此为例子，按需修改。如果配置文件名为appsettings.json则为--config=./appsettings.json。
更多命令参考原文
然后点击start.bat即可
3.2Linux客户端
对于Linux其运行和提到的服务端相似，而启动命令可以参照下
./ppp --mode=client --config=./ggvHK.json --tun-ip=10.0.0.88 --tun-gw=10.0.0.0 --tun-mask=24 --tun-host=no --link-restart=3 --tun-mux-acceleration=3 --tun-static=no --tun-ssmt=4/st --block-quic=yes &gt; ./ppp.log

可以使用一键脚本写入，将启动sh文件将服务端的--mode=server改为--mode=client即可。
3.3启动后
启动后可以用ping去简易判断连接情况，不受--tun-host影响
PS C:\Users\2233\Desktop&gt; ping 10.0.0.1

正在 Ping 10.0.0.1 具有 32 字节的数据:
来自 10.0.0.1 的回复: 字节=32 时间=73ms TTL=127
来自 10.0.0.1 的回复: 字节=32 时间=67ms TTL=127
来自 10.0.0.1 的回复: 字节=32 时间=70ms TTL=127
来自 10.0.0.1 的回复: 字节=32 时间=73ms TTL=127

对于IPv6问题的用户可以采用http代理的模式替代，可以使用启动命令的--set-http-proxy=yes进行系统代理，或自行代理。配置文件默认使用8080端口进行http代理（sock5帮我删掉了）。
"http-proxy": {
            "bind": "0.0.0.0",
            "port": 8080
        }

点击查看启动图
]]></description><link>https://blog.clouldon.com/topic/2/openppp2简易使用教程</link><guid isPermaLink="true">https://blog.clouldon.com/topic/2/openppp2简易使用教程</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Wed, 29 Oct 2025 03:26:06 GMT</pubDate></item><item><title><![CDATA[ppp_install.sh]]></title><description><![CDATA[PPP 安装与管理脚本
这是一个用于安装、配置、更新和管理 openppp2 服务的 Bash 脚本。脚本需要 root 权限才能执行，并提供菜单驱动的界面来执行各种操作。

自动(半自动):一键脚本，仅支持 x86
wget -4 -O ppp_install.sh https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh &amp;&amp; chmod +x ppp_install.sh &amp;&amp; ./ppp_install.sh 


GitHub优化加速
wget -4 -O ppp_install.sh https://git.apad.pro/https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh &amp;&amp; chmod +x ppp_install.sh &amp;&amp; ./ppp_install.sh 


脚本内容
#!/bin/bash
# =============================================================================
# openppp2 一键安装脚本（v3.6 智能最优版）
# 自动检测架构 + tc + io-uring + simd，选择最佳版本
# =============================================================================

set -o pipefail

# ==================== 颜色定义 ====================
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
RESET='\033[0m'

print() { echo -e "${2:-$GREEN}$1${RESET}"; }

# ==================== 创建 ppp 快捷命令 ====================
create_ppp_shortcut() {
    if [ ! -f "/usr/local/bin/ppp" ]; then
        cat &gt; /usr/local/bin/ppp &lt;&lt; 'EOF'
#!/bin/bash
if [ -f "/root/ppp_install.sh" ]; then
    bash /root/ppp_install.sh
else
    echo "❌ 脚本文件不存在，请重新下载"
    echo "wget -4 -O /root/ppp_install.sh https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
    echo "chmod +x /root/ppp_install.sh"
fi
EOF
        chmod +x /usr/local/bin/ppp
        print "✅ 已创建 ppp 快捷命令！以后直接输入 ppp 即可运行" $GREEN
    else
        print "✅ ppp 快捷命令已存在" $GREEN
    fi
}

# ==================== 系统能力检测 ====================
has_aesni() {
    grep -q 'aes' /proc/cpuinfo 2&gt;/dev/null
}

kernel_supports_io_uring() {
    local major=$(uname -r | cut -d. -f1)
    local minor=$(uname -r | cut -d. -f2)
    [ "$major" -gt 5 ] || { [ "$major" -eq 5 ] &amp;&amp; [ "$minor" -ge 1 ]; }
}

has_tc() {
    command -v tc &gt;/dev/null 2&gt;&amp;1
}

# ==================== 自动选择最优版本 ====================
choose_best_zip() {
    local arch=$(uname -m)
    case "$arch" in
        x86_64|amd64)
            if kernel_supports_io_uring &amp;&amp; has_aesni &amp;&amp; has_tc; then
                echo "openppp2-linux-amd64-tc-io-uring-simd.zip"
            elif kernel_supports_io_uring &amp;&amp; has_aesni; then
                echo "openppp2-linux-amd64-tc-io-uring-simd.zip"
            elif kernel_supports_io_uring &amp;&amp; has_tc; then
                echo "openppp2-linux-amd64-tc-io-uring.zip"
            elif has_aesni &amp;&amp; has_tc; then
                echo "openppp2-linux-amd64-tc-simd.zip"
            elif has_tc; then
                echo "openppp2-linux-amd64-tc.zip"
            else
                echo "openppp2-linux-amd64.zip"
            fi
            ;;
        aarch64|arm64)
            if kernel_supports_io_uring &amp;&amp; has_tc; then
                echo "openppp2-linux-aarch64-tc-io-uring.zip"
            else
                echo "openppp2-linux-aarch64.zip"
            fi
            ;;
        armv7l|armv7)
            if kernel_supports_io_uring; then
                echo "openppp2-linux-armv7l-io-uring.zip"
            else
                echo "openppp2-linux-armv7l.zip"
            fi
            ;;
        mips|mipsel)   echo "openppp2-linux-mipsel.zip" ;;
        ppc64le|ppc64el) echo "openppp2-linux-ppc64el.zip" ;;
        riscv64)       echo "openppp2-linux-riscv64.zip" ;;
        s390x)         echo "openppp2-linux-s390x.zip" ;;
        *)
            print "❌ 不支持的架构: $arch" $RED
            exit 1
            ;;
    esac
}

# ==================== 下载函数 ====================
prompt_replace_file() {
    local target_path="$1"
    local url="$2"
    local desc="$3"

    mkdir -p "$(dirname "$target_path")"

    if [ -f "$target_path" ]; then
        print "⚠️  $desc 已存在" $YELLOW
        read -p "是否替换？(y/n，默认 n): " REPLACE
        if [[ ! "$REPLACE" =~ ^[Yy]$ ]]; then return 0; fi
    fi

    print "📥 正在下载 $desc ..." $BLUE
    if wget -4 --no-check-certificate -q --show-progress -O "$target_path" "$url"; then
        print "✅ $desc 下载完成" $GREEN
        return 0
    else
        print "❌ 下载失败！" $RED
        return 1
    fi
}

# ==================== 主菜单 ====================
while true; do
    clear
    print "=============== openppp2 一键脚本（v3.6 智能版）===============" $BLUE
    echo "1) 服务端 - 完整自动安装（推荐，自动最优版本）"
    echo "2) 服务端 - 配置系统服务（自行修改配置后使用）"
    echo "3) 通用 - 更新二进制文件（自动最优版本）"
    echo "4) 通用 - 重启服务"
    echo "5) 通用 - 停止服务"
    echo "6) 通用 - 查看运行状态（日志前50行）"
    echo "7) 通用 - 完全卸载"
    echo "8) 设置 ppp 快捷命令"
    echo "9) 更新本脚本"
    echo "10) 退出"
    read -p "请输入选项 [1-10]: " OPERATION

    case $OPERATION in
        1|3)
            print "🌍 是否使用国内加速代理 (git.apad.pro)？" $BLUE
            read -p "输入 y 使用加速，n 直连 (默认 y): " USE_PROXY
            if [[ "$USE_PROXY" =~ ^[Nn]$ ]]; then
                GITHUB_PROXY=""
                print "✅ 使用直连 GitHub" $YELLOW
            else
                GITHUB_PROXY="https://git.apad.pro/"
                print "✅ 已启用国内加速代理" $GREEN
            fi

            ZIP_NAME=$(choose_best_zip)
            print "🔍 自动选择最优版本：$ZIP_NAME" $BLUE

            mkdir -p /opt/ppp &amp;&amp; cd /opt/ppp

            URL="${GITHUB_PROXY}https://github.com/liulilittle/openppp2/releases/latest/download/${ZIP_NAME}"
            prompt_replace_file "/opt/ppp/${ZIP_NAME}" "$URL" "$ZIP_NAME" || continue

            unzip -o "$ZIP_NAME" ppp -d . &amp;&amp; chmod +x ppp &amp;&amp; rm -f "$ZIP_NAME"
            print "✅ openppp2 最优版本处理完成" $GREEN

            if [ "$OPERATION" = "1" ]; then
                print "🔧 正在安装依赖..." $BLUE
                if command -v apt-get &gt;/dev/null; then
                    apt-get update &amp;&amp; apt-get install -y jq uuid-runtime unzip
                elif command -v dnf &gt;/dev/null; then
                    dnf install -y jq util-linux unzip
                elif command -v yum &gt;/dev/null; then
                    yum install -y jq util-linux unzip
                else
                    print "❌ 无法识别包管理器，请手动安装 jq uuid-runtime unzip" $RED
                    continue
                fi
                print "✅ 依赖安装完成" $GREEN

                prompt_replace_file "/opt/ppp/ppp.sh" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.sh" "ppp.sh" || continue
                chmod +x ppp.sh

                read -p "是否自行修改 appsettings.json？(y/n，默认 n): " SELF
                if [[ "$SELF" =~ ^[Yy]$ ]]; then
                    print "请手动修改 /opt/ppp/appsettings.json 后，运行选项 2" $YELLOW
                    create_ppp_shortcut
                    continue
                fi

                prompt_replace_file "/opt/ppp/appsettings.json" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/appsettings.json" "appsettings.json" || continue

                read -p "服务器 IP（默认 0.0.0.0）: " NEW_IP
                read -p "端口（默认 20000）: " NEW_PORT
                read -p "GUID（留空自动生成）: " NEW_GUID

                NEW_IP=${NEW_IP:-0.0.0.0}
                NEW_PORT=${NEW_PORT:-20000}
                [[ -z "$NEW_GUID" ]] &amp;&amp; NEW_GUID=$(uuidgen)

                PROTOCOL_KEY=$(tr -dc 'a-zA-Z0-9' &lt;/dev/urandom | head -c 16)
                TRANSPORT_KEY=$(tr -dc 'a-zA-Z0-9' &lt;/dev/urandom | head -c 16)

                cp -f appsettings.json appsettings.json.bak 2&gt;/dev/null

                jq --indent 4 \
                    --arg ip "$NEW_IP" --arg port "$NEW_PORT" --arg guid "$NEW_GUID" \
                    --arg pkey "$PROTOCOL_KEY" --arg tkey "$TRANSPORT_KEY" '
                    .tcp.listen.port = ($port|tonumber) |
                    .udp.listen.port = ($port|tonumber) |
                    .udp.static.servers[0] = ($ip + ":" + $port) |
                    .client.server = ("ppp://" + $ip + ":" + $port) |
                    .client.guid = $guid |
                    .key."protocol-key" = $pkey |
                    .key."transport-key" = $tkey
                ' appsettings.json &gt; temp.json &amp;&amp; mv temp.json appsettings.json

                prompt_replace_file "/etc/systemd/system/ppp.service" "${GITHUB_PROXY}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.service" "ppp.service" || continue

                chmod 644 /etc/systemd/system/ppp.service
                systemctl daemon-reload
                systemctl enable --now ppp.service

                if systemctl is-active --quiet ppp.service; then
                    print "🎉 安装成功！服务已启动" $GREEN
                    create_ppp_shortcut
                else
                    print "⚠️ 服务启动失败，请检查日志" $YELLOW
                fi
            fi
            ;;

        2)
            if [ ! -f "/opt/ppp/appsettings.json" ]; then
                print "❌ 未找到 appsettings.json，请先运行选项 1" $RED
                continue
            fi
            cd /opt/ppp || { print "❌ /opt/ppp 目录不存在" $RED; continue; }

            prompt_replace_file "/etc/systemd/system/ppp.service" \
                "${GITHUB_PROXY:-https://git.apad.pro/}https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/config/ppp.service" \
                "ppp.service" || continue

            systemctl daemon-reload &amp;&amp; systemctl enable --now ppp.service
            print "✅ 系统服务配置完成并启动" $GREEN
            ;;

        4) systemctl restart ppp.service &amp;&amp; print "✅ 服务已重启" $GREEN ;;
        5) systemctl stop ppp.service &amp;&amp; print "✅ 服务已停止" $GREEN ;;
        6)
            print "=== ppp.log（前 50 行）===" $BLUE
            if [ -f "/opt/ppp/ppp.log" ]; then
                head -n 50 /opt/ppp/ppp.log
            else
                print "日志文件不存在" $YELLOW
            fi
            echo
            print "=== ppp.service 状态 ===" $BLUE
            systemctl status ppp.service --no-pager -l
            ;;
        7)
            print "🗑️ 开始卸载..." $YELLOW
            systemctl stop ppp.service 2&gt;/dev/null
            systemctl disable ppp.service 2&gt;/dev/null
            rm -f /etc/systemd/system/ppp.service
            systemctl daemon-reload

            print "是否保留配置文件？（默认保留）" $BLUE
            read -p "输入 y 保留（默认），n 删除: " KEEP_CONFIG
            if [[ "$KEEP_CONFIG" =~ ^[Nn]$ ]]; then
                rm -rf /opt/ppp
                print "✅ 已删除所有文件" $GREEN
            else
                rm -f /opt/ppp/ppp /opt/ppp/ppp.sh /opt/ppp/openppp2-linux-*.zip 2&gt;/dev/null
                print "✅ 已保留配置文件" $GREEN
            fi
            rm -f /usr/local/bin/ppp
            print "✅ 卸载完成" $GREEN
            exit 0
            ;;
        8)
            create_ppp_shortcut
            ;;
        9)
            print "🌍 更新本脚本 - 请选择方式" $BLUE
            echo "1) 使用国内加速 (推荐)"
            echo "2) 直连 GitHub"
            read -p "请输入 [1-2]（默认 1）: " UPDATE_MODE
            if [ "$UPDATE_MODE" = "2" ]; then
                UPDATE_URL="https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
            else
                UPDATE_URL="https://git.apad.pro/https://raw.githubusercontent.com/zouazhi/zouazhi/main/ppp/ppp_install.sh"
            fi
            print "📥 正在下载最新脚本..." $BLUE
            wget -4 -O /root/ppp_install.sh "$UPDATE_URL" &amp;&amp; chmod +x /root/ppp_install.sh
            if [ $? -eq 0 ]; then
                print "✅ 脚本更新成功！正在重新启动..." $GREEN
                exec /root/ppp_install.sh
            else
                print "❌ 更新失败" $RED
            fi
            ;;
        10)
            print "👋 退出脚本" $GREEN
            exit 0
            ;;
        *)
            print "❌ 无效选项" $RED
            ;;
    esac

    echo
    read -p "按 Enter 键返回主菜单..."
done
]]></description><link>https://blog.clouldon.com/topic/4/ppp_install.sh</link><guid isPermaLink="true">https://blog.clouldon.com/topic/4/ppp_install.sh</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Thu, 30 Oct 2025 14:39:34 GMT</pubDate></item><item><title><![CDATA[Linux自用命令脚本]]></title><description><![CDATA[Linux自用命令脚本

speedtest测速

sudo apt-get install curl &amp;&amp; curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash &amp;&amp; sudo apt-get install speedtest


适用于Debian



vkit工具箱 作者@vps.dance
原文链接
GitHub源码链接

bash &lt;(curl -Lso- https://sh.vps.dance/vkit.sh)

国内机如果不能用, 可尝试切换镜像
 bash &lt;(curl -Lso- https://sh.vps.dance/vkit.sh) ghproxy

VKit 提供Linux VPS常用的系统软件安装, 以及系统优化脚本, 目前集成功能如下.

配置SSH Public Key (SSH免密登录)
终端优化 (颜色美化/上下键查找历史)
安装并开启 BBR
系统优化 (TCP网络优化/资源限制优化)
安装常用软件 (ping/traceroute/nslookup/nping/nc/tcpdump)
修改默认SSH端口 (减少被扫描风险)
增加swap分区 (虚拟内存)
IPv4/IPv6优先级调整, 启用/禁用IPv6
安装 Xray (同时安装 增强版的geosite/geoip规则)
安装 SS
安装 snell
安装 hy2
安装 realm (端口转发工具)
安装 gost (隧道/端口转发工具)
安装 nali (IP查询工具)
安装 ddns-go (DDNS工具)
安装 miniserve (HTTP 文件服务器)
使用 CF WARP 添加 IPv4/IPv6 网络
检测 VPS流媒体解锁 (RegionRestrictionCheck)
检测 单线程/多线程网速 (i-abc/Speedtest)
检测 VPS信息/IO/到国际网速 (Bench.sh)
性能/IO 测试 (YABS)
检测 TCP回程路由 (BestTrace)
检测 TCP回程路由 (NextTrace)
检测 Tiktok解锁 (TikTokCheck)
检测 IP质量 (IPQuality)
理论支持的Linux: Ubuntu/Debian, Centos/Redhat (未做严格测试).

]]></description><link>https://blog.clouldon.com/topic/5/linux自用命令脚本</link><guid isPermaLink="true">https://blog.clouldon.com/topic/5/linux自用命令脚本</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Thu, 30 Oct 2025 15:27:22 GMT</pubDate></item><item><title><![CDATA[Rustdesk自托管中继服务端安装教程]]></title><description><![CDATA[下面就是 只安装 hbbs + hbbr 的简单版本。

1）先看当前最新版本
浏览器打开：
https://github.com/rustdesk/rustdesk-server/releases/latest
现在会跳到 1.1.15。
2）在 Debian 上判断你的架构
执行：
dpkg --print-architecture

记住输出结果。
常见是 amd64 或 arm64。
这里我只示范 amd64。
如果你的输出不是 amd64，只需要把下面所有命令里的 amd64 换成你的架构名。
3）创建下载目录
执行：
mkdir -p ~/rustdesk-server
cd ~/rustdesk-server

4）下载第一个包：hbbs
将下面的1.1.15换成Latest的版本号
执行：
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbs_1.1.15_amd64.deb

5）下载第二个包：hbbr
执行：
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.15/rustdesk-server-hbbr_1.1.15_amd64.deb

6）确认两个包已经下好了
执行：
ls -lh *.deb

正常会看到这两个文件：

rustdesk-server-hbbs_1.1.15_amd64.deb
rustdesk-server-hbbr_1.1.15_amd64.deb

7）开始安装
先执行：
sudo apt update

然后依次安装：
sudo dpkg -i rustdesk-server-hbbs_1.1.15_amd64.deb

sudo dpkg -i rustdesk-server-hbbr_1.1.15_amd64.deb

8）如果提示依赖问题，再补一次
执行：
sudo apt-get -f install -y

9）检查服务是否已经就绪
先检查：
systemctl status rustdesk-hbbs --no-pager

systemctl status rustdesk-hbbr --no-pager

你希望看到的是：
active (running)

10）如果没运行，就手动启动
执行：
sudo systemctl start rustdesk-hbbs

sudo systemctl start rustdesk-hbbr

然后再检查一次：
systemctl status rustdesk-hbbs --no-pager

systemctl status rustdesk-hbbr --no-pager

11）查看公钥
执行：
cat /var/lib/rustdesk-server/id_ed25519.pub

把输出内容保存好。

12）补充端口使用
RustDesk 官方文档给出的核心端口是：


TCP 21114-21119


UDP 21116


其中 最小可工作端口集合 是：


TCP 21115


TCP/UDP 21116


TCP 21117



这些端口分别做什么官方链接

到底该开哪些端口
如果你只是部署 普通 OSS 自建服务器，最稳妥的做法是直接开放：


21115/tcp


21116/tcp


21116/udp


21117/tcp


这是官方文档定义的最小可工作端口集合。

如果你想少折腾、一步到位，也可以直接开放：


21114-21119/tcp


21116/udp



如果你用 UFW，就这样放行端口，只开最小必需端口
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp

如果你想一步全开官方建议范围
sudo ufw allow 21114:21119/tcp
sudo ufw allow 21116/udp

12）客户端怎么填
客户端里填：

ID 服务器：你的服务器 IP 或域名
Key：刚才看到的公钥
中继服务器：同ID 服务器
API服务器：留空

示例
如果你的服务器 IP 是 1.2.3.4，那客户端里填：

ID 服务器：1.2.3.4
Key：粘贴 id_ed25519.pub 的内容
中继服务器：ID 服务器
API服务器：留空

13）如果服务异常，先看日志
执行：
journalctl -u rustdesk-hbbs -n 100 --no-pager

journalctl -u rustdesk-hbbr -n 100 --no-pager

也可以直接看文件：
tail -n 50 /var/log/rustdesk-server/hbbs.log

tail -n 50 /var/log/rustdesk-server/hbbr.log

一句话记住
先用 dpkg --print-architecture 看架构；
然后把我示范里的 amd64 替换成你的架构；
下载 GitHub release 的 2 个 .deb；
安装后检查 rustdesk-hbbs 和 rustdesk-hbbr；
最后读取 /var/lib/rustdesk-server/id_ed25519.pub 给客户端用。
]]></description><link>https://blog.clouldon.com/topic/12/rustdesk自托管中继服务端安装教程</link><guid isPermaLink="true">https://blog.clouldon.com/topic/12/rustdesk自托管中继服务端安装教程</guid><dc:creator><![CDATA[clouldon]]></dc:creator><pubDate>Wed, 15 Apr 2026 17:40:58 GMT</pubDate></item></channel></rss>