I, Librarian Local Storage Installation


We provide installers to get your server up and running on Windows, and major Linux distributions.

Read first

This package is a command line installer, it requires no GUI. Run it in the PowerShell console as an administrator. It installs I, Librarian Local Storage on Windows 10+, and Windows Server 2016+, as a self-contained application, which will not interfere with your existing server instance. I, Librarian stores your data in C:\ILibrarianStorage. Please back up this directory regularly.
The installer also provides a helper PowerShell script ilstorage, which you can use to perform some essential functions:
usage: ilstorage help
       ilstorage (start|stop|restart|status) (server|php|solr|dns|<empty string>)
       ilstorage allow -ip <IP number>
       ilstorage dns install -key <activation_key>
       ilstorage dns uninstall
       ilstorage tls -host <host>
       ilstorage upgrade -v <version>
       ilstorage uninstall

help      - this screen
start     - start the service(s)
stop      - stop the service(s)
restart   - restart or start the service(s)
status    - show the status of the service(s)
allow     - allow the IP number to access the web storage interface
upgrade   - upgrade to the version specified in the -v flag
dns       - install, uninstall the dynamic DNS service, activation key required to install
tls       - install a new TLS certificate for host
uninstall - uninstall this software DANGER! ALL STORED DATA WILL BE DELETED

Installation

  • First, download our installation package from the link we emailed you, and verify its integrity. Replace [KEY] with the actual link key:
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest https://i-librarian.net/download/[KEY] -OutFile i-librarian-storage-5.10.3-pro-windows.zip
    if((Get-FileHash i-librarian-storage-5.10.3-pro-windows.zip | Select-Object -ExpandProperty Hash).ToLower() -eq '0a1e8e2456d87fc99debf55cc0a5928cedf8408f9c000e1a0fc641e9e088fb75') { Write-Host 'Package is OK' } else { Write-Host 'Wrong package!' }
  • Extract the archive and run the installer:
    Expand-Archive i-librarian-storage-5.10.3-pro-windows.zip
    cd i-librarian-storage-5.10.3-pro-windows
    .\installer.ps1
  • You will be asked to connect your computer using a static IP, your domain name, or our dynamic DNS service. If you choose dynamic DNS, your activation code will be required. Also, if you want to use our dynamic DNS service, you must assign your router's public IP to your computer in the local network. You can accomplish this in the router firewall, in a section usually called IP passthrough. In there, assign the computer IP, or the MAC address, and restart.
  • You will be asked to choose how many GB of RAM to reserve for Apache Solr. Enter preset default, if you are not sure. The bigger the library, the more RAM is required.
  • Open the storage interface in a web browser at https://[PUBLIC IP/DOMAIN NAME]:38443, and follow the instructions to connect your server to our network. Please note that you may need to enable port 38443 (both UDP and TCP) in both your router, and computer firewall to be able to open the web interface.
  • To access the storage web interface, you must add your client IP to the allowed_ips list in ilibrarian.ini. Replace [YOUR IP] with the actual IP number:
    ilstorage allow -ip [YOUR IP]

Read first

This package installs I, Librarian Local Storage on the following x64 Linux distributions:
  • Ubuntu 22.04 (tested)
  • Fedora 36 (tested)
  • CentOS 9 Stream with EPEL (tested)
  • Rocky Linux 9 with EPEL (tested)
  • AlmaLinux 9 with EPEL (should work, not tested)
  • Manjaro (tested)
It uses native PHP packages, but will otherwise not interfere with your existing server instance. The installer places program files in /opt/i-librarian, configuration files in /etc/opt/i-librarian, and store data in /var/opt/i-librarian. Please back up this directory regularly.
The installer will also install a helper PowerShell script ilstorage, which you can use to perform some essential functions:
usage: ilstorage help
       ilstorage (start|stop|restart|status) (server|php|solr|dns|<empty string>)
       ilstorage allow -ip <IP number>
       ilstorage dns install -key <activation_key>
       ilstorage dns uninstall
       ilstorage tls -host <host>
       ilstorage upgrade -v <version>
       ilstorage uninstall

help      - this screen
start     - start the service(s)
stop      - stop the service(s)
restart   - restart or start the service(s)
status    - show the status of the service(s)
allow     - allow the IP number to access the web storage interface
upgrade   - upgrade to the version specified in the -v flag
dns       - install, uninstall the dynamic DNS service, activation key required to install
tls       - install a new TLS certificate for host
uninstall - uninstall this software DANGER! ALL STORED DATA WILL BE DELETED

