Try describing what you need:

OpenELIS Global logo

OpenELIS Global

★ 286
Mozilla Public License 2.0Open Source — No Paywall6 Containers — 6 containers — moderate hosting footprintDocker · Compose · SourceNo external DB12+ active committers (12mo)

About

OpenELIS Global 2 is a laboratory information system designed for public health and other large-scale laboratory settings, from small hospital labs to national reference laboratories. It is intended...

Community Ratings

No ratings yet

Features

  • automated work plans
  • clinical analyzer result import
  • pathology workflows
  • cytology workflows
  • standards-based interoperability
  • lab order receiving
  • result sending
  • offline installer

Details

Last Updated
Nov 14, 2026
Created
Jan 15, 2019
Install Methods
dockerdocker-composesource
Requirements
DockerDocker composeJava 21
Default Port
8080web UI
Runtime / Stack
JavaDocker
Privacy & Independence
No Cloud RequiredOffline Capable
User Model
Multi-User
Deployment

Deployment: Docker Compose ✓6 Containers — moderate hosting footprintRuns as 6 containers

Run OpenELIS Global yourself

Pick how much you want to manage.

1 more way to host

Some links earn us a commission. netcup pays us one and is our preferred VPS host.

Is this your project? Sponsor a listing

Run OpenELIS Global with Docker Compose

Compose file from the OpenELIS Global project repository.

6 services · 5 unclassified (certgen, openelis-global-2-database, openelis-global-2-fhir, openelis-global-2-frontend, openelis-global-2-proxy)

no resource limits declared

needs persistent storage (14 volumes)

docker-compose.yml · @ 1d32bf4 · scanned Nov 3, 2026

version: '3.3'
services:
    certs:
        container_name: oe-certs
        image: itechuw/certgen:main
        platform: linux/amd64
        restart: "no"
        environment:
            - KEYSTORE_PW="kspass"
            - TRUSTSTORE_PW="tspass"
        networks:
            - default
        volumes:
            -  key_trust-store-volume:/etc/openelis-global
            -  keys-vol:/etc/ssl/private/
            -  certs-vol:/etc/ssl/certs/

    db.openelis.org:
        container_name: openelisglobal-database 
        image: itechuw/openelis-global-2-database:develop
        platform: linux/amd64
        ports:
            - "15432:5432"
        restart: always
        env_file:
            - ./volume/database/database.env
        environment:
            - DB_PASSWORD=${OE_DB_PASSWORD:-clinlims}
            - DB_SUPERUSER_PASSWORD=${ADMIN_PASSWORD:-superuser}
        volumes:
              # preserves the database between containers
             - db-data:/var/lib/postgresql/data                
        networks:
            - default
        healthcheck:
            test: [ "CMD", "pg_isready", "-q", "-d", "clinlims", "-U", "clinlims" ]
            timeout: 45s
            interval: 10s
            retries: 10 
            
    oe.openelis.org:
        container_name: openelisglobal-webapp 
        image: itechuw/openelis-global-2:develop   
        platform: linux/amd64 
        depends_on:
            - db.openelis.org
            - certs
        ports:
            - "8080:8080"
            - "8443:8443"
        restart: always
        networks:
          default:
              ipv4_address: 172.20.1.121

        environment:
            - DEFAULT_PW=adminADMIN! 
            - TZ=${TZ:-UTC}
              # context.xml doesn't seem to be able to pick up environment variables directly, so we are passing them in as CATALINA_OPTS
            - CATALINA_OPTS=-Ddatasource.url=jdbc:postgresql://db.openelis.org:5432/clinlims -Ddatasource.username=clinlims -Ddatasource.password=${OE_DB_PASSWORD:-clinlims} -Doe.ssl.truststorepath=${SSL_TRUSTSTORE_PATH:-/etc/openelis-global/truststore} -Doe.ssl.truststorepassword=${SSL_TRUSTSTORE_PASSWORD:-tspass} -Doe.ssl.keystorepath=${SSL_KEYSTORE_PATH:-/etc/openelis-global/keystore} -Doe.ssl.keystorepassword=${SSL_KEYSTORE_PASSWORD:-kspass}
        volumes:
            -  key_trust-store-volume:/etc/openelis-global
            - ./volume/lucene:/var/lib/lucene_index
            - ./volume/analyzer/analyzer-test-map.csv:/var/lib/openelis-global/analyzer/analyzer-test-map.csv
            - ./volume/properties/SystemConfiguration.properties:/var/lib/openelis-global/properties/SystemConfiguration.properties
            - ./volume/odoo/odoo-test-product-mapping.csv:/var/lib/openelis-global/odoo/odoo-test-product-mapping.csv
            - ./configuration:/var/lib/openelis-global/configuration
            #Runing OpenELIS with the locally compiled war file
            #- ./target/OpenELIS-Global.war:/usr/local/tomcat/webapps/OpenELIS-Global.war
        secrets:
            - source: common.properties
            
    fhir.openelis.org:
        container_name: external-fhir-api
        image: itechuw/openelis-global-2-fhir:develop
        platform: linux/amd64
        depends_on:
            - db.openelis.org
            - certs
        ports:
            - "8081:8080"
            - "8444:8443"
        networks:
            - default
        restart: always
        environment:
          TZ: ${TZ:-UTC}
          
          JAVA_OPTS: "-Djavax.net.ssl.trustStore=${SSL_TRUSTSTORE_PATH:-/etc/openelis-global/truststore}
                      -Djavax.net.ssl.trustStorePassword=${SSL_TRUSTSTORE_PASSWORD:-tspass}
                      -Djavax.net.ssl.trustStoreType=pkcs12
                      -Djavax.net.ssl.keyStore=${SSL_KEYSTORE_PATH:-/etc/openelis-global/keystore}
                      -Djavax.net.ssl.keyStorePassword=${SSL_KEYSTORE_PASSWORD:-kspass}
                      -Djavax.net.ssl.keyStoreType=pkcs12"
          CATALINA_OPTS: "-Dhapi.ssl.truststorepath=${SSL_TRUSTSTORE_PATH:-/etc/openelis-global/truststore} -Dhapi.ssl.truststorepassword=${SSL_TRUSTSTORE_PASSWORD:-tspass} -Dhapi.ssl.keystorepath=${SSL_KEYSTORE_PATH:-/etc/openelis-global/keystore} -Dhapi.ssl.keystorepassword=${SSL_KEYSTORE_PASSWORD:-kspass}"  
          FHIR_DATASOURCE_URL : "jdbc:postgresql://db.openelis.org:5432/clinlims?currentSchema=clinlims"
          FHIR_DATASOURCE_USERNAME: "clinlims"
          FHIR_DATASOURCE_PASSWORD: ${OE_DB_PASSWORD:-clinlims}
          FHIR_SERVER_ADRESS: "http://fhir.openelis.org:8080/fhir/"      
        volumes:
            -  key_trust-store-volume:/etc/openelis-global
        
    frontend.openelis.org:
        image: itechuw/openelis-global-2-frontend:develop
        container_name: openelisglobal-front-end
        platform: linux/amd64
        networks:
            - default
        environment:
            - CHOKIDAR_USEPOLLING=true
        tty: true

    proxy:
        image: itechuw/openelis-global-2-proxy:develop
        container_name: openelisglobal-proxy
        platform: linux/amd64
        ports:
            - 80:80
            - 443:443
        volumes:
            - certs-vol:/etc/nginx/certs/
            - keys-vol:/etc/nginx/keys/
            - ./volume/nginx/nginx-prod.conf:/etc/nginx/nginx.conf:ro
        networks:
            - default
        restart: unless-stopped
        depends_on:
        - certs        
            
