Linux🐧
July 8, 2021

Поднимаем 3proxy в Docker

Раньше установка 3proxy была затруднена тем, что требовалась компиляция из исходников. Именно так я и ставил года 3 назад этот замечательный проксик. Но для некоторых это было проблемой. С недавних пор автор (Владимир aka z3APA3A) собирает и выкладывает в докерхаб готовые образы, за что ему глубочайший респект. Сама установка и настройка достаточно хорошо описана в инструкциях тут и тут. Тем не менее, на будущее, запишу как это делал я, когда мне потребовалось быстро поднять SOCKS5 proxy с авторизацией по логину и паролю на VDS c Debian 10, Docker и Docker-compose, чтобы не курить повторно мануалы. Поехали:

1) Загружу образ

docker pull 3proxy/3proxy:latest

2) Создам конфиг

Для этого приведу вольно-переведенную часть инструкций разработчика:

По умолчанию 3proxy использует chroot на /usr/local/3proxy с uid/gid 65535/65535 и ожидает, что файл конфигурации 3proxy.cfg внутри контейнера будет помещен в /usr/local/etc/3proxy При этом пути в 3proxy.cfg должны быть относительно /usr/local/3proxy к примеру /logs вместо /usr/local/3proxy/logs. Кроме того, в chroot требуется разрешение для nserver.

С учетом этих особенностей создадим для проекта директорию на сервере и напишем простенький конфиг для прокси.

mkdir -p /dockerapp/3proxy/conf
vim /dockerapp/3proxy/conf/3proxy.cfg

содержимое конфига:

nserver 8.8.8.8
socks -p3129 
auth strong
users "proxyuser:CR:$1$BIpFg0Ef$haHYihT4pWRH.aZ4n0v8/"

Тут все просто, все по man'у.. При желании можно добавить логирование.

Последняя строчка - создание пользователя "proxyuser". 3proxy позволяет использовать хэш пароля MD5 в формате crypt(). Для генерации такого пароля использую онлайн генератор. Полученный хэш вставляем в секцию users после "..CR:" Вся стока обязательно в кавычках.

3) Делаю yml для запуска через docker-conpose

vim /dockerapp/3proxy/docker-compose.yml

со следующим содержимым:

version: "2.1"
services:
  3proxysvc:
    image: 3proxy/3proxy:latest
    container_name: 3proxy
    volumes:
      - /dockerapp/3proxy/conf:/usr/local/3proxy/conf
    ports:
      - 8080:3129
    restart: unless-stopped
   

Внешний порт у нас будет 8080, так мне захотелось.

4) Запуск, проверка

docker-compose -f /dockerapp/3proxy/docker-compose.yml up -d

Проверим, что сервер открыл порт 8080

 ss -ntulp

должны увидеть что-то типа:

tcp             LISTEN           0                128                               0.0.0.0:8080                            0.0.0.0:*               users:(("docker-proxy",pid=7921,fd=4))

Теперь осталось настроить подключение к прокси в клиенте.

Enjoy!