Это бекенд для автоматизации управления конфигами и ключами AmneziaWG/Wireguard/VLESS.
-
Установите 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
-
Загрузите этот проект: Скопируйте папку
subscription-managerна ваш сервер (например, в/opt/mihomo-subscriptions/).cd /opt/mihomo-subscriptions npm install js-yaml -
Настройте домен (Caddy): Отредактируйте
Caddyfile, вписав ваш домен. По умолчанию стоитsub.k3k.lol.sudo cp Caddyfile /etc/caddy/Caddyfile sudo systemctl restart caddy
-
Добавление пользователей и серверов: В папке
dataсоздайте папку с именем пользователя. Внутри неё создайте папкиruиforeign. Положите ключи (текстовые файлы сvpn://...или файлы конфигурации.confот AmneziaWG) в соответствующие папки.data/ ├── Vasya/ │ ├── ru/ │ │ └── moscow.conf │ └── foreign/ │ └── netherlands.conf -
Генерация ссылок подписок: Запустите скрипт сборки. Вы можете передать базовый 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
В консоли вы увидите готовую защищенную ссылку!
- Провайдеры:
-
Использование в Mihomo (Clash Meta): Отправьте пользователю защищенную ссылку из консоли. Например:
https://sub.k3k.lol/configs/3f9b2d8e4c1a6f....yamlПользователь вставляет эту ссылку в приложение. Приложение скачивает конфиг, который в свою очередь автоматически подтягивает
ru_serversиforeign_serversиз файлов провайдеров. Интервал обновления провайдеров установлен на 1 час (3600 сек).
Когда вы поменяете домен:
- Замените домен в
/etc/caddy/Caddyfileи перезапустите Caddy (sudo systemctl restart caddy). - Перегенерируйте конфиги с новым URL:
BASE_URL=https://newdomain.com node src/build.js
- Клиентам придется обновить ссылку в приложении один раз. После этого автообновление будет работать через новый домен.
В репозитории есть workflow: .github/workflows/deploy.yml.
Он по push в master подключается по SSH и запускает серверный deploy через forced command.
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Добавьте secrets:
DEPLOY_HOST(напримерsub.k3k.lol)DEPLOY_PORT(обычно22)DEPLOY_USER(deploy-bot)DEPLOY_SSH_KEY(приватный ключ от пары выше)
/usr/local/bin/subman-deploy.sh:
git pull --ff-only origin masternpm ci --omit=devBASE_URL=https://sub.k3k.lol node src/build.js