Skip to content
ricochet

Host

ricochet-server is distributed as native Linux packages and standalone binaries. This guide covers manual installation on a single host.

DistributionArchitecturePackage format
Debian / Ubuntuamd64, arm64.deb
AlmaLinux / RHEL / ELx86_64, aarch64.rpm
Other Linuxx86_64, aarch64.tar.gz
macOSApple Silicon.tar.gz
Windowsx86_64, arm64.zip

ricochet-server packages are published to S3 buckets.

Terminal window
VERSION=$(curl -s https://ricochet.rs/releases.json | grep -o '"latest": *"[^"]*"' | grep -o 'v[0-9.]*')
ARCH=$(dpkg --print-architecture)
curl -fLO https://s3.eu-central-003.backblazeb2.com/ricochet-server/${VERSION#v}/ricochet-server_${VERSION#v}-1_${ARCH}.deb
sudo apt install ./ricochet-server_${VERSION#v}-1_${ARCH}.deb

The .deb and .rpm packages install the ricochet binary and a ricochet-server.service systemd unit.

In packaged .rpm and .deb installations of ricochet, the configuration file is stored at /var/lib/ricochet/ricochet-config.toml.
Create or edit this file with your deployment’s settings.

At a minimum you need to configure OIDC authentication:

/var/lib/ricochet/ricochet-config.toml
[auth.oidc]
issuer_url = "https://your-idp.example.com/"
client_id = "your-client-id"
client_secret = "your-client-secret"
redirect_url = "https://your-ricochet-host.example.com/oauth/callback"

Ensure appropriate permissions are set on the config file:

Terminal window
sudo chmod 0600 /var/lib/ricochet/ricochet-config.toml
sudo chown root:root /var/lib/ricochet/ricochet-config.toml
  1. Reload systemd to pick up the new unit file:

    Terminal window
    sudo systemctl daemon-reload
  2. Enable and start the service:

    Terminal window
    sudo systemctl enable --now ricochet-server.service
  3. Verify the service is running:

    Terminal window
    sudo systemctl status ricochet-server.service

ricochet-server listens on port 6188 by default.

The standalone binary can run either as a blocking foreground process or as a daemonized background process.

The .deb and .rpm packages configure these prerequisites automatically. Complete these steps only when installing the standalone binary.

Install newuidmap and newgidmap:

Terminal window
sudo apt update
sudo apt install uidmap

Grant the account that runs ricochet at least 65,536 subordinate user and group IDs. The following example configures root, which is the account used by the packaged systemd service. Choose an unused range if 100000-165535 is already allocated in /etc/subuid or /etc/subgid:

Terminal window
sudo usermod --add-subuids 100000-165535 root
sudo usermod --add-subgids 100000-165535 root

On Ubuntu 23.10 and later, create and load an AppArmor profile that permits ricochet to create unprivileged user namespaces:

Terminal window
sudo ricochet setup-apparmor

Verify that user namespaces, subordinate ID mappings, and AppArmor are configured for the account that will run ricochet:

Terminal window
sudo ricochet check-security

By default, ricochet start runs in the foreground and prints logs to stdout and stderr:

Terminal window
ricochet start --config /path/to/ricochet-config.toml

The --config flag specifies the path to your ricochet-config.toml. If omitted, ricochet looks for ricochet-config.toml in the current working directory, so it is recommended to always pass --config with an explicit path.

Use --daemon when you want ricochet to keep running after your terminal session ends. This is useful on remote servers where you do not want the process tied to your SSH connection. This is similar to running ricochet through systemd, which is what the .rpm and .deb installers do by default. For production use, the prepackaged installers are recommended over the standalone binary.

Pass --daemon to detach the process and run it in the background:

Terminal window
ricochet start --config /path/to/ricochet-config.toml --daemon

When running as a daemon, ricochet writes the following files under RICOCHET_HOME:

FilePurpose
ricochet.pidProcess ID of the running daemon
ricochet.stdoutStandard output from the process
ricochet.errStandard error from the process

ricochet.stdout and ricochet.err capture raw process output such as startup errors, panics, and anything printed before the logging system initializes. They are separate from the structured log files written by the [logs] configuration. For operational logging, configure [logs] in your ricochet-config.toml. See File Logging for configuration options.

Use ricochet stop to gracefully stop a daemonized process:

Terminal window
ricochet stop --config /path/to/ricochet-config.toml

If you passed a custom --config path to ricochet start, pass the same path to ricochet stop so it can locate the correct ricochet.pid file.

To upgrade to a new version, download the new package and install it over the existing one.

Terminal window
VERSION=$(curl -s https://ricochet.rs/releases.json | grep -o '"latest": *"[^"]*"' | grep -o 'v[0-9.]*')
ARCH=$(dpkg --print-architecture)
curl -fLO https://s3.eu-central-003.backblazeb2.com/ricochet-server/${VERSION#v}/ricochet-server_${VERSION#v}-1_${ARCH}.deb
sudo apt install ./ricochet-server_${VERSION#v}-1_${ARCH}.deb
sudo systemctl restart ricochet-server.service

ricochet-server is distributed as a standalone binary for Apple Silicon Macs. Intel Macs are not supported.

Download and install the latest release:

Terminal window
VERSION=$(curl -s https://ricochet.rs/releases.json | grep -o '"latest": *"[^"]*"' | grep -o 'v[0-9.]*')
curl -fLO https://s3.eu-central-003.backblazeb2.com/ricochet-server/${VERSION#v}/ricochet-${VERSION#v}-aarch64-macos.tar.gz
tar -xzf ricochet-${VERSION#v}-aarch64-macos.tar.gz
chmod +x ricochet-server
sudo mv ricochet-server /usr/local/bin/ricochet-server

Keep the ricochet-server name so that the server does not shadow the ricochet CLI, which is commonly installed on the same machine.

Create a configuration file as described in Configure, set home to an absolute writable path, and start the server in the foreground:

Terminal window
ricochet-server start --config /path/to/ricochet-config.toml

The macOS binary does not include a service definition or vendored language dependencies. Install uv, juliaup, and renv separately when you need the corresponding runtimes.

ricochet-server is distributed as a standalone executable for x86_64 and arm64 Windows. Run these commands in PowerShell, replacing x86_64 with aarch64 on Windows arm64:

Terminal window
$Version = (Invoke-RestMethod https://ricochet.rs/releases.json).latest.TrimStart("v")
Invoke-WebRequest "https://s3.eu-central-003.backblazeb2.com/ricochet-server/$Version/ricochet-$Version-x86_64-windows.zip" -OutFile "ricochet-$Version-x86_64-windows.zip"
Expand-Archive "ricochet-$Version-x86_64-windows.zip" -DestinationPath . -Force
New-Item -ItemType Directory -Force "$env:LOCALAPPDATA\Programs\Ricochet" | Out-Null
Move-Item .\ricochet-server.exe "$env:LOCALAPPDATA\Programs\Ricochet\ricochet-server.exe" -Force

Keep the ricochet-server.exe name so that the server does not shadow the ricochet CLI, which is commonly installed on the same machine.

Add %LOCALAPPDATA%\Programs\Ricochet to your user PATH, then create a configuration file as described in Configure. Set home to an absolute writable Windows path.

Start the server in the foreground:

Terminal window
ricochet-server start --config C:\path\to\ricochet-config.toml

Windows does not support ricochet-server start --daemon or ricochet-server stop. Stop the foreground server with Ctrl+C, or configure it with a Windows service manager. The Windows binary does not include vendored language dependencies.

Ricochet works without any interpreters installed. However, if you plan to deploy R, Python, or Julia content, you must install the respective interpreters on the host machine. Container and Kubernetes deployments bundle their own interpreters and do not require this step.

The .deb and .rpm packages bundle the following tools so that ricochet can manage language environments without relying on system-installed versions:

ToolVendor pathPurpose
uvRICOCHET_HOME/vendor/py/uvPython package management, running Python content, and Python version discovery
juliaupRICOCHET_HOME/vendor/jl/juliaupManaging Julia environments and Julia version discovery
renvRICOCHET_HOME/vendor/r/renvR package environment restoration

When using the systemd service, RICOCHET_HOME defaults to /var/lib/ricochet/data. See the storage configuration for more details.

If deploying Python-based content, Ricochet will discover Python installations on the host. We encourage installing Python via uv for the best experience managing multiple Python versions.

Terminal window
uv python install <version>

We recommend using rig to install R:

Terminal window
rig add <version>

You can also install R from CRAN or your distribution’s package manager. However, if you want to make use of multiple R versions, rig is the easiest and most flexible option.

If deploying Julia-based content, Ricochet uses juliaup to discover installed Julia channels. Julia must be installed via juliaup. Only juliaup-managed Julia installations are supported.

Terminal window
juliaup add <version>

If you manage your infrastructure with Ansible, the devxy.data_science_core collection provides roles for installing R, Python, and their system dependencies:

Terminal window
ansible-galaxy collection install devxy.data_science_core
roles:
- role: devxy.data_science_core.r
- role: devxy.data_science_core.python

The interpreters may require additional system libraries for compiling packages at runtime.
Here’s a baseline of system libraries which we recommend installing:

Terminal window
sudo apt install \
libgit2-dev libxml2-dev libharfbuzz-dev libfreetype-dev libfontconfig-dev \
libgdal-dev libproj-dev libgeos-dev libjq-dev libmagick++-dev \
libnetcdf-dev libfribidi-dev jags libglpk-dev libpng-dev \
libsecret-1-dev poppler-utils libreadline-dev unixodbc-dev \
default-jdk-headless libicu-dev libudunits2-dev libsodium-dev \
zlib1g-dev libglu1-mesa-dev libcairo2-dev git freetds-common \
libv8-dev librsvg2-dev libsqlite3-dev libpq-dev libgmp3-dev libmpfr-dev
Terminal window
sudo systemctl stop ricochet-server.service
sudo systemctl disable ricochet-server.service
sudo apt purge ricochet-server

The configuration file at /var/lib/ricochet/ricochet-config.toml is not removed automatically. Delete it manually if it is no longer needed.