Поднимаем 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!