Skip to content

Latest commit

 

History

History
188 lines (139 loc) · 4.68 KB

File metadata and controls

188 lines (139 loc) · 4.68 KB

INCIPIT

This software is being built with the sole purpose of me using it with my friends, I don't care if it does not fit your intended use case and I do not plan on ever making any money or similar with it so keep that in mind if you want to use it.

image

🎮 Datasetto

A modern, self-hosted streaming platform with RTMP streaming, screensharing, voice chat, and text chat. A teamspeak/discord open source alternative.

Docker Node.js TypeScript

Perfect for small self-hosted communities

📥 Downloads

Pre-built applications are available in Releases:

  • 🤖 Android APK - Install on Android devices
  • 🖥️ Windows - .exe installer and portable version
  • 🐧 Linux - .AppImage and .deb packages
  • 🍎 macOS - .dmg installer

✨ Features

Core Features

  • 🎮 RTMP Streaming - OBS integration with HLS playback (inline theater mode + popout window)
  • 🎤 WebRTC Voice Chat - P2P voice communication with echo cancellation & noise suppression
  • 💬 Text Chat - Real-time messaging with per-channel history (100 messages in-memory)
  • 🎬 Video Player Controls - Play/pause, volume, fullscreen, keyboard shortcuts (Space/F/M/C/Arrows)
  • 👥 Multi-Channel - Separate text, voice, and stream channels
  • 🔐 Role System - Superuser, admin, moderator, streamer, and user roles
  • 📱 Responsive Design - Mobile-friendly interface

🚀 Quick Start

Local Development

cd ops
docker compose up -d

Production Deployment

VPS Deployment (Ubuntu/Debian)

chmod +x deploy-vps.sh
sudo ./deploy-vps.sh

GCP Deployment

chmod +x deploy-gcp.sh
./deploy-gcp.sh

Manual Deployment

# 1. Install Docker
curl -fsSL https://get.docker.com | sudo sh
sudo apt install -y docker-compose-plugin

# 2. Clone/upload your code
cd /opt/datasetto

# 3. Configure environment
cd ops
cp .env.example .env
nano .env  # Edit SERVER_URL, HLS_BASE_URL, SUPERUSER_SECRET

# 4. Deploy
docker compose -f docker-compose.prod.yml up -d

Server Requirements (few users + streamer):

  • 2 vCPU, 2-4GB RAM, 10-40GB SSD

🏗️ Architecture

Stack: nginx-rtmp → Node.js (Express + Socket.IO) → TypeScript (Vite + HLS.js + WebRTC)

🖥️ Desktop App (Electron)

Prefer a native-feeling desktop window? Check out the new Electron workspace under desktop/.

cd desktop
npm install
npm run dev     # launches Vite + Electron side-by-side
npm run build   # packages production installers (requires client build)

See desktop/README.md for full details on development and packaging.


🎮 How to Use

1. Stream with OBS

  1. Open OBS Studio → Settings → Stream
  2. Service: Custom
  3. Server: rtmp://YOUR_SERVER/live
  4. Stream Key: Get from web interface (e.g., main-stream+ABC123xyz456...)
  5. Start Streaming

2. Watch & Chat

  1. Open web interface
  2. Enter your display name
  3. Click on a stream channel (📺)
  4. Click "Theater Mode" to watch inline or "Pop Out" for resizable window
  5. Use chat to talk with viewers

3. Voice Chat

  1. Click on a voice channel (🔊)
  2. Click "Join Voice"
  3. Adjust settings in the sidebar:
    • Mute/Deafen controls
    • Push-to-talk (optional)
    • Echo cancellation, noise suppression
    • Mic/speaker device selection

Video Player Controls

  • Space/K - Play/Pause
  • F - Fullscreen
  • M - Mute/Unmute
  • C - Toggle Chat
  • ↑/↓ - Volume ±10%

Firewall Ports

sudo ufw allow 80,443/tcp    # HTTP/HTTPS (includes HLS)
sudo ufw allow 1935/tcp      # RTMP
sudo ufw allow 4000/tcp      # Backend API

Monitoring

# View logs
docker compose -f ops/docker-compose.prod.yml logs -f

# Resource usage
docker stats

# Check stream health
curl http://localhost/hls/CHANNEL_NAME.m3u8

Backup & Updates

# Backup environment
cp /opt/datasetto/ops/.env ~/backup/.env.backup

# Update application
cd /opt/datasetto
git pull
docker compose -f ops/docker-compose.prod.yml build --no-cache
docker compose -f ops/docker-compose.prod.yml up -d

📄 License

GNU AGPLv3 - See root LICENSE file


🚀 Ready to Deploy?

# Quick production deployment on Ubuntu/Debian VPS
chmod +x deploy-vps.sh
sudo ./deploy-vps.sh

# Or for Google Cloud Platform
chmod +x deploy-gcp.sh
./deploy-gcp.sh