Advanced Training:

Getting Started

June 29 - July 2, 2026

iRODS User Group Meeting 2026

Barcelona, Spain

Little Slips of Paper & Dependencies

curl -LO https://github.com/irods/irods_training/raw/ugm2026/training.pem
chmod 600 training.pem
ssh -i training.pem ubuntu@#.#.#.#

Log into your VM.

Install iRODS Build Requirements.

sudo apt update

sudo apt install -y git unzip jq wget curl less gnupg2 lsb-release \
  odbc-postgresql pkgconf

Disable the needrestart prompts.

echo "\$nrconf{restart} = 'a';" |
  sudo tee /etc/needrestart/conf.d/no-prompt.conf > /dev/null

Acquire the Prerequisites

Clone the training repository.

git clone https://github.com/irods/irods_training

Install and configure PostgreSQL

DEBIAN_FRONTEND=noninteractive sudo -E apt -y install postgresql
sudo pg_ctlcluster --skip-systemctl-redirect 16/main start
sudo sed -i 's/CommLog=1/CommLog=0/' /etc/odbcinst.ini
sudo su - postgres

As the ubuntu user, install and start the database.

postgres $ psql
CREATE DATABASE "ICAT";
CREATE USER irods WITH PASSWORD 'testpassword';
GRANT ALL PRIVILEGES ON DATABASE "ICAT" to irods;
ALTER DATABASE "ICAT" OWNER TO irods;
\q
postgres $ exit

As the postgres user, prepare the database for iRODS use.

Install and configure Rsyslog

sudo apt install -y rsyslog

As the ubuntu user ...

$FileCreateMode 0644
$DirCreateMode 0755
$Umask 0000
$template irods_format,"%msg%\n"
:programname,startswith,"irodsServer" /var/log/irods/irods.log;irods_format & stop
:programname,startswith,"irodsAgent" /var/log/irods/irods.log;irods_format & stop
:programname,startswith,"irodsDelayServer" /var/log/irods/irods.log;irods_format & stop

Edit /etc/rsyslog.d/00-irods.conf (requires sudo).

Install rsyslog.

Restart rsyslog.

sudo systemctl restart rsyslog

Configure the Repository, Install, Run setup

wget -qO - https://packages.irods.org/irods-signing-key.asc | \
  sudo gpg \
  --no-options \
  --no-default-keyring \
  --no-auto-check-trustdb \
  --homedir /dev/null \
  --no-keyring \
  --import-options import-export \
  --output /etc/apt/keyrings/renci-irods-archive-keyring.pgp \
  --import
echo "deb [signed-by=/etc/apt/keyrings/renci-irods-archive-keyring.pgp arch=amd64] \
  https://packages.irods.org/apt/ $(lsb_release -sc) main" | \
  sudo tee /etc/apt/sources.list.d/renci-irods.list
sudo apt update
sudo apt install -y irods-server irods-database-plugin-postgres

Install public key and add repository.

Install from repository.

sudo python3 /var/lib/irods/scripts/setup_irods.py < \
  /var/lib/irods/packaging/localhost_setup_postgres.input

Run setup with provided input file.

Start the iRODS server

sudo fallocate -l 3G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show

As the ubuntu user, swap space to the VM for some heavy stuff later ...

The server log will be located at /var/log/irods/irods.log.

irodsServer -d
# Wait for server to start up...
ils

As the irods user, start iRODS server and run ils to make sure things are working.

Docker

Exit the shell and log back in to evaluate the new group.

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt-get update
sudo apt-get install -y docker-ce
sudo usermod -aG docker $USER

As the ubuntu user, install and configure Docker. We will use it in many of our training modules.

Run docker ps to ensure you can do so without sudo.

$ docker ps
CONTAINER ID   IMAGE   COMMAND    CREATED    STATUS     PORTS      NAMES

What to Consider in an iRODS Deployment

Things to consider

  • Number of users and expected simultaneous connections

  • Expected ingest rate

  • Sizes of files

    • Many small files (more overhead per connection)

  • Partial read / write vs whole file usage

  • Replication for durability

  • Replication for locality of reference

  • Load balancing vs High Availability

iRODS will run on a laptop or a rack of servers.

Upgrading Large Installations

Things to consider

  • Database Snapshots

  • Maintenance Window

  • Attempt a graceful grid-wide shutdown ahead of time

  • Test Zones - do not upgrade blindly

  • Conformance Tests - try your edge cases

  • Federated Zones - how mixed is your deployment

Questions?

Anatomy of an iRODS installation

/etc/irods/core.* - iRODS Rule Language

/etc/irods/server_config.json - primary server configuration

/etc/irods/service_account.config - service account information

/usr/bin/* - iCommands

 

/usr/sbin/irodsAgent

/usr/sbin/irodsPamAuthCheck

/usr/sbin/irodsDelayServer

/usr/sbin/irodsServer

 

/var/run/irods - holds the server's pid file

 

/var/lib/irods - service account home directory

 

/var/log/irods - log files

 

/usr/lib/irods/plugins - plugins location

Introduction to iCommands

iRODS command line equivalent to standard Unix operations

  • ils

  • icd

  • ipwd

  • iput

  • iget

  • irepl

 

use -h to get help with any particular iCommand

 

ihelp will show all available iCommands

 

Questions?

UGM 2026 - Getting Started

By iRODS Consortium

UGM 2026 - Getting Started

iRODS User Group Meeting 2026 - Advanced Training Module

  • 91