如果你的内存小于1G,编译过程中会因为内存溢出(Out Of Memory:简称OOM)异常中止,会提示如下错误。
2022/11/24 03:08:44 [INFO] exec (timeout=0s): /usr/local/go/bin/go build -o /root/caddy -ldflags -w -s -trimpath
go build github.com/lucas-clemente/quic-go: /usr/local/go/pkg/tool/linux_amd64/compile: signal: terminated
2022/11/24 03:08:49 [INFO] Cleaning up temporary folder: /tmp/buildenv_2022-11-24-0306.4090021060
2022/11/24 03:08:49 [FATAL] exit status 1
解决方法为设置swap分区
开始安装
apt update
apt install socat cron curl
安装go语言环境
到官网下载对应的版本
wget https://go.dev/dl/go1.23.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
export PATH="/usr/local/go/bin:$PATH"
go env -w GO111MODULE=on
rm -f go1.23.3.linux-amd64.tar.gz
安装caddy+naive
cd && go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
rm -rf go
将Caddy作为守护进程运行
官方文档(https://github.com/klzgrad/naiveproxy/wiki/Run-Caddy-as-a-daemon)提到,Caddy作为守护进程运行,systemctl的版本需要>=232。经过我的实际测试,systemd版本为219,可以正常稳定运行。
使Caddy可执行并将caddy二进制文件移动到/usr/bin/
chmod a+x caddy
mv caddy /usr/bin/
创建/etc/caddy目录
mkdir /etc/caddy
创建用户和组
groupadd --system caddy
useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
在/etc/systemd/system/
目录创建caddy.service
nano /etc/systemd/system/caddy.service
输入以下内容
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
User=caddy
Group=caddy
ExecStart=
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
配置caddy
nano /etc/caddy/Caddyfile
输入以下内容:
{
# order forward_proxy before reverse_proxy
# 上面是http3设置
order forward_proxy before file_server
}
:443, aaa.kkiikk.top {
#你的域名
tls example@example.com #你的邮箱
route {
forward_proxy {
basic_auth user pass #用户名和密码
hide_ip
hide_via
probe_resistance
}
#--------支持多用户--------
#forward_proxy {
# basic_auth user2 pass2 #用户名和密码
# hide_ip
# hide_via
# probe_resistance
#}
#--------typecho设置--------
#root * /html/typecho-1.2.1
#encode gzip
#php_fastcgi 127.0.0.1:9000
#file_server
#--------跳转--------
#redir https://example.com
#--------反代--------
#reverse_proxy 127.0.0.1:8080
#--------反代https--------
#reverse_proxy https://www.aaa.com {
# header_up Host {http.reverse_proxy.upstream.hostport}
#}
#--------反代非443端口https网站--------
#reverse_proxy https://192.168.0.1:8888 {
# transport http {
#关闭tls校验
# tls_insecure_skip_verify
# }
#}
}
}
https://bbb.kkiikk.top {
#你的域名
tls example@example.com #你的邮箱
#--------反代--------
#reverse_proxy 127.0.0.1:8080
#--------反代https--------
reverse_proxy https://www.bbb.com {
header_up Host {http.reverse_proxy.upstream.hostport}
}
}
#通过IP访问80端口,主要用于申请证书
http:// {
root * /html
file_server browse
}
格式化配置文件
caddy fmt --overwrite /etc/caddy/Caddyfile
申请域名证书
curl https://get.acme.sh | sh
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
acme.sh --set-default-ca --server letsencrypt
#example.domain.com请替换为你的真实域名
#注意:hax.co.id/woiden.id等纯ipv6主机,在下面命令中加上--listen-v6参数
acme.sh --issue -d example.domain.com --keylength ec-256 --standalone --insecure --force
acme.sh --install-cert -d example.domain.com --ecc \
--key-file /etc/caddy/example.domain.com.key \
--fullchain-file /etc/caddy/example.domain.com.pem
启动Caddy
chown -R caddy:caddy /etc/caddy/
systemctl daemon-reload
systemctl enable caddy
systemctl start caddy
#查看当前状态
systemctl status caddy
#使用更改的配置文件重新加载caddy
systemctl reload caddy
清理
rm -rf ~/.cache
rm -rf /usr/local/go
客户端配置
naive客户端:https://github.com/klzgrad/naiveproxy/releases/latest
1、根据客户端操作系统,下载对应的naive客户端,以64位windows操作系统为例。
在官方网站下载后解压。将naive.exe
文件copy到v2rayN
安装目录。用记事本创建一个config.json
文件,内容如下:
Bash
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://user:password@example.domain.com"
}
根据服务器的设置,对应修改上述配置文件中的user
,password
,域名
和端口
。
2、v2rayN客户端配置,点击菜单上服务器
中的添加自定义服务器
,如果你的v2rayN没有下述选项,请在官网下载最新版本。
3、导入上一步配置好的config.json
文件,Core
类型选择naiveproxy
,Socks端口
填1080
后点确定
按钮。