Files
gitea-backup/migration-scripts/install-gitea-lxc.sh
2026-01-06 22:12:07 +05:00

261 lines
7.4 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 после восстановления