2026-03-24 03:30:16 +07:00

197 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Initializator
Набор скриптов для быстрой настройки нового VPS-сервера с нуля: файрвол, веб-сервер, SSL и VPN.
## Требования
- Ubuntu / Debian
- root-доступ
## Быстрый старт
```bash
git clone <repo> && cd initializator
```
### 1. Базовая настройка
```bash
sudo bash common.sh # UFW-файрвол (deny incoming, allow SSH)
sudo bash nginx.sh # Nginx + правила UFW
sudo bash certbot.sh # Certbot для SSL-сертификатов
```
### 2. VPN-сервер
Два варианта — выбирай нужный:
| | `vless.sh` | `vless_ip.sh` |
|---|---|---|
| Подключение | По домену | По IP-адресу |
| Транспорт | WebSocket | TCP |
| Шифрование | TLS (Let's Encrypt) | Reality (XTLS) |
| Nginx | Нужен (проксирует WS) | Не нужен |
| Маскировка | Обычный HTTPS-сайт | TLS-хендшейк с реальным сайтом |
## Скрипты
### `common.sh`
Устанавливает и настраивает UFW:
- deny incoming / allow outgoing
- Открывает порт 22 (SSH)
### `nginx.sh`
- Устанавливает Nginx (если не установлен)
- Включает автозапуск
- Открывает порты 80/443 в UFW
### `certbot.sh`
- Устанавливает Certbot + плагин для Nginx
### `vless.sh` — VLESS + WebSocket + TLS (по домену)
Поднимает Xray-core за Nginx с WebSocket-транспортом и настоящим TLS-сертификатом.
**Переменные `.env`:**
```env
DOMAIN=example.com
VLESS_WS_PATH=stream
PORT=10001
```
**Что делает:**
1. Скачивает Xray-core с GitHub в `~/services/vless`
2. Генерирует UUID, создаёт `config.json`
3. Создаёт systemd-сервис `xray-vless`
4. Получает SSL-сертификат через Certbot (webroot)
5. Настраивает Nginx: HTTP -> HTTPS редирект, WebSocket-прокси
6. Выводит строку подключения
**Архитектура:**
```
Клиент -> :443 (Nginx, TLS) -> WS /$VLESS_WS_PATH -> :$PORT (Xray) -> интернет
```
**Строка подключения:**
```
vless://UUID@DOMAIN:443?encryption=none&security=tls&sni=DOMAIN&type=ws&path=%2FPATH#Fish-VLESS
```
**Запуск:**
```bash
sudo bash vless.sh
```
---
### `vless_ip.sh` — VLESS + Reality (по IP)
Поднимает Xray-core напрямую на порту 443 с протоколом Reality. Nginx не нужен — Xray сам обрабатывает TLS, маскируясь под реальный сайт.
**Переменные `.env`:**
```env
SERVER_IP=45.146.202.107
```
**Что делает:**
1. Скачивает Xray-core с GitHub в `~/services/vless_ip`
2. Генерирует UUID + x25519 keypair + short ID
3. Создаёт `config.json` с Reality
4. Создаёт systemd-сервис `xray-vless-ip`
5. Открывает порт 443 в UFW
6. Выводит строку подключения
**Архитектура:**
```
Клиент -> :443 (Xray, Reality/XTLS) -> интернет
|
└─ TLS fingerprint = www.kuper.ru (маскировка)
```
**Строка подключения:**
```
vless://UUID@IP:443?encryption=none&security=reality&sni=www.kuper.ru&fp=chrome&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp&flow=xtls-rprx-vision#VLESS-Reality
```
**Запуск:**
```bash
sudo bash vless_ip.sh
```
---
## Файл `.env`
Создай `initializator/.env` перед запуском VPN-скриптов:
```env
# Для vless.sh (доменный вариант)
DOMAIN=example.com
VLESS_WS_PATH=stream
PORT=10001
# Для vless_ip.sh (IP вариант)
SERVER_IP=45.146.202.107
```
## Управление сервисом
```bash
# Статус
systemctl status xray-vless # доменный
systemctl status xray-vless-ip # IP
# Перезапуск
systemctl restart xray-vless
systemctl restart xray-vless-ip
# Логи
journalctl -u xray-vless -f
journalctl -u xray-vless-ip -f
```
## Структура файлов на сервере
```
~/services/
├── vless/ # доменный вариант
│ ├── xray # бинарник Xray-core
│ ├── config.json # конфиг сервера
│ └── connection.txt # строка подключения
└── vless_ip/ # IP вариант
├── xray
├── config.json
└── connection.txt
/etc/systemd/system/
├── xray-vless.service
└── xray-vless-ip.service
/etc/nginx/sites-available/
└── vless-$DOMAIN # только для доменного варианта
```
## Клиенты
Строку подключения можно импортировать в:
- **Android:** v2rayNG, NekoBox
- **iOS:** Streisand, V2Box
- **Windows:** Nekoray, v2rayN
- **macOS:** V2RayXS, Nekoray
- **Linux:** Nekoray