# Server requirements

URL: https://docs.nolay.ru/en/start/requirements/
Updated: 2026-09-23

> OS, resources, ports and network the installer checks before installing the agent.

The installer checks the server first and changes nothing until it is sure there are no blocking problems. Each check has a code, and the [error reference](/en/reference/errors/#group-preflight) says what to do about it.

## OS and resources

| What | Requirement |
|---|---|
| OS | Ubuntu 22.04 or newer, or Debian 12 or newer, with systemd |
| Architecture | x86_64. An aarch64 build exists but is not tested live |
| Memory | from 1 GB. With less than 2 GB and no swap, the installer creates a swap file |
| Disk | from 5 GB free on `/var/lib`; in practice take 20 GB or more |
| Rights | root or `sudo` during installation |

## Network

| Direction | What is needed |
|---|---|
| Outgoing | `get.nolay.ru` during install and updates, `api.nolay.ru:443` all the time |
| Incoming | 80 and 443 for project sites. The agent itself needs no inbound ports |
| Ports 80 and 443 | free: the Nolay proxy takes them |

If the server has no public address (a home server, an office network), inbound 80 and 443 are unreachable. Sites then work through the [tunnel behind NAT](/en/guides/tunnel/).

## What the installer sets up

1. A swap file, if memory is under 2 GB and there is no swap.
2. Docker from the official repository, if it is missing.
3. The Railpack and nixpacks builders at pinned versions.
4. The `nolay` user and the `/etc/nolay` and `/var/lib/nolay` directories.
5. The Caddy proxy image.
6. The agent binary `/usr/local/bin/nolay-agent`, its config, the secrets key and the `nolay-agent` systemd service.
7. `ufw` and `fail2ban` rules.

Running the installer again updates the agent and leaves the config, data and project containers alone.

## What blocks the install

| What was found | What to do |
|---|---|
| Ports 80 or 443 are taken by nginx, apache or a container | Stop them or run the installer with `--fix` |
| Another panel: Coolify, Dokploy, CapRover, Plesk, cPanel, ISPmanager, aaPanel, HestiaCP | Use a clean server |
| firewalld instead of ufw | Disable firewalld or run with `--no-firewall` |
| A Docker network overlaps `10.201.53.0/29` | Remove or recreate that network |

To check the server without installing, use `--check`:

```sh
curl -fsSL https://get.nolay.ru/install.sh | sudo sh -s -- --check
```

## Next

Go on to [connecting the server](/en/start/connect-server/).
