{"slug": "naive-proxy-guide", "title": "Naive Proxy Guide", "summary": "Step-by-step guide for setting up a Naive Proxy using a modified version of the Caddy web server with the forwardproxy plugin. The instructions cover server preparation, including enabling Google BBR, installing Go, and compiling Caddy, followed by configuration of TLS certificates and proxy authentication. The guide also includes optional steps for setting up Cloudflare WARP to further conceal the server's IP address or bypass regional restrictions.", "body_md": "1. Подключаемся к серверу:\nСоветую обменяться ключами с сервером, чтобы потом заходить без пароля.\nssh-copy-id root@<SERVER-IP-ADDRESS>\nssh root@<SERVER-IP-ADDRESS>\n2. Далее автоматически обновляем систему:\napt update -y && apt upgrade -y\n3. Включаем Google BBR для повышения эффективности обмена трафиком (без этого работать будет медленно):\necho \"net.core.default_qdisc=fq\" >> /etc/sysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" >> /etc/sysctl.conf\nsysctl -p\n4. Ставим Go последней версии не из репозиториев Debian, так как там версия Go устаревшая:\nwget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz\nrm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz\necho 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile\nsource ~/.profile\n5. Качаем исходники модифицированного Caddy с плагином forwardproxy:\ngo install github.com/caddyserver/xcaddy/cmd/xcaddy@latest\n6. Перед сборкой нужно сделать важный шаг, так как на арендованных VPS часто каталог /tmp бывает слишком мал, а все временные файлы качаются туда — мы подменим его на свой:\nmkdir /root/tmp\nexport TMPDIR=/root/tmp\necho $TMPDIR # Должно вывести /root/tmp\n7. Далее собираем Caddy:\n~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive\n8. Создаём каталог для файла конфига Caddy:\nmkdir /etc/caddy\ntouch /etc/caddy/Caddyfile\n9. Этот шаг можно пропустить, но я рекомендую генерировать логин и пароль через openssl\n. Данные команды выведут 2 строки, сгенерированные в base64\n, их нужно будет скопировать и использовать на следующем шаге как логин и пароль:\napt install openssl -y # ставим openssl если он не стоит\nopenssl rand -base64 64 | tr -dc 'A-Za-z0-9' | head -c 16; echo # логин\nopenssl rand -base64 64 | tr -dc 'A-Za-z0-9' | head -c 16; echo # пароль\n10. После вставляем конфиг в Caddyfile, но перед этим нужно поменять:\nyour-domain.com\nна купленный домен;example@example.com\nна свою почту (на неё зарегистрируется сертификат);user\nиpass\nна свои логин и пароль из предыдущего шага;https://demo.cloudreve.org\nменяем на любой сайт, под который хотим маскироваться. Также он будет доступен при прямом переходе по твоему домену.\ncat <<EOF > /etc/caddy/Caddyfile\n:443, your-domain.com\ntls example@example.com\nroute {\nforward_proxy {\nbasic_auth user pass\nhide_ip\nhide_via\nprobe_resistance\n}\nreverse_proxy https://demo.cloudreve.org {\nheader_up Host {upstream_hostport}\nheader_up X-Forwarded-Host {host}\n}\n}\nEOF\n11. Перемещаем собранный бинарник Caddy в пользовательский каталог:\nmv caddy /usr/bin/caddy\nchmod +x /usr/bin/caddy\n12. Создаём systemd юнит для автоматического перезапуска:\ntouch /etc/systemd/system/caddy.service\ncat <<EOF > /etc/systemd/system/caddy.service\n[Unit]\nDescription=Caddy with NaiveProxy\nAfter=network.target network-online.target\nRequires=network-online.target\n[Service]\nType=notify\nUser=root\nGroup=root\nExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile\nExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force\nTimeoutStopSec=5s\nLimitNOFILE=1048576\nLimitNPROC=512\nPrivateTmp=true\nProtectSystem=full\nAmbientCapabilities=CAP_NET_BIND_SERVICE\nRestart=always\nRestartSec=5s\n[Install]\nWantedBy=multi-user.target\nEOF\nsystemctl daemon-reload\nsystemctl enable --now caddy\n13. После запускаем Caddy в фоне. Он автоматически получит TLS-сертификат на указанную почту:\ncaddy start --config /etc/caddy/Caddyfile\n14. Далее на ПК клиента нужно будет создать файл config.json\nс таким конфигом и заменить:\nuser\nна логин, указанный в Caddyfile;pass\nна пароль, указанный в Caddyfile;demo10.cscot.buzz\nна домен вашего сервера (НЕ САЙТА МАСКИРОВКИ);\ntouch config.json\ncat <<EOF > config.json\n{\n\"listen\": \"socks://127.0.0.1:20808\",\n\"proxy\": \"https://user:pass@demo10.cscot.buzz\"\n}\nEOF\nНужно, если хотите скрыть IP сервера или разблокировать региональный контент.\n1. Установить зависимости:\napt install -y curl gnupg lsb-release\n2. Установка WARP клиента:\ncurl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg\necho \"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\napt update && apt install cloudflare-warp -y\n3. Настройка режима прокси:\nwarp-cli registration new\nwarp-cli mode proxy\nwarp-cli connect\n4. Проброс трафика в Caddy:\nДобавьте строку upstream socks5://127.0.0.1:40000\nв ваш Caddyfile\nвнутрь блока forward_proxy\nи выполните systemctl restart caddy\n.\n- Для Android (Nekobox): GitHub Releases\n- Для Windows/Linux (NekoRay): GitHub Releases\n- Официальный NaiveProxy: GitHub", "url": "https://wpnews.pro/news/naive-proxy-guide", "canonical_source": "https://gist.github.com/swrneko/09e60de4d3d8f9a551a1a2c1ab9283c5", "published_at": "2026-04-05 10:25:58+00:00", "updated_at": "2026-05-22 10:43:01.007747+00:00", "lang": "en", "topics": ["cybersecurity", "developer-tools", "open-source"], "entities": ["Google BBR", "Debian", "Go", "Caddy", "forwardproxy", "klzgrad", "Naive Proxy", "openssl"], "alternates": {"html": "https://wpnews.pro/news/naive-proxy-guide", "markdown": "https://wpnews.pro/news/naive-proxy-guide.md", "text": "https://wpnews.pro/news/naive-proxy-guide.txt", "jsonld": "https://wpnews.pro/news/naive-proxy-guide.jsonld"}}