How it helps your business
Key Benefits
- Proven Stability: A mature platform trusted by some of the world's largest open-source projects.
- Deep SCM Integration: Connect your project management directly to your source code.
- Infinite Customization: Tailor issue types, statuses, and fields to fit your exact workflow.
- Multi-Project Mastery: Manage hundreds of projects from a single administrative interface.
- Totally Free: Professional-grade project management with zero licensing costs.
Production Architecture Overview
- Web Server: (Nginx or Apache) serving as a reverse proxy.
- Application Server: (Puma or Unicorn) running the Ruby on Rails app.
- Database: PostgreSQL or MySQL to store all project and issue data.
- Storage: Local or cloud storage for project files and wiki attachments.
- Worker: (Optional) Sidekiq or DelayedJob for background email and SCM polling.
How we deploy this for you
Security Hardened
Firewalls, SSL, and hardened kernels out of the box.
Performance Tuned
Optimized for speed with cache and DB fine-tuning.
Automated Backups
Daily off-site backups so you never lose your data.
Private Cloud
You own the server and the data. No middleman.
Implementation Blueprint
Prerequisites
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo systemctl start dockerDocker Compose Production Setup
version: '3'
services:
redmine:
image: redmine:latest
ports:
- "3000:3000"
environment:
- REDMINE_DB_POSTGRES=db
- REDMINE_DB_USERNAME=redmine
- REDMINE_DB_PASSWORD=password
depends_on:
- db
volumes:
- redmine_data:/usr/src/redmine/files
restart: always
db:
image: postgres:15-alpine
environment:
- POSTGRES_USER=redmine
- POSTGRES_PASSWORD=password
- POSTGRES_DB=redmine
volumes:
- pg_data:/var/lib/postgresql/data
restart: always
volumes:
redmine_data:
pg_data:Kubernetes Production Deployment (Recommended)
# Deploy app and db as separate components
kubectl create deployment redmine --image=redmine:latest
kubectl expose deployment redmine --port=3000- Stateful Management: Use PersistentVolumeClaims to manage your PostgreSQL store and project file attachments.
- Load Balancing: Automatically distribute traffic across multiple Redmine pods during periods of high engagement.
- Secure Persistence: Use Kubernetes Secrets to manage your SCM credentials and database access tokens.
Scaling & Performance
- Database Performance: For large-scale multi-project environments, use a managed database instance and ensure proper indexing for issue search.
- SCM Polling: Configure background workers to handle SCM repository polling to ensure it doesn't impact web performance.
- Attachment Storage: Use shared persistent volumes or object storage for attachments to ensure they are accessible across all pods.
- Plugin Management: Be selective with plugins; ensure they are regularly maintained to prevent performance degradation or security risks.
Backup & Safety
- Database Snapshots: Automate daily PostgreSQL backups and store them offsite securely.
- Volume Backups: Regularly backup the persistent volumes containing project files and configurations.
- Security Updates: Monitor Redmine's official site for updates and security patches.
- HTTPS Everywhere: Always run Redmine behind a secure reverse proxy with SSL/TLS enabled to protect project data and user credentials.
- File Permissions: Ensure that Redmine's dynamic file storage directories have the correct restrictive permissions at the OS level.
Includes Security & performance standards
Best place to host Redmine
We recommend Hostinger for its reliability and low cost. It's the perfect home for your new apps, featuring easy setup and 24/7 support.
Get Started on HostingerCompare Similar Tools
Kubernetes
Kubernetes is a production-grade, open-source platform for automating deployment, scaling, and operations of application containers.
Supabase
Supabase is the leading open-source alternative to Firebase. It provides a full backend-as-a-service (BaaS) powered by PostgreSQL, including authentication, real-time subscriptions, and storage.