Пошаговое руководство: как зашифровать проект, привязать к криптографической лицензии Ed25519, защитить от копирования и передать конечному покупателю.
key
Асимметрия Ed25519
Клиентский модуль содержит только публичный ключ. Приватный ключ хранится исключительно на вашем сервере лицензий. Взломать клиентскую часть невозможно — подделать цифровую подпись сессии без сервера математически исключено.
fingerprint
Anti-Cloning HWID
Система генерирует детерминированный отпечаток оборудования (Machine ID, Product UUID, Windows GUID, MAC-адрес). Передача ZIP-архива другому человеку заблокирует его запуск на втором ПК из-за лимита установок.
bolt
Revoke vs Grace
При временном падении интернета клиент продолжает работу в автономном режиме (Grace Period). Но если сервер возвращает REVOKED (отзыв лицензии), приложение блокируется мгновенно, а локальная сессия уничтожается.
account_tree
Жизненный цикл защиты и проверки клиента
Инструкция по защите проектов на Node.js (JavaScript / TypeScript)
Поддерживает Express, NestJS, Fastify, Telegram боты (Telegraf, node-telegram-bot-api), микросервисы и скрипты автоматизации.
ШАГ 1
Подготовка исходного архива ZIP
Упакуйте ваш проект в стандартный ZIP-архив. Убедитесь, что в корне проекта присутствуют package.json и главная точка входа (например, index.js или server.js).
📁 Структура исходного архива (Node.js):
├── package.json
├── index.js (или app.js / bot.js)
├── src/ (бизнес-логика, роуты, контроллеры)
└── .env.example (опционально)
⚠️ Примечание: Папку node_modules упаковывать НЕ нужно!
Автоматический запуск покупателем в 1 команду: deploy.sh
Покупателю достаточно закинуть файлы на сервер и выполнить одну команду:
bash deploy.sh
Скрипт сам установит Node.js 20 LTS, PM2, зависимости, запросит ключ лицензии и запустит сервис в фоне.
Посмотреть исходный код deploy.sh для Node.js
#!/bin/bash
# ==========================================
# 🚀 1-Click Server Installer (Node.js)
# Enterprise Production-Hardened Deployment
# ==========================================
set -e
if [ "$(id -u)" -ne 0 ]; then
echo "❌ Пожалуйста, запустите скрипт от имени root (sudo bash deploy.sh)"
exit 1
fi
if ! command -v openssl >/dev/null 2>&1; then
echo "❌ Ошибка: openssl обязателен для генерации крипто-секретов."
exit 1
fi
echo "🚀 Установка и запуск Node.js проекта..."
# 1. Установка Node.js 20 LTS и PM2
if ! command -v node &> /dev/null; then
echo "📦 Установка Node.js 20 LTS..."
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
fi
if ! command -v pm2 &> /dev/null; then
echo "📦 Установка PM2..."
npm install -g pm2
fi
# 2. Создание unprivileged пользователя keyguard
APP_DIR=$(pwd)
if ! id -u keyguard &>/dev/null; then
useradd -m -s /bin/bash keyguard 2>/dev/null || true
fi
# 3. Безопасное создание .env (Скрытый ввод + 256-bit Admin Secret)
if [ ! -f .env ]; then
echo "⚙️ Настройка лицензии:"
read -r -s -p "🔑 Введите ваш LICENSE_KEY: " user_key
echo
ADMIN_SECRET="$(openssl rand -hex 32)"
(umask 077 && touch .env)
cat << EOF > .env
LICENSE_KEY=${user_key}
LICENSE_SERVER_URL=https://license.your-domain.com
PORT=3000
NODE_ENV=production
ADMIN_SECRET=${ADMIN_SECRET}
EOF
chmod 600 .env
fi
# 4. Детерминированная установка зависимостей
echo "📦 Установка зависимостей..."
if [ -f package-lock.json ]; then
npm ci --omit=dev
else
npm install --omit=dev
fi
chown -R keyguard:keyguard "${APP_DIR}" 2>/dev/null || true
chmod 600 .env 2>/dev/null || true
# 5. Запуск через PM2 от имени непривилегированного User=keyguard
echo "⚡ Запуск приложения через PM2 (User: keyguard)..."
su - keyguard -c "cd '${APP_DIR}' && pm2 start index.js --name 'app' && pm2 save" 2>/dev/null || {
pm2 start index.js --name "app"
pm2 save
}
env PATH=$PATH:/usr/bin pm2 startup systemd -u keyguard --hp /home/keyguard 2>/dev/null || pm2 startup || true
echo "=========================================="
echo "✅ Приложение успешно запущено (User: keyguard)!"
echo "🔒 Секреты защищены (права .env: 600)"
echo "📊 Управление: su - keyguard -c 'pm2 status | pm2 logs'"
echo "=========================================="
РУЧНОЙ РЕЖИМ
Ручной запуск (без deploy.sh)
1. Установка зависимостей:
npm install --production
2. Обычный запуск:
node index.js
3. Запуск через PM2:
pm2 start index.js --name "protected-app" && pm2 save
php
Инструкция по защите проектов на PHP (8.0 / 8.1 / 8.2 / 8.3+)
Идеально подходит для API-серверов, панелей управления, скриптов чекеров, веб-сервисов и фреймворков.
ШАГ 1
Подготовка исходных файлов PHP
В исходном проекте точка входа (например, api.php) должна начинаться с вызова require_once __DIR__ . '/bootstrap.php';. Сборщик автоматически настроит изоляцию и цифровую подпись.
📁 Структура исходного архива (PHP):
├── api.php (основной роутер / контроллер)
├── config.php (конфигурация)
├── index.html (фронтенд интерфейс)
├── js/ & css/ (статические ресурсы)
└── .htaccess (правила перенаправления)
ШАГ 2
Сборка защищенного релиза в Web-интерфейсе
Откройте раздел «Сборщик проектов» в админ-панели KeyGuard AI.
Выберите платформу: PHP.
Загрузите исходный архив .zip.
Нажмите «Собрать защищенный релиз».
Сборщик автоматически внедрит license-guard.php, безопасный bootstrap.php, монолитный .htaccess и создаст криптографический manifest.json с Ed25519-подписью.
ШАГ 3
Настройка .env на сервере покупателя
Покупатель распаковывает проект в корень своего веб-сервера (например, /var/www/html или Apache htdocs) и создает файл .env:
Автоматический запуск покупателем в 1 команду: deploy.sh
Для автоматической установки Apache, PHP 8.2, настройки прав www-data и запуска сервиса покупатель выполняет:
bash deploy.sh
Посмотреть исходный код deploy.sh для PHP
#!/bin/bash
# ==========================================
# 🚀 1-Click Server Installer (PHP 8.2+)
# Enterprise Production-Hardened Deployment
# ==========================================
set -e
if [ "$(id -u)" -ne 0 ]; then
echo "❌ Пожалуйста, запустите скрипт от имени root (sudo bash deploy.sh)"
exit 1
fi
if ! command -v openssl >/dev/null 2>&1; then
echo "❌ Ошибка: openssl обязателен для безопасной криптографической генерации."
exit 1
fi
echo "🚀 Развертывание PHP веб-сервиса на сервере..."
# 1. Установка Apache и PHP
if ! command -v php &> /dev/null; then
echo "📦 Установка Apache и PHP (curl, sodium, mbstring)..."
apt-get update -qq
apt-get install -y -qq apache2 php libapache2-mod-php php-curl php-sodium php-mbstring
a2enmod rewrite
fi
# 2. Безопасное создание .env (Скрытый ввод + 256-bit Admin Secret)
if [ ! -f .env ]; then
echo "⚙️ Настройка лицензии:"
read -r -s -p "🔑 Введите ваш LICENSE_KEY: " user_key
echo
ADMIN_SECRET="$(openssl rand -hex 32)"
(umask 077 && touch .env)
cat << EOF > .env
LICENSE_KEY=${user_key}
LICENSE_SERVER_URL=https://license.your-domain.com
ADMIN_SECRET=${ADMIN_SECRET}
ALLOWED_ORIGINS=http://localhost
EOF
chmod 600 .env
fi
# 3. Принцип наименьших привилегий (ReadOnly код, запись только в .license)
echo "🔒 Настройка строгих прав доступа (Least Privilege)..."
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
chmod 755 deploy.sh 2>/dev/null || true
# Выделенная защищенная директория для сессий и криптографии
mkdir -p .license
chown -R www-data:www-data .license
chmod 700 .license
# Права на .env
chown root:www-data .env 2>/dev/null || chown www-data:www-data .env 2>/dev/null || true
chmod 640 .env 2>/dev/null || chmod 600 .env
# 4. Перезапуск веб-сервера
systemctl restart apache2 2>/dev/null || service apache2 restart 2>/dev/null || true
echo "=========================================="
echo "✅ PHP-сервис успешно развернут!"
echo "🔒 Исходный код защищен (644 ReadOnly, запись строго в .license/)"
echo "🌐 Настройте домен / SSL-сертификат для Apache"
echo "=========================================="
КОНФИГУРАЦИЯ
Конфигурация Apache и Nginx (403 Защита)
Apache Web Server
Сгенерированный .htaccess автоматически блокирует прямой вызов служебных файлов:
# Запрет доступа к секретам
<FilesMatch "^\.(env|license)">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch "^(bootstrap|license-guard|config)\.php$">
Order allow,deny
Deny from all
</FilesMatch>