Install Harbor on Ubuntu 24.04

By Raman Kumar

Updated on Nov 17, 2025

In this tutorial, we'll learn how to install and configure Harbor on Ubuntu 24.04.

Harbor has slowly become the grown-up in the container registry room. When teams outgrow the limitations of the basic Docker Registry and want RBAC, vulnerability scanning, replication, HA, and proper enterprise controls, Harbor steps in like the responsible adult nobody asked for but everyone ends up relying on.

If you're running a hosting company, data center, or DevOps stack that needs a private, secure, and scalable registry, Harbor is the answer. Below is a full, production-grade guide to install and configure Harbor as a private container registry on Ubuntu 24.04.

Why Harbor?

Harbor is an open-source cloud-native registry maintained by the CNCF. It adds critical features such as:

  • Role-based access control (RBAC)
  • Image replication between multiple registries
  • CVE vulnerability scanning
  • Project-based isolation
  • OAuth/LDAP authentication
  • Policy-based retention
  • Notary for image signing
  • HTTPS + certificate management
  • High availability support

Perfect for enterprises, SRE teams, hosting providers, and DevOps pipelines that need more than “just push your image here and hope for the best.”

Prerequisites

Before we begin, ensure we have the following:

  • An Ubuntu 24.04 on dedicated server or KVM VPS.
  • Basic Linux Command Line Knowledge.
  • A domain name pointing A record to server IP.

How to Install Harbor on Ubuntu 24.04

1. Install Docker

sudo apt update && sudo apt upgrade -y
sudo apt install ca-certificates curl gnupg lsb-release -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Enable Docker

sudo systemctl enable --now docker

Download and Install Harbor (Harbor installation guide)

1. Download Harbor Installer

For latest stable version, visit official Github repository

wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-online-installer-v2.14.0.tgz

Extract it:

tar -xvf harbor-online-installer-v2.14.0.tgz
cd harbor

2. Configure Firewall

Harbor use 80 and 443 ports.

ufw allow 80,433/tcp
ufw reload

3. Generate SSL Certificates (Harbor registry HTTPS)

You must run Harbor on HTTPS if you want your Kubernetes clusters or Docker clients to trust it.

Create directories

sudo mkdir -p /data/certs
cd /data/certs

Install Certbot

sudo apt update
sudo apt install certbot -y

Obtain the SSL Certificate (Standalone Mode)

Replace with your real Harbor domain:

sudo certbot certonly --standalone -d registry.example.com

This spins up a temporary ACME server on port 80 → validates → installs cert here:

/etc/letsencrypt/live/registry.example.com/fullchain.pem
/etc/letsencrypt/live/registry.example.com/privkey.pem

Copy certificates:

cp /etc/letsencrypt/live/registry.example.com/fullchain.pem /etc/letsencrypt/live/registry.example.com/privkey.pem /harbor/certs/

4. Configure Harbor (Harbor configuration steps)

Inside the extracted Harbor folder:

cd ~/harbor
cp harbor.yml.tmpl harbor.yml

Edit the main config:

sudo nano harbor.yml

Important fields:

hostname: registry.example.com

http:
  port: 80

https:
  port: 443
  certificate: /data/certs/fullchain.pem
  private_key: /data/certs/privkey.pem

harbor_admin_password: StrongAdminPassword123!

database:
  password: StrongDBPassword123!

external_url: https://registry.example.com

Save and exit.

Install Harbor

Run the installer:

sudo ./install.sh

If everything goes well, Harbor will spin up around 10 containers:

docker ps

5. Access Harbor Web UI

Navigate to:

https://registry.example.com

harbor login hostperl

Default credentials:

username: admin
password: StrongAdminPassword123!

Push and Pull Workflow (Deploy Harbor on Ubuntu)

Login from Docker client:

docker login registry.example.com

Tag image:

docker tag nginx:latest registry.example.com/library/nginx:latest

Push image:

docker push registry.example.com/library/nginx:latest

Pull image:

docker pull registry.example.com/library/nginx:latest

Enable Vulnerability Scanning

Harbor integrates Trivy for CVE scanning.

Steps:

  • Go to Administration → Scanners
  • Set Trivy as the default
  • Enable “Prevent vulnerable images from pulling” (optional)
  • Scan image manually or schedule scanning

Conclusion

Harbor takes your private container registry from hobby-level to production-grade. With HTTPS, RBAC, vulnerability scanning, replication, and a polished UI, it's built for real-world DevOps use.

By following this guide, you now have a fully operational Harbor registry running on Ubuntu 24.04, ready for Kubernetes clusters, CI/CD pipelines, and large-scale deployments. If you're running a hosting business or a data center, Harbor should be one of the first tools in your infrastructure toolbox.

FAQs

1. Is Harbor better than Docker Registry?
Yes. Docker Registry is minimal and lacks RBAC, UI, CVE scanning, and replication. Harbor is enterprise-ready.

2. Does Harbor require HTTPS?
Yes. Docker and Kubernetes clients refuse insecure registries unless you manually override settings. Use HTTPS.

3. Does Harbor support Notary image signing?
Yes. You can enable Notary to sign and verify images to prevent tampering.

4. Can Harbor be used in Kubernetes?
Absolutely. Harbor is widely used as a private registry backend for Kubernetes clusters.

5. What ports does Harbor use?

443 (HTTPS)
80 (HTTP)
Additional internal ports for services (Redis, DB)