Skip to content

chm0d777/subscription-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mihomo Subscription Manager

Это бекенд для автоматизации управления конфигами и ключами AmneziaWG/Wireguard/VLESS.

Установка на Ubuntu

  1. Установите Node.js и Caddy:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    sudo apt update
    sudo apt install caddy
  2. Загрузите этот проект: Скопируйте папку subscription-manager на ваш сервер (например, в /opt/mihomo-subscriptions/).

    cd /opt/mihomo-subscriptions
    npm install js-yaml
  3. Настройте домен (Caddy): Отредактируйте Caddyfile, вписав ваш домен. По умолчанию стоит sub.k3k.lol.

    sudo cp Caddyfile /etc/caddy/Caddyfile
    sudo systemctl restart caddy

Использование

  1. Добавление пользователей и серверов: В папке data создайте папку с именем пользователя. Внутри неё создайте папки ru и foreign. Положите ключи (текстовые файлы с vpn://... или файлы конфигурации .conf от AmneziaWG) в соответствующие папки.

    data/
    ├── Vasya/
    │   ├── ru/
    │   │   └── moscow.conf
    │   └── foreign/
    │       └── netherlands.conf
    
  2. Генерация ссылок подписок: Запустите скрипт сборки. Вы можете передать базовый URL через переменную окружения BASE_URL.

    BASE_URL=https://sub.k3k.lol node src/build.js

    Скрипт сгенерирует криптографически безопасный токен (anti-bruteforce) для пользователя, сохранит его в data/Vasya/token.txt, и создаст файлы в папке public/:

    • Провайдеры: public/providers/<TOKEN>_ru.yaml и public/providers/<TOKEN>_foreign.yaml
    • Основной конфиг для пользователя: public/configs/<TOKEN>.yaml

    В консоли вы увидите готовую защищенную ссылку!

  3. Использование в Mihomo (Clash Meta): Отправьте пользователю защищенную ссылку из консоли. Например: https://sub.k3k.lol/configs/3f9b2d8e4c1a6f....yaml

    Пользователь вставляет эту ссылку в приложение. Приложение скачивает конфиг, который в свою очередь автоматически подтягивает ru_servers и foreign_servers из файлов провайдеров. Интервал обновления провайдеров установлен на 1 час (3600 сек).

Смена домена (после 10 июня)

Когда вы поменяете домен:

  1. Замените домен в /etc/caddy/Caddyfile и перезапустите Caddy (sudo systemctl restart caddy).
  2. Перегенерируйте конфиги с новым URL:
    BASE_URL=https://newdomain.com node src/build.js
  3. Клиентам придется обновить ссылку в приложении один раз. После этого автообновление будет работать через новый домен.

GitHub Actions автодеплой

В репозитории есть workflow: .github/workflows/deploy.yml. Он по push в master подключается по SSH и запускает серверный deploy через forced command.

1) Настройка безопасного deploy-пользователя на Ubuntu 24

sudo adduser --disabled-password --gecos "" deploy-bot
sudo install -o root -g root -m 755 ops/subman-deploy.sh /usr/local/bin/subman-deploy.sh
sudo chown -R deploy-bot:deploy-bot /opt/subscription-manager

Сгенерируйте SSH-ключ локально (для GitHub Actions), публичный ключ добавьте в /home/deploy-bot/.ssh/authorized_keys с жесткими ограничениями:

command="/usr/local/bin/subman-deploy.sh",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-ed25519 AAAA... github-actions
sudo mkdir -p /home/deploy-bot/.ssh
sudo chown deploy-bot:deploy-bot /home/deploy-bot/.ssh
sudo chmod 700 /home/deploy-bot/.ssh
sudo nano /home/deploy-bot/.ssh/authorized_keys
sudo chown deploy-bot:deploy-bot /home/deploy-bot/.ssh/authorized_keys
sudo chmod 600 /home/deploy-bot/.ssh/authorized_keys

2) Secrets в GitHub

Добавьте secrets:

  • DEPLOY_HOST (например sub.k3k.lol)
  • DEPLOY_PORT (обычно 22)
  • DEPLOY_USER (deploy-bot)
  • DEPLOY_SSH_KEY (приватный ключ от пары выше)

3) Что делает deploy

/usr/local/bin/subman-deploy.sh:

  • git pull --ff-only origin master
  • npm ci --omit=dev
  • BASE_URL=https://sub.k3k.lol node src/build.js

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors