- Удалены ненужные файлы: node_modules, package.json, package-lock.json, get_rutracker_cookie.js, __pycache__ - Создан скрипт автоматического развертывания deploy.sh - Создан файл .gitignore для исключения временных файлов - Создан env.example с примером конфигурации - Полностью переписана документация README.md с подробными инструкциями - Обновлен PROJECT_SUMMARY.md с инструкциями по развертыванию - Проект готов к развертыванию на новом компьютере
263 lines
8.1 KiB
Bash
Executable file
263 lines
8.1 KiB
Bash
Executable file
#!/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 "$@"
|