Add digital signatures for copyright protection
- Add GPG signatures for LICENSE and README - Add public key for signature verification - Update documentation with signature verification instructions - GPG Key ID: 4603583F81054FEECE7E821E026FD26F71D70B17
This commit is contained in:
89
LICENSE
89
LICENSE
@@ -1,50 +1,65 @@
|
|||||||
PROPRIETARY SOFTWARE LICENSE
|
ЛИЦЕНЗИЯ ПРОПРИЕТАРНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
|
||||||
|
|
||||||
Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
Авторские права (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
All rights reserved.
|
Все права защищены.
|
||||||
|
|
||||||
This software and associated documentation files (the "Software") are the
|
Данное программное обеспечение и связанные с ним файлы документации
|
||||||
proprietary and confidential information of Тарабанов Александр Викторович.
|
("Программное обеспечение") являются собственностью и конфиденциальной
|
||||||
|
информацией Тарабанова Александра Викторовича.
|
||||||
|
|
||||||
TERMS AND CONDITIONS:
|
УСЛОВИЯ И ПОЛОЖЕНИЯ:
|
||||||
|
|
||||||
1. GRANT OF LICENSE
|
1. ПРЕДОСТАВЛЕНИЕ ЛИЦЕНЗИИ
|
||||||
Subject to the terms and conditions of this License, Тарабанов Александр Викторович
|
При соблюдении условий данной Лицензии, Тарабанов Александр Викторович
|
||||||
grants you a non-exclusive, non-transferable license to use the Software
|
предоставляет вам неисключительную, непередаваемую лицензию на использование
|
||||||
for your business operations and internal purposes.
|
Программного обеспечения для ваших бизнес-операций и внутренних целей.
|
||||||
|
|
||||||
2. PERMITTED USE
|
2. РАЗРЕШЕННОЕ ИСПОЛЬЗОВАНИЕ
|
||||||
You may:
|
Вы можете:
|
||||||
- Use the Software for your business operations
|
- Использовать Программное обеспечение для ваших бизнес-операций
|
||||||
- Install and run the Software on your systems
|
- Устанавливать и запускать Программное обеспечение на ваших системах
|
||||||
- Use the Software to provide services to your clients
|
- Использовать Программное обеспечение для предоставления услуг вашим клиентам
|
||||||
- Integrate the Software into your business processes
|
- Интегрировать Программное обеспечение в ваши бизнес-процессы
|
||||||
|
|
||||||
3. RESTRICTIONS
|
3. ОГРАНИЧЕНИЯ
|
||||||
You may NOT:
|
Вы НЕ можете:
|
||||||
- Resell, redistribute, or sublicense the Software to third parties
|
- Перепродавать, перераспределять или сублицензировать Программное обеспечение третьим лицам
|
||||||
- Modify, adapt, or create derivative works without explicit permission
|
- Дарить, передавать или предоставлять Программное обеспечение третьим лицам
|
||||||
- Reverse engineer, decompile, or disassemble the Software
|
- Модифицировать, адаптировать или создавать производные работы без явного разрешения
|
||||||
- Remove or alter any copyright notices
|
- Обратно инжинирить, декомпилировать или дизассемблировать Программное обеспечение
|
||||||
- Use the Software in educational institutions without permission
|
- Удалять или изменять любые уведомления об авторских правах
|
||||||
|
- Использовать Программное обеспечение в образовательных учреждениях без разрешения
|
||||||
|
|
||||||
4. COMMERCIAL RESALE AND MODIFICATIONS
|
4. КОММЕРЧЕСКАЯ ПЕРЕПРОДАЖА И МОДИФИКАЦИИ
|
||||||
Commercial resale, distribution, or modifications of this Software
|
Коммерческая перепродажа, распространение или модификации данного Программного
|
||||||
require explicit written permission from Тарабанов Александр Викторович
|
обеспечения требуют явного письменного разрешения от Тарабанова Александра
|
||||||
(info@hb3-accelerator.com).
|
Викторовича (info@hb3-accelerator.com).
|
||||||
|
|
||||||
5. UPDATES AND MODIFICATIONS
|
5. ОБНОВЛЕНИЯ И МОДИФИКАЦИИ
|
||||||
Any updates, modifications, or derivative works require explicit written
|
Любые обновления, модификации или производные работы требуют явного письменного
|
||||||
permission from the copyright holder.
|
разрешения от правообладателя.
|
||||||
|
|
||||||
6. TERMINATION
|
6. ПРЕКРАЩЕНИЕ ДЕЙСТВИЯ
|
||||||
This license terminates automatically if you fail to comply with its terms.
|
Данная лицензия автоматически прекращает действие при нарушении ее условий.
|
||||||
|
|
||||||
7. DISCLAIMER
|
7. ОТКАЗ ОТ ГАРАНТИЙ
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
|
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
|
||||||
|
|
||||||
For licensing inquiries: info@hb3-accelerator.com
|
По вопросам лицензирования: info@hb3-accelerator.com
|
||||||
Website: https://hb3-accelerator.com
|
Веб-сайт: https://hb3-accelerator.com
|
||||||
GitHub: https://github.com/HB3-ACCELERATOR
|
GitHub: https://github.com/HB3-ACCELERATOR
|
||||||
|
|
||||||
For detailed license information, see: legal/README.md
|
Подробная информация о лицензии: legal/README.md
|
||||||
|
|
||||||
|
## 🔐 ЦИФРОВАЯ ПОДПИСЬ
|
||||||
|
|
||||||
|
Данный файл подписан цифровой подписью для защиты авторских прав.
|
||||||
|
|
||||||
|
**Проверка подписи:**
|
||||||
|
```bash
|
||||||
|
gpg --verify LICENSE.asc LICENSE
|
||||||
|
```
|
||||||
|
|
||||||
|
**GPG Key ID:** 4603583F81054FEECE7E821E026FD26F71D70B17
|
||||||
|
**Дата подписи:** 2024-10-24
|
||||||
|
**Автор:** Тарабанов Александр Викторович
|
||||||
16
LICENSE.asc
Normal file
16
LICENSE.asc
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEE0B7X50iFYqyCahXe4sAChxn/m0UFAmj7kCUACgkQ4sAChxn/
|
||||||
|
m0Xm6w//SpT7i7CLmRaCUphKuunOA15GpP+FZcKcDK/RIY+fxA2nNkGzPqIBCr1k
|
||||||
|
Mn8ALlM8mJ0tr8HtWp980B2w0gVL1CIxhoqk7YzvbAaDdqZHRzR16pOYn7ZL1X6V
|
||||||
|
T9OmUy/S67wmObCa/ap5pMIlOYsoksQhDYMg2ESSKG8NufAwJeNIqz03jcdW+Pgr
|
||||||
|
lpgnbPrcTMyOBmPWDLV+kgQDkz7E9tU0LI/aohxsubxfNcGshJXmmFS2QDUmoOhQ
|
||||||
|
Y3g2Sh+8WL69WaytcI/1ZEmVu0Ptrbrg52VoOBiX2CHB+MPzkQ85s1sAmAB00X9/
|
||||||
|
uKeVP1PO4uXQE8Vt0dsAjHks173sNOvCWHL8RT69b84FJurrAVJiCpzviiH4VbLa
|
||||||
|
EUfjuZ4zaBpiLzNsRobW6Xx/fXLGQeFlSLuVAXexg6p3p9Hec98Ug88RNrNgecIl
|
||||||
|
3o8feTX+Z1mVF4LOUUaucj6c+dl4jW/xiIvMYQXK0UR/MegKrqvF46TggYKGpK1w
|
||||||
|
6c9ptTZSoOZFrcy1SIi5e5yj6n74onUrOu4KuYNV+gqzoMTelTuFXHsYvZrwZFaC
|
||||||
|
El9Vv2LaYD3J2VMv/peVUZ9cnDz9TMZfMAryKk+IJLX5wT5Ab6Iv/ZFENKnHFZKu
|
||||||
|
GarN4SspA+SaDkRJlgF9t3NOeCwN6p0b3h+Kb7QadR5rEGhyc/c=
|
||||||
|
=vXwt
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# 🚀 Digital Legal Entity (DLE) - Шаблон приложения
|
|
||||||
|
|
||||||
## Описание
|
|
||||||
Полный шаблон приложения Digital Legal Entity
|
|
||||||
|
|
||||||
## 📋 Требования
|
|
||||||
- Docker и Docker Compose
|
|
||||||
|
|
||||||
## 🚀 Быстрый запуск
|
|
||||||
|
|
||||||
### Автоматическая установка (рекомендуется)
|
|
||||||
```bash
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup-template.sh | bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### Ручная установка
|
|
||||||
```bash
|
|
||||||
# 1. Клонирование репозитория
|
|
||||||
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
|
||||||
cd DLE
|
|
||||||
|
|
||||||
# 2. Импорт образов
|
|
||||||
docker load -i docker-data/images/backend.tar
|
|
||||||
docker load -i docker-data/images/frontend.tar
|
|
||||||
docker load -i docker-data/images/vector-search.tar
|
|
||||||
docker load -i docker-data/images/ollama.tar
|
|
||||||
docker load -i docker-data/images/webssh-agent.tar
|
|
||||||
|
|
||||||
# 3. Создание и импорт томов
|
|
||||||
docker volume create digital_legal_entitydle_postgres_data
|
|
||||||
docker volume create digital_legal_entitydle_ollama_data
|
|
||||||
docker volume create digital_legal_entitydle_vector_search_data
|
|
||||||
docker volume create digital_legal_entitydle_backend_node_modules
|
|
||||||
docker volume create digital_legal_entitydle_frontend_node_modules
|
|
||||||
|
|
||||||
docker run --rm -v digital_legal_entitydle_postgres_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/postgres_data.tar.gz -C /target
|
|
||||||
docker run --rm -v digital_legal_entitydle_ollama_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/ollama_data.tar.gz -C /target
|
|
||||||
docker run --rm -v digital_legal_entitydle_vector_search_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/vector_search_data.tar.gz -C /target
|
|
||||||
docker run --rm -v digital_legal_entitydle_backend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/backend_node_modules.tar.gz -C /target
|
|
||||||
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/frontend_node_modules.tar.gz -C /target
|
|
||||||
|
|
||||||
# 4. Запуск приложения
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### Доступ к приложению
|
|
||||||
- **Frontend**: http://localhost:5173
|
|
||||||
|
|
||||||
## 🔧 Управление
|
|
||||||
|
|
||||||
### Запуск
|
|
||||||
```bash
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### Остановка
|
|
||||||
```bash
|
|
||||||
docker-compose down
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 Лицензия
|
|
||||||
|
|
||||||
Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
|
||||||
All rights reserved.
|
|
||||||
This software is proprietary and confidential.
|
|
||||||
For licensing inquiries: info@hb3-accelerator.com
|
|
||||||
|
|
||||||
|
|
||||||
**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.**
|
|
||||||
|
|
||||||
154
README.md
154
README.md
@@ -1,97 +1,109 @@
|
|||||||
# Digital_Legal_Entity(DLE)
|
# 🚀 Digital Legal Entity (DLE) - Шаблон приложения
|
||||||
|
|
||||||
Веб3 приложение для бизнеса с ИИ ассистентом
|
## Описание
|
||||||
|
Полный шаблон приложения Digital Legal Entity
|
||||||
## Авторство и лицензия
|
|
||||||
|
|
||||||
**Автор:** Тарабанов Александр Викторович
|
|
||||||
**Организация:** HB3 Accelerator
|
|
||||||
**Email:** info@hb3-accelerator.com
|
|
||||||
**Сайт:** [hb3-accelerator.com](https://hb3-accelerator.com)
|
|
||||||
**GitHub:** [@HB3-ACCELERATOR](https://github.com/HB3-ACCELERATOR)
|
|
||||||
|
|
||||||
### Лицензия
|
|
||||||
|
|
||||||
Этот проект распространяется под **Proprietary Software License**.
|
|
||||||
|
|
||||||
- ✅ **Разрешено:** Использование в бизнесе для внутренних операций
|
|
||||||
- ✅ **Разрешено:** Предоставление услуг клиентам с использованием софта
|
|
||||||
- ❌ **Запрещено:** Перепродажа софта без разрешения
|
|
||||||
- ❌ **Запрещено:** Модификации кода без разрешения автора
|
|
||||||
|
|
||||||
**Для коммерческого использования требуется разрешение автора.**
|
|
||||||
**Контакты:** info@hb3-accelerator.com
|
|
||||||
|
|
||||||
**Подробная информация:** [LICENSE](LICENSE)
|
|
||||||
|
|
||||||
## Требования
|
|
||||||
|
|
||||||
|
## 📋 Требования
|
||||||
- Docker и Docker Compose
|
- Docker и Docker Compose
|
||||||
|
|
||||||
## Быстрый запуск
|
## 🚀 Быстрый запуск
|
||||||
|
|
||||||
### Вариант 1: через git (рекомендуется)
|
### Автоматическая установка (рекомендуется)
|
||||||
|
|
||||||
1. Клонируйте репозиторий:
|
|
||||||
```bash
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup-template.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ручная установка
|
||||||
|
```bash
|
||||||
|
# 1. Клонирование репозитория
|
||||||
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
||||||
|
|
||||||
cd DLE
|
cd DLE
|
||||||
|
|
||||||
|
# 2. Импорт образов
|
||||||
|
docker load -i docker-data/images/backend.tar
|
||||||
|
docker load -i docker-data/images/frontend.tar
|
||||||
|
docker load -i docker-data/images/vector-search.tar
|
||||||
|
docker load -i docker-data/images/ollama.tar
|
||||||
|
docker load -i docker-data/images/webssh-agent.tar
|
||||||
|
|
||||||
|
# 3. Создание и импорт томов
|
||||||
|
docker volume create digital_legal_entitydle_postgres_data
|
||||||
|
docker volume create digital_legal_entitydle_ollama_data
|
||||||
|
docker volume create digital_legal_entitydle_vector_search_data
|
||||||
|
docker volume create digital_legal_entitydle_backend_node_modules
|
||||||
|
docker volume create digital_legal_entitydle_frontend_node_modules
|
||||||
|
|
||||||
|
docker run --rm -v digital_legal_entitydle_postgres_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/postgres_data.tar.gz -C /target
|
||||||
|
docker run --rm -v digital_legal_entitydle_ollama_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/ollama_data.tar.gz -C /target
|
||||||
|
docker run --rm -v digital_legal_entitydle_vector_search_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/vector_search_data.tar.gz -C /target
|
||||||
|
docker run --rm -v digital_legal_entitydle_backend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/backend_node_modules.tar.gz -C /target
|
||||||
|
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/frontend_node_modules.tar.gz -C /target
|
||||||
|
|
||||||
|
# 4. Запуск приложения
|
||||||
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
2. Запустите скрипт установки:
|
|
||||||
|
### Доступ к приложению
|
||||||
|
- **Frontend**: http://localhost:5173
|
||||||
|
|
||||||
|
## 🔧 Управление
|
||||||
|
|
||||||
|
### Запуск
|
||||||
```bash
|
```bash
|
||||||
./setup.sh
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
3. После запуска контейнеров выполните миграции изнутри контейнера backend:
|
|
||||||
|
### Остановка
|
||||||
```bash
|
```bash
|
||||||
docker exec -e NODE_ENV=migration dapp-backend yarn migrate
|
docker-compose down
|
||||||
```
|
```
|
||||||
|
|
||||||
## Доступные сервисы
|
## 📝 Лицензия
|
||||||
|
|
||||||
После успешного запуска вы получите доступ:
|
**ПРОПРИЕТАРНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ**
|
||||||
|
|
||||||
- Frontend: http://localhost:5173
|
Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||||||
|
Все права защищены.
|
||||||
|
|
||||||
## Ручной запуск
|
### ⚠️ **ВАЖНЫЕ ОГРАНИЧЕНИЯ:**
|
||||||
|
|
||||||
Если вы хотите запустить проект вручную:
|
- ❌ **Запрещено** перепродавать, дарить или передавать третьим лицам
|
||||||
|
- ❌ **Запрещено** модифицировать без явного разрешения
|
||||||
|
- ❌ **Запрещено** использовать в образовательных учреждениях без разрешения
|
||||||
|
- ✅ **Разрешено** только личное использование для бизнес-операций
|
||||||
|
|
||||||
```bash
|
### 📞 **Контакты:**
|
||||||
# Запуск в фоновом режиме
|
|
||||||
docker compose up -d
|
|
||||||
|
|
||||||
# Запуск с логами
|
|
||||||
docker compose up
|
|
||||||
|
|
||||||
# Перезапуск контейнеров
|
|
||||||
docker-compose restart
|
|
||||||
|
|
||||||
# Остановка сервисов
|
|
||||||
docker-compose-down
|
|
||||||
```
|
|
||||||
|
|
||||||
## Контакты и поддержка
|
|
||||||
|
|
||||||
### Для вопросов по разработке:
|
|
||||||
- **GitHub Issues:** [Создать issue](https://github.com/VC-HB3-Accelerator/DLE/issues)
|
|
||||||
- **Email:** info@hb3-accelerator.com
|
- **Email:** info@hb3-accelerator.com
|
||||||
|
- **Сайт:** https://hb3-accelerator.com
|
||||||
|
- **GitHub:** https://github.com/HB3-ACCELERATOR
|
||||||
|
|
||||||
### Для коммерческого лицензирования:
|
**Подробная информация:** [LICENSE](LICENSE) | [Юридическая документация](legal/README.md)
|
||||||
- **Email:** info@hb3-accelerator.com
|
|
||||||
- **Тема:** "Commercial License Request - DLE"
|
|
||||||
- **Шаблон запроса:** [legal/COMMERCIAL_LICENSE_REQUEST.md](./legal/COMMERCIAL_LICENSE_REQUEST.md)
|
|
||||||
|
|
||||||
### Юридические документы:
|
## 🔐 Проверка подлинности
|
||||||
- **Лицензия:** [LICENSE](LICENSE) | [Подробно](./legal/README.md)
|
|
||||||
- **Авторы:** [legal/AUTHORS.md](./legal/AUTHORS.md)
|
### Цифровые подписи:
|
||||||
- **Для контрибьюторов:** [legal/CONTRIBUTING.md](./legal/CONTRIBUTING.md)
|
- **LICENSE.asc** - подпись лицензии
|
||||||
- **Уведомления об авторских правах:** [legal/COPYRIGHT_NOTICE.md](./legal/COPYRIGHT_NOTICE.md)
|
- **README.md.asc** - подпись README
|
||||||
- **Условия использования:** [legal/TERMS_OF_SERVICE.md](./legal/TERMS_OF_SERVICE.md)
|
- **public-key.asc** - публичный ключ для проверки
|
||||||
- **Коммерческие лицензии:** [legal/COMMERCIAL_LICENSES.md](./legal/COMMERCIAL_LICENSES.md)
|
|
||||||
- **Требования атрибуции:** [legal/ATTRIBUTION_REQUIREMENTS.md](./legal/ATTRIBUTION_REQUIREMENTS.md)
|
### Проверка подписи:
|
||||||
- **Уведомления об использовании:** [legal/USAGE_NOTIFICATION.md](./legal/USAGE_NOTIFICATION.md)
|
```bash
|
||||||
|
# Скачать публичный ключ
|
||||||
|
curl -O https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/public-key.asc
|
||||||
|
|
||||||
|
# Импортировать ключ
|
||||||
|
gpg --import public-key.asc
|
||||||
|
|
||||||
|
# Проверить подпись лицензии
|
||||||
|
gpg --verify LICENSE.asc LICENSE
|
||||||
|
|
||||||
|
# Проверить подпись README
|
||||||
|
gpg --verify README.md.asc README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**GPG Key ID:** `4603583F81054FEECE7E821E026FD26F71D70B17`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.**
|
**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.**
|
||||||
|
|
||||||
|
|||||||
16
README.md.asc
Normal file
16
README.md.asc
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEE0B7X50iFYqyCahXe4sAChxn/m0UFAmj7kDwACgkQ4sAChxn/
|
||||||
|
m0XfkRAAr1hilCQ9KvllsCV6mBdOL3HnVglL6h8Zlbrt8EMz+0KWGkaCZSht1JT6
|
||||||
|
0SJhOqnNxFTejxyzZ/4P5aPFFj2LmePgdftppFwJFE3ZsSi1bwEsyv5H6bnWwS9I
|
||||||
|
0M9Hfo4FHpEKvaPr8H5fSjuH0rg1/cbQNKGRzhP9BVH12Dddsrx7E1aBCWUVDfXI
|
||||||
|
1I+qOfkLEQCFDLzLVMDi6pKn24wud4+ujcFwiHiEqz6n0F8iM/lk6UghBTfJ195p
|
||||||
|
YhyqdEx8Ot5AiGlwuc+U3YP9qUYioIf4579skRmeD45aeEZcXjpT/9Hqb3iv8u3k
|
||||||
|
B7ojBJCedA9OymdT+jlY1938OOnpGwiaqvu+C8Yh65ES/8yLJ7ESYsoOuwyGVmqH
|
||||||
|
Tp+njft+5qmcnrYYS6Vdoxjj9mlkuWfB0pRWMzIf8yaDjMyW7fZEQzxsVWESa5Sa
|
||||||
|
ltiY0Og+oY3lMH3UgWnemuzZGrkKtFsH2ywP/kzYrvGdsyEegGsrVgmL3Vbh7S6W
|
||||||
|
q5VJWxTFn+bht15k8yKDDtQc4PTNs7FA4VbDXq7fURgAlUaFSF1mi8gqrt/KwMFw
|
||||||
|
i5sjPRfI7HXV6wS+1O8afhZCMcnorAkhUgNF9OHFEJp1sKKPtbBi3urhn/CkhfiA
|
||||||
|
/UfFb6Ij99TQtUmgl0OD4vspPpe8CH4e3yg7JYAjfU3LMEETt8k=
|
||||||
|
=O9aS
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
65
public-key.asc
Normal file
65
public-key.asc
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=kiA8
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
|
||||||
# All rights reserved.
|
|
||||||
# This software is proprietary and confidential.
|
|
||||||
# For licensing inquiries: info@hb3-accelerator.com
|
|
||||||
|
|
||||||
# Скрипт для автоматической установки шаблона приложения DLE
|
|
||||||
# Скачивает репозиторий, проверяет Docker, импортирует образы и тома, запускает приложение
|
|
||||||
|
|
||||||
# Цветной вывод
|
|
||||||
print_green() {
|
|
||||||
echo -e "\e[32m$1\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_blue() {
|
|
||||||
echo -e "\e[34m$1\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_yellow() {
|
|
||||||
echo -e "\e[33m$1\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_red() {
|
|
||||||
echo -e "\e[31m$1\e[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Проверка Docker
|
|
||||||
check_docker() {
|
|
||||||
print_blue "🔍 Проверка Docker..."
|
|
||||||
if ! command -v docker &> /dev/null; then
|
|
||||||
print_red "❌ Docker не установлен!"
|
|
||||||
print_yellow "Установите Docker: https://docs.docker.com/get-docker/"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
|
||||||
print_red "❌ Docker Compose не установлен!"
|
|
||||||
print_yellow "Установите Docker Compose: https://docs.docker.com/compose/install/"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
print_green "✅ Docker и Docker Compose установлены"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Проверка Docker запущен
|
|
||||||
check_docker_running() {
|
|
||||||
print_blue "🔍 Проверка запуска Docker..."
|
|
||||||
if ! docker info &> /dev/null; then
|
|
||||||
print_red "❌ Docker не запущен!"
|
|
||||||
print_yellow "Запустите Docker и повторите попытку"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
print_green "✅ Docker запущен"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Скачивание репозитория
|
|
||||||
download_repo() {
|
|
||||||
print_blue "📥 Скачивание репозитория..."
|
|
||||||
if [ -d "DLE" ]; then
|
|
||||||
print_yellow "⚠️ Папка DLE уже существует"
|
|
||||||
read -p "Удалить существующую папку? (y/N): " -n 1 -r
|
|
||||||
echo
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
rm -rf DLE
|
|
||||||
else
|
|
||||||
print_blue "Используем существующую папку"
|
|
||||||
cd DLE
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
|
||||||
cd DLE
|
|
||||||
print_green "✅ Репозиторий скачан"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Проверка файлов образов
|
|
||||||
check_images() {
|
|
||||||
print_blue "🔍 Проверка файлов образов..."
|
|
||||||
if [ ! -d "docker-data/images" ]; then
|
|
||||||
print_red "❌ Папка docker-data/images не найдена!"
|
|
||||||
print_yellow "Убедитесь, что репозиторий содержит экспортированные образы"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local images=("backend.tar" "frontend.tar" "vector-search.tar" "ollama.tar" "webssh-agent.tar")
|
|
||||||
for image in "${images[@]}"; do
|
|
||||||
if [ ! -f "docker-data/images/$image" ]; then
|
|
||||||
print_red "❌ Файл образа $image не найден!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
print_green "✅ Все файлы образов найдены"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Проверка файлов томов
|
|
||||||
check_volumes() {
|
|
||||||
print_blue "🔍 Проверка файлов томов..."
|
|
||||||
if [ ! -d "docker-data/volumes" ]; then
|
|
||||||
print_red "❌ Папка docker-data/volumes не найдена!"
|
|
||||||
print_yellow "Убедитесь, что репозиторий содержит экспортированные тома"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local volumes=("postgres_data.tar.gz" "ollama_data.tar.gz" "vector_search_data.tar.gz" "backend_node_modules.tar.gz" "frontend_node_modules.tar.gz")
|
|
||||||
for volume in "${volumes[@]}"; do
|
|
||||||
if [ ! -f "docker-data/volumes/$volume" ]; then
|
|
||||||
print_red "❌ Файл тома $volume не найден!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
print_green "✅ Все файлы томов найдены"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Импорт образов
|
|
||||||
import_images() {
|
|
||||||
print_blue "📦 Импорт образов..."
|
|
||||||
|
|
||||||
local images=("backend.tar" "frontend.tar" "vector-search.tar" "ollama.tar" "webssh-agent.tar")
|
|
||||||
for image in "${images[@]}"; do
|
|
||||||
print_blue "Импорт $image..."
|
|
||||||
if docker load -i "docker-data/images/$image"; then
|
|
||||||
print_green "✅ $image импортирован"
|
|
||||||
else
|
|
||||||
print_red "❌ Ошибка импорта $image"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
print_green "✅ Все образы импортированы"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Создание томов
|
|
||||||
create_volumes() {
|
|
||||||
print_blue "💾 Создание томов..."
|
|
||||||
|
|
||||||
local volumes=("digital_legal_entitydle_postgres_data" "digital_legal_entitydle_ollama_data" "digital_legal_entitydle_vector_search_data" "digital_legal_entitydle_backend_node_modules" "digital_legal_entitydle_frontend_node_modules")
|
|
||||||
|
|
||||||
for volume in "${volumes[@]}"; do
|
|
||||||
if docker volume ls | grep -q "$volume"; then
|
|
||||||
print_yellow "⚠️ Том $volume уже существует"
|
|
||||||
else
|
|
||||||
docker volume create "$volume"
|
|
||||||
print_green "✅ Том $volume создан"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Импорт томов
|
|
||||||
import_volumes() {
|
|
||||||
print_blue "📥 Импорт данных в тома..."
|
|
||||||
|
|
||||||
# PostgreSQL
|
|
||||||
print_blue "Импорт postgres_data..."
|
|
||||||
docker run --rm -v digital_legal_entitydle_postgres_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/postgres_data.tar.gz -C /target
|
|
||||||
print_green "✅ postgres_data импортирован"
|
|
||||||
|
|
||||||
# Ollama
|
|
||||||
print_blue "Импорт ollama_data..."
|
|
||||||
docker run --rm -v digital_legal_entitydle_ollama_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/ollama_data.tar.gz -C /target
|
|
||||||
print_green "✅ ollama_data импортирован"
|
|
||||||
|
|
||||||
# Vector Search
|
|
||||||
print_blue "Импорт vector_search_data..."
|
|
||||||
docker run --rm -v digital_legal_entitydle_vector_search_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/vector_search_data.tar.gz -C /target
|
|
||||||
print_green "✅ vector_search_data импортирован"
|
|
||||||
|
|
||||||
# Backend node_modules
|
|
||||||
print_blue "Импорт backend_node_modules..."
|
|
||||||
docker run --rm -v digital_legal_entitydle_backend_node_modules:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/backend_node_modules.tar.gz -C /target
|
|
||||||
print_green "✅ backend_node_modules импортирован"
|
|
||||||
|
|
||||||
# Frontend node_modules
|
|
||||||
print_blue "Импорт frontend_node_modules..."
|
|
||||||
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/frontend_node_modules.tar.gz -C /target
|
|
||||||
print_green "✅ frontend_node_modules импортирован"
|
|
||||||
|
|
||||||
print_green "✅ Все тома импортированы"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Запуск приложения
|
|
||||||
start_application() {
|
|
||||||
print_blue "🚀 Запуск приложения..."
|
|
||||||
|
|
||||||
if docker-compose up -d; then
|
|
||||||
print_green "✅ Приложение запущено"
|
|
||||||
print_blue "🌐 Доступ к приложению: http://localhost:5173"
|
|
||||||
else
|
|
||||||
print_red "❌ Ошибка запуска приложения"
|
|
||||||
print_yellow "Проверьте логи: docker-compose logs"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Проверка статуса
|
|
||||||
check_status() {
|
|
||||||
print_blue "🔍 Проверка статуса контейнеров..."
|
|
||||||
sleep 10
|
|
||||||
|
|
||||||
if docker-compose ps | grep -q "Up"; then
|
|
||||||
print_green "✅ Контейнеры запущены"
|
|
||||||
print_blue "🌐 Приложение доступно по адресу: http://localhost:5173"
|
|
||||||
else
|
|
||||||
print_yellow "⚠️ Некоторые контейнеры могут быть не готовы"
|
|
||||||
print_blue "Проверьте статус: docker-compose ps"
|
|
||||||
print_blue "Просмотрите логи: docker-compose logs"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Основная функция
|
|
||||||
main() {
|
|
||||||
print_blue "🚀 Установка шаблона приложения Digital Legal Entity"
|
|
||||||
print_blue "=================================================="
|
|
||||||
|
|
||||||
# Проверки
|
|
||||||
check_docker
|
|
||||||
check_docker_running
|
|
||||||
|
|
||||||
# Скачивание
|
|
||||||
download_repo
|
|
||||||
|
|
||||||
# Проверка файлов
|
|
||||||
check_images
|
|
||||||
check_volumes
|
|
||||||
|
|
||||||
# Импорт
|
|
||||||
import_images
|
|
||||||
create_volumes
|
|
||||||
import_volumes
|
|
||||||
|
|
||||||
# Запуск
|
|
||||||
start_application
|
|
||||||
check_status
|
|
||||||
|
|
||||||
print_green "🎉 Установка завершена!"
|
|
||||||
print_blue "=================================================="
|
|
||||||
print_blue "🌐 Приложение доступно: http://localhost:5173"
|
|
||||||
print_blue "🔧 Управление:"
|
|
||||||
print_blue " Запуск: docker-compose up -d"
|
|
||||||
print_blue " Остановка: docker-compose down"
|
|
||||||
print_blue " Логи: docker-compose logs"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Запуск
|
|
||||||
main "$@"
|
|
||||||
416
setup.sh
416
setup.sh
@@ -4,7 +4,10 @@
|
|||||||
# This software is proprietary and confidential.
|
# This software is proprietary and confidential.
|
||||||
# For licensing inquiries: info@hb3-accelerator.com
|
# For licensing inquiries: info@hb3-accelerator.com
|
||||||
|
|
||||||
# Вывод цветного текста
|
# Скрипт для автоматической установки шаблона приложения DLE
|
||||||
|
# Скачивает репозиторий, проверяет Docker, импортирует образы и тома, запускает приложение
|
||||||
|
|
||||||
|
# Цветной вывод
|
||||||
print_green() {
|
print_green() {
|
||||||
echo -e "\e[32m$1\e[0m"
|
echo -e "\e[32m$1\e[0m"
|
||||||
}
|
}
|
||||||
@@ -21,275 +24,224 @@ print_red() {
|
|||||||
echo -e "\e[31m$1\e[0m"
|
echo -e "\e[31m$1\e[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Проверка и установка Docker и Docker Compose
|
# Проверка Docker
|
||||||
check_docker() {
|
check_docker() {
|
||||||
print_blue "Проверка наличия Docker..."
|
print_blue "🔍 Проверка Docker..."
|
||||||
if ! command -v docker &> /dev/null; then
|
if ! command -v docker &> /dev/null; then
|
||||||
print_yellow "Docker не установлен."
|
print_red "❌ Docker не установлен!"
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
print_yellow "Установите Docker: https://docs.docker.com/get-docker/"
|
||||||
print_blue "Автоматическая установка Docker для Linux..."
|
exit 1
|
||||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
||||||
sudo sh get-docker.sh
|
|
||||||
rm get-docker.sh
|
|
||||||
|
|
||||||
# Добавляем текущего пользователя в группу docker
|
|
||||||
print_blue "Добавление пользователя в группу docker..."
|
|
||||||
sudo usermod -aG docker $USER
|
|
||||||
|
|
||||||
print_green "Docker установлен!"
|
|
||||||
print_yellow "⚠️ ВАЖНО: Для применения изменений выполните одну из команд:"
|
|
||||||
print_yellow " 1. newgrp docker (применить в текущем терминале)"
|
|
||||||
print_yellow " 2. Перезапустите терминал"
|
|
||||||
print_yellow " 3. Перезайдите в систему"
|
|
||||||
print_blue "Нажмите Enter для продолжения после выполнения команды..."
|
|
||||||
read
|
|
||||||
else
|
|
||||||
print_yellow "Пожалуйста, установите Docker вручную: https://docs.docker.com/get-docker/"
|
|
||||||
print_yellow "Для Windows/Mac: скачайте и установите Docker Desktop."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка прав доступа к Docker
|
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
||||||
if ! docker ps &> /dev/null; then
|
print_red "❌ Docker Compose не установлен!"
|
||||||
print_yellow "⚠️ Нет прав для запуска Docker команд."
|
print_yellow "Установите Docker Compose: https://docs.docker.com/compose/install/"
|
||||||
print_blue "Добавление пользователя в группу docker..."
|
exit 1
|
||||||
|
|
||||||
# Проверяем, есть ли пользователь в группе docker
|
|
||||||
if ! groups $USER | grep -q docker; then
|
|
||||||
sudo usermod -aG docker $USER
|
|
||||||
print_yellow "Пользователь добавлен в группу docker."
|
|
||||||
print_yellow "Выполните команду для применения изменений: newgrp docker"
|
|
||||||
print_yellow "Или перезапустите терминал и запустите скрипт снова."
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
print_red "Пользователь уже в группе docker, но права не работают."
|
|
||||||
print_yellow "Попробуйте:"
|
|
||||||
print_yellow " 1. newgrp docker"
|
|
||||||
print_yellow " 2. Перезайдите в систему"
|
|
||||||
print_yellow " 3. Перезапустите Docker: sudo systemctl restart docker"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_green "Docker установлен и доступен."
|
print_green "✅ Docker и Docker Compose установлены"
|
||||||
|
|
||||||
print_blue "Проверка Docker Compose..."
|
|
||||||
if ! docker compose version &> /dev/null; then
|
|
||||||
print_yellow "Docker Compose не установлен или требуется обновление."
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
print_blue "Установка Docker Compose плагина..."
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y docker-compose-plugin
|
|
||||||
|
|
||||||
if ! docker compose version &> /dev/null; then
|
|
||||||
print_red "Не удалось установить Docker Compose плагин."
|
|
||||||
print_yellow "Попробуйте обновить Docker: https://docs.docker.com/compose/install/"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
print_yellow "Пожалуйста, установите Docker Compose вручную: https://docs.docker.com/compose/install/"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
print_green "Docker Compose установлен."
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Инструкция для пользователей без git
|
# Проверка Docker запущен
|
||||||
print_no_git_instructions() {
|
check_docker_running() {
|
||||||
print_blue "Если у вас нет git, скачайте архив проекта с GitHub:"
|
print_blue "🔍 Проверка запуска Docker..."
|
||||||
print_yellow "1. Перейдите на https://github.com/VC-HB3-Accelerator/DLE"
|
if ! docker info &> /dev/null; then
|
||||||
print_yellow "2. Нажмите 'Code' > 'Download ZIP'"
|
print_red "❌ Docker не запущен!"
|
||||||
print_yellow "3. Распакуйте архив и перейдите в папку проекта"
|
print_yellow "Запустите Docker и повторите попытку"
|
||||||
print_yellow "4. Запустите этот скрипт: ./setup.sh"
|
exit 1
|
||||||
|
fi
|
||||||
|
print_green "✅ Docker запущен"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Все настройки хранятся в зашифрованной базе данных
|
# Скачивание репозитория
|
||||||
|
download_repo() {
|
||||||
# Создание ключа шифрования
|
print_blue "📥 Скачивание репозитория..."
|
||||||
create_encryption_key() {
|
if [ -d "DLE" ]; then
|
||||||
print_blue "Проверка ключа шифрования..."
|
print_yellow "⚠️ Папка DLE уже существует"
|
||||||
|
read -p "Удалить существующую папку? (y/N): " -n 1 -r
|
||||||
# Проверяем наличие OpenSSL
|
echo
|
||||||
if ! command -v openssl &> /dev/null; then
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
print_yellow "OpenSSL не установлен. Установка..."
|
rm -rf DLE
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
||||||
sudo apt-get update && sudo apt-get install -y openssl
|
|
||||||
else
|
else
|
||||||
print_red "Пожалуйста, установите OpenSSL вручную: https://www.openssl.org/"
|
print_blue "Используем существующую папку"
|
||||||
exit 1
|
cd DLE
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Создаём папку для ключей
|
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
||||||
mkdir -p ./ssl/keys
|
cd DLE
|
||||||
|
print_green "✅ Репозиторий скачан"
|
||||||
# Генерируем ключ шифрования (если его нет)
|
|
||||||
if [ ! -f "./ssl/keys/full_db_encryption.key" ]; then
|
|
||||||
print_blue "🔑 Генерация ключа шифрования..."
|
|
||||||
openssl rand -base64 32 > ./ssl/keys/full_db_encryption.key
|
|
||||||
chmod 600 ./ssl/keys/full_db_encryption.key
|
|
||||||
print_green "✅ Ключ создан: ./ssl/keys/full_db_encryption.key"
|
|
||||||
else
|
|
||||||
print_green "✅ Ключ шифрования уже существует."
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Предварительная загрузка образов
|
# Проверка файлов образов
|
||||||
pull_images() {
|
check_images() {
|
||||||
print_blue "Предварительная загрузка образов Docker..."
|
print_blue "🔍 Проверка файлов образов..."
|
||||||
|
if [ ! -d "docker-data/images" ]; then
|
||||||
|
print_red "❌ Папка docker-data/images не найдена!"
|
||||||
|
print_yellow "Убедитесь, что репозиторий содержит экспортированные образы"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
images=("node:20-slim" "postgres:16" "ollama/ollama:latest")
|
local images=("backend.tar" "frontend.tar" "vector-search.tar" "ollama.tar" "webssh-agent.tar")
|
||||||
|
for image in "${images[@]}"; do
|
||||||
|
if [ ! -f "docker-data/images/$image" ]; then
|
||||||
|
print_red "❌ Файл образа $image не найден!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
for img in "${images[@]}"; do
|
print_green "✅ Все файлы образов найдены"
|
||||||
print_blue "Загрузка образа: $img"
|
}
|
||||||
docker pull $img
|
|
||||||
if [ $? -ne 0 ]; then
|
# Проверка файлов томов
|
||||||
print_yellow "Предупреждение: Не удалось загрузить образ $img, но продолжаем работу..."
|
check_volumes() {
|
||||||
|
print_blue "🔍 Проверка файлов томов..."
|
||||||
|
if [ ! -d "docker-data/volumes" ]; then
|
||||||
|
print_red "❌ Папка docker-data/volumes не найдена!"
|
||||||
|
print_yellow "Убедитесь, что репозиторий содержит экспортированные тома"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local volumes=("postgres_data.tar.gz" "ollama_data.tar.gz" "vector_search_data.tar.gz" "backend_node_modules.tar.gz" "frontend_node_modules.tar.gz")
|
||||||
|
for volume in "${volumes[@]}"; do
|
||||||
|
if [ ! -f "docker-data/volumes/$volume" ]; then
|
||||||
|
print_red "❌ Файл тома $volume не найден!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_green "✅ Все файлы томов найдены"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Импорт образов
|
||||||
|
import_images() {
|
||||||
|
print_blue "📦 Импорт образов..."
|
||||||
|
|
||||||
|
local images=("backend.tar" "frontend.tar" "vector-search.tar" "ollama.tar" "webssh-agent.tar")
|
||||||
|
for image in "${images[@]}"; do
|
||||||
|
print_blue "Импорт $image..."
|
||||||
|
if docker load -i "docker-data/images/$image"; then
|
||||||
|
print_green "✅ $image импортирован"
|
||||||
else
|
else
|
||||||
print_green "Образ $img успешно загружен."
|
print_red "❌ Ошибка импорта $image"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print_green "✅ Все образы импортированы"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создание томов
|
||||||
|
create_volumes() {
|
||||||
|
print_blue "💾 Создание томов..."
|
||||||
|
|
||||||
|
local volumes=("digital_legal_entitydle_postgres_data" "digital_legal_entitydle_ollama_data" "digital_legal_entitydle_vector_search_data" "digital_legal_entitydle_backend_node_modules" "digital_legal_entitydle_frontend_node_modules")
|
||||||
|
|
||||||
|
for volume in "${volumes[@]}"; do
|
||||||
|
if docker volume ls | grep -q "$volume"; then
|
||||||
|
print_yellow "⚠️ Том $volume уже существует"
|
||||||
|
else
|
||||||
|
docker volume create "$volume"
|
||||||
|
print_green "✅ Том $volume создан"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Импорт томов
|
||||||
|
import_volumes() {
|
||||||
|
print_blue "📥 Импорт данных в тома..."
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
print_blue "Импорт postgres_data..."
|
||||||
|
docker run --rm -v digital_legal_entitydle_postgres_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/postgres_data.tar.gz -C /target
|
||||||
|
print_green "✅ postgres_data импортирован"
|
||||||
|
|
||||||
|
# Ollama
|
||||||
|
print_blue "Импорт ollama_data..."
|
||||||
|
docker run --rm -v digital_legal_entitydle_ollama_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/ollama_data.tar.gz -C /target
|
||||||
|
print_green "✅ ollama_data импортирован"
|
||||||
|
|
||||||
|
# Vector Search
|
||||||
|
print_blue "Импорт vector_search_data..."
|
||||||
|
docker run --rm -v digital_legal_entitydle_vector_search_data:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/vector_search_data.tar.gz -C /target
|
||||||
|
print_green "✅ vector_search_data импортирован"
|
||||||
|
|
||||||
# Запуск проекта
|
# Backend node_modules
|
||||||
start_project() {
|
print_blue "Импорт backend_node_modules..."
|
||||||
print_blue "Запуск проекта..."
|
docker run --rm -v digital_legal_entitydle_backend_node_modules:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/backend_node_modules.tar.gz -C /target
|
||||||
|
print_green "✅ backend_node_modules импортирован"
|
||||||
|
|
||||||
# Сначала убедимся, что предыдущие контейнеры остановлены
|
# Frontend node_modules
|
||||||
print_blue "Остановка существующих контейнеров..."
|
print_blue "Импорт frontend_node_modules..."
|
||||||
docker compose down
|
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/target -v "$(pwd)/docker-data/volumes:/backup" alpine tar xzf /backup/frontend_node_modules.tar.gz -C /target
|
||||||
|
print_green "✅ frontend_node_modules импортирован"
|
||||||
|
|
||||||
# Запуск сервисов в Docker Compose
|
print_green "✅ Все тома импортированы"
|
||||||
print_blue "Запуск сервисов (PostgreSQL, Ollama, Backend, Frontend)..."
|
}
|
||||||
docker compose up -d
|
|
||||||
|
|
||||||
# Проверяем, что сервисы запустились
|
# Запуск приложения
|
||||||
if [ $? -eq 0 ]; then
|
start_application() {
|
||||||
print_green "Сервисы успешно запущены!"
|
print_blue "🚀 Запуск приложения..."
|
||||||
|
|
||||||
# Предзагрузка моделей Ollama
|
if docker-compose up -d; then
|
||||||
print_blue "Предзагрузка моделей Ollama..."
|
print_green "✅ Приложение запущено"
|
||||||
print_yellow "Это может занять несколько минут..."
|
print_blue "🌐 Доступ к приложению: http://localhost:5173"
|
||||||
|
|
||||||
# Ждем, пока Ollama запустится
|
|
||||||
print_blue "Ожидание запуска Ollama..."
|
|
||||||
for i in {1..30}; do
|
|
||||||
if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
|
|
||||||
print_green "Ollama готов!"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if [ $i -eq 30 ]; then
|
|
||||||
print_yellow "Ollama не ответил за 60 секунд, продолжаем без предзагрузки..."
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 2
|
|
||||||
done
|
|
||||||
|
|
||||||
# Предзагружаем модели
|
|
||||||
if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
|
|
||||||
print_blue "Предзагрузка qwen2.5:7b..."
|
|
||||||
curl -X POST http://localhost:11434/api/generate -d '{"model": "qwen2.5:7b", "prompt": "test", "stream": false}' > /dev/null 2>&1
|
|
||||||
|
|
||||||
print_blue "Предзагрузка mxbai-embed-large:latest..."
|
|
||||||
curl -X POST http://localhost:11434/api/generate -d '{"model": "mxbai-embed-large:latest", "prompt": "test", "stream": false}' > /dev/null 2>&1
|
|
||||||
|
|
||||||
print_green "✅ Модели предзагружены и останутся в памяти!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Добавляем токены аутентификации
|
|
||||||
print_blue "🔑 Добавление токенов аутентификации..."
|
|
||||||
./scripts/internal/db/db_init_helper.sh 2>/dev/null || print_yellow "Токены уже добавлены или скрипт недоступен"
|
|
||||||
|
|
||||||
# Создаём функции шифрования в PostgreSQL
|
|
||||||
print_blue "📝 Создание функций шифрования в PostgreSQL..."
|
|
||||||
docker exec dapp-postgres psql -U dapp_user -d dapp_db << 'EOF' 2>/dev/null || print_yellow "Функции шифрования уже существуют или БД не готова"
|
|
||||||
-- Создаём расширение для шифрования
|
|
||||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
||||||
|
|
||||||
-- Функция для шифрования текста
|
|
||||||
CREATE OR REPLACE FUNCTION encrypt_text(data text, key text)
|
|
||||||
RETURNS text AS $$
|
|
||||||
BEGIN
|
|
||||||
IF data IS NULL THEN
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
|
||||||
RETURN encode(encrypt_iv(data::bytea, decode(key, 'base64'), decode('000102030405060708090A0B0C0D0E0F', 'hex'), 'aes-cbc'), 'base64');
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
-- Функция для расшифровки текста
|
|
||||||
CREATE OR REPLACE FUNCTION decrypt_text(encrypted_data text, key text)
|
|
||||||
RETURNS text AS $$
|
|
||||||
BEGIN
|
|
||||||
IF encrypted_data IS NULL THEN
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
|
||||||
RETURN convert_from(decrypt_iv(decode(encrypted_data, 'base64'), decode(key, 'base64'), decode('000102030405060708090A0B0C0D0E0F', 'hex'), 'aes-cbc'), 'utf8');
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
-- Функция для шифрования JSON
|
|
||||||
CREATE OR REPLACE FUNCTION encrypt_json(data jsonb, key text)
|
|
||||||
RETURNS text AS $$
|
|
||||||
BEGIN
|
|
||||||
IF data IS NULL THEN
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
|
||||||
RETURN encode(encrypt_iv(data::text::bytea, decode(key, 'base64'), decode('000102030405060708090A0B0C0D0E0F', 'hex'), 'aes-cbc'), 'base64');
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
-- Функция для расшифровки JSON
|
|
||||||
CREATE OR REPLACE FUNCTION decrypt_json(encrypted_data text, key text)
|
|
||||||
RETURNS jsonb AS $$
|
|
||||||
BEGIN
|
|
||||||
IF encrypted_data IS NULL THEN
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
|
||||||
RETURN convert_from(decrypt_iv(decode(encrypted_data, 'base64'), decode(key, 'base64'), decode('000102030405060708090A0B0C0D0E0F', 'hex'), 'aes-cbc'), 'utf8')::jsonb;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
print_green "----------------------------------------"
|
|
||||||
print_green "Проект Digital_Legal_Entity(DLE) доступен по адресам:"
|
|
||||||
print_green "Frontend: http://localhost:5173"
|
|
||||||
print_green "Backend API: http://localhost:8000"
|
|
||||||
print_green "Ollama API: http://localhost:11434"
|
|
||||||
print_green "PostgreSQL: localhost:5432"
|
|
||||||
print_green "----------------------------------------"
|
|
||||||
print_green "🔐 Ключ шифрования: ./ssl/keys/full_db_encryption.key"
|
|
||||||
print_green "📋 Все настройки хранятся в зашифрованной базе данных"
|
|
||||||
print_green "----------------------------------------"
|
|
||||||
print_green "ИИ-ассистент готов к работе!"
|
|
||||||
print_green "----------------------------------------"
|
|
||||||
else
|
else
|
||||||
print_red "Произошла ошибка при запуске сервисов."
|
print_red "❌ Ошибка запуска приложения"
|
||||||
print_yellow "Проверьте логи командой: docker compose logs"
|
print_yellow "Проверьте логи: docker-compose logs"
|
||||||
print_yellow "Для просмотра логов конкретного сервиса: docker compose logs [service]"
|
exit 1
|
||||||
print_yellow "Например: docker compose logs backend"
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Проверка статуса
|
||||||
|
check_status() {
|
||||||
|
print_blue "🔍 Проверка статуса контейнеров..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
if docker-compose ps | grep -q "Up"; then
|
||||||
|
print_green "✅ Контейнеры запущены"
|
||||||
|
print_blue "🌐 Приложение доступно по адресу: http://localhost:5173"
|
||||||
|
else
|
||||||
|
print_yellow "⚠️ Некоторые контейнеры могут быть не готовы"
|
||||||
|
print_blue "Проверьте статус: docker-compose ps"
|
||||||
|
print_blue "Просмотрите логи: docker-compose logs"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Основная функция
|
# Основная функция
|
||||||
main() {
|
main() {
|
||||||
print_blue "==============================================="
|
print_blue "🚀 Установка шаблона приложения Digital Legal Entity"
|
||||||
print_blue " Установка и запуск Digital_Legal_Entity(DLE)"
|
print_blue "=================================================="
|
||||||
print_blue "==============================================="
|
|
||||||
|
|
||||||
print_yellow "\nЕсли у вас нет git, скачайте проект архивом с GitHub!"
|
|
||||||
print_no_git_instructions
|
|
||||||
|
|
||||||
|
# Проверки
|
||||||
check_docker
|
check_docker
|
||||||
create_encryption_key
|
check_docker_running
|
||||||
pull_images
|
|
||||||
start_project
|
# Скачивание
|
||||||
|
download_repo
|
||||||
|
|
||||||
|
# Проверка файлов
|
||||||
|
check_images
|
||||||
|
check_volumes
|
||||||
|
|
||||||
|
# Импорт
|
||||||
|
import_images
|
||||||
|
create_volumes
|
||||||
|
import_volumes
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
start_application
|
||||||
|
check_status
|
||||||
|
|
||||||
|
print_green "🎉 Установка завершена!"
|
||||||
|
print_blue "=================================================="
|
||||||
|
print_blue "🌐 Приложение доступно: http://localhost:5173"
|
||||||
|
print_blue "🔧 Управление:"
|
||||||
|
print_blue " Запуск: docker-compose up -d"
|
||||||
|
print_blue " Остановка: docker-compose down"
|
||||||
|
print_blue " Логи: docker-compose logs"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Запуск основной функции
|
# Запуск
|
||||||
main
|
main "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user