mirror of
https://github.com/andrey271192/WARP-Web-UI-Relay-Beta.git
synced 2026-09-20 11:55:35 +00:00
docs: русская документация и промпты установки
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
# Copy to /etc/default/warp-webui (install.sh creates this automatically)
|
# Скопируйте в /etc/default/warp-webui (install.sh создаёт файл автоматически)
|
||||||
|
|
||||||
WARP_WEBUI_USER=warpadmin
|
WARP_WEBUI_USER=warpadmin
|
||||||
WARP_WEBUI_PASS=change-me-to-a-strong-password
|
WARP_WEBUI_PASS=change-me-to-a-strong-password
|
||||||
WARP_WEBUI_HOST=0.0.0.0
|
WARP_WEBUI_HOST=0.0.0.0
|
||||||
WARP_WEBUI_PORT=3030
|
WARP_WEBUI_PORT=3030
|
||||||
|
|
||||||
# SOCKS port for warp-cli proxy mode (install script asks for this)
|
# Порт SOCKS для режима proxy у warp-cli (задаётся при install.sh)
|
||||||
WARP_PROXY_PORT=40000
|
WARP_PROXY_PORT=40000
|
||||||
|
|
||||||
# Shown in client preset JSON (your server's public IP or hostname)
|
# Публичный IP или hostname сервера — подсказки в JSON пресетов для клиентов
|
||||||
WARP_PUBLIC_HOST=
|
WARP_PUBLIC_HOST=
|
||||||
|
|
||||||
# Optional paths (defaults match install.sh layout)
|
# Необязательные пути (по умолчанию как после install.sh)
|
||||||
# WARP_INSTALL_SCRIPT=/opt/warp-webui/scripts/warp-install-cf.sh
|
# WARP_INSTALL_SCRIPT=/opt/warp-webui/scripts/warp-install-cf.sh
|
||||||
# WARP_UNINSTALL_SCRIPT=/opt/warp-webui/scripts/warp-uninstall-cf.sh
|
# WARP_UNINSTALL_SCRIPT=/opt/warp-webui/scripts/warp-uninstall-cf.sh
|
||||||
# XUI_CONFIG=/usr/local/x-ui/bin/config.json
|
# XUI_CONFIG=/usr/local/x-ui/bin/config.json
|
||||||
|
|||||||
31
README.en.md
Normal file
31
README.en.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# WARP Web UI
|
||||||
|
|
||||||
|
Browser control panel for **Cloudflare WARP** on Linux: connect/disconnect, WARP+, SOCKS port, optional **3x-ui** and **Amnezia** presets.
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/install.sh | sudo bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Interactive defaults: SOCKS `40000`, Web UI `3030`, user `warpadmin`, password (min 8 chars) → `/etc/default/warp-webui`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/uninstall.sh | sudo bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Open `http://SERVER:PORT/` after install. Use **Install WARP** in the UI if the package is missing.
|
||||||
|
|
||||||
|
## Security (short)
|
||||||
|
|
||||||
|
- HTTP Basic Auth only — use HTTPS (nginx/Caddy) in production.
|
||||||
|
- Firewall the Web UI port to trusted IPs.
|
||||||
|
- Runs as root; do not expose publicly without protection.
|
||||||
|
|
||||||
|
## Docs
|
||||||
|
|
||||||
|
Full documentation (Russian): [README.md](README.md).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT — [LICENSE](LICENSE).
|
||||||
136
README.md
136
README.md
@@ -1,42 +1,44 @@
|
|||||||
# WARP Web UI
|
# WARP Web UI
|
||||||
|
|
||||||
Browser-based control panel for **Cloudflare WARP** on Linux: connect/disconnect, WARP+ license, SOCKS proxy port, and optional presets for **3x-ui** and **Amnezia Xray**.
|
Веб-панель для управления **Cloudflare WARP** на Linux: подключение и отключение туннеля, активация WARP+, настройка SOCKS-прокси и готовые пресеты для **3x-ui** и **Amnezia Xray**.
|
||||||
|
|
||||||
## Features
|
Документация на английском (кратко): [README.en.md](README.en.md).
|
||||||
|
|
||||||
- **WARP control**: Connect, disconnect, restart `warp-svc`, view status and logs
|
## Возможности
|
||||||
- **Account**: Registration info, apply WARP+ license key
|
|
||||||
- **Install / uninstall** `cloudflare-warp` from the UI (Debian/Ubuntu apt repo)
|
|
||||||
- **SOCKS proxy**: Set `warp-cli` proxy port (e.g. `40000` or `1024`)
|
|
||||||
- **3x-ui preset**: Add `warp-socks` outbound → `127.0.0.1:PORT` and `geosite:google` routing rule
|
|
||||||
- **Amnezia preset**: Docker bridge `172.17.0.1:11025` → host SOCKS, per-client WARP routing with friendly names
|
|
||||||
|
|
||||||
## Requirements
|
- **Управление WARP**: подключение, отключение, перезапуск `warp-svc`, просмотр статуса и логов
|
||||||
|
- **Аккаунт**: информация о регистрации, применение лицензионного ключа WARP+
|
||||||
|
- **Установка и удаление** пакета `cloudflare-warp` прямо из браузера (репозиторий Cloudflare для Debian/Ubuntu)
|
||||||
|
- **SOCKS-прокси**: смена порта `warp-cli proxy` (часто `40000` или `1024`)
|
||||||
|
- **Пресет 3x-ui**: outbound `warp-socks` → `127.0.0.1:ПОРТ` и правило маршрутизации `geosite:google`
|
||||||
|
- **Пресет Amnezia**: мост Docker `172.17.0.1:11025` → SOCKS на хосте, маршрутизация WARP для выбранных клиентов с понятными именами
|
||||||
|
|
||||||
- Linux (Debian/Ubuntu recommended)
|
## Требования
|
||||||
- `python3` (stdlib only — no pip packages)
|
|
||||||
|
- Linux (рекомендуется Debian/Ubuntu)
|
||||||
|
- `python3` — только стандартная библиотека, без pip
|
||||||
- `systemd`
|
- `systemd`
|
||||||
- Optional: `cloudflare-warp` package (can be installed via UI or `scripts/warp-install-cf.sh`)
|
- По желанию: пакет `cloudflare-warp` (можно поставить из UI или скриптом `scripts/warp-install-cf.sh`)
|
||||||
- Optional: `docker`, `socat`, `x-ui` / Amnezia for integration presets
|
- Для интеграций: `docker`, `socat`, панель **3x-ui** и/или **Amnezia**
|
||||||
|
|
||||||
## Quick start
|
## Быстрый старт
|
||||||
|
|
||||||
### One-line install
|
### Установка одной командой
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/install.sh | sudo bash
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/install.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
The installer **asks interactively**:
|
Установщик **задаёт вопросы** (можно нажать Enter для значения по умолчанию):
|
||||||
|
|
||||||
| Prompt | Default | Notes |
|
| Вопрос | По умолчанию | Зачем это нужно |
|
||||||
|--------|---------|--------|
|
|--------|--------------|-----------------|
|
||||||
| SOCKS proxy port | `40000` | Also `1024` is common for official `cloudflare-warp` |
|
| Порт SOCKS-прокси | `40000` | Локальный порт `warp-cli` в режиме proxy; для официального `cloudflare-warp` часто берут `1024` |
|
||||||
| Web UI port | `3030` | Open in firewall if needed |
|
| Порт веб-панели | `3030` | HTTP-порт панели; при необходимости откройте его в firewall |
|
||||||
| Admin username | `warpadmin` | HTTP Basic Auth |
|
| Логин администратора | `warpadmin` | HTTP Basic Auth |
|
||||||
| Admin password | *(required, min 8 chars)* | Stored in `/etc/default/warp-webui` (`chmod 600`) |
|
| Пароль администратора | *(обязательно, не короче 8 символов)* | Сохраняется в `/etc/default/warp-webui` с правами `chmod 600` |
|
||||||
|
|
||||||
### Clone and install
|
### Установка из клона репозитория
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/andrey271192/WARP-Web-UI.git
|
git clone https://github.com/andrey271192/WARP-Web-UI.git
|
||||||
@@ -44,65 +46,77 @@ cd WARP-Web-UI
|
|||||||
sudo bash install.sh
|
sudo bash install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Open `http://YOUR_SERVER:3030/` (use the port you chose). Log in with the credentials you set.
|
Откройте в браузере `http://АДРЕС_СЕРВЕРА:3030/` (подставьте выбранный порт). Войдите с логином и паролем, которые указали при установке.
|
||||||
|
|
||||||
If WARP is not installed yet, click **Install WARP** in the UI (or run `scripts/warp-install-cf.sh` with `WARP_PROXY_PORT` set).
|
Если WARP ещё не установлен — нажмите **Install WARP** в интерфейсе (или выполните `scripts/warp-install-cf.sh`, задав `WARP_PROXY_PORT`).
|
||||||
|
|
||||||
### Uninstall
|
### Удаление
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/uninstall.sh | sudo bash
|
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/uninstall.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Or from a clone: `sudo bash uninstall.sh` — stops the service, optionally removes files, config, and the `cloudflare-warp` package.
|
Или из каталога клона: `sudo bash uninstall.sh` — останавливает сервис, по запросу удаляет файлы приложения, конфигурацию и при желании пакет `cloudflare-warp`.
|
||||||
|
|
||||||
## Repository layout
|
## Структура репозитория
|
||||||
|
|
||||||
```
|
```
|
||||||
app.py # Web UI + API (Python http.server)
|
app.py # Веб-интерфейс и API (Python http.server)
|
||||||
scripts/warp-install-cf.sh # Install cloudflare-warp from Cloudflare apt repo
|
scripts/warp-install-cf.sh # Установка cloudflare-warp из apt Cloudflare
|
||||||
scripts/warp-uninstall-cf.sh # Remove cloudflare-warp package
|
scripts/warp-uninstall-cf.sh # Удаление пакета cloudflare-warp
|
||||||
systemd/warp-webui.service # systemd unit template
|
systemd/warp-webui.service # Шаблон unit для systemd
|
||||||
install.sh / uninstall.sh # One-command setup / teardown
|
install.sh / uninstall.sh # Установка и снятие «в одну команду»
|
||||||
.env.example # Environment variable reference
|
.env.example # Справочник переменных окружения
|
||||||
```
|
```
|
||||||
|
|
||||||
After install, files live under `/opt/warp-webui/`, config in `/etc/default/warp-webui`.
|
После установки файлы лежат в `/opt/warp-webui/`, настройки — в `/etc/default/warp-webui`.
|
||||||
|
|
||||||
## Configuration
|
## Настройка
|
||||||
|
|
||||||
See [`.env.example`](.env.example). Main variables:
|
Подробности — в [`.env.example`](.env.example). Основные переменные:
|
||||||
|
|
||||||
- `WARP_WEBUI_USER`, `WARP_WEBUI_PASS` — Basic Auth
|
- `WARP_WEBUI_USER`, `WARP_WEBUI_PASS` — Basic Auth для панели
|
||||||
- `WARP_WEBUI_PORT` — HTTP port (default `3030`)
|
- `WARP_WEBUI_PORT` — HTTP-порт (по умолчанию `3030`)
|
||||||
- `WARP_PROXY_PORT` — SOCKS port used at install and for `warp-install` from UI
|
- `WARP_PROXY_PORT` — порт SOCKS при установке и при установке WARP из UI
|
||||||
- `WARP_PUBLIC_HOST` — Public IP/hostname for client preset hints
|
- `WARP_PUBLIC_HOST` — публичный IP или hostname для подсказок в пресетах клиентов
|
||||||
|
|
||||||
Client display names for Amnezia: `/etc/warp-webui/client-aliases.json`
|
Понятные имена клиентов Amnezia: `/etc/warp-webui/client-aliases.json`.
|
||||||
|
|
||||||
## Security notes
|
## Интеграция с 3x-ui (по желанию)
|
||||||
|
|
||||||
- **HTTP Basic Auth only** — credentials are sent on every request. Prefer **HTTPS** (reverse proxy: nginx/Caddy + TLS) for production.
|
1. Установите и подключите WARP, включите режим proxy и задайте порт SOCKS (в панели или при `install.sh`).
|
||||||
- **Firewall**: Expose only the Web UI port to trusted IPs (`ufw allow from TRUSTED to any port 3030`).
|
2. В веб-панели используйте действие пресета **3x-ui** — будет предложен outbound на `127.0.0.1:ПОРТ` и правило для `geosite:google`.
|
||||||
- **Root service**: The panel runs as root to manage `warp-cli`, systemd, and Docker. Do not expose it to the public internet without protection.
|
3. Убедитесь, что конфиг x-ui указывает на тот же порт, что и `WARP_PROXY_PORT`.
|
||||||
- **Secrets**: Never commit `/etc/default/warp-webui`. Rotate the admin password after install.
|
|
||||||
- WARP+ license keys are entered in the UI and passed to `warp-cli` — they are not stored in this repo.
|
|
||||||
|
|
||||||
## API (authenticated)
|
Требуется установленная панель x-ui и доступ к её `config.json` (путь можно переопределить в `.env`).
|
||||||
|
|
||||||
| Method | Path | Description |
|
## Интеграция с Amnezia (по желанию)
|
||||||
|--------|------|-------------|
|
|
||||||
| GET | `/` | HTML UI |
|
|
||||||
| GET | `/status`, `/registration`, `/proxy`, `/logs` | Status |
|
|
||||||
| POST | `/connect`, `/disconnect`, `/restart` | WARP control |
|
|
||||||
| POST | `/warp-install`, `/warp-uninstall` | Package install/remove |
|
|
||||||
| POST | `/proxy-port`, `/license` | SOCKS port, WARP+ key |
|
|
||||||
| POST | `/xui-preset`, `/amnezia-preset`, `/amnezia-routing` | Integration presets |
|
|
||||||
|
|
||||||
## License
|
1. На хосте с Docker поднимите SOCKS WARP и при необходимости мост `socat` (панель может создать unit `warp-socks-bridge`).
|
||||||
|
2. В панели примените пресет **Amnezia** — маршрутизация через `172.17.0.1:11025` к SOCKS на хосте.
|
||||||
|
3. Назначайте WARP только нужным клиентам; имена удобно править в `client-aliases.json`.
|
||||||
|
|
||||||
MIT — see [LICENSE](LICENSE).
|
Нужны `docker`, контейнер Amnezia Xray и переменные `AMNEZIA_*` при нестандартных путях — см. `.env.example`.
|
||||||
|
|
||||||
## Russian documentation
|
## Безопасность
|
||||||
|
|
||||||
See [README.ru.md](README.ru.md).
|
- **Только HTTP Basic Auth** — учётные данные передаются с каждым запросом. В продакшене ставьте **HTTPS** (обратный прокси: nginx, Caddy + TLS).
|
||||||
|
- **Firewall**: открывайте порт панели только для доверенных IP, например: `ufw allow from ДОВЕРЕННЫЙ_IP to any port 3030`.
|
||||||
|
- **Права root**: панель работает от root, чтобы управлять `warp-cli`, systemd и Docker. Не выставляйте её в открытый интернет без защиты.
|
||||||
|
- **Секреты**: не коммитьте `/etc/default/warp-webui` в git. После установки смените пароль администратора.
|
||||||
|
- Ключи WARP+ вводятся в UI и передаются в `warp-cli`; в репозитории они не хранятся.
|
||||||
|
|
||||||
|
## API (требуется авторизация)
|
||||||
|
|
||||||
|
| Метод | Путь | Описание |
|
||||||
|
|-------|------|----------|
|
||||||
|
| GET | `/` | HTML-интерфейс |
|
||||||
|
| GET | `/status`, `/registration`, `/proxy`, `/logs` | Статус и диагностика |
|
||||||
|
| POST | `/connect`, `/disconnect`, `/restart` | Управление WARP |
|
||||||
|
| POST | `/warp-install`, `/warp-uninstall` | Установка/удаление пакета |
|
||||||
|
| POST | `/proxy-port`, `/license` | Порт SOCKS, ключ WARP+ |
|
||||||
|
| POST | `/xui-preset`, `/amnezia-preset`, `/amnezia-routing` | Пресеты интеграций |
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
MIT — см. [LICENSE](LICENSE).
|
||||||
|
|||||||
83
README.ru.md
83
README.ru.md
@@ -1,83 +0,0 @@
|
|||||||
# WARP Web UI
|
|
||||||
|
|
||||||
Веб-панель для управления **Cloudflare WARP** на Linux: подключение/отключение, ключ WARP+, порт SOCKS-прокси и пресеты для **3x-ui** и **Amnezia Xray**.
|
|
||||||
|
|
||||||
## Возможности
|
|
||||||
|
|
||||||
- **WARP**: Connect / Disconnect, перезапуск `warp-svc`, статус и логи
|
|
||||||
- **Аккаунт**: тип регистрации (Free / WARP+), применение лицензионного ключа
|
|
||||||
- **Установка и удаление** пакета `cloudflare-warp` из браузера
|
|
||||||
- **SOCKS**: смена порта `warp-cli proxy` (например `40000` или `1024`)
|
|
||||||
- **3x-ui**: outbound `warp-socks` → `127.0.0.1:ПОРТ`, маршрут `geosite:google`
|
|
||||||
- **Amnezia**: мост Docker `172.17.0.1:11025` → SOCKS на хосте, WARP только для выбранных клиентов, понятные имена
|
|
||||||
|
|
||||||
## Требования
|
|
||||||
|
|
||||||
- Linux (рекомендуется Debian/Ubuntu)
|
|
||||||
- `python3` (только стандартная библиотека)
|
|
||||||
- `systemd`
|
|
||||||
- По желанию: `cloudflare-warp` (ставится из UI или `scripts/warp-install-cf.sh`)
|
|
||||||
- Для пресетов: `docker`, `socat`, `x-ui` / Amnezia
|
|
||||||
|
|
||||||
## Быстрый старт
|
|
||||||
|
|
||||||
### Установка одной командой
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/install.sh | sudo bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Скрипт **спрашивает**:
|
|
||||||
|
|
||||||
| Вопрос | По умолчанию | Пояснение |
|
|
||||||
|--------|--------------|-----------|
|
|
||||||
| Порт SOCKS | `40000` | Часто также `1024` у официального пакета |
|
|
||||||
| Порт веб-UI | `3030` | Откройте в firewall при необходимости |
|
|
||||||
| Логин админа | `warpadmin` | HTTP Basic Auth |
|
|
||||||
| Пароль админа | *(обязательно, ≥ 8 символов)* | Файл `/etc/default/warp-webui` |
|
|
||||||
|
|
||||||
### Клонирование
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/andrey271192/WARP-Web-UI.git
|
|
||||||
cd WARP-Web-UI
|
|
||||||
sudo bash install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Откройте `http://ВАШ_СЕРВЕР:3030/`. Если WARP ещё не установлен — кнопка **Install WARP** в интерфейсе.
|
|
||||||
|
|
||||||
### Удаление
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/WARP-Web-UI/main/uninstall.sh | sudo bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Или `sudo bash uninstall.sh` из клонированного репозитория. Можно удалить только панель или также пакет `cloudflare-warp` (подтверждение в конце).
|
|
||||||
|
|
||||||
## Структура репозитория
|
|
||||||
|
|
||||||
- `app.py` — веб-интерфейс и API
|
|
||||||
- `scripts/warp-install-cf.sh`, `warp-uninstall-cf.sh` — установка/удаление WARP
|
|
||||||
- `systemd/warp-webui.service` — шаблон unit
|
|
||||||
- `install.sh`, `uninstall.sh` — установка и снятие «в одну кнопку»
|
|
||||||
|
|
||||||
После установки: `/opt/warp-webui/`, настройки `/etc/default/warp-webui`.
|
|
||||||
|
|
||||||
## Настройка
|
|
||||||
|
|
||||||
См. [`.env.example`](.env.example). Имена клиентов Amnezia: `/etc/warp-webui/client-aliases.json`.
|
|
||||||
|
|
||||||
## Безопасность
|
|
||||||
|
|
||||||
- Только **Basic Auth по HTTP** — для продакшена используйте **HTTPS** (nginx/Caddy).
|
|
||||||
- **Firewall**: открывайте порт панели только для доверенных IP.
|
|
||||||
- Сервис работает от **root** (нужен для `warp-cli`, systemd, Docker). Не выставляйте панель в открытый интернет без защиты.
|
|
||||||
- Не публикуйте `/etc/default/warp-webui` и смените пароль после установки.
|
|
||||||
|
|
||||||
## English documentation
|
|
||||||
|
|
||||||
See [README.md](README.md).
|
|
||||||
|
|
||||||
## Лицензия
|
|
||||||
|
|
||||||
MIT — [LICENSE](LICENSE).
|
|
||||||
44
install.sh
44
install.sh
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# WARP Web UI — one-command installer (run as root on Debian/Ubuntu)
|
# WARP Web UI — установка одной командой (Debian/Ubuntu, от root)
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
@@ -11,11 +11,11 @@ ALIASES_DIR="/etc/warp-webui"
|
|||||||
LOG_DIR="/var/log/warp-webui"
|
LOG_DIR="/var/log/warp-webui"
|
||||||
|
|
||||||
if [[ "${EUID:-0}" -ne 0 ]]; then
|
if [[ "${EUID:-0}" -ne 0 ]]; then
|
||||||
echo "Run as root: sudo bash install.sh"
|
echo "Запустите от root: sudo bash install.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=== WARP Web UI installer ==="
|
echo "=== Установка WARP Web UI ==="
|
||||||
echo
|
echo
|
||||||
|
|
||||||
prompt() {
|
prompt() {
|
||||||
@@ -29,32 +29,32 @@ prompt() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "SOCKS port: local port for warp-cli proxy mode (used by x-ui / Amnezia presets)."
|
echo "Порт SOCKS: локальный порт режима proxy у warp-cli (для пресетов x-ui / Amnezia)."
|
||||||
echo "Common choices: 40000 (warp-offline style) or 1024 (cloudflare-warp default)."
|
echo "Частые значения: 40000 (как у warp-offline) или 1024 (по умолчанию у cloudflare-warp)."
|
||||||
prompt WARP_PROXY_PORT "SOCKS proxy port" "40000"
|
prompt WARP_PROXY_PORT "Порт SOCKS-прокси" "40000"
|
||||||
if ! [[ "${WARP_PROXY_PORT}" =~ ^[0-9]+$ ]] || (( WARP_PROXY_PORT < 1 || WARP_PROXY_PORT > 65535 )); then
|
if ! [[ "${WARP_PROXY_PORT}" =~ ^[0-9]+$ ]] || (( WARP_PROXY_PORT < 1 || WARP_PROXY_PORT > 65535 )); then
|
||||||
echo "Invalid SOCKS port: ${WARP_PROXY_PORT}"
|
echo "Некорректный порт SOCKS: ${WARP_PROXY_PORT}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prompt WARP_WEBUI_PORT "Web UI HTTP port" "3030"
|
prompt WARP_WEBUI_PORT "HTTP-порт веб-панели" "3030"
|
||||||
if ! [[ "${WARP_WEBUI_PORT}" =~ ^[0-9]+$ ]] || (( WARP_WEBUI_PORT < 1 || WARP_WEBUI_PORT > 65535 )); then
|
if ! [[ "${WARP_WEBUI_PORT}" =~ ^[0-9]+$ ]] || (( WARP_WEBUI_PORT < 1 || WARP_WEBUI_PORT > 65535 )); then
|
||||||
echo "Invalid Web UI port: ${WARP_WEBUI_PORT}"
|
echo "Некорректный порт веб-панели: ${WARP_WEBUI_PORT}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prompt WARP_WEBUI_USER "Web UI admin username" "warpadmin"
|
prompt WARP_WEBUI_USER "Логин администратора веб-панели" "warpadmin"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
read -rsp "Web UI admin password (min 8 chars): " WARP_WEBUI_PASS
|
read -rsp "Пароль администратора (минимум 8 символов): " WARP_WEBUI_PASS
|
||||||
echo
|
echo
|
||||||
if [[ "${#WARP_WEBUI_PASS}" -ge 8 ]]; then
|
if [[ "${#WARP_WEBUI_PASS}" -ge 8 ]]; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
echo "Password too short. Use at least 8 characters."
|
echo "Пароль слишком короткий. Нужно не менее 8 символов."
|
||||||
done
|
done
|
||||||
|
|
||||||
# Detect public host for client preset hints (optional)
|
# Публичный адрес для подсказок в пресетах клиентов (необязательно)
|
||||||
WARP_PUBLIC_HOST="${WARP_PUBLIC_HOST:-}"
|
WARP_PUBLIC_HOST="${WARP_PUBLIC_HOST:-}"
|
||||||
if [[ -z "${WARP_PUBLIC_HOST}" ]]; then
|
if [[ -z "${WARP_PUBLIC_HOST}" ]]; then
|
||||||
WARP_PUBLIC_HOST="$(curl -fsS --max-time 3 https://api.ipify.org 2>/dev/null || true)"
|
WARP_PUBLIC_HOST="$(curl -fsS --max-time 3 https://api.ipify.org 2>/dev/null || true)"
|
||||||
@@ -64,7 +64,7 @@ if [[ -z "${WARP_PUBLIC_HOST}" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Installing to ${INSTALL_DIR} ..."
|
echo "Установка в ${INSTALL_DIR} ..."
|
||||||
mkdir -p "${INSTALL_DIR}/scripts" "${ALIASES_DIR}" "${LOG_DIR}"
|
mkdir -p "${INSTALL_DIR}/scripts" "${ALIASES_DIR}" "${LOG_DIR}"
|
||||||
install -m 0755 "${REPO_DIR}/app.py" "${INSTALL_DIR}/app.py"
|
install -m 0755 "${REPO_DIR}/app.py" "${INSTALL_DIR}/app.py"
|
||||||
install -m 0755 "${REPO_DIR}/scripts/warp-install-cf.sh" "${INSTALL_DIR}/scripts/warp-install-cf.sh"
|
install -m 0755 "${REPO_DIR}/scripts/warp-install-cf.sh" "${INSTALL_DIR}/scripts/warp-install-cf.sh"
|
||||||
@@ -103,17 +103,17 @@ systemctl daemon-reload
|
|||||||
systemctl enable "${SERVICE_NAME}.service"
|
systemctl enable "${SERVICE_NAME}.service"
|
||||||
systemctl restart "${SERVICE_NAME}.service"
|
systemctl restart "${SERVICE_NAME}.service"
|
||||||
|
|
||||||
# Optional: open firewall for Web UI port
|
# По желанию: правило firewall для порта панели
|
||||||
if command -v ufw >/dev/null 2>&1 && ufw status 2>/dev/null | grep -qi active; then
|
if command -v ufw >/dev/null 2>&1 && ufw status 2>/dev/null | grep -qi active; then
|
||||||
ufw allow "${WARP_WEBUI_PORT}/tcp" comment 'warp-webui' || true
|
ufw allow "${WARP_WEBUI_PORT}/tcp" comment 'warp-webui' || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "=== Installed ==="
|
echo "=== Установка завершена ==="
|
||||||
echo "Web UI: http://${WARP_PUBLIC_HOST}:${WARP_WEBUI_PORT}/"
|
echo "Веб-панель: http://${WARP_PUBLIC_HOST}:${WARP_WEBUI_PORT}/"
|
||||||
echo "Login: ${WARP_WEBUI_USER} / (password you entered)"
|
echo "Вход: ${WARP_WEBUI_USER} / (пароль, который вы ввели)"
|
||||||
echo "SOCKS: 127.0.0.1:${WARP_PROXY_PORT} (after WARP is installed and proxy mode enabled)"
|
echo "SOCKS: 127.0.0.1:${WARP_PROXY_PORT} (после установки WARP и включения режима proxy)"
|
||||||
echo "Env: ${ENV_FILE}"
|
echo "Конфиг: ${ENV_FILE}"
|
||||||
echo
|
echo
|
||||||
echo "Next: open the Web UI and use 'Install WARP' if cloudflare-warp is not installed yet."
|
echo "Далее: откройте веб-панель и нажмите «Install WARP», если пакет cloudflare-warp ещё не установлен."
|
||||||
echo "Set proxy port in the UI or re-run install with a different WARP_PROXY_PORT in ${ENV_FILE}."
|
echo "Порт proxy можно сменить в UI или в ${ENV_FILE} (переменная WARP_PROXY_PORT) и перезапустить сервис."
|
||||||
|
|||||||
22
uninstall.sh
22
uninstall.sh
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# WARP Web UI — one-command uninstaller
|
# WARP Web UI — удаление одной командой
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
INSTALL_DIR="${WARP_WEBUI_INSTALL_DIR:-/opt/warp-webui}"
|
INSTALL_DIR="${WARP_WEBUI_INSTALL_DIR:-/opt/warp-webui}"
|
||||||
@@ -9,11 +9,11 @@ UNIT="/etc/systemd/system/${SERVICE_NAME}.service"
|
|||||||
BRIDGE_UNIT="/etc/systemd/system/warp-socks-bridge.service"
|
BRIDGE_UNIT="/etc/systemd/system/warp-socks-bridge.service"
|
||||||
|
|
||||||
if [[ "${EUID:-0}" -ne 0 ]]; then
|
if [[ "${EUID:-0}" -ne 0 ]]; then
|
||||||
echo "Run as root: sudo bash uninstall.sh"
|
echo "Запустите от root: sudo bash uninstall.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=== WARP Web UI uninstaller ==="
|
echo "=== Удаление WARP Web UI ==="
|
||||||
|
|
||||||
if systemctl is-active --quiet "${SERVICE_NAME}.service" 2>/dev/null; then
|
if systemctl is-active --quiet "${SERVICE_NAME}.service" 2>/dev/null; then
|
||||||
systemctl stop "${SERVICE_NAME}.service"
|
systemctl stop "${SERVICE_NAME}.service"
|
||||||
@@ -32,19 +32,19 @@ systemctl disable warp-socks-bridge.service 2>/dev/null || true
|
|||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|
||||||
read -rp "Remove application files in ${INSTALL_DIR}? [y/N]: " REMOVE_APP
|
read -rp "Удалить файлы приложения в ${INSTALL_DIR}? [y/N]: " REMOVE_APP
|
||||||
if [[ "${REMOVE_APP,,}" == "y" || "${REMOVE_APP,,}" == "yes" ]]; then
|
if [[ "${REMOVE_APP,,}" == "y" || "${REMOVE_APP,,}" == "yes" || "${REMOVE_APP,,}" == "д" || "${REMOVE_APP,,}" == "да" ]]; then
|
||||||
rm -rf "${INSTALL_DIR}"
|
rm -rf "${INSTALL_DIR}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -rp "Remove config ${ENV_FILE} and /etc/warp-webui/? [y/N]: " REMOVE_CFG
|
read -rp "Удалить конфиг ${ENV_FILE} и каталог /etc/warp-webui/? [y/N]: " REMOVE_CFG
|
||||||
if [[ "${REMOVE_CFG,,}" == "y" || "${REMOVE_CFG,,}" == "yes" ]]; then
|
if [[ "${REMOVE_CFG,,}" == "y" || "${REMOVE_CFG,,}" == "yes" || "${REMOVE_CFG,,}" == "д" || "${REMOVE_CFG,,}" == "да" ]]; then
|
||||||
rm -f "${ENV_FILE}"
|
rm -f "${ENV_FILE}"
|
||||||
rm -rf /etc/warp-webui
|
rm -rf /etc/warp-webui
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -rp "Remove cloudflare-warp package (apt remove)? [y/N]: " REMOVE_WARP
|
read -rp "Удалить пакет cloudflare-warp (apt remove)? [y/N]: " REMOVE_WARP
|
||||||
if [[ "${REMOVE_WARP,,}" == "y" || "${REMOVE_WARP,,}" == "yes" ]]; then
|
if [[ "${REMOVE_WARP,,}" == "y" || "${REMOVE_WARP,,}" == "yes" || "${REMOVE_WARP,,}" == "д" || "${REMOVE_WARP,,}" == "да" ]]; then
|
||||||
if [[ -x "${INSTALL_DIR}/scripts/warp-uninstall-cf.sh" ]]; then
|
if [[ -x "${INSTALL_DIR}/scripts/warp-uninstall-cf.sh" ]]; then
|
||||||
WARP_PROXY_PORT=1024 bash "${INSTALL_DIR}/scripts/warp-uninstall-cf.sh"
|
WARP_PROXY_PORT=1024 bash "${INSTALL_DIR}/scripts/warp-uninstall-cf.sh"
|
||||||
elif command -v warp-cli >/dev/null 2>&1; then
|
elif command -v warp-cli >/dev/null 2>&1; then
|
||||||
@@ -52,8 +52,8 @@ if [[ "${REMOVE_WARP,,}" == "y" || "${REMOVE_WARP,,}" == "yes" ]]; then
|
|||||||
systemctl stop warp-svc 2>/dev/null || true
|
systemctl stop warp-svc 2>/dev/null || true
|
||||||
apt-get remove -y -qq cloudflare-warp 2>/dev/null || apt-get purge -y -qq cloudflare-warp 2>/dev/null || true
|
apt-get remove -y -qq cloudflare-warp 2>/dev/null || apt-get purge -y -qq cloudflare-warp 2>/dev/null || true
|
||||||
else
|
else
|
||||||
echo "cloudflare-warp not found; skipped."
|
echo "Пакет cloudflare-warp не найден; пропуск."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "WARP Web UI uninstalled."
|
echo "WARP Web UI удалён."
|
||||||
|
|||||||
Reference in New Issue
Block a user