Installation

  • First, download the installation package from the link we emailed you, and verify its integrity. Replace [KEY] with the actual link key:
    wget https://i-librarian.net/download/[KEY] -O i-librarian-storage-5.10.3-pro-linux.tgz
    if [ $(sha256sum 'i-librarian-storage-5.10.3-pro-linux.tgz' | awk '{print $1}') = 'ff466243d12b9e30eef8d3468bbe6913adbe94e44033139f30c18eb9a00f2004' ]; then echo 'Package is OK'; else echo 'Wrong package!'; fi
  • Unpack the archive and execute the installer. You must run it using sudo, or as root:
    tar xzf i-librarian-storage-5.10.3-pro-linux.tgz
    cd i-librarian-storage-5.10.3-pro-linux
    sudo bash install.sh
  • You will be asked to connect your computer using a static IP, your domain name, or our dynamic DNS service. If you choose dynamic DNS, your activation code will be required. Also, if you want to use our dynamic DNS service, you must assign your router's public IP to your computer in the local network. You can accomplish this in the router firewall, in a section usually called IP passthrough. In there, assign the computer IP, or the MAC address, and restart.
  • You will be asked to choose how many GB of RAM to reserve for Apache Solr. Enter preset default, if you are not sure. The bigger the library, the more RAM is required.
  • Open the storage interface in a web browser at https://[PUBLIC IP/DOMAIN NAME]:38443, and follow the instructions to connect your server to our network. Please note that you may need to enable port 38443 (both UDP and TCP) in both your router, and computer firewall to be able to open the web interface.
  • To access the storage web interface, you must add your client IP to the allowed_ips list in ilibrarian.ini. Replace [YOUR IP] with the actual IP number:
    ilstorage allow -ip [YOUR IP]

I, Librarian storage server has to meet requirements enumerated below. We do not provide help with their installation.

1. Apache Solr

Solr is used for the full text search. You should increase its memory allocation in solr.in.sh to at least 1-2g. Solr also requires Java.
Download Solr
Download OpenJDK

After you install Solr, there are a few steps that are required for I, Librarian to function:

  • Create a Solr core named "template":
    su - solr -c "/opt/solr/bin/solr create -c template -n data_driven_schema_configs"
  • Add library paths for UTF-8 support in solrconfig.xml inside the config tag. The exact file paths may differ in your Solr version:
      <lib path="/opt/solr/modules/analysis-extras/lib/solr-analysis-extras-9.0.0.jar" />
      <lib path="/opt/solr/modules/analysis-extras/lib/lucene-analysis-icu-9.0.0.jar" />
      <lib path="/opt/solr/modules/analysis-extras/lib/icu4j-68.2.jar" />
  • Reload the template core:
    curl 'http://localhost:8983/api/cores/template/?action=RELOAD'
  • Copy the template conf files to a configsets directory:
    mkdir -p /var/solr/data/configsets/template
    cp -R /var/solr/data/template/conf /var/solr/data/configsets/template
    chown -R solr:solr /var/solr/data/configsets
2. Web server with PHP

Any web sever will do. PHP version 8 is required, with the following extensions: curl, gd, intl, json, mbstring, sodium, sqlite3, xml, zip.

  • Additionally, our software requires a SourceGuardian loader PHP extension. Add the loader path at the end of the php.ini file:
    zend_extension = "/path/to/ixed.8.1.lin"

All data transfer must be encrypted, therefore a TLS certificate is required. The default self-signed certificate included with Apache will not work for I, Librarian.

  • You may create a self-signed certificate matching your hostname, or IP in the web storage interface, or using a tool included in the source package:
    php certificate.php [HOSTNAME OR SERVER IP]

You can also use a certificate authority (CA)-signed certificate, if you have one installed.

3. Shared libraries

We use poppler-utils, ghostscript, and zip. They are included in the Windows source package, and are common libraries on all Linux platforms.

4. Install I, Librarian Storage

I, Librarian source can be installed in these steps, with examples below:

  • Unpack the source package outside the web root directory:
    Expand-Archive source.zip -DestinationPath "C:\ILibrarianStorage"
    tar xzf source.tgz -C /var/www/i-librarian
  • Make data directory writable by the web server on Linux:
    chmod 0777 -R /var/www/i-librarian/data
  • Point the web server to the public directory using a symbolic link, server alias, or virtual host configuration, example:
    Alias /librarian /var/www/i-librarian/public
    <Directory /var/www/i-librarian/public>
        AllowOverride All
        Require all granted
    </Directory>
  • To access the storage web interface, you must add your client IP to the allowed_ips list in ilibrarian.ini. Replace [YOUR IP] with the actual IP number:
    (Get-Content "C:\ILibrarianStorage\etc\config\ilibrarian.ini").replace('allowed_ips = "', 'allowed_ips = "[YOUR IP],') | Set-Content "C:\ILibrarianStorage\etc\config\ilibrarian.ini"
    sed -i 's/allowed_ips \= "/allowed_ips \= "[YOUR IP],/' /var/www/i-librarian/config/ilibrarian.ini
  • Open the storage web interface in a web browser at https://[SERVER_IP/DOMAIN_NAME]/librarian, and follow the instructions to connect your server to our network.