---
layout: default
navsection: installguide
title: Automatic single-node install
...
{% comment %}
Copyright (C) The Arvados Authors. All rights reserved.

SPDX-License-Identifier: CC-BY-SA-3.0
{% endcomment %}

{% include 'notebox_begin' %}
This installation method is not fully implemented, which is why this page is not yet listed in the "table of installation options":{{site.baseurl}}/install/index.html or in the left nav.
{% include 'notebox_end' %}

This method sets up a new Arvados cluster using a single host/VM. It is the easiest way to get a new production cluster up and running.

A single-node installation supports all Arvados functionality at small scale. Substantial workloads will require additional nodes and configuration steps.

h2. Prerequisites

You will need:
* a server host running Debian 11 (bullseye) or Debian 12 (bookworm).
* a unique 5-character ID like @x9999@ for your cluster (first character should be @[a-w]@ for a long-lived / production cluster; all characters are @[a-z0-9]@).
* a DNS name like @x9999.example.com@ that resolves to your server host (or a load balancer / proxy that passes HTTP requests on port 80[1] and HTTPS requests on ports 443 and 4440-4460 through to the same port on your server host).
* a firewall setup that allows incoming connections to ports 80[1], 443, and 4440-4460.

fn1. Port 80 is only used to obtain TLS certificates automatically from Let's Encrypt. It is not needed if you have another way to provision certificates.

h2. Options

Arvados needs a PostgreSQL database. To get started quickly, install the postgresql-server package on your server host.

<pre>
# apt install postgresql
</pre>

Arvados normally uses cloud VMs or a Slurm/LSF cluster to run containers. To get started quickly, install Docker on your system host. The @arvados-server init@ command, as shown below, will configure Arvados to run containers on the system host.

<pre>
# apt install docker.io
</pre>

Arvados needs a login backend. To get started quickly, add a user account on your server host and assign a password. The @arvados-server init ... -login pam@ option, as shown below, will configure Arvados so you can log in with this username and password.

<pre>
# adduser exampleUserName
</pre>

h2. Initialize the cluster

{% assign packages_to_install = "arvados-server-easy" %}
{% include 'setup_debian_repo' %}

Then initialize your cluster:

<notextile>
<pre><code># <span class="userinput">arvados-server init -cluster-id x9999 -domain x9999.example.com -tls acme -login pam</span>
</code></pre>
</notextile>

When the "init" command is finished, navigate to the link shown in the terminal (e.g., @https://x9999.example.com/@) and log in with the account you created above.

Activate your new Arvados user account. Copy the UUID (looks like @x9999-tpzed-xxxxxxxxxxxxxxx@) from your browser's location bar and run:

<notextile>
<pre><code># <span class="userinput">arv sudo user setup --uuid x9999-tpzed-xxxxxxxxxxxxxxx</span>
</code></pre>
</notextile>

Run the diagnostics tool to ensure everything is working.

<notextile>
<pre><code># <span class="userinput">arv sudo diagnostics</span>
</code></pre>
</notextile>

h2. Customize the cluster

Things you should plan to update before using your cluster in production:
* "Set up Google login":{{site.baseurl}}/install/setup-login.html or another authentication option.
* "Set up a wildcard TLS certificate and DNS name,":{{site.baseurl}}/install/install-manual-prerequisites.html#dnstls or enable @TrustAllContent@ mode.
* Update storage configuration to use a cloud storage bucket ("S3":{{site.baseurl}}/install/configure-s3-object-storage.html or "Azure":{{site.baseurl}}/install/configure-azure-blob-storage.html) instead of the local filesystem.
* Update "CloudVMs configuration":{{site.baseurl}}/install/crunch2-cloud/install-dispatch-cloud.html to use a cloud provider to bring up VMs on demand instead of running containers on the server host.

h2. Updating configuration

After updating your configuration file (@/etc/arvados/config.yml@), notify the server:

<pre>
# systemctl reload arvados-server
</pre>

Optionally, add "AutoReloadConfig: true" at the top of @/etc/arvados/config.yml@. Arvados will automatically reload the config file when it changes.

<pre>
AutoReloadConfig: true
Clusters:
  [...]
</pre>