9.0 KiB
9.0 KiB
Предварительные требования
Системные требования
- 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
Первоначальная настройка
- Открыть
https://git.aepif.ru - Пройти первоначальную настройку:
- 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 ключа
- Войти под админом (
admin/Creonila1) - Settings → SSH / GPG Keys
- Add Key → вставить содержимое
~/.ssh/id_ed25519.pub - Сохранить
Создание репозитория заметок
- New Repository
- Repository Name:
second-mind-aep - Visibility: Private
- Initialize Repository: Yes
- Create Repository
Создание репозитория Quartz
- New Repository
- Repository Name:
quartz - Visibility: Private
- НЕ инициализировать (будем форкать)
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'а
- В Gitea перейти в репозиторий
second-mind-aep - Settings → Webhooks → Add Webhook → Gitea
- Настройки:
- Target URL:
https://webhook.aepif.ru/webhook - HTTP Method:
POST - POST Content Type:
application/json - Secret:
MHtue5Zclp/dr69OFdwquGzCVHUGiEHP - Trigger On:
Push events - Active: ✓
- Target URL:
- 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
Проверка работы
-
Проверить логи webhook сервиса:
docker-compose logs -f quartz-webhook -
Проверить появление файлов:
ls -la quartz_build/ -
Открыть
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 не срабатывает
- Проверить URL webhook'а в настройках Gitea
- Проверить секретный токен
- Посмотреть логи 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/Администрирование