What’s Included: Docker Compose automatically sets up MongoDB, Redis, and the Spoo.me application in isolated containers. You don’t need to install or configure databases separately.
Prerequisites
All you need:- Docker and Docker Compose installed on your system
- That’s it! MongoDB and Redis are automatically included
Installing Docker
- macOS
- Ubuntu/Debian
- Windows
- Other Linux
Download and install Docker Desktop from docker.com, or use Homebrew:Start Docker Desktop and verify:
Quick Start - Get Running in 4 Steps
1
Clone the Repository
2
Create .env File
.env.example works out of the box. MongoDB and Redis are automatically configured by Docker.Optional: Enable OAuth & Webhooks
Optional: Enable OAuth & Webhooks
If you want v1 API features (user authentication, URL management, API keys), you can optionally configure:
- OAuth Providers: Follow the authentication setup guide to enable Google, GitHub, or Discord login
- Discord Webhooks: Follow the webhook creation guide for contact form and report notifications
3
Start Docker Compose
- MongoDB database
- Redis cache
- Spoo.me application
First run takes 3-5 minutes to download images and build. Subsequent starts take only seconds!
4
Access Your Instance
What Just Happened?
Docker Compose automatically:- ✅ Created a MongoDB database container
- ✅ Created a Redis cache container
- ✅ Built the Spoo.me application container
- ✅ Connected everything together
- ✅ Persisted your data in Docker volumes
Production Deployment
Want to deploy to a production server with a domain? Just a few small changes:1
Use Cloud Database (Recommended)
For production, use a managed database instead of local containers:In your
.env file:2
Update Docker Compose for Production
Modify
docker-compose.yml to remove local database containers:3
Add Reverse Proxy (Optional)
For custom domains and SSL, add Nginx:Basic
nginx.conf:Adding SSL/HTTPS with Let's Encrypt
Adding SSL/HTTPS with Let's Encrypt
Use Certbot to get free SSL certificates:Update your nginx config to handle HTTPS and redirect HTTP to HTTPS.
Common Commands
Start Services
Stop Services
View Logs
Restart
More Useful Commands
Accessing Containers
Troubleshooting
Port Already in Use
Port Already in Use
Error:
Cannot start service app: Ports are not available: port is already allocatedSolution: Another service is using port 8000. Either stop that service or change the port:Containers Keep Restarting
Containers Keep Restarting
Cause: Usually a configuration error in Common issues:
.envSolution: Check logs for the specific container:- Invalid MongoDB URI format
- Missing required environment variables
- Docker resource limits too low
Can't Connect to MongoDB/Redis
Can't Connect to MongoDB/Redis
For local Docker setup: This shouldn’t happen! The containers are auto-configured.For production with cloud databases:
- Verify your
MONGODB_URIin.envis correct - Check firewall rules allow connections
- Ensure IP whitelist includes your server IP
Docker Daemon Not Running
Docker Daemon Not Running
Error:
Cannot connect to the Docker daemonSolution:Why Docker is the Best Option
✅ Zero Configuration: MongoDB and Redis work instantly, no setup needed ✅ Everything Bundled: One command installs the complete stack ✅ Consistent Environment: Works the same on any OS (macOS, Linux, Windows) ✅ Easy Updates:git pull && docker-compose up -d --build
✅ Data Persistence: Your URLs and data survive container restarts
✅ Clean Uninstall: Remove everything with docker-compose down -v

