# Deploy Coder on Rancher
You can deploy Coder on Rancher as a
[Workload](https://ranchermanager.docs.rancher.com/getting-started/quick-start-guides/deploy-workloads/workload-ingress).
## Requirements
- [SUSE Rancher Manager](https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/install-upgrade-on-a-kubernetes-cluster) running Kubernetes (K8s) 1.19+ with [SUSE Rancher Prime distribution](https://documentation.suse.com/cloudnative/rancher-manager/latest/en/integrations/kubernetes-distributions.html) (Rancher Manager 2.10+)
- Helm 3.5+ installed
- Workload Kubernetes cluster for Coder
## Overview
Installing Coder on Rancher involves four key steps:
1. Create a namespace for Coder
1. Set up PostgreSQL
1. Create a database connection secret
1. Install the Coder application via Rancher UI
## Create a namespace
Create a namespace for the Coder control plane. In this tutorial, we call it `coder`:
```shell
kubectl create namespace coder
```
## Set up PostgreSQL
Coder requires a PostgreSQL database to store deployment data.
We recommend that you use a managed PostgreSQL service, but you can use an in-cluster PostgreSQL service for non-production deployments:
### Managed PostgreSQL (Recommended)
For production deployments, we recommend using a managed PostgreSQL service:
- [Google Cloud SQL](https://cloud.google.com/sql/docs/postgres/)
- [AWS RDS for PostgreSQL](https://aws.amazon.com/rds/postgresql/)
- [Azure Database for PostgreSQL](https://docs.microsoft.com/en-us/azure/postgresql/)
- [DigitalOcean Managed PostgreSQL](https://www.digitalocean.com/products/managed-databases-postgresql)
Ensure that your PostgreSQL service:
- Is running and accessible from your cluster
- Is in the same network/project as your cluster
- Has proper credentials and a database created for Coder
### In-Cluster PostgreSQL (Development/PoC)
For proof-of-concept deployments, you can use Bitnami Helm chart to install PostgreSQL in your Kubernetes cluster:
```console
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install coder-db bitnami/postgresql \
--namespace coder \
--set auth.username=coder \
--set auth.password=coder \
--set auth.database=coder \
--set persistence.size=10Gi
```
After installation, the cluster-internal database URL will be:
```text
postgres://coder:coder@coder-db-postgresql.coder.svc.cluster.local:5432/coder?sslmode=disable
```
For more advanced PostgreSQL management, consider using the
[Postgres operator](https://github.com/zalando/postgres-operator).
## Create the database connection secret
Create a Kubernetes secret with your PostgreSQL connection URL:
```shell
kubectl create secret generic coder-db-url -n coder \
--from-literal=url="postgres://coder:coder@coder-db-postgresql.coder.svc.cluster.local:5432/coder?sslmode=disable"
```
> [!Important]
> If you're using a managed PostgreSQL service, replace the connection URL with your specific database credentials.
## Install Coder through the Rancher UI

1. In the Rancher Manager console, select your target Kubernetes cluster for Coder.
1. Navigate to **Apps** > **Charts**
1. From the dropdown menu, select **Partners** and search for `Coder`
1. Select **Coder**, then **Install**
1. Select the `coder` namespace you created earlier and check **Customize Helm options before install**.
Select **Next**
1. On the configuration screen, select **Edit YAML** and enter your Coder configuration settings:
Example values.yaml configuration
```yaml
coder:
# Environment variables for Coder
env:
- name: CODER_PG_CONNECTION_URL
valueFrom:
secretKeyRef:
name: coder-db-url
key: url
# For production, uncomment and set your access URL
# - name: CODER_ACCESS_URL
# value: "https://coder.example.com"
# For TLS configuration (uncomment if needed)
#tls:
# secretNames:
# - my-tls-secret-name
```
For available configuration options, refer to the [Helm chart documentation](https://github.com/coder/coder/blob/main/helm#readme)
or [values.yaml file](https://github.com/coder/coder/blob/main/helm/coder/values.yaml).
1. Select a Coder version:
- **Mainline**: `2.20.x`
- **Stable**: `2.19.x`
Learn more about release channels in the [Releases documentation](./releases/index.md).
1. Select **Next** when your configuration is complete.
1. On the **Supply additional deployment options** screen:
1. Accept the default settings
1. Select **Install**
1. A Helm install output shell will be displayed and indicates the installation status.
## Manage your Rancher Coder deployment
To update or manage your Coder deployment later:
1. Navigate to **Apps** > **Installed Apps** in the Rancher UI.
1. Find and select Coder.
1. Use the options in the **⋮** menu for upgrade, rollback, or other operations.
## Next steps
- [Create your first template](../tutorials/template-from-scratch.md)
- [Control plane configuration](../admin/setup/index.md)