
This article provides a guide demonstrating how to deploy Evergreen ILS on Debian VPS.
What is Evergreen ILS?
Evergreen ILS is a powerful open-source Integrated Library System designed for libraries and consortia. It provides cataloging, circulation, acquisitions, OPAC, patron management, and reporting tools.
Evergreen is widely used by large public library systems because of its scalability and robust architecture. It officially supports Debian and Ubuntu Linux distributions.
This guide explains how to deploy Evergreen ILS on Debian VPS from scratch.
System Requirements
Recommended VPS Specifications
| Component | Recommended |
|---|---|
| OS | Debian 12 Bookworm |
| RAM | 8 GB minimum |
| CPU | 4 vCPU |
| Storage | 100 GB SSD |
| Network | Public IPv4 |
| Swap | 2β4 GB |
Evergreen officially supports Debian Bookworm, Bullseye, and Ubuntu releases. PostgreSQL 14+ is required.
Compare Debian VPS Plans
How to Deploy Evergreen ILS on Debian VPS
To deploy Evergreen ILS on Debian VPS, follow the steps below:
-
Update the Server
Connect to your VPS:
ssh root@YOUR_SERVER_IP
Update Debian packages:
apt update && apt upgrade -y
Install essential utilities:
apt install -y wget curl git sudo gnupg unzip software-properties-common
Set the hostname:
hostnamectl set-hostname evergreen.example.com
Update
/etc/hosts:nano /etc/hosts
Add:
127.0.0.1 localhost YOUR_SERVER_IP evergreen.example.com evergreen
-
Create Evergreen Users
Create the OpenSRF user:
adduser --system --home /openils --group opensrf usermod -aG sudo opensrf
Create directories:
mkdir -p /openils chown opensrf:opensrf /openils
-
Install PostgreSQL
Install PostgreSQL:
apt install -y postgresql postgresql-contrib
Enable and start PostgreSQL:
systemctl enable postgresql systemctl start postgresql
Switch to PostgreSQL user:
su - postgres
Create Evergreen database user:
createuser -P evergreen
Grant superuser privileges:
psql
Inside PostgreSQL:
ALTER USER evergreen WITH SUPERUSER; \q
Exit:
exit
-
Install Apache and Required Packages
Install Apache:
apt install -y apache2
Install Evergreen dependencies:
apt install -y \ apache2-dev \ build-essential \ checkinstall \ gcc \ g++ \ libapache2-mod-perl2 \ libdbi-perl \ libdbd-pg-perl \ libjson-xs-perl \ libxml-simple-perl \ libxml-libxml-perl \ libjson-perl \ libyaml-perl \ libdatetime-perl \ libtemplate-perl \ libnet-z3950-simple2zoom-perl \ libmarc-record-perl \ libunicode-maputf8-perl \ libclass-dbi-perl \ libio-socket-ssl-perl \ libcrypt-ssleay-perl \ libwww-perl \ memcached \ redis-server \ openjdk-17-jdk \ nodejs \ npmΒ \ libncurses-devΒ \ libreadline-devΒ \ libxml2-devΒ \ pkg-configΒ \ libmemcached-dev
-
Install OpenSRF
Evergreen requires OpenSRF middleware.
Switch to the opensrf user:
su - opensrf
Download OpenSRF:
wget https://evergreen-ils.org/downloads/opensrf-3.3.3.tar.gz
Extract:
tar -xzf opensrf-3.3.3.tar.gz cd opensrf-3.3.3
Build and install:
./configure --prefix=/openils make sudo make install
Update linker cache:
sudo ldconfig
-
Download Evergreen
Still as the opensrf user:
cd /openils
Clone Evergreen:
git clone https://github.com/evergreen-library-system/Evergreen.git
Enter the directory:
cd Evergreen
Generate configure scripts:
autoreconf -i
Evergreen developers recommend this process when using Git sources.
-
Install Evergreen Dependencies
As root:
cd /openils/Evergreen
Install prerequisites:
NO_CPAN_TEST=1 make -f Open-ILS/src/extras/Makefile.install debian-bookworm
This command installs Evergreen-specific dependencies for Debian Bookworm.
-
Build and Install Evergreen
Switch back to opensrf:
su - opensrf cd /openils/Evergreen
Configure Evergreen:
PATH=/openils/bin:$PATH ./configure \ --prefix=/openils \ --sysconfdir=/openils/conf
Compile:
make
Install as root:
sudo make install
Fix permissions:
sudo chown -R opensrf:opensrf /openils
Refresh linker cache:
sudo ldconfig
-
Configure Apache
Copy Evergreen Apache configs:
sudo cp Open-ILS/examples/apache_24/eg_24.conf \ /etc/apache2/sites-available/eg.conf
sudo cp Open-ILS/examples/apache_24/eg_vhost_24.conf \ /etc/apache2/eg_vhost.conf
Enable Apache modules:
sudo a2enmod rewrite ssl headers proxy proxy_http
Enable Evergreen site:
sudo a2ensite eg.conf
Restart Apache:
sudo systemctl restart apache2
-
Configure SSL
Install Certbot:
apt install -y certbot python3-certbot-apache
Generate SSL certificate:
certbot --apache -d evergreen.example.com
Test renewal:
certbot renew --dry-run
-
Initialize Evergreen Database
Create the Evergreen database:
su - postgres createdb -O evergreen evergreen exit
Load Evergreen schema:
su - opensrf cd /openils/Evergreen/Open-ILS/src/sql/Pg psql -U evergreen evergreen < 950.data.seed-values.sql
-
Configure OpenSRF
Edit OpenSRF configuration:
nano /openils/conf/opensrf_core.xml
Update:
- Database credentials
- Domain name
- Hostnames
- Ports
Edit Evergreen configuration:
nano /openils/conf/opensrf.xml
Configure:
- PostgreSQL access
- Authentication
- SIP2 settings
- OPAC hostname
-
Start Evergreen Services
Start OpenSRF:
/openils/bin/osrf_ctl.sh start_all
Verify processes:
ps aux | grep opensrf
Restart Apache:
systemctl restart apache2
-
Access the Web Interface
Open your browser:
https://evergreen.example.com
Default admin credentials:
Username: egadmin Password: admin
Immediately change the password after login.
-
Configure Your Library
Inside Evergreen:
Create Organizational Units
Set up:
- Library systems
- Branches
- Departments
Configure Circulation Rules
Set:
- Loan periods
- Holds
- Fines
- Patron categories
Import MARC Records
Use Z39.50 servers or batch MARC imports.
Configure OPAC
Customize:
- Branding
- Themes
- Search preferences
- Patron features
Firewall Configuration
Allow required ports:
ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable
Backup Strategy
PostgreSQL Backups
Create daily backups:
pg_dump evergreen > /backup/evergreen.sql
Automate with cron:
crontab -e
Example:
0 2 * * * pg_dump evergreen > /backup/evergreen-$(date +\%F).sql
Performance Optimization
PostgreSQL Tuning
Edit:
/etc/postgresql/15/main/postgresql.conf
Recommended:
shared_buffers = 2GB work_mem = 32MB maintenance_work_mem = 256MB effective_cache_size = 6GB
Restart PostgreSQL:
systemctl restart postgresql
Troubleshooting
Apache Errors
Check logs:
tail -f /var/log/apache2/error.log
Evergreen Logs
Check:
tail -f /openils/var/log/osrfsys.log
PostgreSQL Issues
Check:
journalctl -u postgresql
Updating Evergreen
Pull latest code:
cd /openils/Evergreen git pull
Rebuild:
autoreconf -i ./configure --prefix=/openils --sysconfdir=/openils/conf make sudo make install
Restart services:
/openils/bin/osrf_ctl.sh restart_all systemctl restart apache2
Security Recommendations
- Disable root SSH login
- Use SSH keys only
- Install Fail2Ban
- Keep Debian updated
- Restrict PostgreSQL remote access
- Use automatic security updates
Conclusion
You now know how to deploy Evergreen ILS on Debian VPS.
Evergreen is highly scalable and especially suited for multi-branch and consortium library systems. It uses PostgreSQL, Apache, and OpenSRF to provide enterprise-grade library management capabilities.
With proper backups, SSL, monitoring, and PostgreSQL optimization, your Evergreen deployment can reliably serve large library collections and patron networks for years.









