A powerful Node.js application that allows you to stream to multiple platforms simultaneously using OBS Studio, with integrated social media chat and AI-powered chatbot responses using RASA AI. Stream to Twitch, YouTube, Facebook, Instagram, TikTok, LinkedIn, Twitter/X, Discord, Telegram, and more - all while having an intelligent chatbot interact with your audience!
- Stream to 12+ platforms simultaneously: Twitch, YouTube, Facebook, Instagram, TikTok, LinkedIn, Twitter/X, Discord, Telegram, Kick, Rumble, Odysee
- Custom RTMP endpoints support
- Real-time stream health monitoring
- Auto-retry and failover mechanisms
- RASA AI integration for intelligent responses
- Cross-platform chat monitoring and response
- Contextual understanding and conversation memory
- Customizable responses and training data
- Real-time interaction analytics
- Support for multiple languages
- Real-time chat monitoring across all platforms
- Unified chat interface in the web dashboard
- Automated responses via AI chatbot
- Message history and analytics
- Rate limiting and spam protection
- Moderator tools and controls
- Beautiful real-time dashboard with chat integration
- Live stream status and health monitoring
- Chat message feed from all platforms
- Chatbot interaction analytics
- Platform connection status
- Stream statistics and performance metrics
- Social media engagement tracking
- Enhanced security with rate limiting
- Redis caching for performance
- PostgreSQL support for data persistence
- Docker containerization with orchestration
- Comprehensive logging and monitoring
- Health checks and auto-recovery
- API rate limiting and security headers
- Node.js 16+ (or Docker)
- FFmpeg installed on your system
- OBS Studio
- Python 3.7+ (for RASA AI chatbot - optional)
- Stream keys and API credentials from your preferred platforms
-
Clone the repository
git clone https://github.com/eihabhala/StreaminDoDo.git cd StreaminDoDo
-
Run the enhanced setup script
chmod +x setup-enhanced.sh ./setup-enhanced.sh
The script will:
- Check prerequisites
- Install dependencies
- Set up environment configuration
- Configure RASA AI chatbot (optional)
- Set up Docker deployment (optional)
- Guide you through platform configuration
-
Configure your credentials Edit the
.env
file with your streaming and social media credentials:# Streaming Platforms TWITCH_STREAM_KEY=your_twitch_stream_key_here TWITCH_CLIENT_ID=your_twitch_client_id TWITCH_ACCESS_TOKEN=your_twitch_access_token YOUTUBE_STREAM_KEY=your_youtube_stream_key_here YOUTUBE_API_KEY=your_youtube_api_key # Social Media Platforms DISCORD_BOT_TOKEN=your_discord_bot_token TELEGRAM_BOT_TOKEN=your_telegram_bot_token # AI Chatbot CHATBOT_ENABLED=true RASA_API_URL=http://localhost:5005
-
Start the application
# Local development npm start # Or with Docker docker-compose up -d
-
Quick deployment with all services
git clone https://github.com/eihabhala/StreaminDoDo.git cd StreaminDoDo cp .env.example .env # Edit .env with your credentials docker-compose up -d
-
With database and full stack
docker-compose --profile database up -d
-
Access services
- Main Dashboard: http://localhost:3000
- RASA API: http://localhost:5005
- Redis: localhost:6379
- PostgreSQL: localhost:5432 (with database profile)
-
Install dependencies
npm install
-
Set up RASA (optional)
pip install rasa npm run setup:rasa npm run rasa:train
-
Set up environment
cp .env.example .env # Edit .env with your credentials
-
Start services
# Terminal 1: Main application npm start # Terminal 2: RASA chatbot (if enabled) npm run rasa:run
The AI chatbot uses RASA for natural language understanding and response generation.
# Chatbot runs automatically with docker-compose
docker-compose up -d
# Install RASA
pip install rasa
# Train the model
cd rasa
rasa train
# Start RASA server
rasa run --enable-api --cors '*'
# Start action server (in another terminal)
rasa run actions
- Training Data: Edit
rasa/data/nlu.yml
to add new intents and examples - Responses: Modify
rasa/domain.yml
to customize bot responses - Actions: Add custom actions in
rasa/actions/actions.py
- Configuration: Adjust
rasa/config.yml
for different NLU pipelines
- โจ Intelligent Responses: Context-aware conversations
- ๐ Analytics: Track interactions and popular topics
- ๐ Multi-language: Support for multiple languages
- ๐ก๏ธ Moderation: Automatic spam and toxicity detection
- ๐ Learning: Continuously improves from interactions
- โ๏ธ Customizable: Easy to train for specific use cases
Platform | Streaming | Chat | Setup Difficulty | API Required |
---|---|---|---|---|
Twitch | โ | โ | Easy | Yes |
YouTube | โ | โ | Medium | Yes |
โ | โ | Medium | Yes | |
โ | โ | Hard | Yes | |
TikTok | ๐ | โ | Hard | Yes |
โ | โ | Medium | Yes | |
Twitter/X | โ | โ | Medium | Yes |
Discord | โ * | โ | Easy | Yes |
Telegram | โ | โ | Easy | Yes |
Kick | โ | โ | Easy | No |
Rumble | โ | โ | Easy | No |
Odysee | โ | โ | Easy | No |
*โ Full Support | ๐ Limited | โ Not Available | *Voice channel streaming
- Go to Twitch Developer Console
- Create a new application
- Get your Client ID and generate access token
- Add to
.env
:TWITCH_CLIENT_ID=your_client_id TWITCH_ACCESS_TOKEN=your_access_token TWITCH_STREAM_KEY=your_stream_key
- Go to Discord Developer Portal
- Create new application and bot
- Copy bot token and add to
.env
:DISCORD_BOT_TOKEN=your_bot_token DISCORD_GUILD_ID=your_server_id
- Message @BotFather on Telegram
- Create new bot with
/newbot
- Copy token and add to
.env
:TELEGRAM_BOT_TOKEN=your_bot_token
- ๐ฌ Real-time Monitoring: All platform messages in one dashboard
- ๐ค AI Responses: Automated intelligent replies
- ๐ Analytics: Message volume, engagement tracking
- ๐ซ Moderation: Spam filtering and user management
- ๐ Cross-platform: Unified experience across all platforms
- โฑ๏ธ Message History: Persistent chat logs and search
-
Open OBS Studio
-
Go to Settings > Stream
-
Set up Custom Streaming Server:
- Service: Custom
- Server:
rtmp://localhost:1935/live
- Stream Key: Any unique identifier (e.g.,
my-stream-2024
)
-
Start Streaming - The multistream server will automatically detect your stream and forward it to all configured platforms!
- Go to Twitch Creator Dashboard
- Navigate to Settings > Stream
- Copy your Stream Key
- Add to
.env
file asTWITCH_STREAM_KEY
- Go to YouTube Studio
- Click "Create" > "Go Live"
- Copy your Stream Key
- Add to
.env
file asYOUTUBE_STREAM_KEY
- Go to Facebook Creator Studio
- Click "Go Live"
- Copy your Stream Key
- Add to
.env
file asFACEBOOK_STREAM_KEY
You can add up to 2 custom RTMP endpoints:
CUSTOM_RTMP_URL_1=rtmp://your-custom-server.com/live/
CUSTOM_STREAM_KEY_1=your-custom-stream-key
The web dashboard provides:
- Real-time Stream Status: See which platforms are active
- Platform Configuration: View enabled/disabled platforms
- Stream Controls: Manually start/stop streams
- Health Monitoring: Track errors and uptime
- Statistics: Monitor performance metrics
Access at: http://localhost:3000
Variable | Description | Default |
---|---|---|
PORT |
HTTP server port | 3000 |
RTMP_PORT |
RTMP server port | 1935 |
NODE_ENV |
Environment | development |
LOG_LEVEL |
Logging level | info |
MAX_CONCURRENT_STREAMS |
Max simultaneous streams | 5 |
You can customize stream quality in the manual stream controls:
- Video Bitrate: 2500k (recommended for 1080p)
- Audio Bitrate: 128k
- Frame Rate: 30fps
- Keyframe Interval: 2 seconds
docker-compose up
docker-compose --profile proxy up -d
docker build -t obs-multistream .
docker run -p 3000:3000 -p 1935:1935 obs-multistream
GET /api/streams
POST /api/streams/{streamId}/start
Content-Type: application/json
{
"inputPath": "rtmp://localhost:1935/live/stream-key"
}
POST /api/streams/{streamId}/stop
GET /api/platforms
GET /health
- Stream Keys: Never commit stream keys to version control
- Network Security: Use HTTPS in production
- Rate Limiting: Built-in API rate limiting
- Access Control: Consider adding authentication for production use
- Hardware: Use a dedicated server with good CPU and network
- Bandwidth: Ensure sufficient upload bandwidth for all platforms
- Monitoring: Watch the dashboard for errors and performance issues
- Quality: Adjust stream quality based on your hardware capabilities
Stream not starting:
- Check FFmpeg installation
- Verify stream keys are correct
- Check network connectivity
High CPU usage:
- Reduce stream quality settings
- Limit number of platforms
- Check hardware specifications
Connection errors:
- Verify RTMP URLs are correct
- Check firewall settings
- Test individual platform connections
View logs for debugging:
# Docker
docker-compose logs obs-multistream
# Local
tail -f logs/multistream.log
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- node-media-server for RTMP handling
- FFmpeg for video processing
- OBS Studio for streaming software
If you encounter any issues or have questions:
- Check the troubleshooting section
- Review the logs for error messages
- Open an issue on GitHub
- Join our Discord community
Happy Streaming! ๐
Made with โค๏ธ by the StreaminDoDo team