Deploy DDALAB with a single command using Docker.
- Docker 20.10+ and Docker Compose 2.0+
- 8GB RAM, 20GB disk space
# Clone and start DDALAB
git clone https://github.com/sdraeger/DDALAB-setup.git
cd DDALAB-setup
./ddalab.sh start# Clone and start DDALAB
git clone https://github.com/sdraeger/DDALAB-setup.git
cd DDALAB-setup
.\ddalab.ps1 startThis starts DDALAB + additional checks:
- β Check requirements
- β Generate secure passwords automatically
- β Create SSL certificates
- β Start all services
- β Display access information
Access DDALAB at: https://localhost
Default credentials:
- Email: admin@example.com
- Password: admin (change immediately!)
./ddalab.sh start # Start DDALAB
./ddalab.sh stop # Stop DDALAB
./ddalab.sh restart # Restart DDALAB
./ddalab.sh logs # View logs
./ddalab.sh status # Check status
./ddalab.sh backup # Backup database.\ddalab.ps1 start # Start DDALAB
.\ddalab.ps1 stop # Stop DDALAB
.\ddalab.ps1 restart # Restart DDALAB
.\ddalab.ps1 logs # View logs
.\ddalab.ps1 status # Check status
.\ddalab.ps1 backup # Backup databaseAll configuration is done through the .env file. Key settings:
| Variable | Description | Default |
|---|---|---|
DOMAIN |
Your domain name | localhost |
PUBLIC_URL |
Full URL including protocol | https://localhost |
DB_PASSWORD |
PostgreSQL password | MUST CHANGE |
MINIO_ROOT_PASSWORD |
MinIO admin password | MUST CHANGE |
JWT_SECRET_KEY |
JWT signing key | MUST CHANGE |
NEXTAUTH_SECRET |
NextAuth secret | MUST CHANGE |
DDALAB supports three authentication modes:
-
Local Authentication (default)
DDALAB_AUTH_MODE=local
-
LDAP Authentication
DDALAB_AUTH_MODE=ldap LDAP_SERVER_URL=ldap://your-server:389 LDAP_BIND_DN=cn=admin,dc=example,dc=com LDAP_BIND_PASSWORD=your-password
-
OAuth Authentication
DDALAB_AUTH_MODE=oauth OAUTH_CLIENT_ID=your-client-id OAUTH_CLIENT_SECRET=your-secret OAUTH_ISSUER=https://your-provider.com
All persistent data is stored in Docker volumes:
postgres-data: Database filesminio-data: Uploaded EDF/ASCII filesredis-data: Cache and session data
User data files are mounted from ./data directory.
- Change ALL default passwords in
.env - Generate strong secrets using:
openssl rand -base64 32
- Use proper SSL certificates for production
- Restrict network access using firewall rules
- Enable automatic backups (see below)
# Start with backup profile
docker-compose --profile backup up -dBackups are stored in ./backups directory.
./scripts/backup.sh./scripts/restore.sh backup-file.sql.gz# All services
docker-compose logs -f
# Specific service
docker-compose logs -f ddalab# Check service status
docker-compose ps
# Test database connection
docker-compose exec postgres pg_isready
# Check MinIO status
curl -f http://localhost:9001/minio/health/live# Pull latest image
docker-compose pull ddalab
# Restart service
docker-compose up -d ddalab# Access PostgreSQL shell
docker-compose exec postgres psql -U ddalab
# Vacuum database
docker-compose exec postgres vacuumdb -U ddalab -d ddalab# Flush Redis cache
docker-compose exec redis redis-cli FLUSHALL- Check logs:
docker-compose logs [service-name] - Verify environment variables in
.env - Ensure ports are not in use:
netstat -tulpn | grep -E '80|443|5432|6379|9000'
- Check if services are running:
docker-compose ps - Verify SSL certificates exist in
./certs - Check Traefik logs:
docker-compose logs traefik
- Verify PostgreSQL is healthy:
docker-compose ps postgres - Check credentials in
.env - Ensure database initialization completed
- Check MinIO is running:
docker-compose ps minio - Verify MinIO credentials
- Check available disk space
Enable Prometheus and Grafana monitoring:
# Linux/macOS
docker-compose --profile monitoring up -d
# Windows
docker compose --profile monitoring up -dAccess monitoring dashboards:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3005 (admin/admin)
# In .env, point to external database
DB_HOST=your-external-db.com
DB_PORT=5432Then remove the postgres service from docker-compose.yml.
Place your certificates in ./certs:
cert.pem: Certificate filekey.pem: Private key file
Uncomment and adjust in .env:
POSTGRES_MEMORY_LIMIT=2g
REDIS_MEMORY_LIMIT=512m
MINIO_MEMORY_LIMIT=1g
DDALAB_MEMORY_LIMIT=4g- GitHub Issues: github.com/sdraeger/DDALAB-setup/issues
- Email: sdraeger@salk.edu
This deployment configuration is provided under the MIT License.