This commit is contained in:
2026-01-06 22:12:07 +05:00
commit 12f57baa26
13 changed files with 3110 additions and 0 deletions

View File

@@ -0,0 +1,260 @@
#!/bin/bash
#
# Скрипт установки Gitea в LXC контейнере
# Запускать внутри LXC контейнера
# База данных: PostgreSQL
#
set -e
# ============================================
# НАСТРОЙКИ
# ============================================
# Версия Gitea (должна совпадать с версией из бэкапа!)
# Проверьте актуальную на https://github.com/go-gitea/gitea/releases
GITEA_VERSION="${GITEA_VERSION:-1.25.3}"
# Порт Gitea
GITEA_PORT="${GITEA_PORT:-3000}"
# SSH порт для Git
GITEA_SSH_PORT="${GITEA_SSH_PORT:-22}"
# Домен/IP сервера (обновите на свой)
GITEA_DOMAIN="${GITEA_DOMAIN:-$(hostname -I | awk '{print $1}')}"
# PostgreSQL настройки
DB_HOST="${DB_HOST:-127.0.0.1}"
DB_PORT="${DB_PORT:-5432}"
DB_USER="${DB_USER:-gitea}"
DB_NAME="${DB_NAME:-gitea}"
DB_PASSWORD="${DB_PASSWORD:-gitea}"
# ============================================
# ФУНКЦИИ
# ============================================
log() {
echo -e "\033[1;32m[$(date '+%H:%M:%S')]\033[0m $1"
}
error() {
echo -e "\033[1;31m[ERROR]\033[0m $1" >&2
exit 1
}
# ============================================
# ПРОВЕРКИ
# ============================================
if [ "$EUID" -ne 0 ]; then
error "Запустите скрипт от root: sudo $0"
fi
log "=== Установка Gitea v${GITEA_VERSION} ==="
log "Домен: $GITEA_DOMAIN"
log "Порт: $GITEA_PORT"
log "База данных: PostgreSQL ($DB_USER@$DB_NAME)"
# ============================================
# УСТАНОВКА ЗАВИСИМОСТЕЙ
# ============================================
log "Обновление системы..."
apt update && apt upgrade -y
log "Установка зависимостей..."
apt install -y git curl wget ca-certificates gnupg unzip
# ============================================
# УСТАНОВКА POSTGRESQL
# ============================================
log "Установка PostgreSQL..."
apt install -y postgresql postgresql-contrib
systemctl enable postgresql
systemctl start postgresql
# Создание пользователя и БД
log "Создание пользователя и базы данных PostgreSQL..."
sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';" 2>/dev/null || \
log " Пользователь $DB_USER уже существует"
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" 2>/dev/null || \
log " База данных $DB_NAME уже существует"
sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" 2>/dev/null || true
log " ✓ PostgreSQL настроен: $DB_USER@$DB_NAME"
# ============================================
# СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ GIT
# ============================================
log "Создание пользователя git..."
if ! id "git" &>/dev/null; then
adduser --system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git
fi
# ============================================
# СОЗДАНИЕ ДИРЕКТОРИЙ
# ============================================
log "Создание директорий..."
mkdir -p /var/lib/gitea/{custom,data,log}
mkdir -p /var/lib/gitea/data/gitea-repositories
mkdir -p /etc/gitea
chown -R git:git /var/lib/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
# ============================================
# СКАЧИВАНИЕ GITEA
# ============================================
log "Скачивание Gitea v${GITEA_VERSION}..."
GITEA_URL="https://dl.gitea.io/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64"
wget -q --show-progress -O /usr/local/bin/gitea "$GITEA_URL"
chmod +x /usr/local/bin/gitea
# Проверка
INSTALLED_VERSION=$(/usr/local/bin/gitea --version 2>&1 | head -1)
log "Установлено: $INSTALLED_VERSION"
# ============================================
# SYSTEMD СЕРВИС
# ============================================
log "Создание systemd сервиса..."
cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=postgresql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
EOF
# ============================================
# БАЗОВАЯ КОНФИГУРАЦИЯ
# ============================================
log "Создание базовой конфигурации..."
cat > /etc/gitea/app.ini << EOF
APP_NAME = Gitea: Git with a cup of tea
RUN_USER = git
RUN_MODE = prod
WORK_PATH = /var/lib/gitea
[database]
DB_TYPE = postgres
HOST = ${DB_HOST}:${DB_PORT}
NAME = $DB_NAME
USER = $DB_USER
PASSWD = $DB_PASSWORD
SSL_MODE = disable
LOG_SQL = false
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[server]
DOMAIN = $GITEA_DOMAIN
HTTP_PORT = $GITEA_PORT
ROOT_URL = http://$GITEA_DOMAIN:$GITEA_PORT/
DISABLE_SSH = false
SSH_DOMAIN = $GITEA_DOMAIN
SSH_PORT = $GITEA_SSH_PORT
SSH_LISTEN_PORT = $GITEA_SSH_PORT
LFS_START_SERVER = true
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
OFFLINE_MODE = false
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.$GITEA_DOMAIN
[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/gitea/log
[security]
INSTALL_LOCK = false
EOF
chown root:git /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini
# ============================================
# ЗАПУСК СЕРВИСА
# ============================================
log "Запуск Gitea..."
systemctl daemon-reload
systemctl enable gitea
systemctl start gitea
# Ждём запуска
sleep 3
# Проверяем статус
if systemctl is-active --quiet gitea; then
log "✅ Gitea успешно запущена!"
else
error "Gitea не запустилась. Проверьте: journalctl -u gitea -e"
fi
# ============================================
# ИТОГИ
# ============================================
echo ""
echo "=========================================="
echo " Gitea установлена!"
echo "=========================================="
echo ""
echo " Web UI: http://$GITEA_DOMAIN:$GITEA_PORT"
echo " SSH: git@$GITEA_DOMAIN"
echo ""
echo " Первый пользователь станет администратором."
echo ""
echo " Конфигурация: /etc/gitea/app.ini"
echo " Данные: /var/lib/gitea/"
echo " Логи: journalctl -u gitea -f"
echo ""
echo "=========================================="
# Для миграции: установить INSTALL_LOCK = true после восстановления