Trojan — протокол маскировки VPN-трафика под обычный HTTPS. Сервер ведёт себя как обычный веб-сайт, а VPN-трафик прячется внутри TLS-соединения.
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
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
openssl rand -hex 16
Сохраните вывод — это будет пароль для подключения.
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 с заглушкой.
sudo systemctl enable trojan
sudo systemctl start trojan
sudo systemctl status trojan
Проверка логов:
sudo journalctl -u trojan -f
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 |
{
"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.
Чтобы при заходе на домен в браузере был сайт, а не ошибка:
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.
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