Files
second-mind-aep/Мой сервер/Second Mind Setup/Развертывание.md
2025-08-04 12:49:10 +04:00

9.0 KiB
Raw Blame History

Предварительные требования

Системные требования

  • Ubuntu/Debian сервер с Docker и Docker Compose
  • Доступ к интернету для скачивания образов
  • Настроенный Traefik с сетью proxy
  • Домен с настроенными DNS записями

Необходимые поддомены

  • git.aepif.ru → IP сервера
  • notes.aepif.ru → IP сервера
  • webhook.aepif.ru → IP сервера

Пошаговая установка

1. Подготовка директорий

# Создание основной директории проекта
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 ключей

# Генерация 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 файла

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

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

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

# Скопировать содержимое из документа "Second Mind - Конфигурации"
# Файл слишком большой для вставки здесь

4. Настройка webhook сервиса

Создание package.json

cat > webhook-server/package.json << 'EOF'
{
  "name": "quartz-webhook",
  "version": "1.0.0",
  "main": "server.js",
  "dependencies": {
    "express": "^4.18.0"
  }
}
EOF

Копирование server.js

# Скопировать готовый server.js в webhook-server/server.js
# (используйте существующий файл)

5. Первый запуск

# Сборка и запуск всех сервисов
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

# Клонирование оригинального 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. Первый тест

Создание тестовой заметки

# Клонирование репозитория заметок
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 сервиса:

    docker-compose logs -f quartz-webhook
    
  2. Проверить появление файлов:

    ls -la quartz_build/
    
  3. Открыть https://notes.aepif.ru и проверить сайт

Возможные проблемы и решения

SSH ключи не работают

# Проверка SSH подключения
ssh -p 2222 git@git.aepif.ru

# Если не работает, пересоздать ключи
rm ~/.ssh/id_ed25519*
ssh-keygen -t ed25519 -C "webhook" -f ~/.ssh/id_ed25519
# Добавить новый публичный ключ в Gitea

Контейнер webhook не запускается

# Проверить логи сборки
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 на главной странице

# Проверить наличие 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 сертификаты для всех доменов

Следующий документ: Мой сервер/Second Mind Setup/Администрирование