# Install

{% hint style="danger" %}
**Community Edition is not for production workloads.** Use it for labs, evaluation, and learning only.
{% endhint %}

{% hint style="info" %}
For a guided walkthrough, use [Beginner’s Guide to Deploying PCD Community Edition](https://docs.platform9.com/private-cloud-director/2025.10/tutorials/beginners-guide-to-deploying-pcd-community-edition).
{% endhint %}

## Install Community Edition

This installs the Community Edition (CE) control plane on a single **CE host**. You then onboard one or more **hypervisor hosts** to run VMs.

{% hint style="info" %}
Read [Prerequisites](https://docs.platform9.com/private-cloud-director/2025.10/getting-started/getting-started-with-community-edition/prerequisites) first. Use [Custom Installation](https://docs.platform9.com/private-cloud-director/2025.10/getting-started/getting-started-with-community-edition/custom-installation) if you need custom CIDRs or domains.
{% endhint %}

### Outcome

After install, you can:

* Log in to the web UI
* Onboard hypervisor hosts
* Create networks, images, and VMs
* View metrics in the web UI or Grafana

### Timeline

Typical runtime is \~45 minutes. Slow systems or slow registries can push it to \~90 minutes.

* 5–10 min: system prep and prerequisite checks
* 10–15 min: K3s cluster creation
* 20–30 min: <code class="expression">space.vars.product\_acronym</code> services deployment
* \~5 min: verification and credential output

### Deploy the CE host

Run the installer on the CE host as a user with `sudo` access.

```bash
curl -sfL https://go.pcd.run | bash
```

{% hint style="info" %}
By default in Ubuntu, all users in the `sudo` group have the ability to sudo. Group membership can be validated with the command `groups <username>` and sudo permissions can be verified with `sudo -l -U <username>` .
{% endhint %}

The installer will:

* Ask you to accept the [Community Edition EULA](https://platform9.com/ce-eula)
* Run prerequisite checks
* Deploy the CE management plane
* Print the UI URL and admin credentials

If prerequisite checks fail, use [Common Issues](https://docs.platform9.com/private-cloud-director/2025.10/getting-started/getting-started-with-community-edition/common-issues). If installation fails, the installer can optionally upload a support bundle.

<details>

<summary>Installation example</summary>

```bash
ubuntu@ce-host:~$ curl -sfL https://go.pcd.run | bash
Private Cloud Director Community Edition Deployment Started...

By continuing with the installation, you agree to the terms and conditions of the
Private Cloud Director Community Edition EULA.

Please review the EULA at: https://platform9.com/ce-eula

Do you accept the terms of the EULA? [Y/N]: y

Finding latest version...  Done
Downloading artifacts...  Done
Configuring system settings...  Done
Installing artifacts and dependencies...  Done
Configuring Docker Mirrors...  Done
 SUCCESS  Configuration completed
 INFO  Verifying system requirements...
 ✓  Architecture
 ✓  Disk Space
 ✓  Memory
 ✓  CPU Count
 ✓  OS Version
 ✓  Swap Disabled
 ✓  IPv6 Support
 ✓  Kernel and VM Panic Settings
 ✓  Port Connectivity
 ✓  Firewalld Service
 ✓  Default Route Weights
 ✓  Basic system services
Completed Pre-Requisite Checks on local node
 SUCCESS  Cluster created successfully
 INFO  Starting PCD management plane
 SUCCESS  Certificates generated
 SUCCESS  Base infrastructure setup complete
 SUCCESS  pcd-virt deployment now complete
 SUCCESS  Final touches...
Private Cloud Director (Community Edition) deployment complete!
How would you rate your Private Cloud Director (Community Edition) installation experience?
(1-5, press Enter to skip): 5

------------- deployment details ---------------
fqdn:                pcd.pf9.io
region:              pcd
deployment status:   ready
region health:       ✅ Ready
version:              PCD 2025.10-180
-------- region service status ----------
desired services:     25
ready services:       25


------------- deployment details ---------------
fqdn:                pcd-community.pf9.io
region:              pcd-community
deployment status:   ready
region health:       ✅ Ready
version:              PCD 2025.10-180
-------- region service status ----------
desired services:     55
ready services:       55



Login Details:
URL: https://pcd-community.pf9.io
email:     admin@airctl.localnet
password:  wVXJbocBrZaqcjtS

See documentation at https://pcd.run for next steps.

Join the support community at https://reddit.com/r/platform9
ubuntu@ce-host:~$
```

</details>

### Access the web UI

The installer prints a URL like `https://pcd-community.pf9.io`. That name must resolve from your browser.

#### Option 1: Local hosts file (single machine)

Use this for quick testing. Only your computer can resolve the UI URL.

**Linux/macOS**

```bash
# Replace <CE_HOST_IP> with your CE host IP
echo "<CE_HOST_IP> pcd.pf9.io" | sudo tee -a /etc/hosts
echo "<CE_HOST_IP> pcd-community.pf9.io" | sudo tee -a /etc/hosts

# Example
echo "192.168.1.100 pcd.pf9.io" | sudo tee -a /etc/hosts
echo "192.168.1.100 pcd-community.pf9.io" | sudo tee -a /etc/hosts
```

**Windows**

1. Open Notepad as Administrator.
2. Open `C:\Windows\System32\drivers\etc\hosts`.
3. Add (replace the example IP):

```
192.168.1.100 pcd.pf9.io
192.168.1.100 pcd-community.pf9.io
```

#### Option 2: Real DNS (team access)

Create A records in your DNS server:

```
pcd-community.pf9.io  -> <CE_HOST_IP>
pcd.pf9.io            -> <CE_HOST_IP>
```

#### Option 3: Custom domain

Set a custom FQDN during install. See [Custom Installation](https://docs.platform9.com/private-cloud-director/2025.10/getting-started/custom-installation#deployment-url-and-region-name).

Example: `pcd.company.local`

### Log in

Open the UI URL in a browser (the default is [pcd-community.pf9.io](https://pcd-community.pf9.io/)). Accept the self-signed certificate on first visit.

* Keep **Domain** as `default`.
* Select **Use local credentials**.
* Use the credentials printed by the installer.

{% hint style="info" %}
SSO is unavailable until configured. A 404 on SSO login before setup is expected.
{% endhint %}

<figure><img src="https://1100565312-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIYcmHH6U169jTwihxwwy%2Fuploads%2Fmasc84mrifnzce6xvLBd%2FScreenshot%202026-01-16%20at%209.21.22%E2%80%AFAM.png?alt=media&#x26;token=8f1f10f9-f2c9-4dae-a196-0eb079b906e7" alt="Private Cloud Director Community Edition local credentials login screen"><figcaption><p>Private Cloud Director Community Edition local credentials login screen</p></figcaption></figure>

### Admin credentials and Grafana access

Do not rename the default admin user, `admin@airctl.localnet`. Do not change its password.

This account is used internally by <code class="expression">space.vars.product\_name</code> services.

Create separate users for administrator or self-service access.

{% hint style="warning" %}
The default admin account is also used for Grafana authentication. Changing the default admin email or password can break Grafana access.
{% endhint %}

### Next steps

1. Create a cluster blueprint: [Virtualized Cluster Blueprint](https://docs.platform9.com/private-cloud-director/2025.10/virtualized-clusters/virtualized-cluster-blueprint).
2. Create a cluster in **Infrastructure > Clusters**.
3. Onboard hypervisor hosts: [Add a Host (Self-Hosted & Community Edition Deployment)](https://docs.platform9.com/private-cloud-director/2025.10/virtualized-clusters/host#community-edition-deployment).
4. Create networking for VMs:
   * [Virtual Network](https://docs.platform9.com/private-cloud-director/2025.10/virtualized-networking/networks-and-ports)
   * [Physical Network](https://docs.platform9.com/private-cloud-director/2025.10/virtualized-networking/physical-network)
5. Create VMs: [Virtual Machines](https://docs.platform9.com/private-cloud-director/2025.10/virtualized-clusters/virtualmachine).

***

## Operations and troubleshooting

<details>

<summary>Validate the installation</summary>

Your deployment is healthy if both regions show `Ready`. Ready services should match desired services.

```bash
/opt/pf9/airctl/airctl status --config /opt/pf9/airctl/conf/airctl-config.yaml
```

Example output:

```bash
root@pcd-ce01:~# /opt/pf9/airctl/airctl status --config /opt/pf9/airctl/conf/airctl-config.yaml
------------- deployment details ---------------
fqdn:                lab04.pf9.io
region:              lab04
deployment status:   ready
region health:       ✅ Ready
version:              PCD 2025.10-180
-------- region service status ----------
desired services:     25
ready services:       25


------------- deployment details ---------------
fqdn:                lab04-community.pf9.io
region:              lab04-community
deployment status:   ready
region health:       ✅ Ready
version:              PCD 2025.10-180
-------- region service status ----------
desired services:     55
ready services:       55
```

</details>

<details>

<summary>Retrieve admin credentials</summary>

```bash
sudo /opt/pf9/airctl/airctl get-creds --config /opt/pf9/airctl/conf/airctl-config.yaml
```

</details>

<details>

<summary>Logs and service names</summary>

**Hypervisor host logs**

* `/var/log`
* `/var/log/pf9`

**CE host logs**

* `/var/log/pf9/fluentbit/ddu.log` (JSON; includes Kubernetes pod logs)

You can also use `kubectl logs` to fetch pod logs.

**Hypervisor host services**

Service names start with `pf9`. Examples:

* `pf9-hostagent`
* `pf9-imagelibrary`
* `pf9-ostackhost`

</details>

<details>

<summary>Grafana credentials</summary>

Grafana uses the same admin credentials printed at install time.

* Username: `admin@airctl.localnet`
* Password: retrieve from the CE host:

```bash
/opt/pf9/airctl/airctl get-creds --config /opt/pf9/airctl/conf/airctl-config.yaml
```

Default Grafana URL:

* `https://pcd-community.pf9.io/grafana/login`

</details>

<details>

<summary>Reset Grafana admin password (advanced)</summary>

{% hint style="danger" %}
Resetting Grafana independently is not recommended. Keep Grafana and UI admin passwords in sync.
{% endhint %}

The namespace is `pcd-community` by default. If you customized region naming, use your namespace.

```bash
NS=pcd-community
kubectl exec -it deploy/grafana -n $NS -- grafana cli admin reset-admin-password <strong-password>
```

</details>

<details>

<summary>Uninstall Community Edition</summary>

```bash
sudo /opt/pf9/airctl/airctl delete-cluster --config /opt/pf9/airctl/conf/airctl-config.yaml
```

</details>

<details>

<summary>Expand an Ubuntu logical volume (LVM)</summary>

If your root filesystem is smaller than the physical volume, expand it.

1. Find the root device:

```bash
df -h /
```

2. Resize the LV (example name shown):

```bash
sudo lvresize -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
```

3. Resize the filesystem:

```bash
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
```

</details>

### Troubleshooting

Start with [Common Issues](https://docs.platform9.com/private-cloud-director/2025.10/getting-started/getting-started-with-community-edition/common-issues).

#### Optional learning resources

Platform9 YouTube:

* Channel: <https://www.youtube.com/@Platform9>
* Playlist: [Private Cloud Director playlist](https://www.youtube.com/playlist?list=PLUqDmxY3RncUmegG6dv8XxjSr0g1THpLq)
