← Назад

trojan-install

🔐 Войти для редактирования

🐴 Trojan — установка и настройка

Trojan — протокол маскировки VPN-трафика под обычный HTTPS. Сервер ведёт себя как обычный веб-сайт, а VPN-трафик прячется внутри TLS-соединения.


Требования


Шаг 1. Установка Trojan

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-install/master/trojan-install.sh)"

Или вручную:

sudo apt update
sudo apt install -y certbot trojan

Пакет trojan есть в стандартных репозиториях Ubuntu 22.04+. Если нет — собери из исходников:

sudo apt install -y build-essential cmake libboost-system-dev libboost-program-options-dev libssl-dev
git clone https://github.com/trojan-gfw/trojan.git
cd trojan
cmake . -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install

Шаг 2. Получение SSL-сертификата

Trojan требует настоящий SSL-сертификат (не self-signed), иначе маскировка не сработает.

sudo certbot certonly --standalone -d your-domain.com

Сертификаты будут тут:
- /etc/letsencrypt/live/your-domain.com/fullchain.pem
- /etc/letsencrypt/live/your-domain.com/privkey.pem


Шаг 3. Генерация пароля

openssl rand -hex 16

Сохраните вывод — это будет пароль для подключения.


Шаг 4. Настройка сервера

sudo nano /etc/trojan/config.json
{
  "run_type": "server",
  "local_addr": "0.0.0.0",
  "local_port": 443,
  "remote_addr": "127.0.0.1",
  "remote_port": 80,
  "password": ["ВAШ_ПАРОЛЬ_ИЗ_ШАГА_3"],
  "log_level": 1,
  "ssl": {
    "cert": "/etc/letsencrypt/live/your-domain.com/fullchain.pem",
    "key": "/etc/letsencrypt/live/your-domain.com/privkey.pem",
    "sni": "your-domain.com"
  }
}

remote_addr + remote_port — куда отправлять «обычный» трафик (не Trojan). Если кто-то зайдёт на https://your-domain.com в браузере, увидит сайт по этому адресу. Можно поставить Nginx с заглушкой.


Шаг 5. Запуск

sudo systemctl enable trojan
sudo systemctl start trojan
sudo systemctl status trojan

Проверка логов:

sudo journalctl -u trojan -f

Шаг 6. Настройка клиента

Формат ссылки

trojan://ВAШ_ПАРОЛЬ@your-domain.com:443?sni=your-domain.com#Trojan-Server

Клиенты

Платформа Клиент
Android v2rayNG, Igniter
iOS Shadowrocket, v2Ray
Windows v2rayN, Clash
macOS V2RayU, ClashX
Linux v2ray-core, Clash

Пример конфига (v2rayNG / v2ray-core)

{
  "servers": [
    {
      "address": "your-domain.com",
      "port": 443,
      "password": "ВAШ_ПАРОЛЬ",
      "sni": "your-domain.com"
    }
  ],
  "local_addr": "127.0.0.1",
  "local_port": 1080
}

После подключения локальный SOCKS5-прокси доступен на 127.0.0.1:1080.


Шаг 7. Настройка Nginx как заглушки (опционально)

Чтобы при заходе на домен в браузере был сайт, а не ошибка:

sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/trojan-camouflage
server {
    listen 80;
    server_name your-domain.com;

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
sudo ln -s /etc/nginx/sites-available/trojan-camouflage /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

Положите простую HTML-страницу в /var/www/html/index.html.

⚠️ Nginx на порту 80, Trojan на порту 443. Trojan сам перенаправляет «обычный» HTTPS-трафик на remote_addr:remote_port из конфига — Nginx не должен слушать 443.


Шаг 8. Автообновление сертификатов

sudo crontab -e
0 3 * * * certbot renew --quiet --post-hook "systemctl restart trojan"

Проверка

# Порт слушается
sudo ss -tlnp | grep 443

# Логи Trojan
sudo journalctl -u trojan --since "5 min ago"

# Тест TLS
openssl s_client -connect your-domain.com:443 -servername your-domain.com

Чеклист ✅


Полезные команды

Команда Описание
systemctl status trojan Статус сервиса
systemctl restart trojan Перезапуск
journalctl -u trojan -f Логи в реальном времени
openssl rand -hex 16 Новый пароль
certbot renew --dry-run Тест обновления сертификата

Последнее обновление: 2026-07-18