> For the complete documentation index, see [llms.txt](https://asus-isg-aidc.gitbook.io/guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://asus-isg-aidc.gitbook.io/guide/latest/portal/overview/service-catalog/harbor.md).

# Harbor

| Developer | Last modified |
| --------- | ------------- |
| AIDC Team | 2026/08/21    |

## Service Introduction

**Harbor** is an open-source, enterprise-class container image registry with advanced security features, identity management, and image vulnerability scanning. It extends Docker Distribution by adding functionalities like security, identity, and management, making it ideal for enterprise container environments.

![](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/marketplace/service-catalog-harbor.png)

### Quick Summary

| Item                          | Details                                       |
| ----------------------------- | --------------------------------------------- |
| ⏱️ **Estimated Time**         | 10-20 minutes (depends on node count)         |
| 💻 **Supported Platforms**    | See the **Supported Platforms Matrix**        |
| 🔧 **Minimum Nodes Required** | 2 nodes (Server × 1, Client × 1+)             |
| 📦 **Included Components**    | Harbor Registry, Harbor Portal, Clair, Notary |

***

## Prerequisites

Before starting the deployment, ensure the following requirements are met:

### Hardware Requirements

| Role              | Minimum Spec                  | Recommended Spec               |
| ----------------- | ----------------------------- | ------------------------------ |
| **Harbor Server** | 4 vCPU / 8GB RAM / 100GB Disk | 8 vCPU / 16GB RAM / 500GB Disk |
| **Harbor Client** | 2 vCPU / 4GB RAM / 50GB Disk  | 4 vCPU / 8GB RAM / 100GB Disk  |

### Network Requirements

* ✅ All nodes must be in the **same network segment** or have routing enabled
* ✅ Firewall rules must allow HTTPS traffic (port 443)
* ✅ DNS resolution must be properly configured

### Other Requirements

* ✅ Nodes have been provisioned and are in **Ready** state
* ✅ SSH access between nodes is configured
* ✅ Docker engine is installed on client nodes (if not, will be installed automatically)

***

## Deployment Dialog Introduction

Harbor deployment is divided into **2 steps**:

```mermaid
flowchart LR
    Step1["Step 1: Group Selection & Password"]
    Review["Step 2: Review and Deploy"]

    Step1 --> Review
```

[Step 1: Group Selection & Password](#step-1-group-selection--password) | [Step 2: Review and Deploy](#step-2-review-and-deploy)

***

### Step 1: Group Selection & Password

![](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/marketplace/service-catalog-harbor-step1.png)

| Parameter Name            | Type   | Description                                  |   Required  | Validation Rules                                                 | Example         |
| ------------------------- | ------ | -------------------------------------------- | :---------: | ---------------------------------------------------------------- | --------------- |
| **Harbor Server Group**   | string | Group for Harbor server node                 | 🔴 Required | **Must contain exactly one node; Cannot duplicate Client Group** | `harbor-server` |
| **Harbor Client Group**   | string | Group for Harbor client nodes                | 🔴 Required | **Cannot duplicate Server Group**                                | `harbor-client` |
| **Harbor Admin Password** | string | Administrator password for Harbor web portal | 🔴 Required | **At least 6 characters; No Chinese characters or emojis**       | `Harbor@2026!`  |

{% hint style="warning" %}
**⚠️ Critical Constraints**

1. **Harbor Server Group must contain exactly one node** to ensure registry consistency
2. **Server Group and Client Group must be different** to prevent configuration conflicts
3. **Password complexity:** Use strong passwords with mixed case, numbers, and special characters
   {% endhint %}

***

### Step 2: Review and Deploy

![](https://pub-f334ff01208c4e6195b80133ac6e6030.r2.dev/portal/marketplace/service-catalog-harbor-step2.png)

Review your configuration before deployment:

* Service name
* Harbor Server Group
* Harbor Client Group

{% hint style="info" %}
**💡 Deployment Note**

After clicking deploy, the system will:

1. Install Harbor on the server node
2. Configure SSL certificates
3. Set up Docker registry on client nodes
4. Establish trust between server and clients
   {% endhint %}

***

## Post-Deployment Status

After successful deployment, you can view in **Status Monitor**:

* Task status progress
* Execution status of each node (Server / Client groups)
* Error logs (if any)

### Deployment Verification

After the deployment status shows **Completed**, perform the following checks:

**1. Access Harbor Web Portal**

```bash
# Get Harbor server IP
curl https://<harbor-server-ip>
```

✅ **Expected Result:** Harbor login page should appear

**2. Login to Harbor Portal**

* URL: `https://<harbor-server-ip>`
* Username: `admin`
* Password: `<your-harbor-admin-password>`

✅ **Expected Result:** Successfully logged in to Harbor dashboard

**3. Test Docker Login from Client**

```bash
# SSH into a client node and run:
docker login <harbor-server-ip>
```

✅ **Expected Result:** Login succeeded

**4. Push a Test Image**

```bash
# Tag and push a test image
docker tag alpine:latest <harbor-server-ip>/library/alpine:test
docker push <harbor-server-ip>/library/alpine:test
```

✅ **Expected Result:** Image pushed successfully and visible in Harbor portal

***

## Frequently Asked Questions

### Q: Why must the Harbor Server Group contain exactly one node?

A: Harbor registry requires a single authoritative source to maintain image consistency and avoid synchronization issues.

### Q: Can I use the same group for both Server and Client?

A: No. The system automatically prevents this to avoid role conflicts and ensure clear separation of responsibilities.

### Q: What are the password requirements?

A: At least 6 characters, no Chinese characters or emojis. Strong passwords with mixed case, numbers, and special characters are strongly recommended.

### Q: How long does deployment take?

A: Typically 10-20 minutes depending on node count and network conditions.

### Q: Can I add more client nodes later?

A: Yes, you can deploy additional client nodes by selecting a different client group in a new deployment.

### Q: What if I forgot the admin password?

A: You need to SSH into the Harbor server node and reset the password using Harbor CLI tools.

***

## Troubleshooting Checklist

If Harbor is not functioning as expected, use this checklist:

| Check Item                   | Command                                     | Expected Result           |
| ---------------------------- | ------------------------------------------- | ------------------------- |
| Harbor services running?     | `docker-compose ps` (on server)             | All services "Up"         |
| Can access web portal?       | `curl -k https://<server-ip>`               | HTTP 200 response         |
| Docker daemon running?       | `systemctl status docker` (on client)       | Active (running)          |
| Can resolve Harbor hostname? | `ping <harbor-server-ip>`                   | Successful ping           |
| SSL certificate valid?       | `openssl s_client -connect <server-ip>:443` | Certificate details shown |

### Common Issues

**Issue: "x509: certificate signed by unknown authority"**

* **Cause:** Self-signed certificate not trusted by Docker
* **Solution:** Copy Harbor's CA certificate to Docker's trusted certificates directory on client nodes

**Issue: Cannot push images**

* **Cause:** Insufficient permissions or project not created
* **Solution:** Login to Harbor portal, create a project, and assign appropriate user permissions

**Issue: Web portal inaccessible**

* **Cause:** Firewall blocking port 443 or Harbor services not started
* **Solution:** Check firewall rules and restart Harbor services: `docker-compose restart`

***

## Related References

* [Service Catalog](/guide/latest/portal/overview/service-catalog.md)
* [Status Monitor User Guide](/guide/latest/portal/overview/status-monitor.md#slurm-status-card)
* [Harbor Official Documentation](https://goharbor.io/docs/)
* [Harbor Installation Guide](https://goharbor.io/docs/latest/install-config/)
