Installation
There are three ways to set up OpenMES. You can use the quick auto-installer, set it up by hand with Docker, or try the free online demo. Pick whichever works best for you.
Want to try OpenMES without installing anything? Jump to Method 3 – Cloud Demo and get started in 30 seconds.
System Requirements
OpenMES runs inside Docker containers (think of them as small, portable packages for software). You need a computer – a server, virtual machine, or cloud server – with these specs:
| Component | Minimum | Recommended |
|---|---|---|
| OS | Linux, macOS, or Windows (must support Docker) | Ubuntu 22.04 LTS / Debian 12 |
| Docker | Docker Engine 20.10 or newer | Docker Engine 24+ with Compose V2 |
| CPU | 2 cores | 4+ cores |
| RAM | 2 GB | 4+ GB |
| Disk | 10 GB free | 20+ GB SSD |
| Network | Port 80 or 8080 open | Port 80 + 443 (for secure HTTPS) |
OpenMES uses Laravel + PostgreSQL on the server side and React for the interface. Everything is packed inside Docker containers – you do not need to install PHP, Node.js, or PostgreSQL on your own.
Method 1 – Automated Install (Recommended)
This is the fastest way to get OpenMES up and running. The installer downloads the code, creates safe passwords, finds an open port, builds everything, and starts all services for you.
Linux / macOS
Open a terminal window and run these commands:
git clone https://github.com/Mes-Open/OpenMes.git
cd OpenMes
./install.sh
Here is what the installer does:
- Makes sure Docker and Docker Compose are installed
- Creates a safe
.envsettings file with random passwords - Finds an open port (tries port 80 first, then 8080, then the next one free)
- Builds all the Docker images from source code
- Starts the app in production mode
- Shows you the URL and admin login details in the terminal
Use ./install.sh --yes to skip all yes/no questions. This is handy for automated setups.
Windows (PowerShell)
Open PowerShell as an Administrator and run:
git clone https://github.com/Mes-Open/OpenMes.git
cd OpenMes
.\install.ps1
This does the same thing as the Linux script. Just make sure Docker Desktop is running first.
Method 2 – Manual Docker Compose
Want to control every detail yourself? Use this method to set ports, storage, and settings before you start.
Step 1 – Clone the repository
git clone https://github.com/Mes-Open/OpenMes.git
cd OpenMes
Step 2 – Configure environment
Copy the example settings file and open it for editing:
cp .env.example .env
Open .env in a text editor and set at least these values:
| Variable | Description | Default |
|---|---|---|
APP_URL | The web address people will use to open OpenMES | http://localhost |
DB_PASSWORD | Database password – pick a strong one | (make up a strong one) |
HTTP_PORT | Port for regular web traffic | 80 |
HTTPS_PORT | Port for secure web traffic | 443 |
Step 3 – Build and start
docker compose up -d --build
Docker will build everything from source. This takes about 3–5 minutes. It starts the services in the background. On the first run, it sets up the database and creates an admin account using the passwords from your .env file.
Step 4 – Check that it works
Make sure all containers are running:
docker compose ps
You should see backend, frontend, postgres, and redis all showing "running". Open your browser and go to the URL you set up.
Method 3 – Cloud Demo
The cloud demo is a working copy of OpenMES filled with sample data – 5 production lines, 139 work orders, a full product list, and warehouse stock. No installation needed. No Docker. No server.
- Go to demo.getopenmes.com
- Sign up for free with your email and a password
- Start exploring right away – the demo already has realistic factory data loaded
The demo has all the same features as a self-hosted setup. Use the role switcher at the top to try all three views: Admin, Supervisor, and Operator.
The cloud demo gets reset from time to time. Any data you add might be deleted. For long-term use, install OpenMES on your own server with Method 1 or 2.
First Boot & Login
After installing (Method 1 or 2), the first startup takes care of everything:
- Database setup – all tables and starter data are created
- Admin account – an admin user is made using the details from
.env - Default settings – dashboard widgets and user roles are set up
Open the URL the installer showed you (for example, http://localhost or http://your-server-ip:8080). Log in with the admin details from the terminal.
Once you log in, you will see the Setup Wizard – a step-by-step guide that walks you through creating your first production environment. The wizard has five steps.
Setup Wizard – Your First 5 Minutes
The Setup Wizard starts automatically on first login. It guides you through five steps to get your factory set up and running. You can also open it later from the sidebar by clicking Setup Wizard.
Step 1 – Modules
Choose which OpenMES modules you want to use. By default, all modules are turned on – production tracking, warehouse management, quality control, maintenance, and more. You can turn off modules you don't need right now. You can always turn them back on later in Settings.
Step 2 – Create a Production Line
A production line is a physical area where manufacturing happens. Give it a name (like "Assembly Line 1") and a short code (like "ASM-01"). This line will show up in the Production Planner and Real-Time Monitoring right away.
Step 3 – Add a Product Type
Define what your line produces. Enter a product name, a unique code (SKU), and the unit of measure (pieces, kilograms, meters, etc.). This product type will be available when you create work orders. You can add more products later in Products & Traceability.
Step 4 – Define a Process Template
A process template is a recipe for production – it lists the steps needed to make your product, in the right order. For example: Cutting (15 min) → Assembly (25 min). Each step has a name and an estimated duration. Operators will see these steps on their screen when they work on an order. You can drag steps to reorder them and add as many as you need.
Step 5 – Create Your First Work Order
A work order tells your factory to make a specific quantity of a product. The wizard pre-fills an order number and a default quantity of 100 pieces. You can change these values or add a description. When you click Complete Setup, the wizard creates the work order and takes you to the admin Dashboard – your system is ready to use.
You can skip the wizard at any time by clicking Skip wizard → at the bottom of any step. Everything the wizard does can also be done manually from the admin panel.
After completing the wizard, follow the First Steps guide to assign operators to your line, explore the planner, and start tracking production.
Development Setup
Want to help build OpenMES or change the look of the app? Use the development setup. It reloads the React frontend almost instantly when you save a file.
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
What the development setup does:
- Starts a special frontend container that watches your files
- Links your code folders so edits show up live
- Turns on React Fast Refresh – changes appear in the browser right away
- Opens extra ports for debugging
Only use this setup on your own computer. Do not use docker-compose.dev.yml on a live server – it turns off speed boosts and opens debug access.
Useful Commands
| Command | Description |
|---|---|
docker compose ps | See if all services are running |
docker compose logs backend | Show backend (Laravel) logs |
docker compose logs postgres | Show database logs |
docker compose restart | Restart everything |
docker compose down | Stop everything (your data is kept safe) |
docker compose down -v | Stop and delete all data (full reset) |
docker compose build --no-cache | Rebuild all images from scratch |
docker compose pull && docker compose up -d --build | Update to the newest version |
Troubleshooting
Port 80 is already in use
Something else on your computer is already using port 80. Here are three fixes:
- Let the auto-installer pick a different port for you
- Choose a port yourself:
HTTP_PORT=8080 docker compose up -d - Stop the other program:
sudo systemctl stop apache2orsudo systemctl stop nginx
Containers keep restarting
Look at the logs to find out what went wrong:
docker compose logs --tail=50 backend
Common reasons: the .env file is missing, the database password is wrong, or your computer does not have enough memory.
Database connection refused
The database might still be starting up. Wait 30 seconds and try again. If it still does not work, make sure the DB_PASSWORD in your .env file matches what the database container expects.
Permission denied on install.sh
You need to give the script permission to run:
chmod +x install.sh
./install.sh
Need help?
If you have a problem not listed here, reach out:
- Report it on GitHub Issues
- Email the team at contact@getopenmes.com
- Call +48 511 770 005 for help with setup
OpenMES