Docker Compose

Docker Compose (Multi-Container Setup)

For production environments, you can split services into multiple containers — typically App, Database, and Reverse Proxy (Nginx/Apache).

Typical Directory Structure

/yourOraganization/├── docker-compose.yml├── app/

├── db/

└── nginx/

/yourOraganization/

├── docker-compose.yml

├── app/

├── db/

└── nginx/

Sample docker-compose.yml

version: ‘3.8’

services:

  app:

    image: yourorganization:latest

    ports:

      – “8080:80”

    depends_on:

      – db

    environment:

      – DB_HOST=db

      – DB_USER=root

      – DB_PASS=password

    volumes:

      – ./app/uploads:/var/www/html/app/webroot/uploads

  db:

    image: mysql:8.0

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: password

      MYSQL_DATABASE: database

    volumes:

      – ./db/data:/var/lib/mysql

  nginx:

    image: nginx:latest

    ports:

      – “80:80”

      – “443:443”

    volumes:

      – ./nginx/conf:/etc/nginx/conf.d

Launch Stack

docker-compose up -d

Verify Services

docker ps

Best For: Mid to large teams needing modular scaling, independent updates, and separate storage volumes.

Docker (Single-Container Setup)

This is the fastest and most convenient way to get Orangescrum up and running. It bundles the entire application — backend, database, and frontend — into a single portable image.

Step 1: Verify Docker Installation

Ensure Docker is installed on your system:

docker –version

If not installed, follow the official Docker installation guide.

Step 2: Clean Existing Containers and Images

Before loading a new image, remove any existing Orangescrum containers or images:

sudo docker rm $(docker ps -a -q –filter “name=^durango”)
sudo docker rmi $(docker images –filter=reference=”durango*”)

Step 3: Load the Docker Image

Extract the .zip file shared by the Orangescrum team:

unzip orangescrum.zip
cd orangescrum
docker load -i os_durango.tar

This loads the Orangescrum image into Docker.

Step 4: Run the Container

Use Docker Compose to start the container:

docker compose up -d –build
  • -d: Runs in detached mode
  • –build: Rebuilds the image if changes exist

Once up, access Orangescrum at:

http://localhost:8080

Step 5: Complete Installation Wizard

Follow the on-screen steps to:

  • Create the database (MySQL/MariaDB)
  • Configure SMTP settings
  • Set up Admin credentials

Example database credentials (default values):

Database Host: yourhostname

Database User: yourusername

Database Password: yourpassword

Database Name: yourdatabase

Click “Finish Installation” to complete setup.

Result: You now have a working single-container Orangescrum environment — ideal for development, trials, and small internal teams

Installation Methods

Once your infrastructure is ready, you can install Orangescrum using several deployment methods depending on your organization’s needs, preferred tech stack, and scale.

Whether you want a quick Docker setup for testing, a multi-container production deployment, or a manual LAMP/LEMP stack for complete customization — Orangescrum supports it all.

Database & Storage Configuration

If you need to change the database host or full base URL after installation:

Edit Configuration File

1. Access your running container or server: 

 docker exec -it <container-id> bash

2. Navigate to

cd /var/www/html/config

3. Edit

app_local.php:
vim app_local.php

4. Update connection details:

‘Datasources’ => [

    ‘default’ => [

        ‘host’ => ‘yourhostname’,

        ‘username’ => ‘yourusername’,

        ‘password’ => ‘Yourpassword’,

        ‘database’ => ‘Yourdatabase’,

    ],

],

‘App’ => [

    ‘fullBaseUrl’ => ‘https://projects.yourdomain.com’,

],

5. Save and restart:

 docker restart <container-id>

Pro Tip: In production, use a dedicated database service with limited privileges (read/write only).
Avoid embedding credentials in scripts—store them in environment variables where possible.

Summary

Post-installation configuration transforms your raw deployment into a production-ready workspace:

  • Create a secure admin account and update branding.
  • Configure SMTP for notifications and SSL for secure access.
  • Set up external storage and reliable backup directories.
  • Verify your database and domain settings before onboarding users.

External Storage & File Attachments

All uploaded files—attachments, images, and reports—are stored in the /app/webroot/uploads directory by default.
Options for Storage

  • Local Disk (Default): Fastest for small teams or single servers.
  • NFS / NAS: Recommended for multi-node setups or high availability clusters.
  • Object Storage (S3-Compatible): For cloud deployments, integrate with AWS S3 or MinIO using mounted volumes.

Docker Compose Example:

volumes:
– ./uploads:/var/www/html/app/webroot/uploads

Backup Note: Always include /uploads in your backup strategy to retain file attachments alongside the database.

Custom Domain Setup

To secure communication between your users and the Orangescrum server, it’s highly recommended to enable HTTPS.

Option 1: Let’s Encrypt (Recommended)

For production:

sudo apt install certbot python3-certbot-apache -y

sudo certbot –apache -d projects.yourdomain.com

This automatically issues a free SSL certificate and updates your Apache configuration.

Option 2: Self-Signed SSL (for Testing)

For testing or private networks:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/yourdomain.key \
-out /etc/ssl/certs/yourdomain.crt

Then configure Apache/Nginx as a reverse proxy to forward HTTPS traffic to the Orangescrum app (usually running on port 8080):

<VirtualHost *:443>

    ServerName projects.yourdomain.com

    SSLEngine On

    SSLCertificateFile /etc/ssl/certs/yourdomain.crt

    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key

    ProxyPass / http://localhost:8080/

    ProxyPassReverse / http://localhost:8080/

</VirtualHost>

DNS Tip: Ensure an A-record for projects.yourdomain.com points to your server’s IP address before enabling SSL.