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:
2025-10-24 17:48:51 +03:00
parent e41f7a8c30
commit 96ba217849
8 changed files with 422 additions and 663 deletions

89
LICENSE
View File

@@ -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
View 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-----

View File

@@ -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
View File

@@ -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
View 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
View File

@@ -0,0 +1,65 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=kiA8
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -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 "$@"

424
setup.sh
View File

@@ -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."
print_red "Docker не установлен!"
print_yellow "Установите Docker: https://docs.docker.com/get-docker/"
exit 1
fi
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"
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
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"
}
# Все настройки хранятся в зашифрованной базе данных
# Создание ключа шифрования
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
else
print_red "Пожалуйста, установите OpenSSL вручную: https://www.openssl.org/"
# Проверка Docker запущен
check_docker_running() {
print_blue "🔍 Проверка запуска Docker..."
if ! docker info &> /dev/null; then
print_red "❌ Docker не запущен!"
print_yellow "Запустите Docker и повторите попытку"
exit 1
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
print_green "✅ Docker запущен"
}
# Предварительная загрузка образов
pull_images() {
print_blue "Предварительная загрузка образов Docker..."
images=("node:20-slim" "postgres:16" "ollama/ollama:latest")
for img in "${images[@]}"; do
print_blue "Загрузка образа: $img"
docker pull $img
if [ $? -ne 0 ]; then
print_yellow "Предупреждение: Не удалось загрузить образ $img, но продолжаем работу..."
# Скачивание репозитория
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_green "Образ $img успешно загружен."
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 импортирован"
# Запуск проекта
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 "$@"