Добавлена поддержка 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/*
|
data/*
|
||||||
.env
|
.env
|
||||||
backups/
|
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 сервер
|
- ✅ Git сервер
|
||||||
- ✅ Ранеры (Gitea Actions)
|
- ✅ Интеграция с S3 (LFS, пакеты, аватары, вложения)
|
||||||
- ✅ Отправку писем (SMTP)
|
- ✅ Автоматические бэкапы в S3
|
||||||
- ✅ Интеграцию с S3
|
- ✅ Отправка писем (SMTP)
|
||||||
|
- ✅ Gitea Actions ([ранеры в отдельном репозитории](https://github.com/gromov-io/gitea-runner))
|
||||||
|
|
||||||
**⚠️ Ограничения локального режима:**
|
**⚠️ Ограничение:** Container Registry требует `https`, не работает в локальном режиме.
|
||||||
В локальном режиме **не доступен Container Registry**, так как для его работы требуется `https`.
|
|
||||||
|
|
||||||
## Оглавление
|
## Оглавление
|
||||||
1. [Настройка и запуск GIT сервера](#настройка-и-запуск-git-сервера)
|
1. [Быстрый старт](#быстрый-старт)
|
||||||
- [Шаг 1: Конфигурация](#шаг-1-конфигурация)
|
2. [Автоматические бэкапы в S3](#автоматические-бэкапы-в-s3)
|
||||||
- [Шаг 2: Запуск сервера](#шаг-2-запуск-сервера)
|
3. [Настройка ранеров](#настройка-ранеров)
|
||||||
- [Шаг 3: Настройка темы GitHub (по желанию)](#шаг-3-настройка-темы-github-по-желанию)
|
4. [Устранение проблем](#устранение-проблем)
|
||||||
2. [Настройка и запуск ранеров](#настройка-и-запуск-ранеров)
|
|
||||||
3. [Возможные проблемы и их решение](#возможные-проблемы-и-их-решение)
|
|
||||||
- [1. Изменения в конфигурации сервера не применяются](#1-изменения-в-конфигурации-сервера-не-применяются)
|
|
||||||
- [2. Проблемы с ранерами после изменения конфигурации](#2-проблемы-с-ранерами-после-изменения-конфигурации)
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Настройка и запуск GIT сервера
|
## Быстрый старт
|
||||||
|
|
||||||
В этом разделе описано, как поднять сервер Gitea **локально на своем ПК**. Инструкции по настройке производственной среды (прода) находятся в разделе [Настройка прод сервера](#настройка-прод-сервера).
|
### 1. Конфигурация
|
||||||
|
```bash
|
||||||
|
cp env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
### Шаг 1: Конфигурация
|
Отредактируйте `.env`, укажите пароли и S3 креденшелы (опционально).
|
||||||
1. Перейдите в директорию `server`:
|
|
||||||
```bash
|
|
||||||
cd server
|
|
||||||
```
|
|
||||||
2. Скопируйте файл `env.example` в `.env` в корневой директории проекта:
|
|
||||||
```bash
|
|
||||||
cp env.example .env
|
|
||||||
```
|
|
||||||
|
|
||||||
### Шаг 2: Запуск сервера
|
### 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` для принудительного пересоздания контейнера:
|
|
||||||
|
|
||||||
```bash
|
```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 down
|
||||||
docker-compose up -d --force-recreate
|
docker-compose up -d --force-recreate
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Проблемы с ранерами после изменения конфигурации
|
### Сброс настроек
|
||||||
|
|
||||||
Если вы изменили настройки ранера или возникли проблемы с его работой, самый эффективный способ решения:
|
Для полного сброса удалите данные:
|
||||||
|
```bash
|
||||||
1. **Остановите ранер:**
|
docker-compose down
|
||||||
```bash
|
sudo rm -rf data/ postgres-data/
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,11 +1,64 @@
|
|||||||
services:
|
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:
|
gitea:
|
||||||
image: gitea/gitea:latest
|
image: gitea/gitea:latest
|
||||||
container_name: gitea
|
container_name: gitea
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
- USER_UID=1000
|
- USER_UID=1000
|
||||||
- USER_GID=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__APP_DATA_PATH=/data/gitea
|
||||||
- GITEA__server__DOMAIN
|
- GITEA__server__DOMAIN
|
||||||
- GITEA__server__HTTP_PORT=80
|
- GITEA__server__HTTP_PORT=80
|
||||||
@@ -115,22 +168,6 @@ services:
|
|||||||
- ${GITEA__server__DOCKER_SSH_PORT}:22
|
- ${GITEA__server__DOCKER_SSH_PORT}:22
|
||||||
- ${GITEA__server__PORT}:80
|
- ${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:
|
networks:
|
||||||
gitea_network:
|
gitea_network:
|
||||||
name: 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