Skip to content

Repository files navigation

Платформа для обучения пентестингу

Современная веб-платформа для изучения основ информационной безопасности и пентестинга, построенная на FastAPI и Next.js.

🚀 Технологический стек

Backend

  • FastAPI - современный веб-фреймворк для Python
  • SQLModel - ORM для работы с базой данных
  • PostgreSQL - реляционная база данных
  • JWT - аутентификация и авторизация
  • Alembic - миграции базы данных

Frontend

  • Next.js 14 - React фреймворк с App Router
  • TypeScript - типизированный JavaScript
  • Tailwind CSS - utility-first CSS фреймворк
  • Shadcn UI - компоненты пользовательского интерфейса
  • Zustand - управление состоянием
  • React Hook Form - работа с формами

DevOps

  • Docker & Docker Compose - контейнеризация
  • Nginx - reverse proxy
  • PostgreSQL - база данных в контейнере

📁 Структура проекта

PlatformForPentest/
├── server/                 # Backend (FastAPI)
│   ├── app/
│   │   ├── core/          # Конфигурация и инициализация
│   │   ├── models/        # SQLModel модели
│   │   ├── schemas/       # Pydantic схемы
│   │   ├── api/           # API роуты
│   │   ├── services/      # Бизнес-логика
│   │   ├── utils/         # Вспомогательные функции
│   │   └── main.py        # Точка входа приложения
│   ├── Dockerfile
│   └── requirements.txt
├── frontend/              # Frontend (Next.js)
│   ├── app/              # Next.js App Router
│   ├── components/       # React компоненты
│   ├── lib/              # Утилиты и API клиент
│   ├── types/            # TypeScript типы
│   ├── styles/           # Глобальные стили
│   ├── Dockerfile
│   └── package.json
├── nginx/                # Nginx конфигурация
│   └── nginx.conf
└── docker-compose.yml    # Docker Compose конфигурация

🛠️ Установка и запуск

Предварительные требования

  • Docker и Docker Compose (или Docker Compose V2: docker compose)
  • Git
  • На Windows: установлен и запущен Docker Desktop (WSL2 включён)

1. Клонирование репозитория

git clone <repository-url>
cd PlatformForPentest

2. Настройка переменных окружения

Backend (.env)

cp server/.env.example server/.env

Отредактируйте server/.env:

DATABASE_URL=postgresql://postgres:postgres@db:5432/pentest_platform
SECRET_KEY=your-very-secure-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=7
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin123
ADMIN_FULL_NAME=System Administrator
ENVIRONMENT=development

Frontend (.env.local)

cp frontend/.env.example frontend/.env.local

Отредактируйте frontend/.env.local:

NEXT_PUBLIC_API_URL=http://localhost/api/v1

3. Запуск с Docker Compose

# Запуск всех сервисов (Compose V2)
docker compose up -d
# Если у вас классическая утилита
docker-compose up -d

# Просмотр логов
# (Compose V2)
docker compose logs -f
# (классическая утилита)
docker-compose logs -f

# Остановка сервисов
# (Compose V2)
docker compose down
# (классическая утилита)
docker-compose down

Если вы используете Windows и получаете ошибку вида open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified — убедитесь, что Docker Desktop запущен, затем:

  • Откройте Docker Desktop → Settings → General → включите "Use the WSL 2 based engine"
  • Проверьте docker info (должен показывать состояние демона)
  • Перезапустите Docker Desktop и попробуйте снова docker compose up -d

4. Инициализация базы данных

После запуска контейнеров база данных автоматически инициализируется с созданием администратора.

🌐 Доступ к приложению

👤 Учетные данные по умолчанию

  • Email: admin@example.com
  • Password: secure_admin_password (измените в .env файле)

🔧 Разработка

Локальный запуск без Docker

Backend

cd server
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Frontend

cd frontend
npm install
npm run dev

Полезные команды

# Пересборка контейнеров
# (Compose V2)
docker compose build
# (классическая утилита)
docker-compose build

# Запуск только базы данных
# (Compose V2)
docker compose up db
# (классическая утилита)
docker-compose up db

# Просмотр статуса контейнеров
# (Compose V2)
docker compose ps
# (классическая утилита)
docker-compose ps

# Выполнение команд в контейнере
# (Compose V2)
docker compose exec backend bash
# (классическая утилита)
docker-compose exec backend bash

# Очистка volumes
# (Compose V2)
docker compose down -v
# (классическая утилита)
docker-compose down -v

📚 API Документация

Основные эндпоинты

Аутентификация

  • POST /api/v1/auth/register - Регистрация пользователя
  • POST /api/v1/auth/login - Вход в систему
  • POST /api/v1/auth/refresh - Обновление токена
  • GET /api/v1/auth/me - Получение информации о текущем пользователе

Здоровье системы

  • GET / - Корневой эндпоинт
  • GET /health - Проверка состояния API

🎯 Функциональность

Для пользователей

  • ✅ Регистрация и аутентификация
  • ✅ Личный профиль с прогрессом
  • ✅ Изучение теоретических материалов
  • ✅ Выполнение практических лабораторий
  • ✅ Отслеживание достижений

Для администраторов

  • ✅ Панель администратора
  • ✅ Управление пользователями
  • ✅ Управление контентом
  • ✅ Аналитика и отчеты
  • ✅ Системные настройки

🔒 Безопасность

  • JWT токены для аутентификации
  • Хеширование паролей с bcrypt
  • Ролевая система доступа
  • CORS настройки
  • Валидация данных на всех уровнях

🧪 Тестирование

# Backend тесты
cd server
pytest

# Frontend тесты
cd frontend
npm test

📝 Логирование

Логи доступны через Docker Compose:

# Все сервисы
# (Compose V2)
docker compose logs
# (классическая утилита)
docker-compose logs

# Конкретный сервис
# (Compose V2)
docker compose logs backend
# (классическая утилита)
docker-compose logs backend
# (Compose V2)
docker compose logs frontend
# (классическая утилита)
docker-compose logs frontend

🚀 Деплой в продакшн

  1. Измените переменные окружения для продакшн
  2. Используйте HTTPS сертификаты
  3. Настройте backup базы данных
  4. Настройте мониторинг

🤝 Вклад в проект

  1. Fork репозитория
  2. Создайте feature branch
  3. Внесите изменения
  4. Добавьте тесты
  5. Создайте Pull Request

📄 Лицензия

MIT License

📞 Поддержка

Если у вас возникли вопросы или проблемы, создайте issue в репозитории.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages