#!/bin/bash set -e # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}=== Установка Gitea на сервере ===${NC}" # Проверка root if [ "$EUID" -ne 0 ]; then echo -e "${RED}Запустите скрипт с sudo${NC}" exit 1 fi # 1. Обновление системы echo -e "${YELLOW}[1/7] Обновление системы...${NC}" apt update && apt upgrade -y # 2. Установка Docker echo -e "${YELLOW}[2/7] Установка Docker...${NC}" if ! command -v docker &> /dev/null; then curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh rm get-docker.sh systemctl enable docker systemctl start docker echo -e "${GREEN}✓ Docker установлен${NC}" else echo -e "${GREEN}✓ Docker уже установлен${NC}" fi # 3. Установка Docker Compose echo -e "${YELLOW}[3/7] Установка Docker Compose...${NC}" if ! command -v docker-compose &> /dev/null; then apt install -y docker-compose echo -e "${GREEN}✓ Docker Compose установлен${NC}" else echo -e "${GREEN}✓ Docker Compose уже установлен${NC}" fi # 4. Создание директорий echo -e "${YELLOW}[4/7] Создание директорий...${NC}" mkdir -p /opt/gitea/{gitea/data,gitea/postgres,nginx/ssl} cd /opt/gitea # 5. Создание docker-compose.yml echo -e "${YELLOW}[5/7] Создание конфигурации Docker...${NC}" cat > docker-compose.yml <<'EOF' version: "3" services: gitea: image: gitea/gitea:latest container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea_secure_pass_2026 - GITEA__server__DOMAIN=85.208.139.84 - GITEA__server__ROOT_URL=http://85.208.139.84:3000 - GITEA__server__SSH_DOMAIN=85.208.139.84 - GITEA__server__SSH_PORT=2222 - GITEA__service__DISABLE_REGISTRATION=true - GITEA__service__REQUIRE_SIGNIN_VIEW=false restart: always networks: - gitea volumes: - ./gitea/data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "2222:22" depends_on: - db db: image: postgres:14-alpine restart: always environment: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea_secure_pass_2026 - POSTGRES_DB=gitea networks: - gitea volumes: - ./gitea/postgres:/var/lib/postgresql/data networks: gitea: external: false EOF # 6. Настройка firewall echo -e "${YELLOW}[6/7] Настройка firewall...${NC}" if command -v ufw &> /dev/null; then ufw allow 3000/tcp ufw allow 2222/tcp echo -e "${GREEN}✓ Firewall настроен${NC}" else echo -e "${YELLOW}⚠ UFW не установлен, убедитесь что порты 3000 и 2222 открыты${NC}" fi # 7. Запуск Gitea echo -e "${YELLOW}[7/7] Запуск Gitea...${NC}" docker-compose up -d # Ожидание запуска echo -e "${YELLOW}Ожидание запуска сервисов...${NC}" sleep 10 # Проверка статуса if docker ps | grep -q gitea; then echo -e "${GREEN}" echo "╔════════════════════════════════════════════════════════════╗" echo "║ ✓ Gitea успешно установлен и запущен! ║" echo "╚════════════════════════════════════════════════════════════╝" echo "" echo "🌐 Откройте браузер: http://85.208.139.84:3000" echo "" echo "📝 Первоначальная настройка:" echo " - Database Type: PostgreSQL" echo " - Host: db:5432" echo " - Username: gitea" echo " - Password: gitea_secure_pass_2026" echo " - Database Name: gitea" echo "" echo "👤 Первый зарегистрированный пользователь = админ" echo "" echo "📊 Управление контейнерами:" echo " docker-compose logs -f # Логи" echo " docker-compose ps # Статус" echo " docker-compose restart # Перезапуск" echo " docker-compose down # Остановка" echo "${NC}" else echo -e "${RED}✗ Ошибка запуска Gitea. Проверьте логи: docker-compose logs${NC}" exit 1 fi