82 lines
2.0 KiB
Markdown
82 lines
2.0 KiB
Markdown
# 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
|
|
|
|
**Linux** based OS with the following:
|
|
|
|
### Software:
|
|
- Docker (with compose support)
|
|
|
|
### Open ports on localhost/loopback interface:
|
|
- 4444 (Selenium)
|
|
- 7900 (Selenium VNC - Optional)
|
|
|
|
If needed, you can open these ports in `ufw` by running the following commands:
|
|
```sh
|
|
ufw allow from 172.30.0.1 to 127.0.0.1 port 4444
|
|
ufw allow from 172.30.0.1 to 127.0.0.1 port 7900
|
|
```
|
|
|
|
|
|
## 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. Start the Docker containers:
|
|
```sh
|
|
docker compose up
|
|
```
|
|
or in detached mode:
|
|
```sh
|
|
docker-compose up -d
|
|
```
|
|
|
|
The collector will start collecting WebRTC stats from the specified PeerTube instance.
|
|
|
|
## 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. |