Skip to content

rjohny55/3proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3proxy v0.9.4 в Docker с использованием Docker Compose Ubuntu 24.04

Этот проект позволяет легко запустить прокси-сервер 3proxy версии 0.9.4 внутри Docker-контейнера, управляемого с помощью Docker Compose.

Используется многоступенчатая сборка Docker для создания легковесного финального образа. Конфигурационные файлы и логи подключаются как внешние тома (volumes/bind mounts) для удобного управления и сохранения данных.

Требования

  • Установленный Docker
  • Установленный Docker Compose (обычно идет вместе с Docker Desktop или может быть установлен отдельно)

Структура проекта

Рекомендуется следующая структура папок: Use code with caution. Markdown 3proxy-docker/

├── config/

│ ├── 3proxy.cfg # Ваш файл конфигурации 3proxy

│ └── .proxyauth # Ваш файл аутентификации

├── logs/ # Папка для лог-файлов (создается Docker или вами)

├── Dockerfile # Файл для сборки образа 3proxy

├── docker-compose.yml # Файл для запуска сервиса

└── README.md # Этот файл

Установка и настройка

  1. Клонируйте репозиторий или скачайте файлы:

    • Скопируйте файлы Dockerfile и docker-compose.yml (предоставленные ранее) в корневую папку вашего проекта (например, my-3proxy-docker).
  2. Создайте необходимые директории:

    • Внутри корневой папки проекта выполните:
      mkdir config logs
  3. Поместите файлы конфигурации:

    • Скопируйте ваши готовые файлы 3proxy.cfg и .proxyauth в созданную папку config/.
  4. Настройте 3proxy.cfg:

    • Важно: Убедитесь, что пути внутри config/3proxy.cfg указаны относительно внутренней структуры контейнера:
      • Путь к файлу аутентификации должен быть /etc/3proxy/.proxyauth (например, users $/etc/3proxy/.proxyauth).
      • Путь к лог-файлу должен быть /var/log/3proxy/3proxy.log (например, log /var/log/3proxy/3proxy.log D).
    • Убедитесь, что порты, указанные в 3proxy.cfg (например, proxy -p3128, socks -p1080), соответствуют портам, открытым (EXPOSE) в Dockerfile и проброшенным (ports) в docker-compose.yml.
    • Настройте методы аутентификации (auth) и правила доступа (allow/deny) согласно вашим требованиям.
  5. Настройте .proxyauth:

    • Добавьте пользователей и пароли в файл config/.proxyauth в формате, соответствующем выбранному методу auth в 3proxy.cfg (например, имя_пользователя:CL:пароль для простого текста).
  6. Настройте права для папки логов (если нужно):

    • Контейнер запускает 3proxy от пользователя proxyuser. Чтобы он мог писать логи в папку ./logs, подключенную с хоста, владелец этой папки на хосте должен совпадать с UID/GID пользователя proxyuser внутри контейнера, либо папка должна иметь права на запись для всех.
    • Решение:
      1. Временно запустите контейнер командой sleep: измените docker-compose.yml, добавив command: ["sleep", "infinity"] в сервис proxy, затем запустите docker-compose up -d.
      2. Узнайте UID/GID: docker exec 3proxy-service id proxyuser (например, uid=999 gid=999).
      3. Остановите контейнер: docker-compose down.
      4. Уберите command: ["sleep", "infinity"] из docker-compose.yml.
      5. Измените владельца папки ./logs на хосте: sudo chown UID:GID ./logs (например, sudo chown 999:999 ./logs).

Запуск прокси-сервера

  1. Перейдите в директорию проекта:

    • Откройте терминал и перейдите в папку, где находятся Dockerfile и docker-compose.yml.
  2. Соберите образ и запустите контейнер:

    docker-compose up -d --build
    • --build: Принудительно собрать образ при первом запуске или если Dockerfile изменился.
    • -d: Запустить контейнер в фоновом (detached) режиме.

Использование прокси

После успешного запуска вы можете подключаться к прокси-серверу:

  • HTTP Прокси: IP_АДРЕС_ХОСТА:3128 (или другой порт, указанный в секции ports файла docker-compose.yml для порта 3128 контейнера).
  • SOCKS5 Прокси: IP_АДРЕС_ХОСТА:1080 (или другой порт, указанный в секции ports файла docker-compose.yml для порта 1080 контейнера).

Используйте имя пользователя и пароль, указанные в вашем файле config/.proxyauth.

Пример использования с curl:

  • HTTP:
    curl -x http://ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ@IP_АДРЕС_ХОСТА:3128 https://ifconfig.me
  • SOCKS5:
    curl -x socks5://ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ@IP_АДРЕС_ХОСТА:1080 https://ifconfig.me

Управление сервисом

Используйте стандартные команды docker-compose:

  • Просмотр логов:
    docker-compose logs -f
  • Остановка сервиса:
    docker-compose stop
  • Запуск остановленного сервиса:
    docker-compose start
  • Перезапуск сервиса (полезно после изменения конфигурации):
    docker-compose restart proxy
  • Остановка и удаление контейнера/сети:
    docker-compose down

Устранение неполадок

Нужно дать права на запись в папку ./logs на вашем хосте тому UID/GID, под которым работает proxyuser в контейнере.

  • Шаг 1: Узнайте UID/GID proxyuser в контейнере. Выполните команду (замените my-3proxy-compose_proxy_1 на реальное имя вашего контейнера, если оно другое - можно посмотреть через docker ps):
docker exec <имя_контейнера_3proxy> id proxyuser

Пример:

docker exec 3proxy-service id proxyuser

если контейнер не запускается, можно временно изменить Dockerfile, добавив RUN id proxyuser >> /id.txt перед USER proxyuser, пересобрать образ (docker-compose build), запустить контейнер с CMD ["sleep", "infinity"], скопировать файл id.txt (docker cp :/id.txt .) и посмотреть его.

Вы увидите что-то вроде uid=101(proxyuser) gid=102(proxyuser) groups=102(proxyuser). Запомните UID и GID (например, 101 и 102).

Шаг 2: Измените владельца папки ./logs на хосте. Перейдите в папку, где лежит ваш docker-compose.yml, и выполните (замените UID:GID на реальные значения):

sudo chown UID:GID ./logs

Пример:

sudo chown 101:102 ./logs

Выполните команду chown, чтобы изменить владельца папки ./logs на хосте на UID 999 и GID 999:

sudo chown 999:999 ./logs
  • "Permission denied" в логах: См. Шаг 6 в разделе "Установка и настройка".
  • "Connection refused" при подключении: Проверьте, что порт правильно проброшен в docker-compose.yml, 3proxy настроен слушать этот порт в 3proxy.cfg, и файрвол хоста не блокирует порт.
  • Ошибки аутентификации (407 / SOCKS5 error 5): Внимательно проверьте формат и содержимое файлов config/.proxyauth и config/3proxy.cfg (особенно секции auth, users, allow, deny). Смотрите логи docker-compose logs -f для деталей.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published