Skip to content

Docker Full

RAMP Full is a single-server production deployment designed for small to medium teams (10—100 users). It uses PostgreSQL for data storage and includes an LDAP server for enterprise authentication.

Best for

  • Production environments (10—100 users)
  • Enterprise authentication with LDAP
  • Single-server deployments
  • Teams that do not need high availability

Limitations

  • Single point of failure (no redundancy)
  • No horizontal scaling
  • Files stored locally (not shared storage)
  • Downtime during updates and restarts
  • Docker Desktop 4.0+ or Docker Engine 20.10+
  • Docker Compose 2.0+
  • Available RAM: 4 GB minimum (8 GB recommended)
  • Disk Space: 10 GB minimum

  1. Navigate to the RAMP directory:

    Terminal window
    cd /path/to/RAMP
  2. Create a .env file with custom passwords:

    Terminal window
    DB_PASSWORD=YourSecureDbPassword123!
    LDAP_ADMIN_PASSWORD=YourLdapAdminPassword123!
    LDAP_JWT_SECRET=your_jwt_secret_minimum_32_characters_long!
    JWT_SECRET=YourApiJwtSecretAtLeast32CharsLong!
  3. Start RAMP Full:

    Terminal window
    docker-compose -f docker-compose.full.yml up -d --build

    This downloads PostgreSQL, LDAP, and Nginx images, builds the RAMP images, creates the database, runs migrations, and starts all services.

  4. Monitor startup (wait for all services to show “healthy” — typically 2—3 minutes):

    Terminal window
    docker-compose -f docker-compose.full.yml ps
  5. Open your browser at http://localhost.


FieldValue
Emailadmin@ramp.local
PasswordAdmin123!
FieldValue
Hostlocalhost
Port5432
Databaseramp
Usernameramp
PasswordRampDbPassword123! (or from .env)

Connection string: postgresql://ramp:RampDbPassword123!@localhost:5432/ramp

FieldValue
URLhttp://localhost:17170
Usernameadmin
PasswordLdapAdmin123! (or from .env)

LDAP connection info:

FieldValue
Hostlocalhost (or ramp-ldap from containers)
Port3890
Base DNdc=ramp,dc=local
Bind DNuid=admin,ou=people,dc=ramp,dc=local

ServiceURLDescription
Web Applicationhttp://localhostMain RAMP interface
API (via Nginx)http://localhost/apiAPI endpoints through reverse proxy
API (direct)http://localhost:5000Direct API access
LDAP Adminhttp://localhost:17170LDAP user management
PostgreSQLlocalhost:5432Database access

All data is stored in Docker volumes:

Terminal window
docker volume ls | grep ramp
# ramp-full-db (PostgreSQL data)
# ramp-full-ldap (LDAP users & groups)
# ramp-full-data (Application data)
# ramp-full-logs (Application logs)
# ramp-full-uploads (File attachments)

  1. Open the LDAP admin panel at http://localhost:17170.
  2. Log in as admin.
  3. Navigate to Users then Create User.
  4. Fill in username (email format recommended), display name, password, and email.
  5. Click Create.
  6. Optionally, add the user to groups under the Groups tab.
  1. Log in to RAMP as administrator.
  2. Navigate to Admin then Users.
  3. Click Sync LDAP Users.
  4. LDAP users appear in RAMP.
  5. Assign RAMP roles to users as needed.

Terminal window
mkdir -p ./backups
# Plain SQL backup
docker exec ramp-db pg_dump -U ramp -d ramp > ./backups/ramp_$(date +%Y%m%d).sql
# Compressed backup
docker exec ramp-db pg_dump -U ramp -d ramp | gzip > ./backups/ramp_$(date +%Y%m%d).sql.gz
Terminal window
docker exec ramp-ldap /app/lldap export > ./backups/ldap_$(date +%Y%m%d).ldif
Terminal window
docker cp ramp-api:/app/uploads ./backups/uploads_$(date +%Y%m%d)