secrets:
  common.properties:
    file:  ./volume/properties/common.properties     

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.1.0/24  
        
volumes:
  db-data:
  key_trust-store-volume:
  certs-vol:
  keys-vol:

This file may be out of date. Check the OpenELIS Global documentation for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Aug 17, 2026

Related Software

LibreDB Studio logo

LibreDB Studio

1.3k
LibreDB Studio is a self-hosted database editor and SQL IDE that runs next to your data in containers, Kubernetes, or embedded in your product. It supports many databases and data systems through one browser-based interface.
Database Management
2 Containers
Details
JupyterLab logo

JupyterLab

15.4k
An extensible web-based environment for interactive and reproducible computing, built on the Jupyter Notebook architecture.
IDE ToolsWeb ServersSelf Hosting Solutions+2
Details
OpenOLAT logo

OpenOLAT

451
OpenOlat is a web-based learning management system for teaching, learning, assessment, and communication.
Learning ManagementSelf Hosting SolutionsKnowledge Management+2
Details
GeneWeb logo

GeneWeb

409
GeneWeb is open-source genealogy software with a web interface for building, exploring, and collaboratively maintaining family-history databases.
Genealogy SoftwareCopyleft LicenseSelf Hosting Solutions+2
Fully FOSS
Details
Bugzilla logo

Bugzilla

867
Bugzilla is a free, open source, web-based bug-tracking system.
Ticketing SystemsCopyleft LicenseDev Project Management+2
2 ContainersFully FOSS
Details
Request Tracker logo

Request Tracker

1.2k
Request Tracker (RT) is an open source issue and ticket tracking system for organizations to track tasks, ownership, and completion status.
Ticketing SystemsDev Project ManagementSelf Hosting Solutions+1
Details
Omeka S logo

Omeka S

530
Omeka S is a web publication system for universities, galleries, libraries, archives, and museums.
Digital ArchivingCMS PlatformsDigital Library Software+4
Details