Свой HTTP(S) и SOCKS5-прокси на VPS: установка и настройка 3proxy
Сборка 3proxy 0.9.9.1 из исходников с проверкой контрольной суммы, отдельный пользователь, конфиг с авторизацией по логину и паролю, служба systemd, брандмауэр и проверка через curl. Debian 12, Ubuntu 24.04, AlmaLinux.

3proxy — лёгкий прокси-сервер, который умеет работать как HTTP(S)-прокси, как SOCKS5 или как оба сразу. На своём VPS вы получаете прокси, которыми пользуетесь только вы, с выходом в интернет через IP сервера. Это не VPN: прокси настраивается в конкретной программе (браузер, Telegram, парсер), а не для всей системы, зато не требует клиента и работает везде, где есть поле «прокси».
В репозиториях Debian и Ubuntu 3proxy либо нет, либо старая версия, поэтому собираем из исходников — это одна минута. Команды для Debian 12 и Ubuntu 24.04, для AlmaLinux отличия отмечены.
Что нужно
- Сервер на tanaka.host, вход по SSH под root.
- Два свободных порта: по умолчанию 3128 для HTTP(S) и 1080 для SOCKS5. Они должны быть разными.
1. Сборка 3proxy
# Устанавливаем инструменты для сборки
apt update && apt install -y build-essential curl
# Скачиваем исходники 3proxy и проверяем контрольную сумму архива
cd /root
curl -fsSL -o 3proxy-0.9.9.1.tar.gz https://github.com/3proxy/3proxy/releases/download/0.9.9.1/3proxy-0.9.9.1.tar.gz
echo "13711040af096f09d5202b0cb516ec08db7c08130ed21719063d2e570215fb34 3proxy-0.9.9.1.tar.gz" | sha256sum -c
# Собираем и устанавливаем программу
tar xzf 3proxy-0.9.9.1.tar.gz
cd 3proxy-0.9.9.1
make -f Makefile.Linux
install -m 755 bin/3proxy /usr/local/bin/3proxy
3proxy-0.9.9.1.tar.gz: OK — архив скачался без повреждений. Если вместо OK ошибка, не продолжайте: скачайте заново.
AlmaLinux, Rocky, CentOS — другая первая команда, остальное так же:
dnf install -y gcc make tar curl
0.9.9.1 — ветка LTS, в неё выходят только исправления. Свежие версии — на странице релизов; при смене версии сверяйте контрольную сумму оттуда же.
2. Отдельный пользователь
Чтобы прокси не работал от root, заводим системного пользователя без оболочки:
useradd --system --no-create-home --shell /usr/sbin/nologin proxy3
На AlmaLinux путь к nologin — /sbin/nologin.
3. Файл настроек
Команду копируйте целиком — она сама подставит UID и GID пользователя proxy3:
mkdir -p /etc/3proxy
cat > /etc/3proxy/3proxy.cfg <<EOF
nserver 1.1.1.1
nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users \$/etc/3proxy/passwd
setgid $(id -g proxy3)
setuid $(id -u proxy3)
auth strong
allow *
proxy -n -a -p3128
socks -p1080
EOF
| Строка | Что делает |
|---|---|
nserver |
DNS-серверы, через которые прокси резолвит имена |
nscache 65536 |
Кэш DNS-ответов |
users $/etc/3proxy/passwd |
Логины и пароли из файла /etc/3proxy/passwd |
setgid, setuid |
После старта прокси работает от proxy3 |
auth strong |
Пускает только по логину и паролю |
allow * |
Разрешить всем авторизованным доступ куда угодно |
proxy -n -a -p3128 |
HTTP(S)-прокси на 3128; -n без NTLM, -a анонимный (не добавляет заголовки с вашим IP) |
socks -p1080 |
SOCKS5 на 1080 |
Не нужен один из прокси — удалите его строку. Порты меняйте на любые свободные, но у двух прокси они должны различаться.
Без
auth strongполучится открытый прокси. Его найдут сканеры за часы, а через сутки IP сервера окажется в чёрных списках. Строкуauth strongне убирайте, аallow *без авторизации не используйте.
4. Пользователи
Каждый — отдельной строкой в формате логин:CL:пароль (CL означает пароль открытым текстом). Замените puser1 и p@ssw0rd:
cat > /etc/3proxy/passwd <<'EOF'
puser1:CL:p@ssw0rd
EOF
# Закрываем файлы с паролями от других пользователей сервера
chmod 600 /etc/3proxy/passwd /etc/3proxy/3proxy.cfg
Добавить пользователя позже: nano /etc/3proxy/passwd, дописать строку, сохранить (Ctrl+O, Enter, Ctrl+X), затем systemctl restart 3proxy. Каждому человеку — свой логин, чтобы отключать по отдельности.
Файл не должен быть пустым. Без единой строки в
passwd3proxy не запустится.
Если не хотите хранить пароли открытым текстом, 3proxy умеет формат логин:CR:хеш — хеш генерируется утилитой mycrypt из той же сборки (bin/mycrypt).
5. Служба systemd
Чтобы прокси работал в фоне и стартовал после перезагрузки:
cat > /etc/systemd/system/3proxy.service <<'EOF'
[Unit]
Description=3proxy proxy server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=on-failure
RestartSec=3
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now 3proxy
Проверка: systemctl status 3proxy — в строке Active должно быть active (running). Если failed — journalctl -u 3proxy -n 20 покажет, что не так (чаще всего пустой passwd или занятый порт).
6. Брандмауэр
Если включён UFW:
ufw allow 3128/tcp
ufw allow 1080/tcp
firewalld:
firewall-cmd --permanent --add-port=3128/tcp --add-port=1080/tcp && firewall-cmd --reload
Если прокси нужен только вам, лучше открыть порты только с вашего IP: ufw allow from ВАШ_IP to any port 3128 proto tcp.
7. Подключение и проверка
Данные для подключения — IP сервера, порт, логин, пароль:
http://IP-сервера:3128:puser1:p@ssw0rd
socks5://IP-сервера:1080:puser1:p@ssw0rd
Если программа просит заполнить поля по отдельности, перенесите их из этой строки. Проверка с домашнего компьютера — обе команды должны вывести IP сервера:
curl -x http://IP-сервера:3128 --proxy-user puser1:p@ssw0rd https://api.ipify.org
curl -x socks5h://IP-сервера:1080 --proxy-user puser1:p@ssw0rd https://api.ipify.org
socks5h вместо socks5 заставляет curl резолвить имена через прокси, а не локально — так и работают браузеры с SOCKS5.
Когда всё работает, уберите исходники:
rm -rf /root/3proxy-0.9.9.1 /root/3proxy-0.9.9.1.tar.gz
Частые ошибки
Прокси не отвечает. systemctl status 3proxy, затем ss -lntp | grep 3proxy — порты должны быть в списке. Потом брандмауэр.
Ошибка 407 / Proxy Authentication Required. Прокси работает, но логин или пароль не приняты. Сверьте с /etc/3proxy/passwd, регистр важен. После правки файла нужен systemctl restart 3proxy.
Работает HTTP, не работает HTTPS. В proxy не хватает поддержки CONNECT — проверьте, что строка именно proxy -n -a -p3128, без -d и прочих ограничений.
Нужно сменить порт. Поправьте -p в 3proxy.cfg, откройте новый порт в брандмауэре, systemctl restart 3proxy.
Полезные команды
| Команда | Что делает |
|---|---|
systemctl restart 3proxy |
Применить изменения конфига или пользователей |
journalctl -u 3proxy -f |
Журнал в реальном времени |
ss -lntp | grep 3proxy |
Какие порты слушает |
ss -tnp | grep 3proxy | wc -l |
Сколько соединений сейчас |
Прокси защищает только ту программу, где он прописан. Если нужен весь трафик устройства или обход блокировок — смотрите Amnezia и VLESS Reality, а для одного только Telegram — MTProto-прокси.