Dick Postma and Xavier EscribΓ Montagut
Goal: Deploy Opal/Armadillo locally using Docker Compose
Why start local?
π’ Opal (OBiBa DataSHIELD Server) - Main DataSHIELD server and admin UI
π§ Rock (R Server) - Executes R/DataSHIELD calls from Opal
ποΈ MongoDB (Auxiliary Store) - Used by Opal for auxiliary features
opal-local/
βββ .env # Environment variables
βββ docker-compose.yml # Service definitions
βββ data/ # Persistent data storage
β βββ opal/ # Opal server data
β βββ mongo/ # MongoDB data
βββ logs/ # Opal logs
Local folders - easy data management!
Create .env
file with admin password:
OPAL_ADMINISTRATOR_PASSWORD
: Password for the Opal administrator
accountservices:
opal:
image: obiba/opal:latest
ports:
- "8080:8080"
- "8443:8443"
environment:
- OPAL_ADMINISTRATOR_PASSWORD=${OPAL_ADMINISTRATOR_PASSWORD}
- MONGO_HOST=mongo
- MONGO_PORT=27017
- ROCK_HOSTS=rock:8085
volumes:
- ./data/opal:/srv
- ./logs:/var/log/opal
mongo:
image: mongo:6.0
volumes:
- ./data/mongo:/data/db
rock:
image: datashield/rock-base:latest
environment:
- ROCK_ID=new-stack-rock
# Create data directories
mkdir -p data/opal data/mongo logs
# Start all services
docker-compose up -d
# Check status
docker-compose ps
# Monitor logs
docker-compose logs
Clean restart (recommended): docker-compose down && docker-compose up -d
Access: Open http://localhost:8080
in your browser
Login: User administrator
+ password from .env
library(DSI)
library(DSOpal)
library(httr)
set_config(config(ssl_verifyhost = 0L, ssl_verifypeer = 0L))
library(dsBaseClient)
b <- DSI::newDSLoginBuilder()
b$append(
server = "local",
url = "http://localhost:8080",
user = "administrator",
password = "ChangeMe123!",
profile = "default"
)
logins <- b$build()
conns <- DSI::datashield.login(logins)
ds.ls()
Note: SSL verification disabled for local testing only!
Network Setup
opalnet
Docker networkPersistence
data/
folder to reset completelyOpal not reachable
lsof -i :8080
or netstat -an | grep 8080
docker-compose ps
Login fails
OPAL_ADMINISTRATOR_PASSWORD
set at first startdocker-compose down
, remove data/opal
folder, restartβ Achieved: Local DataSHIELD stack with Docker Compose
π Benefits:
π― Ready for: Going live with Nginx, TLS, and DNS!