Skip to content

Instantly share code, notes, and snippets.

@swrneko
Last active April 8, 2026 09:55
Show Gist options
  • Select an option

  • Save swrneko/09e60de4d3d8f9a551a1a2c1ab9283c5 to your computer and use it in GitHub Desktop.

Select an option

Save swrneko/09e60de4d3d8f9a551a1a2c1ab9283c5 to your computer and use it in GitHub Desktop.
Naive Proxy Guide

NaiveProxy: Ультимативный гайд по настройке (2026)

📺 Видео-версия гайда


Инструкции по установке

1. Подключаемся к серверу:

Советую обменяться ключами с сервером, чтобы потом заходить без пароля.

ssh-copy-id root@<SERVER-IP-ADDRESS>
ssh root@<SERVER-IP-ADDRESS>

2. Далее автоматически обновляем систему:

apt update -y && apt upgrade -y

3. Включаем Google BBR для повышения эффективности обмена трафиком (без этого работать будет медленно):

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

4. Ставим Go последней версии не из репозиториев Debian, так как там версия Go устаревшая:

wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
source ~/.profile

5. Качаем исходники модифицированного Caddy с плагином forwardproxy:

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

6. Перед сборкой нужно сделать важный шаг, так как на арендованных VPS часто каталог /tmp бывает слишком мал, а все временные файлы качаются туда — мы подменим его на свой:

mkdir /root/tmp
export TMPDIR=/root/tmp
echo $TMPDIR # Должно вывести /root/tmp

7. Далее собираем Caddy:

~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive

8. Создаём каталог для файла конфига Caddy:

mkdir /etc/caddy
touch /etc/caddy/Caddyfile

9. Этот шаг можно пропустить, но я рекомендую генерировать логин и пароль через openssl. Данные команды выведут 2 строки, сгенерированные в base64, их нужно будет скопировать и использовать на следующем шаге как логин и пароль:

apt install openssl -y # ставим openssl если он не стоит
openssl rand -base64 64 | tr -dc 'A-Za-z0-9' | head -c 16; echo # логин
openssl rand -base64 64 | tr -dc 'A-Za-z0-9' | head -c 16; echo # пароль

10. После вставляем конфиг в Caddyfile, но перед этим нужно поменять:

  • your-domain.com на купленный домен;
  • example@example.com на свою почту (на неё зарегистрируется сертификат);
  • user и pass на свои логин и пароль из предыдущего шага;
  • https://demo.cloudreve.org меняем на любой сайт, под который хотим маскироваться. Также он будет доступен при прямом переходе по твоему домену.
cat <<EOF > /etc/caddy/Caddyfile
:443, your-domain.com
tls example@example.com

route {
 forward_proxy {
   basic_auth user pass
   hide_ip
   hide_via
   probe_resistance
 }

 reverse_proxy https://demo.cloudreve.org {
   header_up Host {upstream_hostport}
   header_up X-Forwarded-Host {host}
 }
}
EOF

11. Перемещаем собранный бинарник Caddy в пользовательский каталог:

mv caddy /usr/bin/caddy
chmod +x /usr/bin/caddy

12. Создаём systemd юнит для автоматического перезапуска:

touch /etc/systemd/system/caddy.service 
cat <<EOF > /etc/systemd/system/caddy.service
[Unit]
Description=Caddy with NaiveProxy
After=network.target network-online.target
Requires=network-online.target

[Service]
Type=notify
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now caddy

13. После запускаем Caddy в фоне. Он автоматически получит TLS-сертификат на указанную почту:

caddy start --config /etc/caddy/Caddyfile 

14. Далее на ПК клиента нужно будет создать файл config.json с таким конфигом и заменить:

  • user на логин, указанный в Caddyfile;
  • pass на пароль, указанный в Caddyfile;
  • demo10.cscot.buzz на домен вашего сервера (НЕ САЙТА МАСКИРОВКИ);
touch config.json
cat <<EOF > config.json
{
  "listen": "socks://127.0.0.1:10808",
  "proxy": "https://user:pass@demo10.cscot.buzz"
}
EOF

🌐 ЧАСТЬ 2: Интеграция с Cloudflare WARP (Опционально)

Нужно, если хотите скрыть IP сервера или разблокировать региональный контент.

1. Установить зависимости:

apt install -y curl gnupg lsb-release

2. Установка WARP клиента:

curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list
apt update && apt install cloudflare-warp -y

3. Настройка режима прокси:

warp-cli registration new
warp-cli mode proxy
warp-cli connect

4. Проброс трафика в Caddy: Добавьте строку upstream socks5://127.0.0.1:40000 в ваш Caddyfile внутрь блока forward_proxy и выполните systemctl restart caddy.


💻 ЧАСТЬ 3: Ссылки на клиенты

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment