264 lines
8.1 KiB
Bash
264 lines
8.1 KiB
Bash
|
|
#!/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 "$@"
|