Добавлена поддержка PostgreSQL и автоматические бэкапы в S3 для Gitea

- Добавлены переменные окружения для PostgreSQL в env.example.
- Обновлен README.md с описанием новых возможностей: автоматические бэкапы и интеграция PostgreSQL.
This commit is contained in:
2025-10-23 22:33:28 +03:00
parent 1c4d5c093b
commit 1753d0871a
4 changed files with 156 additions and 149 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
data/*
.env
backups/
postgres-data/

172
README.md
View File

@@ -1,155 +1,107 @@
# Инструкция по развертыванию и настройке Gitea
# Gitea Server
**Данная инструкция предназначена для запуска Git сервера на локальной машине с URL 127.0.0.1.**
Docker-окружение для развертывания Gitea с PostgreSQL, интеграцией S3 и автоматическими бэкапами.
Это дает возможность протестировать:
## Возможности
- ✅ Git сервер
-Ранеры (Gitea Actions)
-Отправку писем (SMTP)
-Интеграцию с S3
-Интеграция с S3 (LFS, пакеты, аватары, вложения)
-Автоматические бэкапы в S3
-Отправка писем (SMTP)
- ✅ Gitea Actions ([ранеры в отдельном репозитории](https://github.com/gromov-io/gitea-runner))
**⚠️ Ограничения локального режима:**
В локальном режиме **не доступен Container Registry**, так как для его работы требуется `https`.
**⚠️ Ограничение:** Container Registry требует `https`, не работает в локальном режиме.
## Оглавление
1. [Настройка и запуск GIT сервера](#настройка-и-запуск-git-сервера)
- [Шаг 1: Конфигурация](#шаг-1-конфигурация)
- [Шаг 2: Запуск сервера](#шаг-2-запуск-сервера)
- [Шаг 3: Настройка темы GitHub (по желанию)](#шаг-3-настройка-темы-github-по-желанию)
2. [Настройка и запуск ранеров](#настройка-и-запуск-ранеров)
3. [Возможные проблемы и их решение](#возможные-проблемы-и-их-решение)
- [1. Изменения в конфигурации сервера не применяются](#1-изменения-в-конфигурации-сервера-не-применяются)
- [2. Проблемы с ранерами после изменения конфигурации](#2-проблемы-с-ранерами-после-изменения-конфигурации)
1. [Быстрый старт](#быстрый-старт)
2. [Автоматические бэкапы в S3](#автоматические-бэкапы-в-s3)
3. [Настройка ранеров](#настройка-ранеров)
4. [Устранение проблем](#устранение-проблем)
---
## Настройка и запуск GIT сервера
## Быстрый старт
В этом разделе описано, как поднять сервер Gitea **локально на своем ПК**. Инструкции по настройке производственной среды (прода) находятся в разделе [Настройка прод сервера](#настройка-прод-сервера).
### Шаг 1: Конфигурация
1. Перейдите в директорию `server`:
```bash
cd server
```
2. Скопируйте файл `env.example` в `.env` в корневой директории проекта:
### 1. Конфигурация
```bash
cp env.example .env
```
### Шаг 2: Запуск сервера
Отредактируйте `.env`, укажите пароли и S3 креденшелы (опционально).
### 2. Запуск
1. Убедитесь, что у вас установлен Docker и Docker Compose.
2. Выполните следующую команду для запуска Gitea в фоновом режиме:
```bash
docker-compose up -d
```
3. Сервер будет доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080) (по умолчанию) или по адресу, указанному в переменной `GITEA__server__INSTANCE` в файле `.env`.
4. При первом входе вы увидите страницу **Начальная конфигурация**. Базовую настройку лучше не трогать. Вам нужно только указать:
- **Название сайта:** Имя вашего Gitea-сервиса.
- **Настройки учётной записи администратора:** Создайте логин и пароль для главного администратора.
- По желанию можно изучить **Расширенные настройки**, чтобы включить капчу, отключить публичную регистрацию и т.д.
5. **Поздравляем!** На этом этапе вы уже можете работать с вашим GIT сервером: создавать репозитории, клонировать и пушить.
### Шаг 3: Настройка темы GitHub (по желанию)
Сервер доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080).
Для выполнения этих шагов, вы должны находиться в директории `server/`.
### 3. Первичная настройка
1. **Остановите сервер Gitea.**
```bash
docker-compose down
```
2. **Найдите последнюю версию темы.**
Перейдите на страницу релизов [gitea-github-theme](https://github.com/lutinglt/gitea-github-theme/releases) и скопируйте номер последней версии (например, `v1.24.5`).
3. **Создайте директорию, скачайте тему и установите права.**
Выполните следующие команды, подставив актуальную версию вместо `v1.24.5`.
```bash
# Создаем директорию для кастомных тем
mkdir -p data/gitea/custom/public/assets/css/
# Скачиваем архив и распаковываем его содержимое (пропуская папку 'dist')
curl -L https://github.com/lutinglt/gitea-github-theme/releases/download/v1.24.5/theme-github.tar.gz | tar -xz --strip-components=1 -C data/gitea/custom/public/assets/css/
# Меняем владельца директории, чтобы у Gitea был доступ
chown -R 1000:1000 data/gitea/custom
```
4. **Измените тему по умолчанию.**
Откройте файл `.env` и измените значение переменной `GITEA__ui__DEFAULT_THEME`:
```
GITEA__ui__DEFAULT_THEME=github-auto
```
5. **Запустите сервер.**
Перезапустите Gitea, чтобы применить изменения.
```bash
docker-compose up -d --force-recreate
```
6. **Проверьте установку.**
После запуска сервера перейдите в "Настройки профиля" => "Внешний вид" и убедитесь, что тема по умолчанию установлена как `github-auto`. В списке доступных тем также должны появиться `github-light`, `github-dark` и `github-soft-dark`.
При первом входе укажите:
- Название сайта
- Логин и пароль администратора
- Опционально: капча, регистрация, другие настройки
---
## Настройка и запуск ранеров
## Автоматические бэкапы в S3
1. Перейдите в админ-панель Gitea по адресу [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) и нажмите **"Создать новый раннер"**.
2. Скопируйте полученный токен.
3. Откройте файл `runners/docker-compose.yaml` и вставьте токен в переменную `GITEA_RUNNER_REGISTRATION_TOKEN`.
```yaml
environment:
- GITEA_RUNNER_REGISTRATION_TOKEN=СЮДА_ВСТАВИТЬ_ВАШ_ТОКЕН
```
4. Перейдите в директорию `runners` и запустите раннер:
Используется решение **[docker-s3-backup](https://github.com/gromov-io/docker-s3-backup)** — элегантный способ бэкапа всего проекта (база данных + файлы).
### Настройка
1. В `.env` укажите S3 креденшелы:
```bash
cd runners
docker-compose up -d
S3_ENDPOINT=storage.yandexcloud.net
S3_ACCESS_KEY=ваш_ключ
S3_SECRET_KEY=ваш_секрет
S3_BUCKET=ваш_бакет
```
5. Перейдите на вкладку [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) и убедитесь что появился новый раннер, индикатор "Статус" - горит зеленым.
2. Сервис `backup` автоматически:
- Останавливает Gitea и PostgreSQL перед бэкапом
- Создает архив всего проекта (база данных + файлы)
- Загружает в S3 (папка `gitea-backups/`)
- Запускает сервисы обратно
3. Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
### Восстановление
Просто скачайте архив из S3 и разархивируйте — всё готово к запуску.
---
## Возможные проблемы и их решение
## Настройка ранеров
### 1. Изменения в конфигурации сервера не применяются
Gitea Actions ранеры находятся в отдельном репозитории: **[gromov-io/gitea-runner](https://github.com/gromov-io/gitea-runner)**
Если вы изменили значения в файле `.env`, необходимо перезапустить сервер с ключом `--force-recreate` для принудительного пересоздания контейнера:
### Быстрая настройка:
1. Перейдите в админ-панель: [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/)
2. Нажмите **"Создать новый раннер"** и скопируйте токен
3. Следуйте инструкциям в репозитории gitea-runner
---
## Устранение проблем
### Изменения в .env не применяются
Пересоздайте контейнеры:
```bash
cd server
docker-compose down
docker-compose up -d --force-recreate
```
### 2. Проблемы с ранерами после изменения конфигурации
### Сброс настроек
Если вы изменили настройки ранера или возникли проблемы с его работой, самый эффективный способ решения:
1. **Остановите ранер:**
Для полного сброса удалите данные:
```bash
cd runners
docker-compose down
```
2. **Удалите директорию с данными ранера:**
```bash
sudo rm -rf gitea-runner-1
```
3. **Создайте новый токен регистрации:**
- Перейдите в админ-панель [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/)
- Нажмите **"Создать новый раннер"**
- Скопируйте новый токен
4. **Обновите токен в конфигурации:**
Откройте файл `runners/docker-compose.yaml` и замените значение `GITEA_RUNNER_REGISTRATION_TOKEN` на новый токен.
5. **Запустите ранер с принудительным пересозданием:**
```bash
docker-compose up -d --force-recreate
sudo rm -rf data/ postgres-data/
```
---

View File

@@ -1,11 +1,64 @@
services:
backup:
image: ghcr.io/gromov-io/docker-s3-backup:latest
container_name: gitea-backup
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
gitea:
condition: service_started
environment:
- BACKUP_PROJECT_NAME=gitea-server
- BACKUP_S3_BUCKET=${S3_BUCKET}
- BACKUP_S3_ENDPOINT=${S3_ENDPOINT}
- BACKUP_S3_ACCESS_KEY=${S3_ACCESS_KEY}
- BACKUP_S3_SECRET_KEY=${S3_SECRET_KEY}
- BACKUP_S3_FOLDER=gitea-backups
# Останавливаем сервисы перед началом бекапа.
- BACKUP_STOP_SERVICES=gitea postgres
volumes:
- .:/backup-source:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- gitea_network
postgres:
image: postgres:16-alpine
container_name: gitea-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- gitea_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=${POSTGRES_DB}
- GITEA__database__USER=${POSTGRES_USER}
- GITEA__database__PASSWD=${POSTGRES_PASSWORD}
- GITEA__database__SCHEMA=public
- GITEA__database__SSL_MODE=disable
- GITEA__server__APP_DATA_PATH=/data/gitea
- GITEA__server__DOMAIN
- GITEA__server__HTTP_PORT=80
@@ -115,22 +168,6 @@ services:
- ${GITEA__server__DOCKER_SSH_PORT}:22
- ${GITEA__server__PORT}:80
backup:
image: ghcr.io/gromov-io/docker-s3-backup:latest
container_name: gitea-backup
restart: unless-stopped
environment:
- BACKUP_PROJECT_NAME=gitea-server
- BACKUP_S3_BUCKET=${S3_BUCKET}
- BACKUP_S3_ENDPOINT=${S3_ENDPOINT}
- BACKUP_S3_ACCESS_KEY=${S3_ACCESS_KEY}
- BACKUP_S3_SECRET_KEY=${S3_SECRET_KEY}
- BACKUP_S3_FOLDER=gitea-backups
volumes:
- .:/backup-source:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
gitea_network:
name: gitea_network

View File

@@ -1,3 +1,20 @@
# ===========================================
# Конфигурация базы данных PostgreSQL
#
# Этот блок содержит настройки для подключения к базе данных PostgreSQL.
# ===========================================
# Имя пользователя PostgreSQL
POSTGRES_USER=gitea
# Пароль пользователя PostgreSQL
POSTGRES_PASSWORD=gitea_secure_password
# Название базы данных
POSTGRES_DB=gitea
# ===========================================
# Конфигурация сервера
#