- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
409 lines
11 KiB
Markdown
409 lines
11 KiB
Markdown
# Git Service - Конфигурации
|
||
|
||
← **[[Обзор системы|← Назад к обзору]]**
|
||
|
||
## Docker Compose конфигурация
|
||
|
||
### Основной файл: `/DOCKER/git/docker-compose.yml`
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
services:
|
||
gitea:
|
||
image: gitea/gitea:latest
|
||
container_name: gitea
|
||
environment:
|
||
- USER_UID=1000
|
||
- USER_GID=1000
|
||
- GITEA__database__DB_TYPE=postgres
|
||
- GITEA__database__HOST=db:5432
|
||
- GITEA__database__NAME=gitea
|
||
- GITEA__database__USER=gitea
|
||
- GITEA__database__PASSWORD=sG7hZXBQDAtRab9A
|
||
- GITEA__server__SSH_DOMAIN=git.aepif.ru
|
||
- GITEA__server__SSH_PORT=2222
|
||
volumes:
|
||
- gitea_data:/data
|
||
- /etc/timezone:/etc/timezone:ro
|
||
- /etc/localtime:/etc/localtime:ro
|
||
depends_on:
|
||
- db
|
||
networks:
|
||
- default
|
||
- proxy
|
||
labels:
|
||
- traefik.enable=true
|
||
# HTTP routing
|
||
- traefik.http.routers.gitea.rule=Host(`git.aepif.ru`)
|
||
- traefik.http.routers.gitea.tls.certresolver=letsencrypt
|
||
- traefik.http.services.gitea.loadbalancer.server.port=3000
|
||
# TCP routing for SSH
|
||
- traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)
|
||
- traefik.tcp.routers.gitea-ssh.entrypoints=ssh
|
||
- traefik.tcp.services.gitea-ssh.loadbalancer.server.port=22
|
||
restart: unless-stopped
|
||
|
||
db:
|
||
image: postgres:14
|
||
container_name: gitea_db
|
||
environment:
|
||
- POSTGRES_USER=gitea
|
||
- POSTGRES_PASSWORD=sG7hZXBQDAtRab9A
|
||
- POSTGRES_DB=gitea
|
||
volumes:
|
||
- postgres_data:/var/lib/postgresql/data
|
||
networks:
|
||
- default
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
gitea_data:
|
||
external: true
|
||
name: gitea_gitea_data
|
||
postgres_data:
|
||
external: true
|
||
name: gitea_postgres_data
|
||
|
||
networks:
|
||
proxy:
|
||
external: true
|
||
default:
|
||
driver: bridge
|
||
```
|
||
|
||
## Gitea конфигурация
|
||
|
||
### Environment Variables
|
||
```yaml
|
||
environment:
|
||
# User Configuration
|
||
- USER_UID=1000 # UID пользователя в контейнере
|
||
- USER_GID=1000 # GID пользователя в контейнере
|
||
|
||
# Database Configuration
|
||
- GITEA__database__DB_TYPE=postgres
|
||
- GITEA__database__HOST=db:5432
|
||
- GITEA__database__NAME=gitea
|
||
- GITEA__database__USER=gitea
|
||
- GITEA__database__PASSWORD=sG7hZXBQDAtRab9A
|
||
|
||
# Server Configuration
|
||
- GITEA__server__SSH_DOMAIN=git.aepif.ru
|
||
- GITEA__server__SSH_PORT=2222
|
||
```
|
||
|
||
### Расширенные настройки через переменные окружения
|
||
```yaml
|
||
environment:
|
||
# Server Settings
|
||
- GITEA__server__DOMAIN=git.aepif.ru
|
||
- GITEA__server__ROOT_URL=https://git.aepif.ru
|
||
- GITEA__server__DISABLE_SSH=false
|
||
- GITEA__server__START_SSH_SERVER=true
|
||
- GITEA__server__SSH_PORT=22 # Внутренний SSH порт
|
||
- GITEA__server__SSH_LISTEN_PORT=22 # Порт прослушивания в контейнере
|
||
|
||
# Security Settings
|
||
- GITEA__security__INSTALL_LOCK=true
|
||
- GITEA__security__SECRET_KEY=your_secret_key_here
|
||
|
||
# Service Settings
|
||
- GITEA__service__DISABLE_REGISTRATION=true
|
||
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
|
||
- GITEA__service__ENABLE_NOTIFY_MAIL=false
|
||
|
||
# Repository Settings
|
||
- GITEA__repository__DEFAULT_BRANCH=main
|
||
- GITEA__repository__ENABLE_PUSH_CREATE_USER=true
|
||
- GITEA__repository__ENABLE_PUSH_CREATE_ORG=false
|
||
|
||
# Webhook Settings
|
||
- GITEA__webhook__ALLOWED_HOST_LIST=*
|
||
- GITEA__webhook__SKIP_TLS_VERIFY=false
|
||
```
|
||
|
||
### Структура конфигурации app.ini
|
||
Gitea также поддерживает конфигурацию через файл `app.ini`:
|
||
|
||
```ini
|
||
# /data/gitea/conf/app.ini внутри контейнера
|
||
[database]
|
||
DB_TYPE = postgres
|
||
HOST = db:5432
|
||
NAME = gitea
|
||
USER = gitea
|
||
PASSWD = sG7hZXBQDAtRab9A
|
||
SSL_MODE = disable
|
||
|
||
[server]
|
||
DOMAIN = git.aepif.ru
|
||
HTTP_PORT = 3000
|
||
ROOT_URL = https://git.aepif.ru/
|
||
DISABLE_SSH = false
|
||
SSH_DOMAIN = git.aepif.ru
|
||
SSH_PORT = 2222
|
||
START_SSH_SERVER = true
|
||
SSH_LISTEN_PORT = 22
|
||
|
||
[security]
|
||
INSTALL_LOCK = true
|
||
SECRET_KEY = your_secret_key_here
|
||
|
||
[service]
|
||
DISABLE_REGISTRATION = true
|
||
REQUIRE_SIGNIN_VIEW = false
|
||
ENABLE_NOTIFY_MAIL = false
|
||
DEFAULT_KEEP_EMAIL_PRIVATE = true
|
||
|
||
[mailer]
|
||
ENABLED = false
|
||
|
||
[repository]
|
||
DEFAULT_BRANCH = main
|
||
ENABLE_PUSH_CREATE_USER = true
|
||
ENABLE_PUSH_CREATE_ORG = false
|
||
|
||
[webhook]
|
||
ALLOWED_HOST_LIST = *
|
||
SKIP_TLS_VERIFY = false
|
||
```
|
||
|
||
## PostgreSQL конфигурация
|
||
|
||
### Database Container Settings
|
||
```yaml
|
||
db:
|
||
image: postgres:14
|
||
container_name: gitea_db
|
||
environment:
|
||
- POSTGRES_USER=gitea # Пользователь БД
|
||
- POSTGRES_PASSWORD=sG7hZXBQDAtRab9A # Пароль БД
|
||
- POSTGRES_DB=gitea # Имя базы данных
|
||
```
|
||
|
||
### Дополнительные настройки PostgreSQL
|
||
```yaml
|
||
environment:
|
||
# Performance Settings
|
||
- POSTGRES_SHARED_PRELOAD_LIBRARIES=pg_stat_statements
|
||
- POSTGRES_MAX_CONNECTIONS=200
|
||
- POSTGRES_SHARED_BUFFERS=256MB
|
||
- POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
|
||
- POSTGRES_WORK_MEM=4MB
|
||
|
||
# Logging Settings
|
||
- POSTGRES_LOG_STATEMENT=all
|
||
- POSTGRES_LOG_MIN_DURATION_STATEMENT=1000
|
||
|
||
# Backup Settings
|
||
- POSTGRES_WAL_LEVEL=replica
|
||
- POSTGRES_ARCHIVE_MODE=on
|
||
```
|
||
|
||
### PostgreSQL Volume Configuration
|
||
```yaml
|
||
volumes:
|
||
postgres_data:
|
||
external: true
|
||
name: gitea_postgres_data # External volume для персистентности
|
||
```
|
||
|
||
## Traefik Integration Labels
|
||
|
||
### HTTP Routing
|
||
```yaml
|
||
labels:
|
||
- traefik.enable=true
|
||
- traefik.http.routers.gitea.rule=Host(`git.aepif.ru`)
|
||
- traefik.http.routers.gitea.tls.certresolver=letsencrypt
|
||
- traefik.http.services.gitea.loadbalancer.server.port=3000
|
||
```
|
||
|
||
### TCP Routing для SSH
|
||
```yaml
|
||
labels:
|
||
# SSH TCP routing
|
||
- traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)
|
||
- traefik.tcp.routers.gitea-ssh.entrypoints=ssh
|
||
- traefik.tcp.services.gitea-ssh.loadbalancer.server.port=22
|
||
```
|
||
|
||
### Объяснение SSH routing
|
||
- **HostSNI(`*`)**: Принимает любые TCP соединения на SSH entrypoint
|
||
- **entrypoints=ssh**: Использует SSH entrypoint (порт 2222) в Traefik
|
||
- **port=22**: Перенаправляет на порт 22 внутри Gitea контейнера
|
||
|
||
## Networking Configuration
|
||
|
||
### Networks
|
||
```yaml
|
||
networks:
|
||
proxy:
|
||
external: true # Подключение к Traefik
|
||
default:
|
||
driver: bridge # Внутренняя сеть для Gitea + PostgreSQL
|
||
```
|
||
|
||
### Network Architecture
|
||
- **proxy network**: Для HTTP/HTTPS трафика через Traefik
|
||
- **default network**: Для внутренней связи Gitea ↔ PostgreSQL
|
||
- **SSH traffic**: Напрямую через TCP routing Traefik
|
||
|
||
## Volume Configuration
|
||
|
||
### Gitea Data Volume
|
||
```yaml
|
||
gitea_data:
|
||
external: true
|
||
name: gitea_gitea_data
|
||
```
|
||
|
||
**Содержимое Gitea volume:**
|
||
- **repositories/**: Git репозитории
|
||
- **conf/**: Конфигурационные файлы (app.ini)
|
||
- **log/**: Логи Gitea
|
||
- **data/**: Загруженные файлы, аватары
|
||
- **ssh/**: SSH ключи сервера
|
||
|
||
### PostgreSQL Data Volume
|
||
```yaml
|
||
postgres_data:
|
||
external: true
|
||
name: gitea_postgres_data
|
||
```
|
||
|
||
**Содержимое PostgreSQL volume:**
|
||
- **base/**: Файлы базы данных
|
||
- **global/**: Глобальные настройки кластера
|
||
- **pg_wal/**: Write-Ahead Log файлы
|
||
- **pg_tblspc/**: Tablespace ссылки
|
||
|
||
### Создание external volumes
|
||
```bash
|
||
# Создание volumes перед запуском
|
||
docker volume create gitea_gitea_data
|
||
docker volume create gitea_postgres_data
|
||
|
||
# Проверка созданных volumes
|
||
docker volume ls | grep gitea
|
||
```
|
||
|
||
## Time Synchronization
|
||
|
||
### Timezone Configuration
|
||
```yaml
|
||
volumes:
|
||
- /etc/timezone:/etc/timezone:ro
|
||
- /etc/localtime:/etc/localtime:ro
|
||
```
|
||
|
||
Это обеспечивает синхронизацию времени контейнера с хост-системой, что важно для:
|
||
- Корректных timestamp в Git commits
|
||
- Правильного отображения времени в веб-интерфейсе
|
||
- Синхронизации с логами других сервисов
|
||
|
||
## Security Configuration
|
||
|
||
### User Permissions
|
||
```yaml
|
||
environment:
|
||
- USER_UID=1000
|
||
- USER_GID=1000
|
||
```
|
||
|
||
- Gitea запускается под пользователем с UID/GID 1000
|
||
- Соответствует обычному пользователю в Linux системах
|
||
- Обеспечивает правильные права доступа к файлам
|
||
|
||
### Database Security
|
||
- **Пароль БД**: Случайно сгенерированный пароль `sG7hZXBQDAtRab9A`
|
||
- **Изоляция сети**: PostgreSQL доступна только из внутренней сети
|
||
- **SSL отключен**: Для внутренней связи в Docker сети
|
||
|
||
### SSH Security
|
||
- **Отдельный порт**: SSH на нестандартном порту 2222
|
||
- **TCP routing**: Прямое подключение через Traefik
|
||
- **Key management**: SSH ключи управляются через веб-интерфейс
|
||
|
||
## Performance Tuning
|
||
|
||
### Gitea Performance Settings
|
||
```yaml
|
||
environment:
|
||
# Repository settings
|
||
- GITEA__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki
|
||
- GITEA__repository__DEFAULT_PRIVATE=private
|
||
|
||
# Git settings
|
||
- GITEA__git__MAX_GIT_DIFF_LINES=10000
|
||
- GITEA__git__MAX_GIT_DIFF_LINE_CHARACTERS=5000
|
||
- GITEA__git__MAX_GIT_DIFF_FILES=100
|
||
|
||
# Session settings
|
||
- GITEA__session__PROVIDER=memory
|
||
- GITEA__session__PROVIDER_CONFIG=data/sessions
|
||
```
|
||
|
||
### PostgreSQL Performance
|
||
```yaml
|
||
environment:
|
||
# Connection settings
|
||
- POSTGRES_MAX_CONNECTIONS=200
|
||
- POSTGRES_SHARED_BUFFERS=256MB
|
||
- POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
|
||
- POSTGRES_RANDOM_PAGE_COST=1.1
|
||
- POSTGRES_WORK_MEM=4MB
|
||
```
|
||
|
||
## Backup Configuration
|
||
|
||
### Automated Backups
|
||
```yaml
|
||
# Дополнительный контейнер для backup (опционально)
|
||
backup:
|
||
image: prodrigestivill/postgres-backup-local
|
||
environment:
|
||
- POSTGRES_HOST=db
|
||
- POSTGRES_DB=gitea
|
||
- POSTGRES_USER=gitea
|
||
- POSTGRES_PASSWORD=sG7hZXBQDAtRab9A
|
||
- BACKUP_KEEP_DAYS=7
|
||
- BACKUP_KEEP_WEEKS=4
|
||
- BACKUP_KEEP_MONTHS=6
|
||
volumes:
|
||
- ./backups:/backups
|
||
depends_on:
|
||
- db
|
||
```
|
||
|
||
### Backup Strategy
|
||
1. **Database Backup**: Автоматический dump PostgreSQL
|
||
2. **Repository Backup**: Резервное копирование Git репозиториев
|
||
3. **Configuration Backup**: Сохранение настроек и конфигурации
|
||
|
||
## Monitoring и Logging
|
||
|
||
### Log Configuration
|
||
```yaml
|
||
environment:
|
||
- GITEA__log__MODE=file
|
||
- GITEA__log__LEVEL=Info
|
||
- GITEA__log__ROOT_PATH=/data/gitea/log
|
||
```
|
||
|
||
### Health Checks
|
||
```yaml
|
||
# Дополнительные health checks
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 30s
|
||
```
|
||
|
||
## Связанные файлы
|
||
|
||
- **[[Развертывание]]** - пошаговая установка и настройка
|
||
- **[[Администрирование]]** - управление пользователями и репозиториями
|
||
- **[[../Traefik Reverse Proxy/Конфигурации]]** - настройки интеграции с reverse proxy |