Terminal window
# All services
docker-compose -f docker-compose.full.yml logs -f
# Specific service
docker-compose -f docker-compose.full.yml logs -f ramp-api
docker-compose -f docker-compose.full.yml logs -f ramp-db
# Last 50 lines
docker-compose -f docker-compose.full.yml logs --tail=50
Terminal window
# Restart all
docker-compose -f docker-compose.full.yml restart
# Restart specific service
docker-compose -f docker-compose.full.yml restart ramp-api
Terminal window
docker-compose -f docker-compose.full.yml stop
Terminal window
git pull
docker-compose -f docker-compose.full.yml build
docker-compose -f docker-compose.full.yml up -d

Terminal window
# Check container status -- all should show "Up (healthy)"
docker-compose -f docker-compose.full.yml ps
# Check logs for errors
docker-compose -f docker-compose.full.yml logs
Terminal window
# Verify LDAP server is running
docker-compose -f docker-compose.full.yml ps ramp-ldap
# Test LDAP connection
docker exec ramp-ldap /app/lldap healthcheck

Then verify users exist in the LDAP admin panel at http://localhost:17170 under ou=people,dc=ramp,dc=local.

Terminal window
# Check PostgreSQL health
docker exec ramp-db pg_isready -U ramp
# Expected: "ramp-db:5432 - accepting connections"
# Verify database exists
docker exec ramp-db psql -U ramp -l
# Should list "ramp" database
# Restart database then API
docker-compose -f docker-compose.full.yml restart ramp-db
# Wait 10 seconds
docker-compose -f docker-compose.full.yml restart ramp-api
Terminal window
docker stats

Expected memory usage:

ServiceRAM
PostgreSQL200—500 MB
LDAP50—100 MB
API500 MB — 1 GB
Web50 MB
Nginx10—20 MB
Total~1—2 GB

If usage is significantly higher, restart the services:

Terminal window
docker-compose -f docker-compose.full.yml restart

Edit docker-compose.full.yml:

ramp-db:
environment:
- POSTGRES_SHARED_BUFFERS=256MB
- POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
ramp-api:
deploy:
resources:
limits:
memory: 2G
ramp-api:
environment:
- Database__MaxPoolSize=100
- Database__MinPoolSize=10

Restart the affected services after making changes:

Terminal window
docker-compose -f docker-compose.full.yml restart ramp-db ramp-api

Terminal window
# Application health
curl http://localhost/_health
# Database size
docker exec ramp-db psql -U ramp -d ramp -c "SELECT pg_size_pretty(pg_database_size('ramp'));"
# Active database connections
docker exec ramp-db psql -U ramp -d ramp -c "SELECT count(*) FROM pg_stat_activity;"

  1. Change all default passwords — RAMP admin, PostgreSQL, LDAP, and JWT secret. Set them in the .env file and restart.

  2. Enable HTTPS — mount SSL certificates into the Nginx container or place an external reverse proxy in front:

    ramp-web:
    volumes:
    - ./ssl/cert.pem:/etc/nginx/cert.pem
    - ./ssl/key.pem:/etc/nginx/key.pem
  3. Restrict database access — remove the external port binding for PostgreSQL in docker-compose.full.yml:

    ramp-db:
    ports:
    # Comment out to prevent external access
    # - "5432:5432"
  4. Set up automated backups — create a cron job:

    backup.sh
    #!/bin/bash
    DATE=$(date +%Y%m%d_%H%M%S)
    docker exec ramp-db pg_dump -U ramp -d ramp | gzip > /backups/ramp_${DATE}.sql.gz
    # Add to crontab (daily at 2 AM)
    # 0 2 * * * /path/to/backup.sh

MinimumRecommended
RAM4 GB8 GB
CPU2 cores4 cores
Disk10 GB50 GB (depends on uploads)

Consider upgrading from Full to Docker Cluster if you need:

  • High availability (zero downtime during updates)
  • Horizontal scaling (multiple API instances)
  • Load balancing
  • Centralized file storage (MinIO/S3)
  • Redis caching and real-time messaging across instances
  1. Backup the PostgreSQL database.
  2. Deploy the Cluster setup.
  3. Import the database into the Cluster PostgreSQL instance.
  4. Configure shared file storage (MinIO).
  5. Test and switch over.