MalinaKod Deploy System — клиентский TUI оркестратор с GitHub-синхронизацией
Project description
MalinaKod Deploy System v0.2
Система развёртывания и управления сервисами клиентов студии MalinaKod.
Полностью menu-driven TUI, без CLI-команд. GitHub-репо Medenchi/Malinacode-releases
используется как контрол-плейн.
Архитектура
┌──────────────────┐ ┌─────────────────────┐
│ Студия (admin) │ │ Клиент (Windows / │
│ │ │ Linux / macOS) │
│ malinakod-admin │ ─PUT─▶ ┌──────────────────┐ │ │
│ (TUI с паролем) │ │ Medenchi/ │ │ malinakod (TUI) │
│ │ GET ◀─│ Malinacode- │◀──┐│ │
│ │ │ releases (priv) │ ││ • git-like sync 30с │
│ │ │ /clients/<id>/ │ ││ • запускает сервисы │
└──────────────────┘ │ manifest.json │ ││ из manifest.json │
│ files/ │ ││ • выполняет команды │
│ commands/ │ │└─────────────────────┘
│ output/ │ │
│ status.json │◀──┘ heartbeat
└──────────────────┘
Два пакета на PyPI
malinakod — клиентский пакет (ставится у клиента)
pip install malinakod
malinakod
При первом запуске попросит лицензионный ключ (выдаёт студия). Дальше:
- 📊 Статус (синхронизация, сервисы)
- 🔄 Принудительная синхронизация
- 📋 Логи
- 🖥️ Информация о машине
- ⚙️ Настройки
В фоне (пока запущен malinakod):
- Каждые 30 сек скачивает изменения из
clients/<id>/своей папки в репо - Применяет
manifest.json— запускает / перезапускает / останавливает сервисы - Каждую минуту пишет heartbeat (
status.json) обратно в репо - Каждые 5 сек проверяет
commands/на новые команды от админа, исполняет, кладёт результат вoutput/
malinakod-admin — пакет студии (ставится у вас)
pip install malinakod-admin
malinakod-admin
При первом запуске:
- Создаёт зашифрованное хранилище (
~/.malinakod-admin/vault.json) - Просит мастер-пароль
- Просит GitHub Personal Access Token (Fine-grained, права Contents: Read and write на
Medenchi/Malinacode-releases) - Просит мастер-секрет для подписи лицензий (или генерирует случайный)
Дальше TUI с меню:
- 👥 Клиенты (список с маркером "manifest есть/нет")
- ➕ Создать клиента (автоматически создаёт
clients/<id>/в репо + выдаёт ключ) - 📂 Открыть папку клиента в браузере (для drag-and-drop загрузки файлов)
- 📊 Статус клиента (читает heartbeat)
- 💻 Послать команду клиенту (записывает в
commands/, ждёт ответа вoutput/) - ⚙️ Настройки
Загрузка файлов клиенту
Через веб-интерфейс GitHub (без команд):
- В админ-TUI: «Открыть папку клиента в GitHub» → откроется браузер
- Перейти в
files/ - Перетащить файлы в браузер (drag-and-drop) или кнопка Add file → Upload files
- GitHub коммитит автоматически
- Клиент подхватывает в течение 30 секунд
manifest.json — описание сервисов
Загрузить через GitHub-веб в clients/<id>/manifest.json:
{
"services": [
{
"name": "telegram-bot",
"run": "python main.py",
"cwd": "bot",
"visible": true,
"port": 8080,
"env": {"TG_TOKEN": "..."}
},
{
"name": "tg-api",
"run": "telegram-bot-api.exe --local",
"cwd": "tg-api",
"visible": true,
"port": 8081
}
]
}
cwd — относительно files/ (так что cwd: "bot" указывает на files/bot/).
visible: false — сервис скрыт от клиента в TUI.
Команды от админа
В админ-TUI: «Послать команду клиенту» → ввести shell-команду →
файл создаётся в clients/<id>/commands/cmd_<ts>.txt →
клиент исполняет в течение ~30 сек →
результат появится в clients/<id>/output/cmd_<ts>.log →
админ TUI прочитает и покажет.
Полезно для:
- Установки зависимостей:
pip install -r files/bot/requirements.txt - Сбора инфы:
python --version,dir files,tasklist - Принудительного рестарта:
python -c "import os; os.kill(...)"
Безопасность
- Хранилище админа шифруется паролем (PBKDF2 + Fernet)
- Лицензионные ключи подписаны HMAC-SHA256
- GitHub-репо приватный, доступ только по PAT
- Heartbeat и логи — только в приватном репо
Установка с нуля
Студия
pip install malinakod-admin
malinakod-admin
Следуйте инструкциям первого запуска. После настройки — создавайте клиентов из меню.
Клиент
pip install malinakod
malinakod
Введите ключ который выдала студия. Готово.
Связанные репозитории
Medenchi/Malinacode-Deploy-system— этот репо (исходники)Medenchi/Malinacode-releases— приватный репо для контрол-плейна (создаётся вручную)
Версия
malinakod 0.2.0(клиент)malinakod-admin 0.1.0(админка)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file malinakod-0.2.2.tar.gz.
File metadata
- Download URL: malinakod-0.2.2.tar.gz
- Upload date:
- Size: 38.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
546d58532329d6201738dae386c24c7b2ff6d172f6b464f2dd4bdb220c401e43
|
|
| MD5 |
b7e3bfaa9e6203071ffccc6146aebc59
|
|
| BLAKE2b-256 |
103572b6b61aa64073657c4a0e8fc9e6c5a71f5e4c5969e651b7563df10104b8
|
File details
Details for the file malinakod-0.2.2-py3-none-any.whl.
File metadata
- Download URL: malinakod-0.2.2-py3-none-any.whl
- Upload date:
- Size: 46.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
529186cc585a97d00e23c816b7846a4ef515d61cd207a65701bfa9d4abc30dc9
|
|
| MD5 |
14b071a1a7073473fe71a0a734e2f242
|
|
| BLAKE2b-256 |
e55cb85c6a5a3ed0e08fc4c97bcca1d2f35368f377aee517f62e8120429043ba
|