Skip to content

Requirements

Nexus is designed to run on a single server. The install script handles all software dependencies automatically — you don’t need to install Elixir, PostgreSQL, or Node.js on the host.

The installer supports:

  • Ubuntu 22.04 LTS (Jammy Jellyfish)
  • Ubuntu 24.04 LTS (Noble Numbat)
  • Ubuntu 26.04 LTS (Resolute Raccoon)

The install script uses Ubuntu’s codename to configure the Docker CE and Caddy apt repositories, so it works correctly across all three versions without modification.

There are no officially enforced minimums, but the following are practical guidelines based on what the stack actually runs:

MinimumRecommended
CPU1 vCPU2 vCPU
RAM1 GB2–4 GB
Disk10 GB20 GB+

RAM is the most important constraint. The Nexus container (Elixir/OTP), the PostgreSQL container, and the OS all share the host’s memory. 1 GB is tight but workable for a small community. 2 GB is comfortable. If you plan to store a large number of user uploads locally, size your disk accordingly.

The install script installs all of the following automatically. You do not need to pre-install anything beyond a clean Ubuntu server with root access and internet connectivity:

  • Docker CE — from Docker’s official apt repository. Includes docker-ce, docker-ce-cli, containerd.io, and docker-compose-plugin.
  • Caddy — from Caddy’s official apt repository. Handles HTTPS automatically via Let’s Encrypt.

Everything else — Elixir 1.17, Erlang/OTP, Phoenix 1.8, PostgreSQL 16, Node.js, libvips, and librsvg — runs inside Docker containers and never touches the host system.

  • A domain name with an A record pointing at your server’s public IP, set up before running the installer. Let’s Encrypt’s HTTP challenge needs to reach your server at that hostname to issue the TLS certificate.
  • Ports 80 and 443 open on your server’s firewall. Caddy uses port 80 for the ACME challenge and port 443 for HTTPS traffic.
  • Outbound internet access to reach GitHub (for downloading the release tarball), Docker Hub (for pulling container images), Let’s Encrypt, and the Caddy and Docker apt repositories.

Nexus can send transactional email (registration confirmations, password resets, digest emails, notifications) via:

  • Postmark — set POSTMARK_API_KEY in /opt/nexus/.env
  • Resend — set RESEND_API_KEY in /opt/nexus/.env

Without an email provider configured, Nexus will still run — email features simply won’t deliver. For a public community, configuring email delivery is strongly recommended.

By default, user uploads (avatars, post images, covers, logos) are stored on the local filesystem at /opt/nexus-data/uploads. This works well for most deployments.

If you need uploads to survive container rebuilds independent of the host, or want a CDN in front of your assets, you can switch to any S3-compatible object storage service — Cloudflare R2, AWS S3, Backblaze B2, and others — from the admin panel after install.