# PeerTube collector

peertube-collector is a project designed to collect and analyze WebRTC statistics from a Chromium browser and export them to a MongoDB service. This project includes a Docker setup for running the necessary services.

## Working Project Structure

```
peertube-collector/
├── requirements.txt
├── telegraf.conf
├── docker-compose.yml
├── Dockerfile
├── main.py
├── .env
└── utils/
└── webrtc-internals-exporter/
```


## Prerequisites

- Docker
- Docker Compose

## Setup

1. Clone the repository:
    ```sh
    git clone <repository-url>
    cd peertube-collector
    ```

2. Create and configure the environment file based on the `.env.example` file:
    ```sh
    cp .env.example .env
    ```


3. Build and start the Docker containers:
    ```sh
    docker compose up
    ```

## Components

### Docker Compose

The `docker-compose.yml` file defines the following services:
- **selenium**: Runs a Selenium standalone Chromium container.
- **telegraf**: Collects and sends metrics to the specified output.
- **collector**: Runs the main Python application to collect WebRTC stats.

### Dockerfile

The `Dockerfile` sets up the Python environment and installs the necessary dependencies to run the `main.py` script.

### Main Python Script

The `main.py` script sets up the Selenium WebDriver, collects WebRTC stats, and sends them to the Telegraf service.

### WebRTC Internals Exporter

The `webrtc-internals-exporter` directory contains a Chromium extension that collects WebRTC stats from the browser.