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 Тарабанов Александр Викторович
|
||||
All rights reserved.
|
||||
Авторские права (c) 2024-2025 Тарабанов Александр Викторович
|
||||
Все права защищены.
|
||||
|
||||
This software and associated documentation files (the "Software") are the
|
||||
proprietary and confidential information of Тарабанов Александр Викторович.
|
||||
Данное программное обеспечение и связанные с ним файлы документации
|
||||
("Программное обеспечение") являются собственностью и конфиденциальной
|
||||
информацией Тарабанова Александра Викторовича.
|
||||
|
||||
TERMS AND CONDITIONS:
|
||||
УСЛОВИЯ И ПОЛОЖЕНИЯ:
|
||||
|
||||
1. GRANT OF LICENSE
|
||||
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.
|
||||
1. ПРЕДОСТАВЛЕНИЕ ЛИЦЕНЗИИ
|
||||
При соблюдении условий данной Лицензии, Тарабанов Александр Викторович
|
||||
предоставляет вам неисключительную, непередаваемую лицензию на использование
|
||||
Программного обеспечения для ваших бизнес-операций и внутренних целей.
|
||||
|
||||
2. PERMITTED USE
|
||||
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
|
||||
2. РАЗРЕШЕННОЕ ИСПОЛЬЗОВАНИЕ
|
||||
Вы можете:
|
||||
- Использовать Программное обеспечение для ваших бизнес-операций
|
||||
- Устанавливать и запускать Программное обеспечение на ваших системах
|
||||
- Использовать Программное обеспечение для предоставления услуг вашим клиентам
|
||||
- Интегрировать Программное обеспечение в ваши бизнес-процессы
|
||||
|
||||
3. RESTRICTIONS
|
||||
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
|
||||
3. ОГРАНИЧЕНИЯ
|
||||
Вы НЕ можете:
|
||||
- Перепродавать, перераспределять или сублицензировать Программное обеспечение третьим лицам
|
||||
- Дарить, передавать или предоставлять Программное обеспечение третьим лицам
|
||||
- Модифицировать, адаптировать или создавать производные работы без явного разрешения
|
||||
- Обратно инжинирить, декомпилировать или дизассемблировать Программное обеспечение
|
||||
- Удалять или изменять любые уведомления об авторских правах
|
||||
- Использовать Программное обеспечение в образовательных учреждениях без разрешения
|
||||
|
||||
4. COMMERCIAL RESALE AND MODIFICATIONS
|
||||
Commercial resale, distribution, or modifications of this Software
|
||||
require explicit written permission from Тарабанов Александр Викторович
|
||||
(info@hb3-accelerator.com).
|
||||
4. КОММЕРЧЕСКАЯ ПЕРЕПРОДАЖА И МОДИФИКАЦИИ
|
||||
Коммерческая перепродажа, распространение или модификации данного Программного
|
||||
обеспечения требуют явного письменного разрешения от Тарабанова Александра
|
||||
Викторовича (info@hb3-accelerator.com).
|
||||
|
||||
5. UPDATES AND MODIFICATIONS
|
||||
Any updates, modifications, or derivative works require explicit written
|
||||
permission from the copyright holder.
|
||||
5. ОБНОВЛЕНИЯ И МОДИФИКАЦИИ
|
||||
Любые обновления, модификации или производные работы требуют явного письменного
|
||||
разрешения от правообладателя.
|
||||
|
||||
6. TERMINATION
|
||||
This license terminates automatically if you fail to comply with its terms.
|
||||
6. ПРЕКРАЩЕНИЕ ДЕЙСТВИЯ
|
||||
Данная лицензия автоматически прекращает действие при нарушении ее условий.
|
||||
|
||||
7. DISCLAIMER
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
|
||||
7. ОТКАЗ ОТ ГАРАНТИЙ
|
||||
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
|
||||
|
||||
For licensing inquiries: info@hb3-accelerator.com
|
||||
Website: https://hb3-accelerator.com
|
||||
По вопросам лицензирования: info@hb3-accelerator.com
|
||||
Веб-сайт: https://hb3-accelerator.com
|
||||
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 приложение для бизнеса с ИИ ассистентом
|
||||
|
||||
## Авторство и лицензия
|
||||
|
||||
**Автор:** Тарабанов Александр Викторович
|
||||
**Организация:** 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)
|
||||
|
||||
## Требования
|
||||
## Описание
|
||||
Полный шаблон приложения Digital Legal Entity
|
||||
|
||||
## 📋 Требования
|
||||
- Docker и Docker Compose
|
||||
|
||||
## Быстрый запуск
|
||||
## 🚀 Быстрый запуск
|
||||
|
||||
### Вариант 1: через git (рекомендуется)
|
||||
|
||||
1. Клонируйте репозиторий:
|
||||
### Автоматическая установка (рекомендуется)
|
||||
```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
|
||||
```
|
||||
2. Запустите скрипт установки:
|
||||
|
||||
### Доступ к приложению
|
||||
- **Frontend**: http://localhost:5173
|
||||
|
||||
## 🔧 Управление
|
||||
|
||||
### Запуск
|
||||
```bash
|
||||
./setup.sh
|
||||
docker-compose up -d
|
||||
```
|
||||
3. После запуска контейнеров выполните миграции изнутри контейнера backend:
|
||||
|
||||
### Остановка
|
||||
```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
|
||||
- **Сайт:** https://hb3-accelerator.com
|
||||
- **GitHub:** https://github.com/HB3-ACCELERATOR
|
||||
|
||||
### Для коммерческого лицензирования:
|
||||
- **Email:** info@hb3-accelerator.com
|
||||
- **Тема:** "Commercial License Request - DLE"
|
||||
- **Шаблон запроса:** [legal/COMMERCIAL_LICENSE_REQUEST.md](./legal/COMMERCIAL_LICENSE_REQUEST.md)
|
||||
**Подробная информация:** [LICENSE](LICENSE) | [Юридическая документация](legal/README.md)
|
||||
|
||||
### Юридические документы:
|
||||
- **Лицензия:** [LICENSE](LICENSE) | [Подробно](./legal/README.md)
|
||||
- **Авторы:** [legal/AUTHORS.md](./legal/AUTHORS.md)
|
||||
- **Для контрибьюторов:** [legal/CONTRIBUTING.md](./legal/CONTRIBUTING.md)
|
||||
- **Уведомления об авторских правах:** [legal/COPYRIGHT_NOTICE.md](./legal/COPYRIGHT_NOTICE.md)
|
||||
- **Условия использования:** [legal/TERMS_OF_SERVICE.md](./legal/TERMS_OF_SERVICE.md)
|
||||
- **Коммерческие лицензии:** [legal/COMMERCIAL_LICENSES.md](./legal/COMMERCIAL_LICENSES.md)
|
||||
- **Требования атрибуции:** [legal/ATTRIBUTION_REQUIREMENTS.md](./legal/ATTRIBUTION_REQUIREMENTS.md)
|
||||
- **Уведомления об использовании:** [legal/USAGE_NOTIFICATION.md](./legal/USAGE_NOTIFICATION.md)
|
||||
## 🔐 Проверка подлинности
|
||||
|
||||
### Цифровые подписи:
|
||||
- **LICENSE.asc** - подпись лицензии
|
||||
- **README.md.asc** - подпись README
|
||||
- **public-key.asc** - публичный ключ для проверки
|
||||
|
||||
### Проверка подписи:
|
||||
```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 Тарабанов Александр Викторович. Все права защищены.**
|
||||
|
||||
|
||||
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-----
|
||||
|
||||
mQINBGj7j/kBEADdV95HBPpNANNG8oYUxj6smaZ4priQGbPCKe7xqzQIe0wH8V5o
|
||||
RuQLA7QfE0fAA6VtZpmHoQKSYtwiwZcsu/fTql1DSLe0brkCtbMuvKu3uMwjb9Fb
|
||||
LsR1bsHJ+WyqlxxoLxUQw518H5EeqiUKtkJephikokDGxCTjwhE/hB4Y8VLiNupQ
|
||||
YRXEksbCGwNWd/LItteMDd8MTp5upLkeH59KerNVljnZLuEzT4v5Qxisjyzrr601
|
||||
wZp03ArswzM1J5joU7RY0N7iaNXkFhfxrCus53A8MluvOQdYvFJiFzrClFVCBSnG
|
||||
sqe8JgtgOHxTKLKub6zthD2h2ejE3jhQUV3AxglTkHCjPDUf/GdIklAQksJthFbE
|
||||
cBqJPhL4lek2I3Wu5uxQrHK2vOgiFLJr/f3x/bZIAzniAQ4AvByW8EGzjhGOFDzp
|
||||
LX2t+QBDDAx0DSkS15xIOiyNwuVW3xi16Fxk4X/0XbEvr1w6GPdeeZf0JfHsEKMZ
|
||||
8gLDxRWoLaKu2XSoqjgAZxQG07MqyN+mLRs1Smwxlfjpa/JAipL96lYp6AlAlG5A
|
||||
lgO+b001fduWM6f9ZqPMutRdaGVxZ4opUzN3cSz9qY/fUMUv53xxvF75a/6TL+qm
|
||||
gyxImOfr+LZeKZeTII4R4AMssFkseYmnvbeN41XK4kg51ehRyAv+lC1HkwARAQAB
|
||||
tIPQotCw0YDQsNCx0LDQvdC+0LIg0JDQu9C10LrRgdCw0L3QtNGAINCS0LjQutGC
|
||||
0L7RgNC+0LLQuNGHICjQsNCy0YLQvtGA0YHQutC+0LUg0L/RgNCw0LLQviDQvdCw
|
||||
INGB0L7RhNGCKSA8aW5mb0BoYjMtYWNjZWxlcmF0b3IuY29tPokCUgQTAQoAPBYh
|
||||
BEYDWD+BBU/uzn6CHgJv0m9x1wsXBQJo+4/5AxsvBAULCQgHAgIiAgYVCgkICwIE
|
||||
FgIDAQIeBwIXgAAKCRACb9JvcdcLF8lYEACDbolcxeIp5ToYcxepAPm0OWlVKBEZ
|
||||
C5j+kZdNOBBAZ8hQ87cKQAFhvYEBsTlBdFLRDZiu1+0bBj7VIH6EdA5ON5iS6g7N
|
||||
Ycsx2bxCHeJd2Z3+vXidq4Bf1GTYs7XptSkzJcYLQuorIa0ljOKZgwoX7A/FhsS3
|
||||
vpq29zTv0TYeJNFXgX+1n3xaJ4X4G2sVT0gDkIZjxtg/pgaREvLYqV1XRNsIoLWU
|
||||
CVrnRYvKWkmLfC+GjhK435HQ4B1qgOaU2g2OAyWw8J4+Dagk/BcUjA9J/grv3WH+
|
||||
JCxqTlJWb3/awr5rGjX6ryN8/19PCBzMkyiD7cwvqq5v8EoYla3BjDQaJL3ucqSD
|
||||
9TgJQTS0aqegibECCQiPFaelOKJnMjK/vdASKW34Al3LqtllXUj6Ar4FQBXPZacs
|
||||
RIa1OIdCUtVFJ55RIuE/oHTvgmvl+JQXslPUHImZO1z27sNnyUgEQ4nAwaTF/yNY
|
||||
fHcbuyHJzHtGWamuyZKPj8fmIpQ9A2LSvMwHTW793qGD7AwUNOKJUOvMdtoYK6KJ
|
||||
7S1naPp8ngy+N8bIaD9DZ4tY9Rl2ZDxhW30i9KhiC+RPHXn7J/fQKRoh1h25Tz6d
|
||||
rZviHyQ4f5AZ8zc4XyQ5Q2/x2jR12WH+jr/Q8fE9e9AKvsrRDxNEfxB0rT1fG8Um
|
||||
nF7dT2yU753xs7kCDQRo+4/5ARAAuUi93negcYuzKlo64lrEheiW4/5ThePUpmfk
|
||||
3dUGy2JKKzfScToArvH/ubCdxF+3a8Nu0ifeXK80bvvGYINFo0EEPtSK6i88SneZ
|
||||
EIMIRPG+CUi5Ir/BNgppreC6Wd0aO8OJyj9Tc9/gccaFpVny85Cfa4pOImdodRPb
|
||||
z6suqO84IFgCdjMWrflUCdjEGi9DcjYwfLRP++tt5/Z0TrxlVbMUf+tl4+ZoKmiL
|
||||
yxhZ9ubTaQnfVrtnW9FlEFaUpUY90nUTTYQMvht26zWJiKXRcEEst30RicBy2dgm
|
||||
0X4YqvXi1Hape8ZVxuqyoC/bbxiPb00nGSe2gLdyQytOQZzXmP13NDxFIdUO4p8D
|
||||
KOKH6BUWJKBxvdyIXBh/ofkgczMnzArMQdbfBY+Nd0M8BvAmqJvKurQbuLCjwoGW
|
||||
hPAKfIZIhnQeVQYM5Do5MARklwXtMjxv1Y/QzFevwdQb8GptLMewfgIW+nFvZ4pR
|
||||
Rzz8/RilmFYiE1BLK7546rgEsCamJRHiXa8GD+nfSoxaShDDEVMiuUsSsD5nA/cB
|
||||
/xmccvXV1C3bn5cQQekRI7SrhXZ8VB1BNIwWVYTWui1V+tM1lEyvXV9kTnyjMxgX
|
||||
q0aSkkjV/QS3aleJL6em+NoqacUJTcitra2BDvNqrHrgOrDYgQKCdUswzcUVpqGC
|
||||
An/6GHEAEQEAAYkEbAQYAQoAIBYhBEYDWD+BBU/uzn6CHgJv0m9x1wsXBQJo+4/5
|
||||
AhsuAkAJEAJv0m9x1wsXwXQgBBkBCgAdFiEE0B7X50iFYqyCahXe4sAChxn/m0UF
|
||||
Amj7j/kACgkQ4sAChxn/m0WesQ//aPDvu9z8TZg98qwA8mB0nfEqLjdS6eOgGkha
|
||||
uMXvxEQcAU9wvRmsacvml4Gd3Sdms1ZXTg8YeLIIpNCEpFKB50/uQLTeFFHzqe5W
|
||||
ueODAZAWKoKMSAJYhK+nvHwDfaWXuMU6g1du7xnUfildqtpWXXDyyp3kqqeUw67p
|
||||
cSHXaK8UMGlIsuZwngRJvfzp0HkgZ42JgmbLjJkZfwJfbkrKf/VsncY+fN3JHSTE
|
||||
tE/M8fC7ViBNeL+CVPMBgpKibqyCaO3NEdigPY3TfUWQuuCLtX+KtWlkn3vKfwQ0
|
||||
oMMjot6HpO9W+CAJbiFnxvEakWY19Jmg8bBxyoQhSbO963FXiZEyCu3+CehstDwJ
|
||||
vKmr599VB/g/nA12Ya3PK5AefGrMnos4qw6BlglZN2ErZ0rHtihqXDijnJduPUi6
|
||||
RT23JYa3iMlCRlPTiD3hgp0GO+bZFIDnzJrcEFmPyZh5ec/st1hYsgSDSlYpa96d
|
||||
r5LBJa/2Lnnvnzc+/svwI/oLTymGVsWWrQ3HrrbtbVs7eYUDtWdTHgCf+xtB+q0I
|
||||
rHJMH+MMU6NNpAcocW1Ts2MW+Cn6E0nRU9SQqQ6vFdOKLIS8iOUzcqDo1c4zo/DR
|
||||
rH+7HsJi1rTop6qtakX2MSpz7mRa8Z9BcPsu3cc6NFF1jJvhD1i/Cak7cdZEMvUK
|
||||
zNgy226xLw//fyAWVWpBGUJsPUcm/dR0yE6m9DoLhW9+TTgsrrr+Mmd4xHoAnzqI
|
||||
D1PhWdXfj5xopivCXX4DD3NFZ5ovfOYmab39CkGIzdrHqnpG5s7eDy9jOS8gzUJw
|
||||
ef6OR5WJRYCof+CRgHztw145cVgpPjlwdrjMW98RoR42OXoXMS6B/xol700ruTse
|
||||
zMczePjwKFJ0Fjz+GrBTSIYgqco7jp+S4W94UUBco+LVHJJFF+zLEJHR23N1w3T7
|
||||
sHyFCgo/gMmk7ra/de9w7C3cB8SSfSaU8si3XGS9IF2CHibNqQnb3bjMMqY4DFGQ
|
||||
6g/El9+OUWeaEliZQ4/11WMG4FznKD2+Lj+KRgEstReWMTZbCpGtWKfxi8w5efn+
|
||||
1Ky6aTpHUWT6k8MHK7Le90lLVEbqpDlOHZQFigNiCf/QS2b7yXxnFAnMGCk092EK
|
||||
CDE8DyR4wb9THghL+nCm+J15+tMAYV6lwsVr6R5h9EqBSQa3ZPXoQWPxRnorzoCy
|
||||
ac8A72+SLQuxFjuPAlc8YXcqto4IwEW6ZCoy7H1CgVs0EJj0NgRz8SwyUZEcf0Ed
|
||||
7Aq8cir63VOJmliOSfWM1SLhRKfHYFHg/6yfWa6Zqf0O1yHJ7kMsfMWFqHfFM54N
|
||||
93vnEalfPB1uIFnU9RUthsQw8mLzyYydwsk5UvbcLO90TslmNcX3His=
|
||||
=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.
|
||||
# For licensing inquiries: info@hb3-accelerator.com
|
||||
|
||||
# Вывод цветного текста
|
||||
# Скрипт для автоматической установки шаблона приложения DLE
|
||||
# Скачивает репозиторий, проверяет Docker, импортирует образы и тома, запускает приложение
|
||||
|
||||
# Цветной вывод
|
||||
print_green() {
|
||||
echo -e "\e[32m$1\e[0m"
|
||||
}
|
||||
@@ -21,275 +24,224 @@ print_red() {
|
||||
echo -e "\e[31m$1\e[0m"
|
||||
}
|
||||
|
||||
# Проверка и установка Docker и Docker Compose
|
||||
# Проверка Docker
|
||||
check_docker() {
|
||||
print_blue "Проверка наличия Docker..."
|
||||
print_blue "🔍 Проверка Docker..."
|
||||
if ! command -v docker &> /dev/null; then
|
||||
print_yellow "Docker не установлен."
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
print_blue "Автоматическая установка Docker для Linux..."
|
||||
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
|
||||
print_red "❌ Docker не установлен!"
|
||||
print_yellow "Установите Docker: https://docs.docker.com/get-docker/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверка прав доступа к Docker
|
||||
if ! docker ps &> /dev/null; then
|
||||
print_yellow "⚠️ Нет прав для запуска Docker команд."
|
||||
print_blue "Добавление пользователя в группу docker..."
|
||||
|
||||
# Проверяем, есть ли пользователь в группе 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
|
||||
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 установлен и доступен."
|
||||
|
||||
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 установлен."
|
||||
print_green "✅ Docker и Docker Compose установлены"
|
||||
}
|
||||
|
||||
# Инструкция для пользователей без git
|
||||
print_no_git_instructions() {
|
||||
print_blue "Если у вас нет git, скачайте архив проекта с GitHub:"
|
||||
print_yellow "1. Перейдите на https://github.com/VC-HB3-Accelerator/DLE"
|
||||
print_yellow "2. Нажмите 'Code' > 'Download ZIP'"
|
||||
print_yellow "3. Распакуйте архив и перейдите в папку проекта"
|
||||
print_yellow "4. Запустите этот скрипт: ./setup.sh"
|
||||
# Проверка 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 запущен"
|
||||
}
|
||||
|
||||
# Все настройки хранятся в зашифрованной базе данных
|
||||
|
||||
# Создание ключа шифрования
|
||||
create_encryption_key() {
|
||||
print_blue "Проверка ключа шифрования..."
|
||||
|
||||
# Проверяем наличие OpenSSL
|
||||
if ! command -v openssl &> /dev/null; then
|
||||
print_yellow "OpenSSL не установлен. Установка..."
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
sudo apt-get update && sudo apt-get install -y openssl
|
||||
# Скачивание репозитория
|
||||
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_red "Пожалуйста, установите OpenSSL вручную: https://www.openssl.org/"
|
||||
exit 1
|
||||
print_blue "Используем существующую папку"
|
||||
cd DLE
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
# Создаём папку для ключей
|
||||
mkdir -p ./ssl/keys
|
||||
|
||||
# Генерируем ключ шифрования (если его нет)
|
||||
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
|
||||
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
||||
cd DLE
|
||||
print_green "✅ Репозиторий скачан"
|
||||
}
|
||||
|
||||
# Предварительная загрузка образов
|
||||
pull_images() {
|
||||
print_blue "Предварительная загрузка образов Docker..."
|
||||
# Проверка файлов образов
|
||||
check_images() {
|
||||
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_blue "Загрузка образа: $img"
|
||||
docker pull $img
|
||||
if [ $? -ne 0 ]; then
|
||||
print_yellow "Предупреждение: Не удалось загрузить образ $img, но продолжаем работу..."
|
||||
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_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
|
||||
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 импортирован"
|
||||
|
||||
# Запуск проекта
|
||||
start_project() {
|
||||
print_blue "Запуск проекта..."
|
||||
# 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 импортирован"
|
||||
|
||||
# Сначала убедимся, что предыдущие контейнеры остановлены
|
||||
print_blue "Остановка существующих контейнеров..."
|
||||
docker compose down
|
||||
# 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 импортирован"
|
||||
|
||||
# Запуск сервисов в Docker Compose
|
||||
print_blue "Запуск сервисов (PostgreSQL, Ollama, Backend, Frontend)..."
|
||||
docker compose up -d
|
||||
print_green "✅ Все тома импортированы"
|
||||
}
|
||||
|
||||
# Проверяем, что сервисы запустились
|
||||
if [ $? -eq 0 ]; then
|
||||
print_green "Сервисы успешно запущены!"
|
||||
# Запуск приложения
|
||||
start_application() {
|
||||
print_blue "🚀 Запуск приложения..."
|
||||
|
||||
# Предзагрузка моделей Ollama
|
||||
print_blue "Предзагрузка моделей Ollama..."
|
||||
print_yellow "Это может занять несколько минут..."
|
||||
|
||||
# Ждем, пока 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 "----------------------------------------"
|
||||
if docker-compose up -d; then
|
||||
print_green "✅ Приложение запущено"
|
||||
print_blue "🌐 Доступ к приложению: http://localhost:5173"
|
||||
else
|
||||
print_red "Произошла ошибка при запуске сервисов."
|
||||
print_yellow "Проверьте логи командой: docker compose logs"
|
||||
print_yellow "Для просмотра логов конкретного сервиса: docker compose logs [service]"
|
||||
print_yellow "Например: docker compose logs backend"
|
||||
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 "==============================================="
|
||||
print_blue " Установка и запуск Digital_Legal_Entity(DLE)"
|
||||
print_blue "==============================================="
|
||||
|
||||
print_yellow "\nЕсли у вас нет git, скачайте проект архивом с GitHub!"
|
||||
print_no_git_instructions
|
||||
print_blue "🚀 Установка шаблона приложения Digital Legal Entity"
|
||||
print_blue "=================================================="
|
||||
|
||||
# Проверки
|
||||
check_docker
|
||||
create_encryption_key
|
||||
pull_images
|
||||
start_project
|
||||
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
|
||||
# Запуск
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user