chore: Оптимизация переменных

This commit is contained in:
2025-10-24 00:21:53 +03:00
parent 1753d0871a
commit 58fcfb75b6
4 changed files with 113 additions and 166 deletions

1
.gitignore vendored
View File

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

View File

@@ -23,21 +23,37 @@ Docker-окружение для развертывания Gitea с PostgreSQL,
## Быстрый старт
### 1. Конфигурация
```bash
# Копируем пример и настраиваем
cp env.example .env
nano .env # Укажите пароли, S3 креденшелы, домен
```
Отредактируйте `.env`, укажите пароли и S3 креденшелы (опционально).
### 2. Генерация конфигурации Gitea
### 2. Запуск
⚠️ **Важно:** Генерируем `.gitea.env` ПОСЛЕ настройки `.env`:
```bash
docker-compose up generate-config
```
Это создаст `.gitea.env` с подстановкой ваших значений из `.env`.
### 3. Запуск
```bash
docker-compose up -d
```
При каждом запуске **автоматически**:
1. 🔧 Обновляется `.gitea.env` из `.env`
2. 🔄 Применяется новая конфигурация
3. 🚀 Запускаются все сервисы
Сервер доступен по адресу [http://127.0.0.1:8080](http://127.0.0.1:8080).
### 3. Первичная настройка
### 4. Первичная настройка
При первом входе укажите:
- Название сайта
@@ -50,23 +66,14 @@ docker-compose up -d
Используется решение **[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` автоматически:
Сервис `backup` автоматически:
- Останавливает Gitea и PostgreSQL перед бэкапом
- Создает архив всего проекта (база данных + файлы)
- Загружает в S3 (папка `gitea-backups/`)
- Запускает сервисы обратно
3. Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
Расписание настраивается в `docker-compose.yaml` (по умолчанию ежедневно в 05:00).
### Восстановление

View File

@@ -1,5 +1,8 @@
services:
# ============================================================
# Бэкапы
# ============================================================
backup:
image: ghcr.io/gromov-io/docker-s3-backup:latest
container_name: gitea-backup
@@ -23,7 +26,10 @@ services:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- gitea_network
# ============================================================
# База данных
# ============================================================
postgres:
image: postgres:16-alpine
container_name: gitea-postgres
@@ -42,6 +48,9 @@ services:
timeout: 5s
retries: 5
# ============================================================
# Git Сервер
# ============================================================
gitea:
image: gitea/gitea:latest
container_name: gitea
@@ -52,6 +61,9 @@ services:
environment:
- USER_UID=1000
- USER_GID=1000
# Название сайта (корневая секция - пустое имя секции = 4 подчеркивания)
- GITEA____APP_NAME=${SITE_NAME:-GromLab}
# Database Connection (PostgreSQL)
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=${POSTGRES_DB}
@@ -59,35 +71,51 @@ services:
- GITEA__database__PASSWD=${POSTGRES_PASSWORD}
- GITEA__database__SCHEMA=public
- GITEA__database__SSL_MODE=disable
# Server Configuration
- GITEA__server__APP_DATA_PATH=/data/gitea
- GITEA__server__DOMAIN
- GITEA__server__DOMAIN=${HOST}
- GITEA__server__HTTP_PORT=80
- GITEA__server__ROOT_URL=${GITEA__server__INSTANCE}/
- GITEA__server__LANDING_PAGE
- GITEA__server__SSH_PORT
- GITEA__server__SSH_DOMAIN=${GITEA__server__DOMAIN}
- GITEA__server__MINIMUM_KEY_SIZE_CHECK=false
- GITEA__server__ROOT_URL=${INSTANCE}/
- GITEA__server__LANDING_PAGE=explore
- GITEA__server__SSH_PORT=${SSH_PORT}
- GITEA__server__SSH_DOMAIN=${HOST}
- GITEA__server__MINIMUM_KEY_SIZE_CHECK=false
- GITEA__server__LFS_START_SERVER=true
- GITEA__server__LFS_JWT_SECRET
- GITEA__server__LFS_JWT_SECRET=${LFS_JWT_SECRET}
- GITEA__server__LFS_HTTP_AUTH_EXPIRY=6h
- GITEA__server__OFFLINE_MODE=false
- GITEA__server__ENABLE_GZIP=true
- GITEA__storage__STORAGE_TYPE
- GITEA__ui__THEMES
- GITEA__ui__DEFAULT_THEME
- GITEA__service__DISABLE_REGISTRATION
- GITEA__service__REGISTER_EMAIL_CONFIRM
- GITEA__openid__ENABLE_OPENID_SIGNIN
- GITEA__openid__ENABLE_OPENID_SIGNUP
- GITEA__mailer__ENABLED
- GITEA__mailer__FROM
- GITEA__mailer__SMTP_ADDR
- GITEA__mailer__SMTP_PORT
- GITEA__mailer__USER
- GITEA__mailer__PASSWD
- GITEA__packages__ENABLED
- GITEA__container__ENABLED
# Storage Type
- GITEA__storage__STORAGE_TYPE=${STORAGE_TYPE}
# UI Configuration
- GITEA__ui__DEFAULT_THEME=gitea-auto
- GITEA__ui__THEMES=gitea-auto,gitea-light,gitea-dark
# Service Configuration
- GITEA__service__DISABLE_REGISTRATION=false
- GITEA__service__REGISTER_EMAIL_CONFIRM=true
- GITEA__service__ENABLE_CAPTCHA=true
- GITEA__service__DEFAULT_KEEP_EMAIL_PRIVATE=true
- GITEA__service__ENABLE_NOTIFY_MAIL=true
# OpenID Configuration
- GITEA__openid__ENABLE_OPENID_SIGNIN=false
- GITEA__openid__ENABLE_OPENID_SIGNUP=false
# Mailer Configuration
- GITEA__mailer__ENABLED=true
- GITEA__mailer__FROM=${MAIL_USER}
- GITEA__mailer__SMTP_ADDR=${MAIL_SMTP_ADDR}
- GITEA__mailer__SMTP_PORT=${MAIL_SMTP_PORT}
- GITEA__mailer__USER=${MAIL_USER}
- GITEA__mailer__PASSWD=${MAIL_PASSWD}
- GITEA__mailer__PROTOCOL=${MAIL_SMTP_PROTOCOL}
- GITEA__mailer__IS_TLS_ENABLED=true
- GITEA__mailer__SKIP_VERIFY=false
- GITEA__mailer__HELO_HOSTNAME=${MAIL_HELO_HOSTNAME}
# Packages & Container Configuration
- GITEA__packages__ENABLED=true
- GITEA__container__ENABLED=true
# Custom Path
- GITEA_CUSTOM=/data/gitea/custom
# S3 Storage Configuration
# General Storage Configuration
- GITEA__storage__SERVE_DIRECT=true
- GITEA__storage__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__storage__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -95,8 +123,8 @@ services:
- GITEA__storage__MINIO_BUCKET=${S3_BUCKET}
- GITEA__storage__MINIO_LOCATION=${S3_LOCATION}
- GITEA__storage__MINIO_USE_SSL=${S3_USE_SSL}
# Git LFS S3 Configuration
- GITEA__lfs__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
# Git LFS Configuration
- GITEA__lfs__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__lfs__SERVE_DIRECT=true
- GITEA__lfs__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__lfs__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -105,17 +133,17 @@ services:
- GITEA__lfs__MINIO_LOCATION=${S3_LOCATION}
- GITEA__lfs__MINIO_USE_SSL=${S3_USE_SSL}
- GITEA__lfs__PATH=lfs/
# Actions S3 Configuration
# Actions Configuration
- GITEA__actions__ENABLED=true
- GITEA__actions__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
- GITEA__actions__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__actions__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__actions__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
- GITEA__actions__MINIO_SECRET_ACCESS_KEY=${S3_SECRET_KEY}
- GITEA__actions__MINIO_BUCKET=${S3_BUCKET}
- GITEA__actions__MINIO_LOCATION=${S3_LOCATION}
- GITEA__actions__MINIO_USE_SSL=${S3_USE_SSL}
# Packages S3 Configuration
- GITEA__packages__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
# Packages Configuration
- GITEA__packages__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__packages__SERVE_DIRECT=true
- GITEA__packages__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__packages__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -124,8 +152,8 @@ services:
- GITEA__packages__MINIO_LOCATION=${S3_LOCATION}
- GITEA__packages__MINIO_USE_SSL=${S3_USE_SSL}
- GITEA__packages__PATH=packages/
# Avatar S3 Configuration
- GITEA__avatar__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
# Avatar Configuration
- GITEA__avatar__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__avatar__SERVE_DIRECT=true
- GITEA__avatar__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__avatar__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -134,8 +162,8 @@ services:
- GITEA__avatar__MINIO_LOCATION=${S3_LOCATION}
- GITEA__avatar__MINIO_USE_SSL=${S3_USE_SSL}
- GITEA__avatar__PATH=avatars/
# Attachments S3 Configuration
- GITEA__attachment__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
# Attachments Configuration
- GITEA__attachment__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__attachment__SERVE_DIRECT=true
- GITEA__attachment__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__attachment__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -144,8 +172,8 @@ services:
- GITEA__attachment__MINIO_LOCATION=${S3_LOCATION}
- GITEA__attachment__MINIO_USE_SSL=${S3_USE_SSL}
- GITEA__attachment__PATH=attachments/
# Repository Archive S3 Configuration
- GITEA__repo-archive__STORAGE_TYPE=${GITEA__storage__STORAGE_TYPE}
# Repository Archive Configuration
- GITEA__repo-archive__STORAGE_TYPE=${STORAGE_TYPE}
- GITEA__repo-archive__SERVE_DIRECT=true
- GITEA__repo-archive__MINIO_ENDPOINT=${S3_ENDPOINT}
- GITEA__repo-archive__MINIO_ACCESS_KEY_ID=${S3_ACCESS_KEY}
@@ -154,7 +182,7 @@ services:
- GITEA__repo-archive__MINIO_LOCATION=${S3_LOCATION}
- GITEA__repo-archive__MINIO_USE_SSL=${S3_USE_SSL}
- GITEA__repo-archive__PATH=repo-archive/
# Cache S3 Configuration
# Cache Configuration
- GITEA__cache__ENABLED=true
volumes:
- ./data:/data
@@ -165,8 +193,8 @@ services:
networks:
- gitea_network
ports:
- ${GITEA__server__DOCKER_SSH_PORT}:22
- ${GITEA__server__PORT}:80
- ${DOCKER_SSH_PORT}:22
- ${DOCKER_HTTP_PORT}:80
networks:
gitea_network:

View File

@@ -1,144 +1,55 @@
# ===========================================
# Конфигурация базы данных PostgreSQL
#
# Этот блок содержит настройки для подключения к базе данных PostgreSQL.
# ===========================================
# Имя пользователя PostgreSQL
POSTGRES_USER=gitea
# Пароль пользователя PostgreSQL
POSTGRES_PASSWORD=gitea_secure_password
# Название базы данных
POSTGRES_DB=gitea
# ===========================================
# Конфигурация сервера
#
# Этот блок содержит настройки, связанные с основной функциональностью сервера Gitea,
# включая домен, URL экземпляра, порты и настройки LFS.
# ===========================================
# Основной URL-адрес экземпляра Gitea.
GITEA__server__INSTANCE=http://127.0.0.1
# URL-адрес экземпляра Gitea. (для прода пишем полный домен, пример: https://gromlab.ru)
INSTANCE=http://127.0.0.1
# Порты HTTP и SSH на которых будет запущен докер.
GITEA__server__PORT=8080
GITEA__server__DOCKER_SSH_PORT=222
# Порты приложения.
DOCKER_HTTP_PORT=8080
DOCKER_SSH_PORT=222
# Вид SSH url, пример: ssh://git@127.0.0.1:222/gromov/test.git
HOST=127.0.0.1
SSH_PORT=222
# Домен и порт которые будут отображаться при клонировании/скачивании репозитория.
GITEA__server__DOMAIN=127.0.0.1
GITEA__server__SSH_PORT=222
# Не особо важные опции
SITE_NAME=GromLab
STORAGE_TYPE=minio
# Секретный ключ для JWT-аутентификации для Large File Storage (LFS).
GITEA__server__LFS_JWT_SECRET=lfs-secret-string
# Время жизни JWT токенов для LFS операций (6 часов для больших файлов).
GITEA__server__LFS_HTTP_AUTH_EXPIRY=6h
# Переопределяем стартову страницу, вместо промо ставим редирект на страницу авторизации.
GITEA__server__LANDING_PAGE=explore
# ОБЯЗАТЕЛЬНО изменить на другую рандомную строку.
LFS_JWT_SECRET=qGuZz8ZktbppUPjRyhvbdqB7eCNJ2d
# ===========================================
# Конфигурация пользовательского интерфейса (UI)
#
# Этот блок содержит настройки для пользовательского интерфейса Gitea, такие как
# тема по умолчанию и доступные темы.
# Конфигурация базы данных PostgreSQL
# ===========================================
# Тема по умолчанию для интерфейса Gitea.
GITEA__ui__DEFAULT_THEME=gitea-auto
# Список доступных тем через запятую.
GITEA__ui__THEMES=gitea-auto,gitea-light,gitea-dark,github-auto,github-light,github-dark,github-soft-dark
# ===========================================
# Конфигурация служб и аутентификации
#
# Этот блок содержит настройки для регистрации пользователей, OpenID и других
# функций на уровне сервиса.
# ===========================================
# Отключить регистрацию пользователей. Установите 'true', чтобы запретить регистрацию новых пользователей.
GITEA__service__DISABLE_REGISTRATION=false
# Включить OpenID для входа пользователей.
GITEA__openid__ENABLE_OPENID_SIGNIN=false
# Включить OpenID для регистрации пользователей.
GITEA__openid__ENABLE_OPENID_SIGNUP=false
# Включить подтверждение регистрации.
GITEA__service__REGISTER_EMAIL_CONFIRM=true
# ===========================================
# Конфигурация хранилища
#
# Этот блок определяет бэкенд для хранения данных Gitea. Это может быть локальное
# хранилище или облачное решение, такое как S3 (например, Minio).
# ===========================================
# Тип используемого хранилища. 'local' для локальной файловой системы, 'minio' для S3-совместимого хранилища.
GITEA__storage__STORAGE_TYPE=minio
POSTGRES_USER=gitea
POSTGRES_PASSWORD=gitea_secure_password
POSTGRES_DB=gitea
# ===========================================
# Конфигурация S3 хранилища
#
# Общие настройки для всех типов S3 хранилища в Gitea.
# Детальная конфигурация каждого типа хранилища находится в docker-compose.yaml
#
# Для включения S3 хранилища измените GITEA__storage__STORAGE_TYPE=minio
# ===========================================
# Эндпоинт S3 сервиса (Yandex Object Storage)
S3_ENDPOINT=storage.yandexcloud.net
# Ключи доступа к S3
S3_ACCESS_KEY=
S3_SECRET_KEY=
# Название бакета для хранения всех данных Gitea
S3_BUCKET=
# Регион Yandex Cloud
S3_BUCKET=dev.gromlab.gitea
S3_LOCATION=ru-central1
# Использование SSL для подключения к S3
S3_USE_SSL=true
# ===========================================
# Конфигурация почтового сервера (SMTP)
#
# Этот блок содержит настройки для отправки электронных писем из Gitea, таких как
# уведомления и сброс пароля.
# ===========================================
# Включить почтовую службу.
GITEA__mailer__ENABLED=true
# Адрес электронной почты, с которого будут отправляться письма.
GITEA__mailer__FROM=no-reply@gromlab.ru
# Адрес SMTP-сервера.
GITEA__mailer__SMTP_ADDR=smtp.mail.ru
# Порт SMTP-сервера.
GITEA__mailer__SMTP_PORT=465
# Имя пользователя для аутентификации на SMTP-сервере.
GITEA__mailer__USER=no-reply@gromlab.ru
# Пароль для аутентификации на SMTP-сервере.
GITEA__mailer__PASSWD=
# Протокол для SMTP (для Mail.ru нужен SSL).
GITEA__mailer__PROTOCOL=smtps
# Включить TLS для безопасного соединения.
GITEA__mailer__IS_TLS_ENABLED=true
# Пропустить проверку TLS сертификата (если нужно).
GITEA__mailer__SKIP_VERIFY=false
# Имя хоста для HELO команды.
GITEA__mailer__HELO_HOSTNAME=gromlab.ru
MAIL_SMTP_PROTOCOL=smtps
MAIL_SMTP_ADDR=smtp.mail.ru
MAIL_SMTP_PORT=465
MAIL_USER=no-reply@gromlab.ru
MAIL_PASSWD=
MAIL_HELO_HOSTNAME=gromlab.ru