ErastgoldProxy source

Исходник панели ErastgoldProxy

ErastgoldProxy — панель, которую можно установить на свой сервер и использовать для создания прокси-ключей. Готовая ссылка из панели вставляется в ErastGold Proxy client, после чего клиент получает нужную конфигурацию.

Архив содержит исходный код панели без `node_modules`, production-сборки, `.env` и базы данных. Перед запуском создайте собственный `.env` и задайте параметры своего домена и прокси-узла.

Для чего нужна панель

Панель создает управляемую ссылку вида `https://your-domain/sub/token`. Эту ссылку можно вставить в ErastGold Proxy client. Пользователь не вводит технические строки вручную: клиент сам получает совместимую конфигурацию по ссылке панели.

Панель не является магазином серверов. Сервер, домен, прокси-узел, правила доступа и срок действия ключей настраивает владелец своей установки панели.

Минимальные требования

  • VPS или выделенный сервер: Ubuntu 22.04/24.04, Debian 12 или совместимая Linux-система.
  • 1 CPU, 1 GB RAM и 10 GB диска для небольшой личной панели.
  • Node.js 20 LTS или новее, npm 10 или новее.
  • Nginx или Caddy для HTTPS и reverse proxy на порт панели.
  • Домен, A-запись которого направлена на IP сервера.
  • Отдельно настроенный прокси-узел, параметры которого будут указаны в `.env`.
  • Открытые порты 80 и 443 для сайта, а также нужные порты вашего прокси-узла.

Быстрая установка без Docker

Пример ниже рассчитан на чистый Ubuntu/Debian сервер.

sudo apt update
sudo apt install -y curl nginx tar

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

sudo mkdir -p /opt/erastgoldproxy-panel
cd /opt/erastgoldproxy-panel
sudo tar -xzf /path/to/erastgoldproxy-panel-source.tar.gz --strip-components=1

sudo npm ci
sudo cp .env.example .env
sudo nano .env
npm run build
npm start

Основные переменные `.env`

ERAST_PROXY_PUBLIC_BASE_URL=https://panel.example.com
ERAST_PROXY_HOST=proxy.example.com
ERAST_PROXY_SNI=proxy.example.com
ERAST_PROXY_VLESS_PORT=443
ERAST_PROXY_VMESS_PORT=8443
ERAST_PROXY_SS_PORT=8388
ERAST_PROXY_VLESS_PATH=/erastgold
ERAST_PROXY_VMESS_PATH=/erastgold-vm

`ERAST_PROXY_PUBLIC_BASE_URL` — публичный адрес панели. Именно он используется в ссылке, которую пользователь копирует в приложение. `ERAST_PROXY_HOST`, порты, SNI и пути должны соответствовать вашему собственному прокси-узлу.

Systemd-сервис

sudo tee /etc/systemd/system/erastgoldproxy-panel.service >/dev/null <<'SERVICE'
[Unit]
Description=ErastgoldProxy panel
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/erastgoldproxy-panel
Environment=NODE_ENV=production
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
SERVICE

sudo systemctl daemon-reload
sudo systemctl enable --now erastgoldproxy-panel
sudo systemctl status erastgoldproxy-panel

Nginx reverse proxy

server {
    listen 80;
    server_name panel.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

После проверки nginx подключите HTTPS через Certbot или другой ACME-клиент. Для production-установки используйте только HTTPS.

Docker-вариант

tar -xzf erastgoldproxy-panel-source.tar.gz
cd erastgoldproxy-panel
cp .env.example .env
nano .env
docker compose up -d --build

Как проверить установку

  • Откройте `https://panel.example.com/login`.
  • Создайте администратора или войдите под созданной учетной записью.
  • Откройте раздел «Прокси-ключи».
  • Создайте ключ и скопируйте ссылку панели.
  • Вставьте ссылку в ErastGold Proxy client и проверьте добавление профиля.

Безопасность установки

  • Не публикуйте `.env`, `data/db.json` и резервные копии базы.
  • Используйте сложный пароль администратора.
  • Обновляйте Node.js и системные пакеты.
  • Ограничьте доступ к серверу по SSH и включите firewall.
  • Регулярно делайте резервную копию `data/db.json`.