README
ΒΆ
Requestarr π¬
A fast, lightweight media request gateway for Sonarr & Radarr. Built in Go for maximum performance.
β¨ Features
- π Blazing Fast - Built in Go with ~50ms startup time and ~15MB memory usage
- π¨ Modern UI - Beautiful, responsive interface for discovering and requesting media
- πΊ TV & Movies - Full support for both Sonarr (TV) and Radarr (Movies)
- π Discovery - Browse trending, top-rated, and new releases via TMDB
- β Ratings - View Rotten Tomatoes, IMDB, and Metacritic scores
- π Notifications - Discord and ntfy.sh support for request alerts
- π‘οΈ Admin Panel - Approve/reject requests, configure settings
- π³ Docker Ready - Simple one-command deployment
π Quick Start
Docker Run (Recommended)
docker run -d \
--name requestarr \
-p 5000:5000 \
-v $(pwd)/config:/config \
-e ADMIN_PASSWORD=changeme \
-e SECRET_KEY=$(openssl rand -hex 32) \
-e TZ=America/New_York \
--restart unless-stopped \
ghcr.io/icaruscore/requestarr:latest
Then open http://localhost:5000 in your browser.
Docker Compose
# Create directory and download compose file
mkdir requestarr && cd requestarr
curl -O https://raw.githubusercontent.com/IcarusCore/Requestarr/main/docker-compose.yml
# Edit configuration
nano docker-compose.yml
# Start
docker compose up -d
π¦ Installation Methods
Method 1: Docker (Recommended)
Using docker run
docker run -d \
--name requestarr \
-p 5000:5000 \
-v /path/to/config:/config \
-e ADMIN_PASSWORD=your-secure-password \
-e SECRET_KEY=your-random-secret-key \
-e TZ=America/New_York \
-e SONARR_URL=http://sonarr:8989 \
-e SONARR_API_KEY=your-sonarr-api-key \
-e RADARR_URL=http://radarr:7878 \
-e RADARR_API_KEY=your-radarr-api-key \
-e TMDB_API_KEY=your-tmdb-api-key \
--restart unless-stopped \
ghcr.io/icaruscore/requestarr:latest
Using Docker Compose
Create a docker-compose.yml:
services:
requestarr:
image: ghcr.io/icaruscore/requestarr:latest
container_name: requestarr
ports:
- "5000:5000"
volumes:
- ./config:/config
environment:
- ADMIN_PASSWORD=changeme
- SECRET_KEY=change-me-please
- TZ=America/New_York
# Configure via environment or Web UI:
# - SONARR_URL=http://sonarr:8989
# - SONARR_API_KEY=your-api-key
# - RADARR_URL=http://radarr:7878
# - RADARR_API_KEY=your-api-key
# - TMDB_API_KEY=your-tmdb-api-key
restart: unless-stopped
Then run:
docker compose up -d
Method 2: Build from Source
# Clone the repository
git clone https://github.com/IcarusCore/Requestarr.git
cd Requestarr
# Build (requires Go 1.21+ and GCC)
make build
# Run
./requestarr
Method 3: Build Docker Image Locally
git clone https://github.com/IcarusCore/Requestarr.git
cd Requestarr
docker build -t requestarr .
docker run -d -p 5000:5000 -v $(pwd)/config:/config requestarr
βοΈ Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
PORT |
5000 |
Port to listen on |
DB_PATH |
/config/requestarr.db |
SQLite database path |
ADMIN_PASSWORD |
admin |
Admin panel password |
SECRET_KEY |
change-me... |
Session encryption key (use random string!) |
TZ |
UTC |
Timezone (e.g., America/New_York) |
SONARR_URL |
Sonarr URL (e.g., http://sonarr:8989) |
|
SONARR_API_KEY |
Sonarr API key | |
RADARR_URL |
Radarr URL (e.g., http://radarr:7878) |
|
RADARR_API_KEY |
Radarr API key | |
TMDB_API_KEY |
TMDB API key (required for discovery) | |
MDBLIST_API_KEY |
MDBList API key (for Rotten Tomatoes ratings) | |
DISCORD_WEBHOOK |
Discord webhook URL for notifications | |
NTFY_URL |
ntfy server URL (e.g., https://ntfy.sh) |
|
NTFY_TOPIC |
ntfy topic name |
Web UI Configuration
All settings can be configured through the Admin panel:
- Open
http://YOUR-SERVER:5000 - Click the Admin tab
- Enter your admin password
- Navigate to Settings
- Configure your Sonarr, Radarr, TMDB, and notification settings
π Getting API Keys
TMDB (Required for Discovery)
- Go to themoviedb.org
- Create a free account
- Go to Settings β API β Create β Developer
- Copy your API Key (v3 auth)
MDBList (Optional - Rotten Tomatoes Ratings)
- Go to mdblist.com
- Create a free account
- Go to Preferences
- Copy your API Key
Sonarr/Radarr
- Open your Sonarr/Radarr web UI
- Go to Settings β General β Security
- Copy the API Key
π§ Network Configuration
Connecting to Sonarr/Radarr on the Same Docker Network
If Sonarr/Radarr are on a Docker network:
services:
requestarr:
image: ghcr.io/icaruscore/requestarr:latest
networks:
- arr-network
environment:
- SONARR_URL=http://sonarr:8989
- RADARR_URL=http://radarr:7878
# ...
networks:
arr-network:
external: true
Firewall Configuration
# Ubuntu/Debian with UFW
sudo ufw allow 5000/tcp
# CentOS/RHEL with firewalld
sudo firewall-cmd --permanent --add-port=5000/tcp
sudo firewall-cmd --reload
π Performance
| Metric | Requestarr (Go) | Typical Python Apps |
|---|---|---|
| Startup time | ~50ms | ~2-3 seconds |
| Memory usage | ~15MB | ~50-100MB |
| Binary size | ~15MB | N/A (requires runtime) |
| Docker image | ~25MB | ~200-500MB |
π Project Structure
Requestarr/
βββ cmd/
β βββ server/
β βββ main.go # Application entry point
β βββ frontend/
β βββ static/
β βββ index.html # Web UI (embedded)
βββ internal/
β βββ cache/ # In-memory caching
β βββ handlers/ # HTTP request handlers
β βββ models/ # Database models
β βββ services/ # API integrations
β βββ tmdb.go # TMDB discovery
β βββ sonarr.go # Sonarr API
β βββ radarr.go # Radarr API
β βββ ratings.go # Ratings (RT/MDBList)
β βββ notifications.go # Discord/ntfy
βββ Dockerfile
βββ docker-compose.yml
βββ go.mod
βββ README.md
π Troubleshooting
App won't start
# Check if port is in use
sudo lsof -i :5000
# Check Docker logs
docker logs requestarr
Can't connect to Sonarr/Radarr
- Ensure URLs are accessible from the container
- Use container names (not
localhost) when on the same Docker network - Check API keys are correct
- Test connection in Admin β Settings
Database errors
# Reset database (will lose all requests)
docker exec requestarr rm /config/requestarr.db
docker restart requestarr
π Updating
# Docker Compose
docker compose pull
docker compose up -d
# Docker Run
docker pull ghcr.io/icaruscore/requestarr:latest
docker stop requestarr
docker rm requestarr
# Re-run your docker run command
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
π License
MIT License - feel free to use, modify, and distribute.
Made with β€οΈ for the self-hosted community
Click to show internal directories.
Click to hide internal directories.