Docker is convenient for evaluation and development, but production deployments typically run SENAITE directly on a Linux server for better control over performance, security, and backup procedures.
This guide covers a complete SENAITE LIMS installation on a fresh Ubuntu 24.04 server, from system dependencies through to a running instance. The video above demonstrates the full process.
What You Will Set Up
- Python 2.7.18 via pyenv (SENAITE requires Python 2.7)
- System dependencies (build tools, libraries, OpenSSL)
- A zc.buildout configuration for SENAITE
- A running SENAITE instance in foreground mode
After completing these steps you will have SENAITE accessible at http://your-server:8080/senaite.
Installation Steps
1. Install system dependencies
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl \
llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev \
libffi-dev liblzma-dev git libxml2-dev libxslt1-dev \
libjpeg-dev libopenjp2-7-dev2. Install pyenv and Python 2.7.18
curl https://pyenv.run | bashAdd pyenv to your shell profile (follow the output instructions), then:
pyenv install 2.7.18
pyenv global 2.7.18
python --version # Should show Python 2.7.183. Create a buildout project
mkdir senaitelims && cd senaitelims
pip install zc.buildout
cat > buildout.cfg <<EOF
[buildout]
extends = https://dist.plone.org/release/5.2.15/versions.cfg
parts = instance
[instance]
recipe = plone.recipe.zope2instance
eggs =
Plone
senaite.lims
user = admin:admin
EOF4. Run buildout
buildoutThis downloads and installs all dependencies. Expect 5 to 15 minutes depending on your internet connection. Build errors are almost always missing system libraries from step 1.
5. Start SENAITE
bin/instance fgOpen http://your-server:8080 in your browser and create a new SENAITE site.
Going to Production
The setup above gives you a working development instance. For production use, you will additionally need:
- ZEO server for multi-client setups and database locking
- Nginx or HAProxy as a reverse proxy with SSL termination
- Supervisor to manage Zope and ZEO processes
- Regular backups of the ZODB database and blobstorage
- Database packing (scheduled nightly via cron)
If you prefer a fully managed setup, SENAITE Care provides hosting, monitoring, and maintenance as a service.
Next Steps
- Load demo data to start testing with realistic laboratory content
- SENAITE vs Commercial LIMS for a detailed comparison
- Contact us for help with production deployments
Related Posts
A laboratory recently contacted us because their nightly database optimization had stopped working. SENAITE LIMS was running fine on the surface — users could log in, create samples, enter results. But under the hood, the database was growing unchecked because the scheduled pack operation was silently failing every [...]
We built SENAITY because we needed it ourselves. After years of working with laboratories running SENAITE LIMS, we kept seeing the same pattern: lab managers opening multiple browser tabs, clicking through sample listings, trying to piece together where things stand. Which samples are overdue? What is stuck in [...]