> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# System requirements and preparation

export const Comments = ({children}) => {
  return <div class="my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border border-zinc-500/20 bg-zinc-50/50 dark:border-zinc-500/30 dark:bg-zinc-500/10" data-callout-type="comments">
      <div class="w-4">
        <svg width="14" height="14" viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" aria-label="Comments">
            <path d="M320 112C434.9 112 528 205.1 528 320C528 434.9 434.9 528 320 528C205.1 528 112 434.9 112 320C112 205.1 205.1 112 320 112zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM280 400C266.7 400 256 410.7 256 424C256 437.3 266.7 448 280 448L360 448C373.3 448 384 437.3 384 424C384 410.7 373.3 400 360 400L352 400L352 312C352 298.7 341.3 288 328 288L280 288C266.7 288 256 298.7 256 312C256 325.3 266.7 336 280 336L304 336L304 400L280 400zM320 256C337.7 256 352 241.7 352 224C352 206.3 337.7 192 320 192C302.3 192 288 206.3 288 224C288 241.7 302.3 256 320 256z" />
        </svg>
      </div>
      <div class="text-sm prose min-w-0 w-full">
        {children}
      </div>
    </div>;
};

## System requirements

The installer is a self-extracting binary that contains all of the necessary components to run JupyterHub services. Before you install JupyterHub onto your Linux server, make sure that it meets all the following requirements:

### System setup requirements

The following prerequisites must be in place before installation:

* Linux variant with `systemd` version 245 or later
* SELinux must be disabled or in `permissive` mode
* Kernel with `memory cgroups` and `CFS scheduling` enabled
* Root access for JupyterHub (for `systemd-run`)
* FQDN, DNS record, and TLS/SSL certificate

<Warning>
  Amazon Linux does not include `libxcrypt-compat`, which causes nginx services to error when starting.\
  If you receive a `libcrypt.so.1` error post installation, install the `libxcrypt-compat` package:

  ```sh theme={null}
  sudo yum install libxcrypt-compat
  ```
</Warning>

### Hardware requirements

Because all users share the same pool of resources on the server, hardware requirements for running JupyterHub vary depending on the number of users accessing the server at any one time. Use the following formulas to determine your hardware requirements:

* Recommended RAM = (maximum active users x maximum memory per user) + 1GB
* Recommended CPUs = (maximum active users x maximum CPU usage per user) + 20%
* Recommended disk storage = (total users x maximum disk usage per user) + 2 GB

Check available resources with:

```sh theme={null}
cat /proc/cpuinfo
cat /proc/meminfo
df -h
```

### Networking requirements

#### TLS/SSL

The JupyterHub integration requires TLS/SSL certificates to secure traffic. The installer includes a `DIY-SSL-CA` package to generate self-signed certificates, if needed.

<Warning>
  If you are using third-party CA certificates, verify your SSL chain via `openssl`. The command must return `0` for user authentication to succeed.

  ```sh theme={null}
  openssl s_client -connect <jupyterHostName>:443 -CAfile <CA_CERT> -verify_return_error
  ```

  <Comments>
    Replace \<jupyterHostName> with your JupyterHub server domain.<br />
    Replace \<CA\_CERT> with the path to your CA certificate.
  </Comments>
</Warning>

#### DNS

DNS must be configured prior to installation to support HTTPS.

<Note>
  Add your JupyterHub server domain to `/etc/hosts` so the server is accessible via HTTPS:

  ```sh theme={null}
  echo "127.0.0.1 ${HOSTNAME}" >> /etc/hosts
  ```

  <Comments>
    Replace \<HOSTNAME> with your JupyterHub server domain.
  </Comments>
</Note>

#### Firewall

Restrict inbound access to only required ports:

* `:443` nginx for HTTPS
* `:22` ssh (optional) for remote access

## System validation check

To validate that your system is ready for installation, run the validation check and compare the results against the above requirements:

```sh theme={null}
echo "=== System Information ==="
echo "Kernel Release and Processor Type:"
uname -a

echo "OS Release:"
cat /etc/os-release

echo "systemd Version:"
systemctl --version

echo "Memory Cgroups and CFS Scheduling:"
grep cgroup /proc/filesystems

echo "User ID:"
id -u

echo "Hostname (FQDN):"
hostname -f

echo "=== Hardware Requirements ==="
echo "CPU Info:"
cat /proc/cpuinfo

echo "Memory Info:"
cat /proc/meminfo

echo "Disk Space:"
df -h
```

After verifying all requirements have been met, proceed with [Installing JupyterHub](/anaconda-platform/cloud/admin/integrations/jupyterhub/install).
