204 lines
7.1 KiB
Markdown
204 lines
7.1 KiB
Markdown
## Описание
|
||
|
||
Git Service - отдельный сервис на базе Gitea, обеспечивающий централизованное хранение кода и заметок. Работает независимо от других сервисов и предоставляет Git-интерфейс для всех проектов в экосистеме aepif.ru.
|
||
|
||
## Архитектура системы
|
||
|
||
```mermaid
|
||
graph TB
|
||
A[Users] --> B[Traefik Proxy]
|
||
B --> C[Gitea Web Interface]
|
||
C --> D[Git Repositories]
|
||
C --> E[PostgreSQL Database]
|
||
F[SSH Clients] --> G[Gitea SSH:2222]
|
||
G --> D
|
||
|
||
subgraph "Git Service Container"
|
||
C
|
||
D
|
||
end
|
||
|
||
subgraph "Database Container"
|
||
E
|
||
end
|
||
|
||
H[Webhook Consumers] --> C
|
||
C --> I[Webhook Notifications]
|
||
```
|
||
|
||
## Основные компоненты
|
||
|
||
### Gitea Server
|
||
- **Назначение**: Web-интерфейс для управления Git-репозиториями
|
||
- **Домен**: `git.aepif.ru`
|
||
- **Технология**: Gitea (Go-based Git service)
|
||
- **Особенности**:
|
||
- Web-интерфейс для просмотра кода
|
||
- Issue tracking
|
||
- Pull/Merge requests
|
||
- Webhook notifications
|
||
- User management
|
||
|
||
### PostgreSQL Database
|
||
- **Назначение**: Хранение метаданных Gitea
|
||
- **Технология**: PostgreSQL 14
|
||
- **Данные**:
|
||
- Информация о пользователях
|
||
- Метаданные репозиториев
|
||
- Issues и комментарии
|
||
- Настройки системы
|
||
|
||
### SSH Access
|
||
- **Порт**: 2222 (внешний доступ)
|
||
- **Назначение**: Git operations через SSH
|
||
- **Особенности**: Отдельный порт для избежания конфликтов
|
||
|
||
## Конфигурация
|
||
|
||
### Docker Compose
|
||
```yaml
|
||
services:
|
||
gitea:
|
||
image: gitea/gitea:latest
|
||
environment:
|
||
- GITEA__database__DB_TYPE=postgres
|
||
- GITEA__database__HOST=db:5432
|
||
- GITEA__server__SSH_DOMAIN=git.aepif.ru
|
||
- GITEA__server__SSH_PORT=2222
|
||
networks:
|
||
- proxy # Подключение к Traefik
|
||
- default
|
||
```
|
||
|
||
### Traefik Labels
|
||
- **HTTP routing**: `git.aepif.ru` → port 3000
|
||
- **TCP routing**: SSH на порту 2222
|
||
- **SSL**: Автоматические сертификаты
|
||
|
||
## Репозитории
|
||
|
||
### Активные репозитории
|
||
- **second-mind-aep**: Заметки для Second Mind
|
||
- **configs**: Конфигурационные файлы сервера
|
||
- **scripts**: Вспомогательные скрипты
|
||
|
||
### Структура URL
|
||
- **HTTP Clone**: `https://git.aepif.ru/username/repo.git`
|
||
- **SSH Clone**: `git@git.aepif.ru:username/repo.git`
|
||
- **Internal URL**: `http://gitea:3000/username/repo.git`
|
||
|
||
## Интеграции
|
||
|
||
### Webhook Integration
|
||
- **Second Mind**: автоматическая пересборка при push
|
||
- **CI/CD**: потенциальная интеграция с системами автоматизации
|
||
- **Notifications**: уведомления в внешние системы
|
||
|
||
### Authentication
|
||
- **Bypass Authelia**: Собственная система аутентификации Gitea
|
||
- **Local Users**: Управление пользователями внутри Gitea
|
||
- **SSH Keys**: Управление SSH ключами для каждого пользователя
|
||
|
||
## Домены и доступ
|
||
|
||
| Протокол | Endpoint | Описание | Порт |
|
||
|----------|----------|----------|------|
|
||
| HTTPS | `git.aepif.ru` | Web-интерфейс Gitea | 443 |
|
||
| SSH | `git.aepif.ru:2222` | Git SSH operations | 2222 |
|
||
| HTTP | `gitea:3000` | Internal container access | 3000 |
|
||
|
||
## Workflow использования
|
||
|
||
### Веб-интерфейс
|
||
1. **Доступ** через `git.aepif.ru`
|
||
2. **Аутентификация** с помощью логина/пароля Gitea
|
||
3. **Управление** репозиториями через Web UI
|
||
4. **Настройка** webhooks для автоматизации
|
||
|
||
### Git Operations
|
||
```bash
|
||
# SSH клонирование
|
||
git clone git@git.aepif.ru:2222/username/repo.git
|
||
|
||
# HTTPS клонирование
|
||
git clone https://git.aepif.ru/username/repo.git
|
||
|
||
# Push изменений
|
||
git push origin main
|
||
```
|
||
|
||
## Структура файлов
|
||
|
||
```
|
||
/DOCKER/git/
|
||
├── docker-compose.yml # Конфигурация Gitea + PostgreSQL
|
||
└── volumes/
|
||
├── gitea_data/ # Данные Gitea (repos, config)
|
||
└── postgres_data/ # База данных PostgreSQL
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
### Уровни защиты
|
||
- **SSL/TLS**: Все HTTPS соединения зашифрованы
|
||
- **SSH Keys**: Аутентификация по ключам для Git operations
|
||
- **User Management**: Контроль доступа на уровне пользователей
|
||
- **Repository Permissions**: Детальные права доступа к репозиториям
|
||
|
||
### Backup Strategy
|
||
- **Database**: Регулярные дампы PostgreSQL
|
||
- **Repositories**: Backup директории `gitea_data`
|
||
- **External Mirrors**: Синхронизация с внешними Git-сервисами
|
||
|
||
## Мониторинг
|
||
|
||
### Доступные метрики
|
||
- **Repository Usage**: Размер и активность репозиториев
|
||
- **User Activity**: Статистика commits, pushes, pulls
|
||
- **System Health**: Состояние базы данных и сервиса
|
||
|
||
### Health Checks
|
||
```bash
|
||
# Проверка веб-интерфейса
|
||
curl -I https://git.aepif.ru
|
||
|
||
# Проверка SSH доступа
|
||
ssh -T git@git.aepif.ru -p 2222
|
||
|
||
# Проверка контейнеров
|
||
docker ps | grep gitea
|
||
```
|
||
|
||
## Администрирование
|
||
|
||
### Создание пользователей
|
||
1. Доступ к админ-панели Gitea
|
||
2. User Management → Create User
|
||
3. Настройка прав доступа
|
||
|
||
### Настройка репозиториев
|
||
1. Создание репозитория через Web UI
|
||
2. Настройка webhooks для интеграций
|
||
3. Управление коллаборацией
|
||
|
||
### Обновления
|
||
```bash
|
||
# Обновление образа
|
||
docker-compose pull
|
||
docker-compose up -d
|
||
|
||
# Проверка версии
|
||
docker exec gitea gitea --version
|
||
```
|
||
|
||
## Связанные сервисы
|
||
|
||
- **[[Мой сервер/Second Mind Setup/Обзор системы|Second Mind]]** - использует Git Service для хранения заметок
|
||
- **[[Мой сервер/Инфраструктура/Обзор системы|Traefik]]** - обеспечивает маршрутизацию и SSL
|
||
- **Potential CI/CD** - будущие интеграции с системами автоматизации
|
||
|
||
## Связанные документы
|
||
|
||
- **[[Git Service - Конфигурации]]** - детальные настройки
|
||
- **[[Git Service - Развертывание]]** - пошаговая установка
|
||
- **[[Git Service - Администрирование]]** - управление и обслуживание |