🎭 Core Transformation: - Reframe project as AI companion bot with Kasane Teto personality - Focus on natural conversation, multimodal interaction, and character roleplay - Position video recording as one tool in AI toolkit rather than main feature 🏗️ Architecture Improvements: - Refactor messageCreate.js into modular command system (35 lines vs 310+) - Create dedicated videoRecording service with clean API - Implement commandHandler for extensible command routing - Add centralized configuration system (videoConfig.js) - Separate concerns: events, services, config, documentation 📚 Documentation Overhaul: - Consolidate scattered READMEs into organized docs/ directory - Create comprehensive documentation covering: * AI architecture and capabilities * Natural interaction patterns and personality * Setup guides for AI services and Docker deployment * Commands reference focused on conversational AI * Troubleshooting and development guidelines - Transform root README into compelling AI companion overview 🤖 AI-Ready Foundation: - Document integration points for: * Language models (GPT-4/Claude) for conversation * Vision models (GPT-4V/CLIP) for image analysis * Voice synthesis (ElevenLabs) for speaking * Memory systems for conversation continuity * Personality engine for character consistency 🔧 Technical Updates: - Integrate custom discord.js-selfbot-v13 submodule with enhanced functionality - Update package.json dependencies for AI and multimedia capabilities - Maintain Docker containerization with improved architecture - Add development and testing infrastructure 📖 New Documentation Structure: docs/ ├── README.md (documentation hub) ├── setup.md (installation & AI configuration) ├── interactions.md (how to chat with Teto) ├── ai-architecture.md (technical AI systems overview) ├── commands.md (natural language interactions) ├── personality.md (character understanding) ├── development.md (contributing guidelines) ├── troubleshooting.md (problem solving) └── [additional specialized guides] ✨ This update transforms the project from a simple recording bot into a foundation for an engaging AI companion that can naturally interact through text, voice, and visual content while maintaining authentic Kasane Teto personality traits.
286 lines
No EOL
7.7 KiB
Markdown
286 lines
No EOL
7.7 KiB
Markdown
# Docker Video Recording Setup
|
|
|
|
This document explains how to set up and use the video recording functionality in the Docker-containerized Teto bot.
|
|
|
|
## Docker Environment Overview
|
|
|
|
The bot runs in a Docker container with the following key components:
|
|
- **Container OS**: Node.js 20 on Debian slim
|
|
- **Video Processing**: FFmpeg, PulseAudio, Opus libraries
|
|
- **Encryption**: libsodium for Discord voice encryption
|
|
- **Output Volume**: `./output:/tmp/output` (host folder mounted to container)
|
|
- **User Context**: Runs as `bot` user (non-root)
|
|
- **Display**: Virtual X11 display with VNC access
|
|
|
|
## Prerequisites
|
|
|
|
### Host System Requirements
|
|
- Docker and Docker Compose installed
|
|
- Sufficient disk space in `./output/` directory for audio files
|
|
- Environment variables configured (USER_TOKEN, etc.)
|
|
|
|
### Container Dependencies (Automatically Installed)
|
|
- `ffmpeg` - Video/audio processing and format conversion
|
|
- `libopus0` & `libopus-dev` - Opus audio codec support
|
|
- `libsodium23` & `libsodium-dev` - Encryption for Discord voice
|
|
- `build-essential` & `libtool` - For compiling native dependencies
|
|
- `pulseaudio` - Audio system management
|
|
- `opusscript` - Node.js Opus bindings (via npm)
|
|
- `sodium` - Native encryption library (via npm)
|
|
|
|
## Setup Instructions
|
|
|
|
### 1. Build the Docker Image
|
|
|
|
For development with live reload:
|
|
```bash
|
|
docker-compose -f docker-compose.dev.yml up --build
|
|
```
|
|
|
|
For production:
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
### 2. Verify Audio Dependencies
|
|
|
|
After container starts, you can verify FFmpeg installation:
|
|
```bash
|
|
# Enter the running container
|
|
docker exec -it teto_ai bash
|
|
|
|
# Check FFmpeg
|
|
ffmpeg -version
|
|
|
|
# Check output directory
|
|
ls -la /tmp/output
|
|
```
|
|
|
|
### 3. Test Voice Recording
|
|
|
|
1. Join a Discord voice channel
|
|
2. In any Discord text channel, type: `xbox record that`
|
|
3. The bot will join your voice channel and start video recording
|
|
4. Video files will be saved to `./output/` on your host system as `.mkv` files
|
|
|
|
## File Storage Architecture
|
|
|
|
```
|
|
Host System:
|
|
./output/ # Your project directory
|
|
├── recording-2024-01-15T14-30-45-123Z.mkv
|
|
├── recording-2024-01-15T14-31-00-456Z.mkv
|
|
└── ...
|
|
|
|
Docker Container:
|
|
/tmp/output/ # Mounted volume (same files)
|
|
├── recording-2024-01-15T14-30-45-123Z.mkv
|
|
├── recording-2024-01-15T14-31-00-456Z.mkv
|
|
└── /tmp/ # Temporary files (512MB tmpfs)
|
|
└── (Video processing files - auto-deleted)
|
|
```
|
|
|
|
## Commands Reference
|
|
|
|
### Video Recording Commands
|
|
| Command | Action | Container Behavior |
|
|
|---------|--------|-------------------|
|
|
| `xbox record that` | Start video recording | Joins voice channel, creates `/tmp/output/recording-*.mkv` |
|
|
| `stop recording` | Stop recording | Finalizes video file, saves to mounted volume |
|
|
| `xbox stop` | Stop recording | Same as above |
|
|
| `teto status` | Show status | Reports container and host paths |
|
|
|
|
### Development Commands
|
|
```bash
|
|
# View container logs
|
|
docker-compose logs -f teto_ai
|
|
|
|
# Access container shell
|
|
docker exec -it teto_ai bash
|
|
|
|
# Restart container
|
|
docker-compose restart teto_ai
|
|
|
|
# Rebuild and restart
|
|
docker-compose down && docker-compose up --build
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Container Issues
|
|
|
|
**1. FFmpeg not found**
|
|
```bash
|
|
# Check if FFmpeg is installed in container
|
|
docker exec -it teto_ai which ffmpeg
|
|
# Should return: /usr/bin/ffmpeg
|
|
```
|
|
|
|
**2. Permission issues with output directory**
|
|
```bash
|
|
# Check permissions on host
|
|
ls -la ./output/
|
|
|
|
# Fix permissions if needed
|
|
chmod 755 ./output/
|
|
```
|
|
|
|
**3. Video processing fails**
|
|
- Check container logs: `docker-compose logs teto_ai`
|
|
- Verify FFmpeg installation in container
|
|
- Ensure libsodium encryption libraries are installed
|
|
- Ensure sufficient disk space
|
|
|
|
### Discord Connection Issues
|
|
|
|
**1. Bot can't join voice channel**
|
|
- Verify bot has Connect permission in Discord
|
|
- Check if bot is already in another voice channel
|
|
- Ensure discord.js-selfbot-v13 voice dependencies are working
|
|
|
|
**2. No video/audio captured**
|
|
- Confirm users are speaking during recording
|
|
- Check Discord voice activity settings
|
|
- Verify Opus and libsodium libraries are properly installed
|
|
- Ensure encryption dependencies are working
|
|
|
|
### Volume Mount Issues
|
|
|
|
**1. Files not appearing on host**
|
|
```bash
|
|
# Verify volume mount in docker-compose
|
|
docker inspect teto_ai | grep -A 5 "Mounts"
|
|
|
|
# Should show: /tmp/output mounted to ./output
|
|
```
|
|
|
|
**2. Container can't write to mounted volume**
|
|
```bash
|
|
# Check ownership of host directory
|
|
ls -la ./output/
|
|
|
|
# May need to adjust ownership
|
|
sudo chown -R $(id -u):$(id -g) ./output/
|
|
```
|
|
|
|
## Performance Considerations
|
|
|
|
### Resource Usage
|
|
- **CPU**: Moderate to high usage during active video recording and processing
|
|
- **Memory**: ~100-200MB base + video/audio buffers
|
|
- **Disk**: ~15-30MB per minute of recorded video (MKV format with audio)
|
|
- **Network**: Standard Discord voice data reception
|
|
|
|
### Container Limits
|
|
- **tmpfs**: 512MB allocated for temporary video processing
|
|
- **Volume**: Unlimited (depends on host disk space)
|
|
- **Concurrent recordings**: One per voice channel
|
|
- **Encryption**: Requires libsodium for Discord voice protocol
|
|
|
|
## Development Tips
|
|
|
|
### Live Development
|
|
When using `docker-compose.dev.yml`:
|
|
- Source code is mounted as volume for live reload
|
|
- Changes to `src/events/messageCreate.js` are automatically reflected
|
|
- No need to rebuild container for code changes
|
|
|
|
### Debugging Video/Audio Issues
|
|
```bash
|
|
# Enter container and check video setup
|
|
docker exec -it teto_ai bash
|
|
|
|
# Test FFmpeg video functionality
|
|
ffmpeg -f lavfi -i testsrc2=duration=5:size=320x240:rate=30 test.mp4
|
|
|
|
# Check audio processing capabilities
|
|
ffmpeg -f lavfi -i sine=frequency=1000:duration=5 test.wav
|
|
|
|
# Verify Opus support
|
|
ffmpeg -codecs | grep opus
|
|
|
|
# Check libsodium installation
|
|
ldconfig -p | grep sodium
|
|
```
|
|
|
|
### Container Health Checks
|
|
Add to your monitoring:
|
|
```bash
|
|
# Check if bot process is running
|
|
docker exec teto_ai ps aux | grep node
|
|
|
|
# Monitor output directory
|
|
watch -n 5 'ls -la ./output/'
|
|
|
|
# Check container resource usage
|
|
docker stats teto_ai
|
|
```
|
|
|
|
## Security Notes
|
|
|
|
### Container Security
|
|
- Bot runs as non-root user (`bot`)
|
|
- Limited system capabilities (SYS_ADMIN for Discord GUI)
|
|
- Isolated file system with specific volume mounts only
|
|
|
|
### Video/Audio Data
|
|
- Recordings stored locally in mounted volume as MKV files
|
|
- No external transmission of video/audio data
|
|
- Files persist until manually deleted
|
|
- Consider implementing automatic cleanup for privacy
|
|
- Encryption handled by libsodium for Discord voice protocol
|
|
|
|
## Production Deployment
|
|
|
|
### Environment Variables
|
|
Ensure these are set in your deployment:
|
|
```bash
|
|
USER_TOKEN=your_discord_token
|
|
BOT_CLIENT_ID=your_bot_id
|
|
BOT_CLIENT_SECRET=your_bot_secret
|
|
BOT_REDIRECT_URI=https://your-domain.com/auth/callback
|
|
```
|
|
|
|
### Docker Compose Production
|
|
```yaml
|
|
version: "3.8"
|
|
services:
|
|
teto_ai:
|
|
build: .
|
|
container_name: teto_ai
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./output:/tmp/output
|
|
- ./logs:/opt/bot/logs # Optional: persistent logs
|
|
environment:
|
|
- USER_TOKEN=${USER_TOKEN}
|
|
# ... other env vars
|
|
```
|
|
|
|
### Monitoring
|
|
- Set up log aggregation for container logs
|
|
- Monitor disk usage of `./output/` directory
|
|
- Implement health checks for voice recording functionality
|
|
- Consider backup strategy for important recordings
|
|
|
|
## Backup and Maintenance
|
|
|
|
### Regular Maintenance
|
|
```bash
|
|
# Clean old recordings (example: older than 30 days)
|
|
find ./output -name "recording-*.mkv" -mtime +30 -delete
|
|
|
|
# Check container health
|
|
docker-compose ps
|
|
docker-compose logs --tail=100 teto_ai
|
|
|
|
# Update and rebuild
|
|
git pull
|
|
docker-compose down
|
|
docker-compose up --build -d
|
|
```
|
|
|
|
### Backup Strategy
|
|
- Video files: Backup `./output/` directory regularly (MKV files can be large)
|
|
- Configuration: Version control Docker configs and environment files
|
|
- Logs: Archive container logs if needed for debugging |