> Полный список статей есть в [llms.txt](https://docs.f3cloud.com/llms.txt). Markdown-версия есть у каждой страницы, достаточно добавить .md к её адресу. Эта страница в Markdown: [https://docs.f3cloud.com/ru/proxy-guide/proxy-server-configuration.md](https://docs.f3cloud.com/ru/proxy-guide/proxy-server-configuration.md).

# Свой HTTP(S) и SOCKS5 прокси на VPS с 3proxy

Как создать свой HTTP(S) и SOCKS5 прокси-сервер на VPS с 3Proxy. Быстрая установка готовым скриптом F3 Cloud за полминуты и ручная сборка с настройкой конфига и автозапуска.

**3proxy** – лёгкий прокси-сервер, который умеет работать как HTTP(S)-прокси и как SOCKS5-прокси. На своём VPS вы получаете прокси, которыми пользуетесь только вы, с выходом в интернет через IP-адрес сервера.

Ниже два способа.\
Первый – готовый скрипт **3proxy Manager**, который всё ставит и настраивает сам.\
Второй – ручная установка, если хотите разобраться в настройках.

***

## Способ 1. Установка скриптом 3proxy Manager

Скрипт поддерживает Debian 11 и новее, Ubuntu 20.04 и новее, AlmaLinux, Rocky Linux и CentOS Stream 8 и новее. Его исходный код открыт и лежит [на GitHub](https://github.com/f3cloud-host/3Proxy).

### Шаг 1. Установите 3proxy

Подключитесь к серверу [по SSH](https://docs.f3cloud.com/ru/vps/termius-connection.md) под пользователем root, скачайте скрипт и запустите его.

```bash
cd /root && curl -fsSL -o 3proxy.sh https://raw.githubusercontent.com/f3cloud-host/3Proxy/main/3proxy.sh && chmod +x 3proxy.sh
/root/3proxy.sh
```

Введите `1` и нажмите <kbd>Enter</kbd>. Скрипт задаст четыре вопроса:

1. **Включить HTTP/S-прокси?** Ответьте `y`, если он нужен, или `n`, если нет.
2. **Порт HTTP/S-прокси**, по умолчанию 3128.
3. **Включить SOCKS5-прокси?** Так же ответьте `y` или `n`.
4. **Порт SOCKS5-прокси**, по умолчанию 1080.

Чтобы оставить настройки по умолчанию, просто четыре раза нажмите <kbd>Enter</kbd>. Дальше скрипт сам скачает и соберёт 3proxy, на это уходит около полуминуты.

> **Порты у HTTP(S) и SOCKS5 должны быть разными.**
>
> Скрипт не даст выбрать один порт для обоих прокси, а также порт, который уже занят другой программой. Если на сервере включён брандмауэр ufw или firewalld, выбранные порты откроются в нём автоматически.

Сразу после установки скрипт попросит создать первого пользователя. Введите логин, затем пароль. Если вместо пароля нажать <kbd>Enter</kbd>, скрипт придумает надёжный пароль сам.

<figure><img src="https://docs.f3cloud.com/img/3proxy-install.png" alt="Установка 3proxy скриптом 3proxy Manager и создание первого пользователя"><figcaption><p>3proxy установлен, первый пользователь создан</p></figcaption></figure>

В конце появятся готовые данные для подключения, по строке на каждый прокси. Прокси начинают работать сразу.

***

### Шаг 2. Добавьте пользователей

Каждому, кому вы даёте доступ, лучше завести своего пользователя. Так любого из них можно отключить, не трогая остальных.

Запустите скрипт ещё раз командой `/root/3proxy.sh`. Теперь он покажет меню управления.

| Пункт | Что делает |
| --- | --- |
| `1` Добавить пользователя | Создаёт нового пользователя прокси |
| `2` Удалить пользователя | Удаляет пользователя, его доступ пропадает сразу |
| `3` Список пользователей | Показывает всех пользователей и их пароли |
| `4` Удалить 3proxy | Полностью удаляет 3proxy с сервера |
| `5` Выход | Закрывает меню |

Введите `1`, затем логин и пароль нового пользователя.

<figure><img src="https://docs.f3cloud.com/img/3proxy-add-user.png" alt="Добавление пользователя через меню 3proxy Manager со сгенерированным паролем"><figcaption><p>Новый пользователь с паролем, который придумал скрипт</p></figcaption></figure>

***

### Шаг 3. Посмотрите список пользователей

Если забыли логин или пароль, запустите `/root/3proxy.sh` и введите `3`.

<figure><img src="https://docs.f3cloud.com/img/3proxy-list-users.png" alt="Список пользователей прокси в меню 3proxy Manager"><figcaption><p>Список пользователей с паролями</p></figcaption></figure>

***

### Как подключиться к прокси

Данные для подключения выглядят так:

* `http://IP:порт:логин:пароль` для HTTP(S)-прокси;
* `socks5://IP:порт:логин:пароль` для SOCKS5-прокси.

В строке по порядку указаны тип прокси, IP-адрес сервера, порт, логин и пароль. Если программа просит заполнить поля по отдельности, перенесите их из этой строки.

Проверить, что прокси работает, можно прямо с домашнего компьютера. Команда должна вывести IP-адрес вашего сервера.

```bash
# Подставьте IP-адрес сервера, логин и пароль
curl -x http://IP-сервера:3128 --proxy-user логин:пароль https://api.ipify.org
```

<details>

<summary>Прокси не подключается</summary>

Проверьте, что служба запущена, командой `systemctl status 3proxy`, в строке **Active** должно быть `active (running)`. Если вы включали брандмауэр уже после установки 3proxy, откройте в нём порты прокси, например `ufw allow 3128/tcp`.

</details>

<details>

<summary>Ошибка 407 или неверный логин и пароль</summary>

Прокси отвечает, но не принимает логин или пароль. Сверьте их со списком пользователей в пункте `3` меню скрипта. Логин и пароль чувствительны к регистру.

</details>

<details>

<summary>Как сменить порт</summary>

Проще всего удалить 3proxy пунктом `4` меню и установить заново с новыми портами. Пользователей после этого нужно будет создать заново.

</details>

***

## Способ 2. Ручная установка и настройка 3proxy

Этот способ повторяет то, что делает скрипт, только каждый шаг вы выполняете сами. Команды ниже для Debian и Ubuntu.

### Шаг 1. Соберите 3proxy

```bash
# Устанавливаем инструменты для сборки
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`, архив скачался без повреждений. Сборка занимает меньше минуты.

> **На AlmaLinux и CentOS другая первая команда.**
>
> На AlmaLinux и CentOS вместо `apt` установите инструменты командой `dnf install -y gcc make tar curl`. Остальные шаги такие же.

Мы используем версию 0.9.9.1 из ветки LTS, в которую выходят только исправления ошибок. Посмотреть, не вышло ли обновление, можно на [странице релизов 3proxy](https://github.com/3proxy/3proxy/releases).

***

### Шаг 2. Создайте пользователя для прокси

Чтобы прокси не работал с правами root, заведите для него отдельного системного пользователя без возможности входа.

```bash
useradd --system --no-create-home --shell /usr/sbin/nologin proxy3
```

***

### Шаг 3. Создайте файл настроек

Скопируйте команду целиком и выполните её. Она сама подставит номер пользователя proxy3 в настройки.

```bash
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-серверы, через которые прокси находит адреса сайтов |
| `users $/etc/3proxy/passwd` | Берёт логины и пароли из файла `/etc/3proxy/passwd` |
| `setgid` и `setuid` | После запуска прокси работает от пользователя proxy3 |
| `auth strong` | Пускает только по логину и паролю |
| `proxy -n -a -p3128` | HTTP(S)-прокси на порту 3128 |
| `socks -p1080` | SOCKS5-прокси на порту 1080 |

Если один из прокси не нужен, удалите его строку перед выполнением команды. Порты можно заменить на любые свободные, но у двух прокси они должны быть разными.

***

### Шаг 4. Добавьте пользователей {#sozdanie-polzovatelei-3proxy}

Каждый пользователь записывается отдельной строкой в формате `логин:CL:пароль`. Замените `puser1` и `p@ssw0rd` на свои значения.

```bash
cat > /etc/3proxy/passwd <<'EOF'
puser1:CL:p@ssw0rd
EOF

# Закрываем файлы с паролями от других пользователей сервера
chmod 600 /etc/3proxy/passwd /etc/3proxy/3proxy.cfg
```

Чтобы добавить пользователей позже, откройте файл командой `nano /etc/3proxy/passwd`, допишите строки, сохраните сочетанием <kbd>Ctrl</kbd> + <kbd>O</kbd>, выйдите через <kbd>Ctrl</kbd> + <kbd>X</kbd> и перезапустите прокси командой `systemctl restart 3proxy`.

> **Файл с пользователями не должен быть пустым.**
>
> Если в `/etc/3proxy/passwd` нет ни одной строки, 3proxy не запустится. Оставьте в нём хотя бы одного пользователя.

***

### Шаг 5. Запустите прокси как службу

Служба нужна, чтобы прокси работал в фоне и сам запускался после перезагрузки сервера.

```bash
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)`. Если на сервере включён брандмауэр, откройте в нём порты прокси, например `ufw allow 3128/tcp` и `ufw allow 1080/tcp`.

***

### Шаг 6. Подключитесь и уберите установочные файлы

Данные для подключения складываются из IP-адреса сервера, порта, логина и пароля.

```text
http://IP-сервера:3128:puser1:p@ssw0rd
socks5://IP-сервера:1080:puser1:p@ssw0rd
```

Проверить прокси можно той же командой `curl`, что и в первом способе. Когда всё работает, удалите исходники, они больше не нужны.

```bash
rm -rf /root/3proxy-0.9.9.1 /root/3proxy-0.9.9.1.tar.gz
```

***

## Наши ресурсы

**Telegram-канал:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)
\
**F3 Cloud:** [https://f3cloud.com](https://f3cloud.com/ru)
