Свой HTTP(S) и SOCKS5-прокси на VPS: установка и настройка 3proxy

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

14 октября 2026 г.·4 мин чтения·3proxy, proxy, socks5, systemd

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. Каждому человеку — свой логин, чтобы отключать по отдельности.

Файл не должен быть пустым. Без единой строки в passwd 3proxy не запустится.

Если не хотите хранить пароли открытым текстом, 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-прокси.