https://github.com/kureinmaxim/ai-manager
Безопасное приложение для управления API ключами и настройками AI сервисов с поддержкой YubiKey аутентификации, шифрования данных и современного интерфейса.
https://github.com/kureinmaxim/ai-manager
authentication desktop-application encryption flask python security web-application yubikey
Last synced: 3 months ago
JSON representation
Безопасное приложение для управления API ключами и настройками AI сервисов с поддержкой YubiKey аутентификации, шифрования данных и современного интерфейса.
- Host: GitHub
- URL: https://github.com/kureinmaxim/ai-manager
- Owner: kureinmaxim
- License: mit
- Created: 2025-08-01T15:04:08.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-11-06T18:57:14.000Z (8 months ago)
- Last Synced: 2026-04-12T08:33:26.056Z (3 months ago)
- Topics: authentication, desktop-application, encryption, flask, python, security, web-application, yubikey
- Language: Python
- Homepage:
- Size: 5.9 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# 🔐 AI Manager - Менеджер AI сервисов
[](https://python.org)
[](https://flask.palletsprojects.com)
[](LICENSE)
[](https://www.yubico.com/)
> Безопасный менеджер для управления API ключами и настройками AI сервисов с поддержкой YubiKey аутентификации
## 🌟 Особенности
- 🔐 **Безопасная аутентификация** с поддержкой YubiKey и статических паролей
- 🔒 **Шифрование данных** - все API ключи хранятся в зашифрованном виде
- 📱 **Современный интерфейс** с адаптивным дизайном
- 🌐 **Веб и GUI версии** - используйте как веб-приложение или десктопную программу
- 📊 **Анализ сервисов** - проверка доступности и статистика использования
- 🔄 **Импорт/Экспорт** - резервное копирование и миграция данных
- 🛡️ **Безопасность** - логирование событий и защита от несанкционированного доступа
## 📋 Содержание
- [Установка](#-установка)
- [Быстрый старт](#-быстрый-старт)
- [Настройка аутентификации](#-настройка-аутентификации)
- [Использование](#-использование)
- [Безопасность](#-безопасность)
- [Разработка](#-разработка)
- [Сборка](#-сборка)
- [Решение проблем](#-решение-проблем)
- [Кросс-платформенная разработка](CROSS_PLATFORM_GUIDE.md)
- [Лицензия](#-лицензия)
## ⬇️ Скачать
- Последний релиз: [Latest Release](https://github.com/kureinmaxim/ai-manager/releases/latest)
- Прямая ссылка (v5.6.0, macOS DMG): [AllManagerC_Installer_v5.6.0.dmg](https://github.com/kureinmaxim/ai-manager/releases/download/v5.6.0/AllManagerC_Installer_v5.6.0.dmg)
- SHA256(DMG): `будет обновлен после сборки`
## 🚀 Установка
### Требования
- Python 3.8+ (для Windows рекомендуется Python 3.13+)
- pip
- Git
**Примечания:**
- В проекте используется виртуальное окружение `.venv` (с точкой)
- Windows PowerShell: Может потребоваться разрешить выполнение скриптов:
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### Клонирование репозитория
```bash
git clone https://github.com/your-username/ai-manager.git
cd ai-manager
```
### Установка зависимостей
```bash
# Создание виртуального окружения
# Windows:
python -m venv .venv
# macOS/Linux:
python3 -m venv .venv
# Активация виртуального окружения
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
# Windows CMD:
.venv\Scripts\activate.bat
# macOS/Linux:
source .venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt
```
### Настройка окружения
Создайте файл `.env` в корне проекта:
```bash
# Конфигурация YubiKey
YUBIKEY_STATIC_PASSWORDS=demo123,test123,admin123
# Секретный ключ для Flask (автоматически генерируется)
SECRET_KEY=your-generated-key-here
# Настройки приложения
FLASK_ENV=development
FLASK_DEBUG=True
# Настройки шифрования
ENCRYPTION_KEY_FILE=.env
```
### Генерация секретного ключа
```bash
# Windows:
python -c "from cryptography.fernet import Fernet; print('SECRET_KEY=' + Fernet.generate_key().decode())"
# macOS/Linux:
python3 -c "from cryptography.fernet import Fernet; print('SECRET_KEY=' + Fernet.generate_key().decode())"
```
Скопируйте сгенерированный ключ в файл `.env`.
## 🎯 Быстрый старт
### Способ 1: GUI приложение (рекомендуется)
```bash
# Windows:
python run_app.py
# macOS/Linux:
python3 run_app.py
```
Приложение запустится с графическим интерфейсом в отдельном окне.
### Способ 2: Веб-интерфейс
```bash
# Windows:
python app.py
# macOS/Linux:
python3 app.py
```
Затем откройте браузер и перейдите по адресу: http://127.0.0.1:5050
## 🔐 Настройка аутентификации
### Статические пароли (офлайн-режим)
Отредактируйте файл `.env`:
```bash
YUBIKEY_STATIC_PASSWORDS=your-password1,your-password2,your-password3
```
### YubiKey (онлайн-режим)
1. Получите API ключи от [Yubico](https://www.yubico.com/)
2. Войдите в приложение
3. Перейдите в **Настройки** → **YubiKey**
4. Добавьте полученные ключи
### Комбинированный режим
Настройте оба варианта для работы в любых условиях.
📖 **Подробное руководство:** [АУТЕНТИФИКАЦИЯ.md](АУТЕНТИФИКАЦИЯ.md)
## 💻 Использование
### Первый запуск
1. Запустите приложение
2. Введите один из статических паролей для входа
3. Настройте YubiKey (опционально)
4. Добавьте первые AI сервисы
### Добавление сервиса
1. Нажмите кнопку "Добавить сервис"
2. Заполните форму:
- **Название** - название AI сервиса
- **URL** - веб-адрес сервиса
- **API ключ** - ваш API ключ (будет зашифрован)
- **Описание** - дополнительная информация
### Управление сервисами
- **Просмотр** - список всех добавленных сервисов
- **Редактирование** - изменение настроек сервиса
- **Удаление** - безопасное удаление с подтверждением
- **Экспорт** - резервное копирование данных
## 🛡️ Безопасность
### Шифрование данных
- Все API ключи шифруются с помощью Fernet
- Ключи шифрования хранятся отдельно от данных
- Поддержка смены ключей шифрования
### Аутентификация
- YubiKey OTP для максимальной безопасности
- Статические пароли для офлайн-режима
- Комбинированный режим для гибкости
### Логирование
- Все действия пользователя логируются
- Безопасное хранение логов
- Аудит доступа к данным
## 🔧 Разработка
### Структура проекта
```
ai-manager/
├── app.py # Основное Flask приложение
├── run_app.py # GUI запуск приложения
├── yubikey_auth.py # Модуль аутентификации
├── security_logger.py # Логирование безопасности
├── requirements.txt # Зависимости Python
├── .env # Конфигурация окружения
├── templates/ # HTML шаблоны
├── static/ # Статические файлы
├── data/ # Данные приложения
├── logs/ # Логи
└── tools/ # Вспомогательные инструменты
```
### Запуск в режиме разработки
```bash
# Активация виртуального окружения
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
# macOS/Linux:
source .venv/bin/activate
# Установка зависимостей разработки
pip install -r requirements.txt
# Проверка окружения (опционально)
python check_env.py
# Запуск с отладкой
# Windows:
set FLASK_ENV=development && set FLASK_DEBUG=True && python app.py
# macOS/Linux:
FLASK_ENV=development FLASK_DEBUG=True python3 app.py
```
### Тестирование
```bash
# Запуск тестов (если есть)
python3 -m pytest
# Проверка кода
python3 -m flake8
python3 -m black .
```
## 📦 Сборка
### Создание исполняемого файла
```bash
# Установка PyInstaller
pip install pyinstaller
# Сборка для macOS
chmod +x build_macos.sh
./build_macos.sh
# Сборка для Windows
python build_windows.py
```
### Создание инсталлятора для Windows (Inno Setup)
#### Требования
- [Inno Setup 6.0+](https://jrsoftware.org/isdl.php) - бесплатный инсталлятор для Windows
- Собранное приложение PyInstaller (см. выше)
#### Шаг 1: Сборка приложения с PyInstaller
```powershell
# Активируйте виртуальное окружение (PowerShell)
.\.venv\Scripts\Activate.ps1
# Установите зависимости
pip install -r requirements.txt
pip install pyinstaller
# Запустите скрипт сборки
python build_windows.py
```
После выполнения команды исполняемый файл будет находиться в `dist\AllManagerC\AllManagerC.exe`.
#### Шаг 2: Настройка Inno Setup скрипта
Откройте файл `AllManagerC.iss` и при необходимости измените:
- **AppVersion** - версия приложения (например, `5.6.0`)
- **AppPublisher** - имя издателя
- **AppPublisherURL** - сайт издателя
- **DefaultDirName** - путь установки (по умолчанию `{autopf}\AllManagerC`)
Пример настройки:
```ini
#define MyAppVersion "5.6.0"
#define MyAppPublisher "Your Company"
#define MyAppURL "https://github.com/your-username/ai-manager"
```
#### Шаг 3: Компиляция инсталлятора
**Способ 1: Через GUI Inno Setup**
1. Откройте Inno Setup Compiler
2. Откройте файл `AllManagerC.iss` (File → Open)
3. Нажмите **Build** → **Compile** (или F9)
4. Готовый инсталлятор будет в папке `dist\AllManagerC_Installer.exe`
**Способ 2: Через командную строку**
```bash
# Путь к компилятору Inno Setup (по умолчанию)
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" AllManagerC.iss
```
#### Шаг 4: Проверка инсталлятора
1. Запустите созданный `.exe` файл
2. Следуйте инструкциям установщика
3. Проверьте установку приложения в `C:\Program Files\AllManagerC`
4. Запустите приложение через ярлык на рабочем столе
#### Хранение данных после установки
После установки через инсталлятор:
- **Программные файлы**: `C:\Program Files\AllManagerC\`
- **Пользовательские данные**: `%APPDATA%\AllManagerC\`
- Конфигурация: `%APPDATA%\AllManagerC\config.json`
- Данные: `%APPDATA%\AllManagerC\data\`
- Загрузки: `%APPDATA%\AllManagerC\uploads\`
- Ключи: `%APPDATA%\AllManagerC\.env`
**Важно:** Пользовательские данные не удаляются при деинсталляции программы.
### Создание инсталлятора для macOS
#### Требования
- macOS 10.13+
- Python 3.8+
- Xcode Command Line Tools (установить через `xcode-select --install`)
- [create-dmg](https://github.com/create-dmg/create-dmg) (опционально): `brew install create-dmg`
#### Автоматическая сборка (рекомендуется)
```bash
# Сделайте скрипт исполняемым (один раз)
chmod +x build_macos.sh
# Запустите сборку
./build_macos.sh
```
Скрипт автоматически:
1. ✅ Проверит `.venv` (пересоздаст, если он от Windows)
2. ✅ Установит все зависимости
3. ✅ Соберет .app с PyInstaller
4. ✅ Создаст DMG инсталлятор
5. ✅ Вычислит SHA256 хеш
> **💡 Совет:** Если у вас уже есть `.venv` от Windows, скрипт автоматически обнаружит это и пересоздаст его для macOS.
После завершения вы получите:
- `dist/AllManagerC.app` - готовое приложение
- `dist/AllManagerC_Installer_v5.6.0.dmg` - инсталлятор для распространения
#### Ручная сборка
Подробные инструкции по ручной сборке, подписанию и нотаризации см. в [BUILD_MACOS.md](BUILD_MACOS.md)
#### Публикация релиза
```bash
# 1. Создайте тег версии
git tag -a v5.6.0 -m "Release version 5.6.0"
git push origin v5.6.0
# 2. Создайте GitHub Release (требуется GitHub CLI)
gh release create v5.6.0 \
dist/AllManagerC_Installer_v5.6.0.dmg \
--title "AllManagerC v5.6.0" \
--notes-file CHANGELOG.md
# 3. Обновите README.md с SHA256 хешем из вывода build_macos.sh
```
#### Хранение данных на macOS
После установки через DMG:
- **Приложение**: `/Applications/AllManagerC.app`
- **Пользовательские данные**: `~/Library/Application Support/AllManagerC/`
- Конфигурация: `~/Library/Application Support/AllManagerC/config.json`
- Данные: `~/Library/Application Support/AllManagerC/data/`
- Ключи: `~/Library/Application Support/AllManagerC/.env`
## ❓ Решение проблем
### Windows: Ошибка активации виртуального окружения
**Проблема:** При активации `.venv\Scripts\activate` появляется ошибка "could not be loaded"
**Решение:**
```powershell
# Используйте правильный скрипт для PowerShell:
.\.venv\Scripts\Activate.ps1
# Или для CMD:
.venv\Scripts\activate.bat
```
### Windows: Ошибка "execution of scripts is disabled"
**Проблема:** PowerShell блокирует выполнение скриптов
**Решение:**
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### Виртуальное окружение не существует
**Проблема:** Ошибка "The term '.\venv\Scripts\Activate.ps1' is not recognized"
**Решение:**
```bash
# Создайте виртуальное окружение:
# Windows:
python -m venv .venv
# macOS/Linux:
python3 -m venv .venv
```
### Использование .venv вместо venv
В этом проекте используется папка `.venv` (с точкой) вместо `venv`. Убедитесь, что все команды используют `.venv`:
- Активация: `.\.venv\Scripts\Activate.ps1` (Windows)
- Активация: `source .venv/bin/activate` (macOS/Linux)
**⚠️ Важно:** Виртуальные окружения специфичны для платформы! `.venv` от Windows не работает на macOS и наоборот.
- `.venv` уже в `.gitignore` и не попадает в git
- При переходе между платформами нужно пересоздать `.venv`
- Скрипт `build_macos.sh` автоматически обнаруживает это и пересоздает окружение
### Проверка окружения разработки
Используйте скрипт `check_env.py` для диагностики:
```bash
# Windows
python check_env.py
# macOS/Linux
python3 check_env.py
```
Скрипт проверит и покажет:
- 🖥️ Операционную систему и архитектуру
- 🐍 Версию Python и путь к интерпретатору
- 📦 Статус виртуального окружения (активно/неактивно)
- 📚 Установленные зависимости и их версии
- ⚙️ Конфигурационные файлы проекта
- 🔀 Статус git и `.gitignore`
- 💡 Рекомендации по исправлению проблем
### Ошибка "did not find executable at python.exe"
**Проблема:** При установке зависимостей появляется ошибка "did not find executable at 'C:\Users\user\AppData\Local\Programs\Python\Python313\python.exe'"
**Причина:** Виртуальное окружение было создано со старой установкой Python, которая больше не доступна
**Решение:** Пересоздайте виртуальное окружение:
```powershell
# Выйдите из виртуального окружения (закройте терминал или откройте новый)
# Удалите старое виртуальное окружение
Remove-Item -Path .venv -Recurse -Force
# Создайте новое
python -m venv .venv
# Активируйте его
.\.venv\Scripts\Activate.ps1
# Установите зависимости
pip install -r requirements.txt
```
## 🤝 Вклад в проект
1. Форкните репозиторий
2. Создайте ветку для новой функции (`git checkout -b feature/amazing-feature`)
3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
4. Отправьте в ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
### Правила разработки
- Следуйте PEP 8 для Python кода
- Добавляйте комментарии к новым функциям
- Обновляйте документацию при изменении API
- Тестируйте изменения перед отправкой
## 📄 Лицензия
Этот проект распространяется под лицензией MIT. См. файл [LICENSE](LICENSE) для получения дополнительной информации.
## 🙏 Благодарности
- [Flask](https://flask.palletsprojects.com/) - веб-фреймворк
- [Yubico](https://www.yubico.com/) - аутентификация
- [Bootstrap](https://getbootstrap.com/) - UI компоненты
- [Cryptography](https://cryptography.io/) - шифрование
## 📞 Поддержка
- 📧 Email: support@example.com
- 🐛 Issues: [GitHub Issues](https://github.com/your-username/ai-manager/issues)
- 📖 Документация: [Wiki](https://github.com/your-username/ai-manager/wiki)
---
⭐ Если проект вам понравился, поставьте звезду на GitHub!
## Одновременный запуск нескольких приложений
Начиная с v5.5.4, приложение автоматически выбирает свободный локальный порт (предпочитая 5050/5051/5060/5070/5080) и использует уникальное имя cookie сессии `allmanager_session`. Это позволяет запускать одновременно, например, `AllManager.app` и `VPNServer.app`, без конфликтов портов и "перемешивания" сессий.
## 📦 Новые возможности в v5.6.0
- ✅ Улучшенная документация по сборке Windows-инсталлятора с Inno Setup
- ✅ Обновлены все команды для работы с виртуальным окружением `.venv`
- ✅ Добавлен раздел "Решение проблем" с типичными ошибками
- ✅ Полная поддержка PowerShell команд для Windows
- ✅ Обновлены зависимости до последних версий
## Установка и где хранятся данные
- Windows (инсталлятор):
- Сборка: соберите приложение PyInstaller командой (см. `build_windows.py`), затем запустите сборку инсталлятора Inno Setup, открыв `AllManagerC.iss` в Inno Setup Compiler и нажав Build.
- Путь установки по умолчанию: `C:\Program Files\AllManagerC`.
- Пользовательские данные (не удаляются при удалении программы):
- Конфиг и служебные файлы: `%APPDATA%\AllManagerC\` (например: `C:\Users\\AppData\Roaming\AllManagerC\`)
- Активный файл данных: `%APPDATA%\AllManagerC\data\ai_services*.enc`
- Загрузки (иконки, чеки): `%APPDATA%\AllManagerC\uploads\`
- `.env` при необходимости также можно хранить здесь.
- PIN разработчика и Secret PIN:
- Считывается из переменных окружения `DEV_PIN`/`DEVELOPER_PIN` либо из `%APPDATA%\AllManagerC\config.json` в `security.secret_pin.current_pin` (при смене PIN этот ключ обновляется автоматически).
- macOS (для справки):
- Данные хранятся в `~/Library/Application Support/AllManagerC/` (если вы собираете .app).