wzh 发布的文章

下载Go

wget https://go.dev/dl/go1.24.5.linux-amd64.tar.gz

解压Go

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz

将Go添加到环境变量中,开启Go安装加速

echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
echo "export GO111MODULE=on" >> /etc/profile
echo "export GOPROXY=https://goproxy.cn" >> /etc/profile
source /etc/profile

从源运行 DERP 服务器

go install tailscale.com/cmd/derper@latest

复制DERP文件到root目录

mkdir /root/derper
cp /root/go/bin/derper /root/derper/

上传SSL证书

SSL证书上传到 /root/derper/ 文件夹证书命名格式为 <DOMAIN>.<SUFFIX>将证书文件后缀改为 crt 密钥文件后缀改为 key

设置DERP开机启动

cat > /etc/systemd/system/derper.service << EOF
[Unit]
Description = derper
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /root/derper/derper --hostname t.wzh.kim -a :12345 --http-port -1 --certdir /root/derper --certmode manual --stun-port 13478

[Install]
WantedBy = multi-user.target
EOF

启用 IP 转发

echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf

设置DERP开机自启并启动

systemctl enable derper
systemctl start derper

防止被滥用,客户端注册完成后添加

--verify-clients

自定义DERP服务器添加到Tailscale

在Tailscale管理界面找到 Access Controls https://login.tailscale.com/admin/acls/file
插入代码

{
    "randomizeClientPort": true,
    "derpMap": {
        "OmitDefaultRegions": true,
        "Regions": {
            "900": {
                "RegionID":   900,
                "RegionCode": "中国",
                "RegionName": "南京",
                "Nodes": [
                    {
                        "Name":     "900a",
                        "RegionID": 900,
                        "HostName": "nj.wzh.kim",
                        "DERPPort": 12345,
                        "STUNPort": 13478,
                        "IPv4":     "175.27.252.66",
                        "IPv6":     "2402:4e00:c021:3800:52c0:2fbc:fcda:0",
                    },
                ],
            },
            "901": {
                "RegionID":   901,
                "RegionCode": "韩国",
                "RegionName": "首尔",
                "Nodes": [
                    {
                        "Name":     "901a",
                        "RegionID": 901,
                        "HostName": "kr.wzh.kim",
                        "DERPPort": 12345,
                        "STUNPort": 13478,
                        "IPv4":     "150.109.247.61",
                        "IPv6":     "240d:c000:f05f:8b00:52c0:2fbc:fcda:0",
                    },
                ],
            },
        },
    },
}

重新编译

//删掉验证证书相关内容

nano /root/go/pkg/mod/tailscale.com@v1.84.3/cmd/derper/cert.go
#//if hi.ServerName != m.hostname {
#//      return nil, fmt.Errorf("cert mismatch with hostname: %q", hi.ServerName)
#//}

//删除443端口验证 (报错control: controlhttp: forcing port 443 dial due to recent noise dial)

nano /root/go/pkg/mod/tailscale.com@v1.84.3/control/controlhttp/client.go
if d.HealthTracker.LastNoiseDialWasRecent() {
    // If we dialed recently, assume there was a recent failure and fall
    // back to HTTPS dials for the subsequent retries.
    //
    // This heuristic works around networks where port 80 is MITMed and
    // appears to work for a bit post-Upgrade but then gets closed,
    // such as seen in https://github.com/tailscale/tailscale/issues/13597.
    d.logf("controlhttp: forcing port 443 dial due to recent noise dial") 
    return true
}

//进入目录重新编译

/root/go/pkg/mod/tailscale.com@v1.84.3/cmd/derper
go build -o /root/derper/derper

设置开机启动

systemctl enable derper

启动

systemctl start derper

停止

systemctl stop derper

重启

systemctl restart derper

查看状态

systemctl status derper

启动服务

@echo off
title ollama server
set OLLAMA_MODELS=%cd%\models
set OLLAMA_HOST=0.0.0.0
ollama serve

运行模型

@echo off
title ollama deepseek-coder:6.7b
ollama run deepseek-coder:6.7b

下载vlmcsd
binaries\Linux\intel\static\ 下的 vlmcsd-x64-musl-static 上传至VPS /root/kms/vlmcsd下,添加执行权限chmod +x /root/kms/vlmcsd

安装 systemd

apt install systemd

创建 frps.service 文件

nano /etc/systemd/system/vlmcsd.service

写入内容

[Unit]
Description = vlmcsd server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /root/kms/vlmcsd -D

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 vlmcsd 服务

设置vlmcsd开机启动

systemctl enable vlmcsd

启动vlmcsd

systemctl start vlmcsd

停止vlmcsd

systemctl stop vlmcsd

重启vlmcsd

systemctl restart vlmcsd

查看vlmcsd状态

systemctl status vlmcsd

server
{
    listen 80 default_server;
    listen 443 ssl default_server;
    listen 443 quic;
    listen [::]:80 default_server;
    listen [::]:443 ssl default_server;
    listen [::]:443 quic;
    http2 on;
    server_name _;
    #HTTP_TO_HTTPS_START
    if ($server_port != 443) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    #SSL-START
    ssl_certificate    /www/server/panel/vhost/cert/www.wzh.kim/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/www.wzh.kim/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    #SSL-END
    #PROXY-START/
    location ^~ /
    {
    proxy_pass http://127.0.0.1:7080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    }
    #PROXY-END/
    #ssl_reject_handshake on;
    #access_log  /www/wwwlogs/default.log;
    #error_log  /www/wwwlogs/default.error.log;
    }

server
    {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
        access_log  /www/wwwlogs/access.log;
        error_log  /www/wwwlogs/access.error.log;
    }
server
    {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        server_name _;
        ssl_reject_handshake on;
        access_log  /www/wwwlogs/access.log;
        error_log  /www/wwwlogs/access.error.log;
    }