...
How to deploy evergreen ils on debian vps
Learn how to deploy evergreen ils on debian vps!

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.

Launch 100% ssd debian vps from $3. 19/mo!


Compare Debian VPS Plans

KVM-SSD-1
KVM-SSD-8
KVM-SSD-16
KVM-SSD-32
CPU
1 Core
2 Cores
4 Cores
8 Cores
Memory
1 GB
8 GB
16 GB
32 GB
Storage
16 GB NVMe
128 GB NVMe
256 GB NVMe
512 GB NVMe
Bandwidth
1 TB
4 TB
8 TB
16 TB
Network
1 Gbps
1 Gbps
1 Gbps
1 Gbps
Delivery Time
⏱️ Instant
⏱️ Instant
⏱️ Instant
⏱️ Instant
Location
US/FR
US/FR
US/FR
US/FR
Price
$7.58*
$39.50*
$79.40*
$151.22*
KVM-SSD-1
CPU: 1 Core
Memory: 2 GB
Storage: 16 GB NVMe
1 TB
KVM-SSD-8
CPU: 2 Cores
Memory: 8 GB
Storage: 128 GB NVMe
4 TB
KVM-SSD-16
CPU: 4 Cores
Memory: 16 GB
Storage: 256 GB NVMe
8 TB
KVM-SSD-32
CPU: 8 Cores
Memory: 32 GB
Storage: 512 GB NVMe
16 TB

How to Deploy Evergreen ILS on Debian VPS

To deploy Evergreen ILS on Debian VPS, follow the steps below:

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  7. 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.

  8. 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
    
  9. 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
    
  10. 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
    
  11. 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
    
  12. 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
  13. Start Evergreen Services

    Start OpenSRF:

    /openils/bin/osrf_ctl.sh start_all
    

    Verify processes:

    ps aux | grep opensrf
    

    Restart Apache:

    systemctl restart apache2
    
  14. Access the Web Interface

    Open your browser:

    https://evergreen.example.com
    

    Default admin credentials:

    Username: egadmin
    Password: admin
    

    Immediately change the password after login.

  15. 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

Launch 100% ssd debian vps from $3. 19/mo!

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.

Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg