# Custom Installation

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

There are a number of environment variables that can be defined prior to deploying the Community Edition host that will allow you to customize the default IP address used for the install, the URL for the Community Edition user interface, the name of the workload region, the use of install telemetry, and more.

{% hint style="info" %}
**Info**

All environment variables exported via the command line will not persist beyond the current terminal session, and only apply to the user that exports the variables. If a variable needs to be exported, run the install from the same terminal session. All environment variables will be exported using the following command structure: `export <variable_name>=<value>`
{% endhint %}

### Change IP address

The install script will choose the IP address of the interface set as the default route using the `ip route` command. Should you choose to use a different default IP address, you can export the `IP_ADDRESS` environment variable.

```bash
export IP_ADDRESS=192.168.1.150
```

### Deployment URL & region name

The fully qualified domain name for the deployment region (`DU_FQDN`) and the workload region name (`REGION_NAME`) variables are used to construct the URL for the Community Edition user interface. It may be useful to customize the fully qualified domain name based on an existing DNS domain, for example. The region name may be changed prior to install as desired.

Defaults:

* `DU_FQDN="pcd.pf9.io"`
* `REGION_NAME="Community"`
* Resulting fully qualified domain name: `pcd-community.pf9.io`

```bash
export DU_FQDN="pf9.lan"
export REGION_NAME="test"
# This will result in pf9-test.lan as the FQDN for the user interface
```

### Installing with a signed SSL certificate

CE can be installed with a signed SSL certificate instead of the default self-signed certificate. You may do this by setting both `USER_CERT_PATH` and `USER_KEY_PATH` environment variables with the fully qualified paths to the certificate and key files.

It is required to generate the certificates with the appropriate wildcard SANs and Key Usage:

* \*.pf9.localnet
* \*.domain.net

The first, \*.pf9.localnet is required for internal usage. The second depends on the shortname/FQDN used. For example if the DU FQDN is "air99.platform9.net", then ensure the certificate has SANs for \*.platform9.net.

In addition, ensure the following Key Usage extensions are enabled:

```none
X509v3 extensions:
  X509v3 Key Usage: critical
  	Digital Signature, Key Encipherment  
  X509v3 Extended Key Usage:
  	TLS Web Server Authentication, TLS Web Client Authentication
```

Defaults:

* These variables are not set by default, as installing a self-signed certificate is the default behavior.

```bash
export USER_CERT_PATH=/path/to/cert
export USER_KEY_PATH=/path/to/key
```

### Community Edition deployment networking

Community Edition is installed as a Kubernetes deployment, and uses internal networking for communication between pods (`POD_CIDR` ) and for exposing applications as service IPs (`SERVICE_CIDR` ). If these IP address ranges conflict with your organization's networking ranges, they can be changed as needed. If there is no conflict, there's no need to change these default ranges.

Defaults:

* `SERVICE_CIDR="10.21.0.0/16"`
* `POD_CIDR="10.20.0.0/16"`

```bash
export SERVICE_CIDR="10.21.0.0/16"
export POD_CIDR="10.20.0.0/16"
```

### Installation telemetry

The Community Edition installation collects anonymous telemetry during the installation process allowing Platform9 to improve the installation process. Should you wish to opt out, the `TELEMETRY` environment variable can be set to `false`.

Default:

* `TELEMETRY=true`

```bash
export TELEMETRY=false
```

### Skip install pre-requisites check

The Community Edition installer runs a series of pre-requisite checks before installing, such as validating the amount of CPU & memory available. This behavior can be changed by setting the `SKIP_PRECHECKS` environment variable to `true` .

Default:

* `SKIP_PRECHECKS=false`

{% hint style="warning" %}
**Warning**

Forcing an install with less than the required amount of CPU & memory *will* cause it to fail!
{% endhint %}

```bash
export SKIP_PRECHECKS=true
```

### Skip post-install experience poll

As part of our ongoing effort to make the install experience as smooth & painless as possible, we've added a post-install poll to capture how you rated the installation experience. The `SKIP_RATING_PROMPT` variable can be set to `true` to disable this behavior.

Default:

* `SKIP_RATING_PROMPT=false`

```bash
export SKIP_RATING_PROMPT=true
```

### Automatically accept EULA

The `ACCEPT_EULA` environment variable can set to `true` before installing Community Edition, providing you have read and agreed to the EULA in advance. This environment variable can useful in the case of automating Community Edition installs.

Default:

* `ACCEPT_EULA=false`

```bash
export ACCEPT_EULA=true
```

### Automatically clean-up previous installation

The `SHOULD_CLEANUP` environment variable can be set to `true` to bypass the prompt to keep or delete a prior installation. The default is `false` .

Default:

* `SHOULD_CLEANUP=false`

```bash
export SHOULD_CLEANUP=true
```

### Extending default deployment timeout

If you are experiencing install failures due to timeouts, they may be resolved by setting the install script's default timeout period to longer than 600 seconds using the `SVC_DEPLOYMENT_TIMEOUT` environment variable. The normal installation process uses an internal variable, which can be changed with this environment variable.

Default:

* The default internal timeout period is `600` seconds.

```bash
export SVC_DEPLOYMENT_TIMEOUT=1200
```

### Protected environment variables

In this release of Community Edition, Kubernetes workload support in Private Cloud Director is not fully tested and requires significantly more CPU and RAM than the resources needed for standard Community Edition virtualization workloads. Enabling Kubernetes support by setting `ENABLE_K8S` to `true` may lead to unpredictable system behavior, as Kubernetes workloads are currently not supported.

The following environment variables are critical to the installation process and must not be changed, as this will cause installation failures: `S3_BUCKET` and `S3_USER_AGENT`.
