Добавлена поддержка PostgreSQL и автоматические бэкапы в S3 для Gitea
- Добавлены переменные окружения для PostgreSQL в env.example. - Обновлен README.md с описанием новых возможностей: автоматические бэкапы и интеграция PostgreSQL.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
data/*
|
||||
.env
|
||||
backups/
|
||||
postgres-data/
|
||||
|
||||
218
README.md
218
README.md
@@ -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. Конфигурация
|
||||
```bash
|
||||
cp env.example .env
|
||||
```
|
||||
|
||||
### Шаг 1: Конфигурация
|
||||
1. Перейдите в директорию `server`:
|
||||
```bash
|
||||
cd server
|
||||
```
|
||||
2. Скопируйте файл `env.example` в `.env` в корневой директории проекта:
|
||||
```bash
|
||||
cp env.example .env
|
||||
```
|
||||
Отредактируйте `.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 (по желанию)
|
||||
|
||||
Для выполнения этих шагов, вы должны находиться в директории `server/`.
|
||||
|
||||
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`.
|
||||
|
||||
---
|
||||
|
||||
## Настройка и запуск ранеров
|
||||
|
||||
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` и запустите раннер:
|
||||
```bash
|
||||
cd runners
|
||||
docker-compose up -d
|
||||
```
|
||||
5. Перейдите на вкладку [http://127.0.0.1:8080/-/admin/actions/runners/](http://127.0.0.1:8080/-/admin/actions/runners/) и убедитесь что появился новый раннер, индикатор "Статус" - горит зеленым.
|
||||
|
||||
---
|
||||
|
||||
## Возможные проблемы и их решение
|
||||
|
||||
### 1. Изменения в конфигурации сервера не применяются
|
||||
|
||||
Если вы изменили значения в файле `.env`, необходимо перезапустить сервер с ключом `--force-recreate` для принудительного пересоздания контейнера:
|
||||
### 2. Запуск
|
||||
|
||||
```bash
|
||||
cd server
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Сервер доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080).
|
||||
|
||||
### 3. Первичная настройка
|
||||
|
||||
При первом входе укажите:
|
||||
- Название сайта
|
||||
- Логин и пароль администратора
|
||||
- Опционально: капча, регистрация, другие настройки
|
||||
|
||||
---
|
||||
|
||||
## Автоматические бэкапы в S3
|
||||
|
||||
Используется решение **[docker-s3-backup](https://github.com/gromov-io/docker-s3-backup)** — элегантный способ бэкапа всего проекта (база данных + файлы).
|
||||
|
||||
### Настройка
|
||||
|
||||
1. В `.env` укажите S3 креденшелы:
|
||||
```bash
|
||||
S3_ENDPOINT=storage.yandexcloud.net
|
||||
S3_ACCESS_KEY=ваш_ключ
|
||||
S3_SECRET_KEY=ваш_секрет
|
||||
S3_BUCKET=ваш_бакет
|
||||
```
|
||||
|
||||
2. Сервис `backup` автоматически:
|
||||
- Останавливает Gitea и PostgreSQL перед бэкапом
|
||||
- Создает архив всего проекта (база данных + файлы)
|
||||
- Загружает в S3 (папка `gitea-backups/`)
|
||||
- Запускает сервисы обратно
|
||||
|
||||
3. Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
|
||||
|
||||
### Восстановление
|
||||
|
||||
Просто скачайте архив из S3 и разархивируйте — всё готово к запуску.
|
||||
|
||||
---
|
||||
|
||||
## Настройка ранеров
|
||||
|
||||
Gitea Actions ранеры находятся в отдельном репозитории: **[gromov-io/gitea-runner](https://github.com/gromov-io/gitea-runner)**
|
||||
|
||||
### Быстрая настройка:
|
||||
|
||||
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
|
||||
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
|
||||
```
|
||||
Для полного сброса удалите данные:
|
||||
```bash
|
||||
docker-compose down
|
||||
sudo rm -rf data/ postgres-data/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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
|
||||
|
||||
17
env.example
17
env.example
@@ -1,3 +1,20 @@
|
||||
# ===========================================
|
||||
# Конфигурация базы данных PostgreSQL
|
||||
#
|
||||
# Этот блок содержит настройки для подключения к базе данных PostgreSQL.
|
||||
# ===========================================
|
||||
|
||||
# Имя пользователя PostgreSQL
|
||||
POSTGRES_USER=gitea
|
||||
|
||||
# Пароль пользователя PostgreSQL
|
||||
POSTGRES_PASSWORD=gitea_secure_password
|
||||
|
||||
# Название базы данных
|
||||
POSTGRES_DB=gitea
|
||||
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Конфигурация сервера
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user