Best for
- Production environments (10—100 users)
- Enterprise authentication with LDAP
- Single-server deployments
- Teams that do not need high availability
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
Limitations
Navigate to the RAMP directory:
cd /path/to/RAMPCreate a .env file with custom passwords:
DB_PASSWORD=YourSecureDbPassword123!LDAP_ADMIN_PASSWORD=YourLdapAdminPassword123!LDAP_JWT_SECRET=your_jwt_secret_minimum_32_characters_long!JWT_SECRET=YourApiJwtSecretAtLeast32CharsLong!Start RAMP Full:
docker-compose -f docker-compose.full.yml up -d --buildThis downloads PostgreSQL, LDAP, and Nginx images, builds the RAMP images, creates the database, runs migrations, and starts all services.
Monitor startup (wait for all services to show “healthy” — typically 2—3 minutes):
docker-compose -f docker-compose.full.yml psOpen your browser at http://localhost.
| Field | Value |
|---|---|
admin@ramp.local | |
| Password | Admin123! |
| Field | Value |
|---|---|
| Host | localhost |
| Port | 5432 |
| Database | ramp |
| Username | ramp |
| Password | RampDbPassword123! (or from .env) |
Connection string: postgresql://ramp:RampDbPassword123!@localhost:5432/ramp
| Field | Value |
|---|---|
| URL | http://localhost:17170 |
| Username | admin |
| Password | LdapAdmin123! (or from .env) |
LDAP connection info:
| Field | Value |
|---|---|
| Host | localhost (or ramp-ldap from containers) |
| Port | 3890 |
| Base DN | dc=ramp,dc=local |
| Bind DN | uid=admin,ou=people,dc=ramp,dc=local |
| Service | URL | Description |
|---|---|---|
| Web Application | http://localhost | Main RAMP interface |
| API (via Nginx) | http://localhost/api | API endpoints through reverse proxy |
| API (direct) | http://localhost:5000 | Direct API access |
| LDAP Admin | http://localhost:17170 | LDAP user management |
| PostgreSQL | localhost:5432 | Database access |
All data is stored in Docker volumes:
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)mkdir -p ./backups
# Plain SQL backupdocker exec ramp-db pg_dump -U ramp -d ramp > ./backups/ramp_$(date +%Y%m%d).sql
# Compressed backupdocker exec ramp-db pg_dump -U ramp -d ramp | gzip > ./backups/ramp_$(date +%Y%m%d).sql.gz# Stop API firstdocker-compose -f docker-compose.full.yml stop ramp-api
# Restore from plain SQLcat ./backups/ramp_20260110.sql | docker exec -i ramp-db psql -U ramp -d ramp
# Or from compressed backupgunzip -c ./backups/ramp_20260110.sql.gz | docker exec -i ramp-db psql -U ramp -d ramp
# Restart APIdocker-compose -f docker-compose.full.yml start ramp-apidocker exec ramp-ldap /app/lldap export > ./backups/ldap_$(date +%Y%m%d).ldifdocker cp ramp-api:/app/uploads ./backups/uploads_$(date +%Y%m%d)# All servicesdocker-compose -f docker-compose.full.yml logs -f
# Specific servicedocker-compose -f docker-compose.full.yml logs -f ramp-apidocker-compose -f docker-compose.full.yml logs -f ramp-db
# Last 50 linesdocker-compose -f docker-compose.full.yml logs --tail=50# Restart alldocker-compose -f docker-compose.full.yml restart
# Restart specific servicedocker-compose -f docker-compose.full.yml restart ramp-apidocker-compose -f docker-compose.full.yml stopdocker-compose -f docker-compose.full.yml down# WARNING: Deletes ALL datadocker-compose -f docker-compose.full.yml down -vgit pulldocker-compose -f docker-compose.full.yml builddocker-compose -f docker-compose.full.yml up -d# Check container status -- all should show "Up (healthy)"docker-compose -f docker-compose.full.yml ps
# Check logs for errorsdocker-compose -f docker-compose.full.yml logs# Verify LDAP server is runningdocker-compose -f docker-compose.full.yml ps ramp-ldap
# Test LDAP connectiondocker exec ramp-ldap /app/lldap healthcheckThen verify users exist in the LDAP admin panel at http://localhost:17170 under ou=people,dc=ramp,dc=local.
# Check PostgreSQL healthdocker exec ramp-db pg_isready -U ramp# Expected: "ramp-db:5432 - accepting connections"
# Verify database existsdocker exec ramp-db psql -U ramp -l# Should list "ramp" database
# Restart database then APIdocker-compose -f docker-compose.full.yml restart ramp-db# Wait 10 secondsdocker-compose -f docker-compose.full.yml restart ramp-apidocker statsExpected memory usage:
| Service | RAM |
|---|---|
| PostgreSQL | 200—500 MB |
| LDAP | 50—100 MB |
| API | 500 MB — 1 GB |
| Web | 50 MB |
| Nginx | 10—20 MB |
| Total | ~1—2 GB |
If usage is significantly higher, restart the services:
docker-compose -f docker-compose.full.yml restartEdit docker-compose.full.yml:
ramp-db: environment: - POSTGRES_SHARED_BUFFERS=256MB - POSTGRES_EFFECTIVE_CACHE_SIZE=1GBramp-api: deploy: resources: limits: memory: 2Gramp-api: environment: - Database__MaxPoolSize=100 - Database__MinPoolSize=10Restart the affected services after making changes:
docker-compose -f docker-compose.full.yml restart ramp-db ramp-api# Application healthcurl http://localhost/_health
# Database sizedocker exec ramp-db psql -U ramp -d ramp -c "SELECT pg_size_pretty(pg_database_size('ramp'));"
# Active database connectionsdocker exec ramp-db psql -U ramp -d ramp -c "SELECT count(*) FROM pg_stat_activity;"Change all default passwords — RAMP admin, PostgreSQL, LDAP, and JWT secret. Set them in the .env file and restart.
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.pemRestrict 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"Set up automated backups — create a cron job:
#!/bin/bashDATE=$(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| Minimum | Recommended | |
|---|---|---|
| RAM | 4 GB | 8 GB |
| CPU | 2 cores | 4 cores |
| Disk | 10 GB | 50 GB (depends on uploads) |
Consider upgrading from Full to Docker Cluster if you need: