init
This commit is contained in:
260
migration-scripts/install-gitea-lxc.sh
Executable file
260
migration-scripts/install-gitea-lxc.sh
Executable 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 после восстановления
|
||||
Reference in New Issue
Block a user