OpenBoxes Server
Generated on 24 Mar 2026 from the OpenBoxes Server catalog page
OpenBoxes is a free, open-source supply chain management platform built for healthcare and humanitarian logistics. It provides inventory tracking, demand forecasting, order fulfillment, and shipment management across multiple facilities.
This 1-Click App deploys a fully configured OpenBoxes instance running on Apache Tomcat 9, with MySQL, Nginx reverse proxy, and firewall pre-configured. On first boot, unique database passwords are generated automatically and saved to /root/.digitalocean_password. The default web login is admin/password (change immediately).
Optional domain and SSL setup is available via an included script: /opt/openboxes/setup-domain.sh
Software Included
| Package | Version | License |
|---|---|---|
| OpenBoxes | 0.9.6-hotfix1 | |
| Apache Tomcat | 9.0.115 | |
| Azul Zulu JDK | 8 | |
| MySQL | 8.0 | |
| Nginx | 1.24 | |
| Certbot | 2.9.0 |
Creating an App using the Control Panel
Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
Creating an App using the API
In addition to creating a Droplet from the OpenBoxes Server 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB OpenBoxes Server Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.
curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"openboxes-openboxesserver"}' \
"https://api.digitalocean.com/v2/droplets"Getting Started After Deploying OpenBoxes Server
Getting Started Instructions
1. Connect to your droplet via SSH
ssh root@your_droplet_public_ipv4
The login banner displays your app URL, credentials location, and useful commands.
2. Wait for initialization
OpenBoxes takes 3–5 minutes to start on first boot. You will see a “starting up” page in your browser until it is ready.
Watch startup progress:
tail -f /opt/tomcat9/logs/catalina.out
Look for Started Application in X seconds to confirm it is ready.
3. Log in
Open http://your_droplet_public_ipv4/openboxes in your browser.
- Username:
admin - Password:
password
Change this password immediately after first login.
4. View credentials
Database passwords are generated automatically on first boot:
cat /root/.digitalocean_password
5. Set up a domain with SSL (optional)
Point your domain’s DNS A record to the droplet IP, then run:
/opt/openboxes/setup-domain.sh
This configures Nginx with your domain, obtains a Let’s Encrypt SSL certificate, and enables automatic HTTPS redirect.
Check service status
systemctl status tomcat9 mysql nginx
Upgrading
Keep an eye out for new releases:
NOTE: Back up your database or take a snapshot before upgrading.
Troubleshooting
“OpenBoxes is starting up” page (502)
This is normal. OpenBoxes takes 3–5 minutes to start after first boot or a restart. The page auto-refreshes every 15 seconds.
Check startup progress:
tail -f /opt/tomcat9/logs/catalina.out
Look for Started Application in X seconds to confirm it’s ready. If the service keeps restarting, check for errors:
grep -E "ERROR|Exception" /opt/tomcat9/logs/catalina.out | tail -20
Common causes of repeated restarts:
- Out of memory — use
free -mto check. The app needs ~1.5 GB. Use a droplet with at least 4 GB RAM. - MySQL not running — verify with
systemctl status mysql. If it’s down, start it:systemctl start mysql. - Grails config error — check
/opt/openboxes/.grails/openboxes.ymlfor syntax issues. - Tomcat not running — verify with
systemctl status tomcat9. Restart withsystemctl restart tomcat9.
DNS propagation delays
After creating a DNS A record, it can take anywhere from a few minutes to 48 hours to propagate, though most providers complete within 5–15 minutes.
Check if your record has propagated:
dig yourdomain.com +short
This should return your droplet’s IP. If it returns nothing or the wrong IP:
- Verify the A record is correct in your DNS provider’s dashboard.
- Try a different DNS resolver:
dig @8.8.8.8 yourdomain.com +short - Lower the TTL on your DNS record if you anticipate changes.
- Wait and try again — some registrars are slower than others.
Do not run setup-domain.sh until DNS is resolving correctly. Certbot will fail to issue a certificate if it can’t reach your domain.
Certbot / SSL certificate issues
“Challenge failed” or “Connection refused”:
- DNS hasn’t propagated yet. Verify with
dig(see above). - Port 80 is blocked. Verify:
ufw statusshould show 80/tcp ALLOW. - Another process is using port 80. Check:
ss -tlnp | grep :80
“Too many failed authorizations” (rate limit):
- Let’s Encrypt limits failed attempts. Wait 1 hour and try again.
- Test with staging first: edit
setup-domain.shand add--stagingto thecertbotcommand, then re-run. Remove--stagingfor the real certificate.
Certificate renewal:
Certbot installs a systemd timer that auto-renews certificates. Test it with:
certbot renew --dry-run
The setup script is safe to re-run after a failure. It will overwrite the Nginx config and request a new certificate.
Logs reference
| Log | Location |
|---|---|
| First-boot script | /var/log/openboxes-firstboot.log |
| Tomcat / OpenBoxes | /opt/tomcat9/logs/catalina.out |
| Tomcat (systemd) | journalctl -u tomcat9 |
| Nginx access | /var/log/nginx/access.log |
| Nginx error | /var/log/nginx/error.log |
| MySQL error | /var/log/mysql/error.log |
| Certbot | /var/log/letsencrypt/letsencrypt.log |
Useful Links
| Field | URL |
|---|---|
| Documentation | https://docs.openboxes.com |
| Knowledge Base | https://help.openboxes.com |
| Source Code | https://github.com/openboxes/openboxes |
| Issues | https://github.com/openboxes/openboxes/issues |
| Support | https://community.openboxes.com |
| License | https://github.com/openboxes/openboxes/blob/master/LICENSE.txt |
Support Contact
If you encounter any issues or would like to leave feedback, please join our community support forum: