## Предварительные требования ### Системные требования - 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 сертификаты для всех доменов Следующий документ: [[Администрирование]]