Skip to content

# Installation

Whether you are getting started for the first time, looking to build a local lab or ready to build a production environment, there are a variety of options to find the right fit for your needs with using Nautobot.

Checking out Nautobot for the first time? Not ready to install anything yet?

You can explore the Nautobot Always-On Sandbox Environments. There is sample data already prepopulated, no installation required, and several Nautobot Apps are pre-installed, with sample data.

## Deployment Options

Bare metal / Virtual Machine Docker Compose Kubernetes Helm Charts Nautobot Cloud

You can install Nautobot onto a RHEL (Red Hat Enterprise Linux) or Ubuntu virtual machine.

Nautobot was designed to be a cross-platform application that can run on nearly any system that is able to run the required dependencies. Only the operating system platforms listed below are officially supported at this time.

- Red Hat flavors of Linux including Fedora 8.2+ and Red Hat Enterprise Linux (RHEL) 8.2+ are supported.
- Debian/Ubuntu flavors of Linux including Ubuntu 20.04+ and Debian 11+ are supported.

Nautobot should work on any POSIX-compliant system including practically any flavor of Linux, BSD, or even macOS, but those are not officially supported at this time.

### Bare metal / Virtual Machine Pros

- Familiar deployment option for many administrators
- Performance is generally higher without the overhead of virtualization
- Full control over hardware and software allows for greater customization and security practices

### Bare metal / Virtual Machine Cons

- Maintenance and high availability is more difficult than Docker or Cloud options
- Preparing server for production grade security and scaling requires additional effort

Nautobot can be deployed via Docker using Nautobot Docker images that are available either from:

- Docker Hub
- GitHub Container Registry

For local testing and lab work you can use the Nautobot Docker Compose project which leverages the container images above.

For more information about the Docker tags, Docker configurations, or using container images for your own development environment, see Nautobot in Docker.

### Docker Compose Pros

- Quick and simple setup for single-node lab environments and testing
- Lightweight alternative for those who don't need full Kubernetes orchestration

### Docker Compose Cons

- Docker compose on its own is missing advanced features like automated rollbacks, self-healing applications, and load balancing
- Limited scaling if on single host

You can install Nautobot via Helm Charts for Kubernetes documentation.

If you are looking for an example of what that process looks like in a development environment using `minikube`, you can check out the three part blog series covering deploying Nautobot to Kubernetes:

- Part 1
- Part 2
- Part 3

### Helm Charts Pros

- Helm charts serves as a package manager for Kubernetes, streamlining the deployment of complex applications within Kubernetes clusters
- Using Kubernetes features, you can manage large-scale deployments efficiently and ensure high-availability for production grade systems

### Helm Charts Cons

- Requires knowledge of Kubernetes and has a steeper learning curve for setting up
- Kubernetes clusters can use a lot of resources and monitoring effort

Nautobot Cloud is a commercial Software as a Service (SaaS) offering from Network to Code. It is the easy button for Nautobot. It offers self-service and turnkey deployment for Nautobot removing the need for infrastructure setup and maintenance including one-click upgrades, clones, backups and restores, and a marketplace to streamline Nautobot App installations.

### Nautobot Cloud Pros

- One-click Nautobot deployments and upgrades
- Enterprise grade dashboards to see trends of Nautobot data across all Nautobot instances
- Click to install apps from Nautobot Cloud Marketplace
- Cloud-based database snapshots
- One-click deployments of Ansible AWX too

### Nautobot Cloud Cons

- You’ll have to find something else to do with all that freed-up time now that you’re not maintaining on-prem applications and infrastructure.

## About Dependencies

This section describes the system dependencies required for Nautobot. They can be all installed on a single system, or distributed across your environment. That will be up to you. Our install instructions assume a single system install, and that is good for most use cases. More advanced configurations are also possible, but are not covered here.

### Mandatory dependencies

The following minimum versions are required for Nautobot to operate:

Dependency | Role | Minimum Version
--- | --- | ---
Python | Application | 3.10
PostgreSQL | Database | 12.0
MySQL | Database | 8.0
Redis | Cache, Queue | 4.0
Git | Additional | 2.0

Nautobot will not work without these dependencies.

#### Python

Nautobot is written in the Python programming language. The official Python package installer is called Pip, and you will see the `pip` command referenced often to install or update Python packages.

Added in version 2.3.0 — Python 3.12 support added

Python 3.12 support was added.

Removed in version 2.4.0 — Python 3.8 support removed

Python 3.8 support was removed.

Removed in version 2.4.20 — Python 3.9 support removed

Python 3.9 support was removed.

#### Database

Nautobot uses a relational database to store its data. Both MySQL and PostgreSQL are officially supported.

Removed in version 2.1.0 — PostgreSQL minimum version became 12.0

Support for versions of PostgreSQL older than 12.0 was removed.

Only one database

Either PostgreSQL or MySQL must be selected, but not both.

MySQL PostgreSQL

MySQL is an open-source relational database management system that’s relatively easy to set up and manage, fast, reliable, and well-understood.

PostgreSQL is a powerful, feature-rich open source relational database server that can handle complex queries and massive databases.

#### Redis

Redis is an open source, in-memory data store which Nautobot employs for caching and queuing.

### Optional dependencies

Optional dependency information

Nautobot will still operate without these optional dependencies, but would likely not be ready for use in a production environment without them. The installation and configuration of these dependencies are covered in the detailed guides which follow.

For production deployment we recommend the following:

- uWSGI WSGI server
- NGINX HTTP server
- External authentication service for SSO such as SAML, OAuth2, or LDAP, or an authenticating proxy

For additional features:

- NAPALM support for retrieving operational data from network devices
- Prometheus metrics for exporting application performance and telemetry data

## Upgrading

If you are upgrading from an existing installation, please consult the upgrading guide.