Files
second-mind-aep/Second Mind Setup/Развертывание.md
2025-08-04 12:34:05 +04:00

342 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Предварительные требования
### Системные требования
- Ubuntu/Debian сервер с Docker и Docker Compose
- Доступ к интернету для скачивания образов
- Настроенный Traefik с сетью `proxy`
- Домен с настроенными DNS записями
### Необходимые поддомены
- `git.aepif.ru` → IP сервера
- `notes.aepif.ru` → IP сервера
- `webhook.aepif.ru` → IP сервера
## Пошаговая установка
### 1. Подготовка директорий
```bash
# Создание основной директории проекта
mkdir -p /DOCKER/second-mind
cd /DOCKER/second-mind
# Создание рабочих папок
mkdir -p webhook-server obsidian_repo quartz_build
# Установка прав доступа
chmod 755 obsidian_repo quartz_build
```
### 2. Настройка SSH ключей
```bash
# Генерация SSH ключа для webhook сервиса
ssh-keygen -t ed25519 -C "second-mind-webhook" -f ~/.ssh/id_ed25519
# Просмотр публичного ключа (для добавления в Gitea позже)
cat ~/.ssh/id_ed25519.pub
# Настройка SSH конфигурации
cat >> ~/.ssh/config << EOF
Host git.aepif.ru
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
EOF
# Установка правильных прав
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/config
```
### 3. Создание конфигурационных файлов
#### Создание .env файла
```bash
cat > .env << 'EOF'
DOMAIN=aepif.ru
GITEA_ADMIN_USER=admin
GITEA_ADMIN_PASSWORD=Creonila1
GITEA_DB_PASSWORD=sG7hZXBQDAtRab9A
GITEA_SECRET=okPnnPYzdKkkpO6oS8LqI5PHm7fH/OCl
WEBHOOK_SECRET=MHtue5Zclp/dr69OFdwquGzCVHUGiEHP
REPO_NAME=second-mind-aep
EOF
```
#### Создание Dockerfile
```bash
cat > Dockerfile << 'EOF'
FROM node:22
WORKDIR /app
# Установка Git и SSH клиента
RUN apt-get update && apt-get install -y git openssh-client && rm -rf /var/lib/apt/lists/*
# Создание .ssh директории и настройка SSH
RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh
# Настройка SSH для автоматического принятия ключей хоста
RUN echo "Host git.aepif.ru\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile=/dev/null" > /root/.ssh/config
# Клонирование кастомного Quartz репозитория
RUN git clone ssh://git@git.aepif.ru:2222/aep/quartz.git /quartz
WORKDIR /quartz
RUN npm install
# Копирование и настройка webhook сервиса
COPY webhook-server/ /webhook/
WORKDIR /webhook
RUN npm install
EXPOSE 3000
WORKDIR /webhook
CMD ["node", "server.js"]
EOF
```
#### Создание nginx.conf
```bash
cat > nginx.conf << 'EOF'
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ $uri.html =404;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
}
EOF
```
#### Создание docker-compose.yml
```bash
# Скопировать содержимое из документа "Second Mind - Конфигурации"
# Файл слишком большой для вставки здесь
```
### 4. Настройка webhook сервиса
#### Создание package.json
```bash
cat > webhook-server/package.json << 'EOF'
{
"name": "quartz-webhook",
"version": "1.0.0",
"main": "server.js",
"dependencies": {
"express": "^4.18.0"
}
}
EOF
```
#### Копирование server.js
```bash
# Скопировать готовый server.js в webhook-server/server.js
# (используйте существующий файл)
```
### 5. Первый запуск
```bash
# Сборка и запуск всех сервисов
docker-compose up -d
# Проверка статуса
docker-compose ps
# Просмотр логов
docker-compose logs -f
```
### 6. Настройка Gitea
#### Первоначальная настройка
1. Открыть `https://git.aepif.ru`
2. Пройти первоначальную настройку:
- Database Type: PostgreSQL
- Host: `db:5432`
- Database Name: `gitea`
- Username: `gitea`
- Password: `sG7hZXBQDAtRab9A`
- SSH Server Domain: `git.aepif.ru`
- SSH Port: `2222`
- HTTP Port: `3000`
- Application URL: `https://git.aepif.ru/`
#### Добавление SSH ключа
1. Войти под админом (`admin` / `Creonila1`)
2. Settings → SSH / GPG Keys
3. Add Key → вставить содержимое `~/.ssh/id_ed25519.pub`
4. Сохранить
#### Создание репозитория заметок
1. New Repository
2. Repository Name: `second-mind-aep`
3. Visibility: Private
4. Initialize Repository: Yes
5. Create Repository
#### Создание репозитория Quartz
1. New Repository
2. Repository Name: `quartz`
3. Visibility: Private
4. **НЕ** инициализировать (будем форкать)
### 7. Форк и настройка Quartz
```bash
# Клонирование оригинального Quartz
git clone https://github.com/jackyzha0/quartz.git temp-quartz
cd temp-quartz
# Изменение remote на наш Gitea
git remote set-url origin ssh://git@git.aepif.ru:2222/aep/quartz.git
# Push в наш репозиторий
git push -u origin main
# Удаление временной папки
cd ..
rm -rf temp-quartz
```
### 8. Настройка webhook'а
1. В Gitea перейти в репозиторий `second-mind-aep`
2. Settings → Webhooks → Add Webhook → Gitea
3. Настройки:
- Target URL: `https://webhook.aepif.ru/webhook`
- HTTP Method: `POST`
- POST Content Type: `application/json`
- Secret: `MHtue5Zclp/dr69OFdwquGzCVHUGiEHP`
- Trigger On: `Push events`
- Active: ✓
4. Add Webhook
### 9. Первый тест
#### Создание тестовой заметки
```bash
# Клонирование репозитория заметок
git clone ssh://git@git.aepif.ru:2222/admin/second-mind-aep.git test-notes
cd test-notes
# Создание тестовой заметки
cat > README.md << 'EOF'
---
title: "Добро пожаловать"
---
# AEP Second Mind
Это главная страница базы знаний.
## Тестовая заметка
Проверка автоматической сборки.
EOF
# Commit и push
git add .
git commit -m "Initial test note"
git push origin main
```
#### Проверка работы
1. Проверить логи webhook сервиса:
```bash
docker-compose logs -f quartz-webhook
```
2. Проверить появление файлов:
```bash
ls -la quartz_build/
```
3. Открыть `https://notes.aepif.ru` и проверить сайт
## Возможные проблемы и решения
### SSH ключи не работают
```bash
# Проверка SSH подключения
ssh -p 2222 git@git.aepif.ru
# Если не работает, пересоздать ключи
rm ~/.ssh/id_ed25519*
ssh-keygen -t ed25519 -C "webhook" -f ~/.ssh/id_ed25519
# Добавить новый публичный ключ в Gitea
```
### Контейнер webhook не запускается
```bash
# Проверить логи сборки
docker-compose build quartz-webhook
# Проверить что SSH ключи примонтированы
docker exec -it second_mind_webhook ls -la /root/.ssh/
```
### Webhook не срабатывает
1. Проверить URL webhook'а в настройках Gitea
2. Проверить секретный токен
3. Посмотреть логи delivery в Gitea: Repository → Settings → Webhooks → Recent Deliveries
### 404 на главной странице
```bash
# Проверить наличие index.html
docker exec -it second_mind_nginx ls -la /usr/share/nginx/html/
# Если нет - создать index.md в репозитории
# или проверить работу webhook'а
```
## Завершение установки
После успешного развертывания у вас будет:
- ✅ Gitea сервер на `git.aepif.ru`
- ✅ Защищенный сайт заметок на `notes.aepif.ru`
- ✅ Автоматическая пересборка при каждом push'е
- ✅ Полнотекстовый поиск и граф связей
- ✅ SSL сертификаты для всех доменов
Следующий документ: [[Администрирование]]