Production Installation
System requirements and preparation for production deployment.
System Requirements
Minimum Requirements
- CPU: 2 cores
- Memory: 4GB RAM (8GB for building)
- Storage: 20GB SSD
- OS: Linux (Ubuntu 20.04+, Debian 11+, or similar)
- Docker: 20.10+
- Docker Compose: 2.0+
Recommended
- CPU: 4+ cores
- Memory: 8GB+ RAM
- Storage: 50GB+ SSD
- Network: Stable internet connection for geocoding services
- Domain: Registered domain name with DNS control
- SSL: Port 80 and 443 available for Let’s Encrypt
Server Preparation
1. Install Docker
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Log out and back in for group changes to take effect2. Install Docker Compose
# Download latest Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Verify installation
docker-compose --version3. Configure Firewall
# Allow SSH (if using)
sudo ufw allow 22/tcp
# Allow HTTP and HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable firewall
sudo ufw enable4. System Optimization
# Increase file limits
echo "fs.file-max = 100000" | sudo tee -a /etc/sysctl.conf
echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf
# Apply changes
sudo sysctl -pDNS Configuration
Before deploying, configure your domain:
-
A Record: Point your domain to your server’s IP
Type: A Name: @ (or subdomain) Value: YOUR_SERVER_IP TTL: 300 -
WWW Record (optional):
Type: CNAME Name: www Value: your-domain.com TTL: 300 -
Verify DNS:
# Check DNS propagation dig your-domain.com nslookup your-domain.com
Required Services
TimeTiles requires these services (all included in Docker deployment):
- PostgreSQL 17+ with PostGIS 3.5+
- Nginx for reverse proxy and SSL
- Certbot for Let’s Encrypt certificates
Optional Services
Consider these for enhanced functionality:
- Geocoding API Keys:
- Google Maps (most accurate)
- OpenCage (good alternative)
- Nominatim/OpenStreetMap (free, no key needed, automatic fallback)
- SMTP Server: For email notifications
- Monitoring service: For uptime alerts
Pre-deployment Checklist
Before proceeding to deployment:
- Server meets minimum requirements
- Docker and Docker Compose installed
- Firewall configured (ports 80, 443 open)
- Domain DNS configured and propagated
- SSH access configured (if remote)
- Backup strategy planned
- Monitoring approach decided
Next Steps
Once prerequisites are met:
- Configure your environment variables
- Deploy TimeTiles with Docker
- Setup maintenance procedures
Last updated on