findFilms/deploy.sh

264 lines
8.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# 🚀 Скрипт развертывания searchTorrentDownl на новом компьютере
# Автор: AI Assistant
# Версия: 1.0
set -e # Остановка при ошибке
echo "🎬 searchTorrentDownl - Скрипт развертывания"
echo "=============================================="
echo ""
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Функция для вывода сообщений
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Проверка операционной системы
check_os() {
log_info "Проверка операционной системы..."
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
log_success "Linux обнаружен"
else
log_error "Этот скрипт предназначен для Linux. Обнаружена ОС: $OSTYPE"
exit 1
fi
}
# Проверка прав root
check_root() {
if [[ $EUID -eq 0 ]]; then
log_warning "Скрипт запущен от root. Рекомендуется запускать от обычного пользователя."
read -p "Продолжить? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
}
# Обновление системы
update_system() {
log_info "Обновление системы..."
sudo apt update && sudo apt upgrade -y
log_success "Система обновлена"
}
# Установка Docker
install_docker() {
log_info "Проверка Docker..."
if command -v docker &> /dev/null; then
log_success "Docker уже установлен"
else
log_info "Установка Docker..."
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
rm get-docker.sh
log_success "Docker установлен"
fi
# Проверка Docker Compose
if command -v docker-compose &> /dev/null; then
log_success "Docker Compose уже установлен"
else
log_info "Установка Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
log_success "Docker Compose установлен"
fi
}
# Установка qBittorrent
install_qbittorrent() {
log_info "Проверка qBittorrent..."
if command -v qbittorrent-nox &> /dev/null; then
log_success "qBittorrent уже установлен"
else
log_info "Установка qBittorrent-nox..."
sudo apt install -y qbittorrent-nox
log_success "qBittorrent установлен"
fi
}
# Настройка qBittorrent
setup_qbittorrent() {
log_info "Настройка qBittorrent..."
# Создание пользователя qbittorrent если не существует
if ! id "qbittorrent" &>/dev/null; then
sudo useradd -r -s /bin/false qbittorrent
fi
# Создание директории для конфигурации
sudo mkdir -p /home/qbittorrent/.config/qBittorrent
sudo chown -R qbittorrent:qbittorrent /home/qbittorrent
# Создание systemd сервиса
sudo tee /etc/systemd/system/qbittorrent.service > /dev/null <<EOF
[Unit]
Description=qBittorrent-nox
After=network.target
[Service]
Type=simple
User=qbittorrent
Group=qbittorrent
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8080
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# Перезагрузка systemd и запуск сервиса
sudo systemctl daemon-reload
sudo systemctl enable qbittorrent
sudo systemctl start qbittorrent
log_success "qBittorrent настроен и запущен"
log_info "Веб-интерфейс: http://localhost:8080"
log_info "Логин по умолчанию: admin / admin"
}
# Создание Docker сети
create_docker_network() {
log_info "Создание Docker сети..."
if docker network ls | grep -q "torrentvideo_default"; then
log_success "Сеть torrentvideo_default уже существует"
else
docker network create torrentvideo_default
log_success "Сеть torrentvideo_default создана"
fi
}
# Клонирование репозитория
clone_repository() {
if [ -f "app.py" ]; then
log_success "Проект уже находится в текущей директории"
else
log_error "Проект не найден в текущей директории"
log_info "Пожалуйста, клонируйте репозиторий:"
log_info "git clone <repository-url>"
log_info "cd searchTorrentDownl"
exit 1
fi
}
# Настройка переменных окружения
setup_environment() {
log_info "Настройка переменных окружения..."
if [ ! -f ".env" ]; then
log_info "Создание файла .env..."
cat > .env <<EOF
# TMDB API Key (получите на https://www.themoviedb.org/settings/api)
TMDB_API_KEY=your_tmdb_api_key_here
# Telegram Bot Token (получите у @BotFather)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
# qBittorrent настройки
QBITTORRENT_USERNAME=admin
QBITTORRENT_PASSWORD=admin
QBITTORRENT_HOST=host.docker.internal
QBITTORRENT_PORT=8080
# TorAPI настройки
TORRENT_SEARCH_URL=http://host.docker.internal:8443
TORRENT_ADD_URL=http://host.docker.internal:8088
EOF
log_warning "Файл .env создан. Пожалуйста, отредактируйте его с вашими настройками!"
else
log_success "Файл .env уже существует"
fi
}
# Запуск сервисов
start_services() {
log_info "Запуск сервисов..."
# Остановка существующих контейнеров
docker compose down 2>/dev/null || true
# Сборка и запуск
docker compose up -d --build
log_success "Сервисы запущены"
}
# Проверка статуса
check_status() {
log_info "Проверка статуса сервисов..."
echo ""
echo "📊 Статус контейнеров:"
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "🌐 Доступные сервисы:"
echo " • Веб-интерфейс: http://localhost:8089"
echo " • qBittorrent: http://localhost:8080 (admin/admin)"
echo " • Telegram Bot: @your_bot_username (команда /start)"
echo ""
echo "📝 Следующие шаги:"
echo " 1. Откройте http://localhost:8080 и настройте qBittorrent"
echo " 2. Отредактируйте .env файл с вашими API ключами"
echo " 3. Перезапустите сервисы: docker compose restart"
echo " 4. Откройте http://localhost:8089 для тестирования"
}
# Основная функция
main() {
echo "🚀 Начинаем развертывание searchTorrentDownl..."
echo ""
check_os
check_root
update_system
install_docker
install_qbittorrent
setup_qbittorrent
create_docker_network
clone_repository
setup_environment
start_services
check_status
echo ""
log_success "🎉 Развертывание завершено успешно!"
echo ""
log_info "Для остановки сервисов: docker compose down"
log_info "Для просмотра логов: docker compose logs -f"
log_info "Для перезапуска: docker compose restart"
}
# Запуск
main "$@"