mirror of
https://github.com/coder/coder.git
synced 2026-09-23 14:03:57 +08:00
## Summary
Update documentation across 9 files to present the template builder as
the primary template creation method, replacing the old starter
templates flow as the default entry point.
The template builder is a guided wizard that lets admins select base
infrastructure, add registry modules, configure variables, and produce
validated Terraform without writing HCL.
## Changes
**Primary docs (significant rewrites):**
- `docs/admin/templates/creating-templates.md`: Added "Using the
template builder" as the first section with full 5-step wizard
documentation, screenshots, airgap/registry notes, and alternative
creation links. Moved CLI starter template flow to its own section.
Fixed "You can the" typo.
- `docs/get-started/index.md`: Rewrote Steps 4-6 to use the builder with
the Docker base template instead of the Coder Quickstart (which is not a
builder base template). Generalized workspace parameter instructions.
- `docs/start/first-template.md`: Rewrote to use the builder. Removed
old starter templates references, TODO notes, typo, and commented-out
sections.
**Secondary docs (targeted edits):**
- `docs/admin/templates/index.md`: Replaced starter templates section
with builder-first "Create a template" section.
- `docs/admin/templates/managing-templates/index.md`: Renamed "Starter
templates" to "Creating templates" pointing to the builder.
- `docs/install/airgap.md`: Added "Template builder" section documenting
`CODER_DISABLE_TEMPLATE_BUILDER` and
`CODER_TEMPLATE_BUILDER_REGISTRY_URL`.
- `docs/tutorials/template-from-scratch.md`: Added TIP callout
recommending the builder. Fixed `coder templates create` -> `coder
templates push` inconsistency.
- `docs/admin/integrations/devcontainers/envbuilder/add-envbuilder.md`:
Updated Dashboard tab to reference the builder and "Upload an existing
template" alternative.
- `docs/about/screenshots.md`: Updated caption and image reference for
template builder.
**Screenshots added:**
- `templatebuilder_01_bases.png` (base selection step)
- `templatebuilder_02_modules.png` (module selection step)
- `templatebuilder_03_module_customization.png` (module settings step)
- `templatebuilder_04_customizations.png` (template customizations step)
<details>
<summary>Implementation plan</summary>
# Plan: Update docs/ for Template Builder Launch
## Summary
The Template Builder is a new guided wizard at `/templates/new/builder`
that lets admins create templates by selecting a base infrastructure
template, composing it with registry modules, configuring variables, and
producing a validated Terraform bundle without writing HCL. The docs
need to be updated to present this as the primary/recommended template
creation path, while preserving the existing paths (upload, CLI,
duplicate) as alternatives.
## Key behavioral facts from the code
- **Route**: `/templates/new/builder` (new), `/templates/new` (old,
still exists)
- **Entry point**: The "New Template" button on the Templates page links
to `/templates/new/builder` when the builder is enabled; otherwise falls
back to `/starter-templates`
- **5-step wizard**:
1. **Select base infrastructure** (e.g., Docker, AWS EC2, Kubernetes)
2. **Base template parameters** (optional, skipped if base has none)
3. **Select modules** (IDE, AI Agent, Source Control, etc.;
multi-select, grouped by category)
4. **Module settings** (optional, skipped if no configurable variables)
5. **Template customizations** (name, display name, description, icon,
organization)
- **Alternative creation links** are shown on step 1: "Start from
scratch", "Upload an existing template", "Browse community templates",
"Use template agent skill"
- **Disabled via**: `CODER_DISABLE_TEMPLATE_BUILDER` env var /
`--disable-template-builder` flag. When disabled, redirects to old
`/templates/new` flow
- **Registry URL override**: `CODER_TEMPLATE_BUILDER_REGISTRY_URL`
(default: `registry.coder.com`)
- **Requires outbound access** to `registry.coder.com` for `terraform
init` at compose time
- **Modules are bundled** with the Coder release binary; the builder
does not fetch metadata from the registry at runtime
- **Sensitive variables** (secrets) are not collected by the builder;
they are deferred to workspace creation time
- **Module conflicts** show a warning but do not block creation
- **One-way**: No re-entry into the builder for existing templates; edit
HCL directly after creation
## Files to update
### Tier 1: Primary creation flow docs (significant rewrites)
#### 1. `docs/admin/templates/creating-templates.md`
**Current state**: Documents three creation paths: "From a starter
template" (primary), "From an existing template", "From scratch
(advanced)".
**Changes**:
- Add a new section **"Using the template builder"** as the first and
primary section (before "From a starter template").
- Describe the 5-step wizard flow: select base infrastructure, configure
base parameters, select modules, configure module settings, set template
customizations.
- Mention that the builder is enabled by default and requires outbound
access to `registry.coder.com`.
- Note that sensitive variables are collected from developers at
workspace creation, not during template building.
- Add a callout about disabling the builder for airgapped deployments
(`CODER_DISABLE_TEMPLATE_BUILDER`).
- Note the `CODER_TEMPLATE_BUILDER_REGISTRY_URL` option for self-hosted
registry mirrors.
- Keep existing "From a starter template", "From an existing template",
and "From scratch" sections largely intact, but reframe them as
alternative paths.
- Update the "From a starter template" Web UI instructions to note the
new entry point routing (the "New Template" button now goes to the
builder when enabled).
- Fix existing typo: "You can the [Coder CLI]" should be "You can use
the [Coder CLI]".
#### 2. `docs/start/first-template.md`
**Current state**: Beginner tutorial walking through creating a template
from the Docker starter template via the old flow. Has a typo (`s` at
end of line 32), commented-out workspace creation section, and TODO
notes.
**Changes**:
- Rewrite steps 2 and 3 to use the Template Builder as the primary path.
- Step 2: Navigate to **Templates**, select **New Template**, which
opens the Template Builder.
- Step 3: Walk through the builder wizard steps (select Docker base,
optionally select modules like code-server, configure template
name/description, create).
- Remove the typo on line 32 (`s`).
- Keep the "Modify your template" section (step 6) intact since it
covers post-creation editing which is unchanged.
- Remove or update the reference to "Starter Templates" as a separate
page since the builder subsumes that entry point.
#### 3. `docs/get-started/index.md`
**Current state**: Quickstart guide. Step 4 says "Select **Templates** →
**New Template**" then pick "Coder Quickstart" from starter templates.
**Changes**:
- Update Step 4 to describe using the Template Builder.
- The flow becomes: Select **Templates** → **New Template** → builder
opens → select **Coder Quickstart** as the base template → optionally
add modules → set name/description → **Create Template**.
- Update the "What just happened?" explanation to mention the builder
composed and validated the Terraform.
- Screenshot reference `create-quickstart-template.png` will need a new
screenshot (note this in the PR; screenshots are out of scope for this
change but should be flagged).
### Tier 2: Secondary references (targeted edits)
#### 4. `docs/admin/templates/index.md`
**Current state**: Overview page mentioning starter templates as the
primary creation path.
**Changes**:
- Update the "Starter templates" section to mention the Template Builder
as the recommended way to create templates, with starter templates
serving as base templates within the builder.
- Update the link to point to the builder section: `[Create a template
with the template
builder](./creating-templates.md#using-the-template-builder)`.
- Update the screenshot reference and caption. The "Starter Templates"
page screenshot may no longer be the first thing admins see.
#### 5. `docs/admin/templates/managing-templates/index.md`
**Current state**: Documents starter templates, editing, updating,
deleting.
**Changes**:
- Update the "Starter templates" section to mention the Template Builder
as the primary creation path, with starter templates available as base
templates within it.
- Update the image reference from `starter-templates.png` if it shows
the old flow.
#### 6. `docs/tutorials/template-from-scratch.md`
**Current state**: Detailed tutorial for writing a template from scratch
with Terraform.
**Changes**:
- Add a brief note at the top recommending the Template Builder for
users who want to create templates without writing Terraform, with a
link to
`docs/admin/templates/creating-templates.md#using-the-template-builder`.
- In section "7. Create the template in Coder" → "Dashboard" tab, update
the UI steps. The "Upload template" option is now accessed via the old
creation flow at `/templates/new` (or through the "Upload an existing
template" link in the builder's alternatives).
- Fix the inconsistency where text says `coder templates create` but the
code block uses `coder templates push`.
#### 7.
`docs/admin/integrations/devcontainers/envbuilder/add-envbuilder.md`
**Current state**: Documents creating envbuilder templates via
Dashboard, CLI, and Registry tabs.
**Changes**:
- In the Dashboard tab, update the instructions. The "Create Template"
button now opens the builder by default. Users need to use the "Upload
an existing template" alternative link or navigate to `/templates/new`
directly.
- Update "From scratch" reference since that option is now an
alternative link in the builder.
- The CLI and Registry tabs remain unchanged.
#### 8. `docs/install/airgap.md`
**Current state**: Documents air-gapped installations. No mention of
Template Builder.
**Changes**:
- Add a note in the relevant section about the Template Builder
requiring outbound access to `registry.coder.com`.
- Document `CODER_DISABLE_TEMPLATE_BUILDER` for fully air-gapped
deployments.
- Document `CODER_TEMPLATE_BUILDER_REGISTRY_URL` for deployments using a
self-hosted registry mirror.
#### 9. `docs/about/screenshots.md`
**Current state**: Contains a caption "Template administrators can
either create a new Template from scratch or choose a Starter Template".
**Changes**:
- Update the caption to mention the Template Builder as the primary
creation method.
- Screenshot reference may need updating (flag for new screenshot).
### Tier 3: Minor/link-only updates
#### 10. `docs/admin/users/organizations.md`
- If it references the old "Create Template" screen with an org picker,
add a note that the Template Builder also includes organization
selection in its final step.
#### 11. `docs/ai-coder/tasks.md`
- If it mentions creating templates, add a passing reference to the
Template Builder as an option.
## Files NOT to update
- `docs/reference/api/templatebuilder.md`: Auto-generated API reference.
Already correct.
- `docs/reference/api/schemas.md`: Auto-generated. Already correct.
- `docs/reference/cli/server.md`: Auto-generated. Already has
`--disable-template-builder` and `--template-builder-registry-url`.
- `docs/reference/cli/templates_create.md`: Already deprecated.
- `docs/reference/cli/templates.md`: No changes needed.
## Implementation order
1. `docs/admin/templates/creating-templates.md` (primary creation docs,
most content)
2. `docs/get-started/index.md` (quickstart)
3. `docs/start/first-template.md` (beginner tutorial)
4. `docs/admin/templates/index.md` (overview)
5. `docs/admin/templates/managing-templates/index.md` (managing
overview)
6. `docs/install/airgap.md` (airgap note)
7. `docs/tutorials/template-from-scratch.md` (from-scratch tutorial)
8. `docs/admin/integrations/devcontainers/envbuilder/add-envbuilder.md`
(envbuilder)
9. `docs/about/screenshots.md` (screenshot captions)
10. Minor link/reference updates in tier 3 files
## Style notes
- Follow the Diataxis framework; keep tutorials as tutorials, reference
as reference.
- Use present tense, active voice, second person.
- Bold for UI elements: **Templates**, **New Template**, **Create
Template**.
- No emdash/endash.
- Do not add screenshots; flag where new screenshots are needed as
comments/TODOs.
- Run `make fmt/markdown` and `make lint/markdown` after all changes.
- Verify all pages are already in `docs/manifest.json` (no new pages
being added, only existing pages being updated).
</details>
> 🤖 Generated by Coder Agents
300 lines
16 KiB
Markdown
300 lines
16 KiB
Markdown
# Air-gapped Deployments
|
|
|
|
All Coder features are supported in air-gapped / behind firewalls / disconnected / offline.
|
|
This is a general comparison. Keep reading for a full tutorial running Coder
|
|
air-gapped with Kubernetes or Docker.
|
|
|
|
| | Public deployments | Air-gapped deployments |
|
|
|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| Terraform binary | By default, Coder downloads Terraform binary from [releases.hashicorp.com](https://releases.hashicorp.com) | Terraform binary must be included in `PATH` for the VM or container image. [Supported versions](../../provisioner/terraform/install.go#L23-L24) |
|
|
| Terraform registry | Coder templates will attempt to download providers from [registry.terraform.io](https://registry.terraform.io) or [custom source addresses](https://developer.hashicorp.com/terraform/language/providers/requirements#source-addresses) specified in each template | [Custom source addresses](https://developer.hashicorp.com/terraform/language/providers/requirements#source-addresses) can be specified in each Coder template, or a custom registry/mirror can be used. More details below |
|
|
| STUN | By default, Coder uses Google's public STUN server for direct workspace connections | STUN can be safely [disabled](../reference/cli/server.md#--derp-server-stun-addresses) users can still connect via [relayed connections](../admin/networking/index.md#-geo-distribution). Alternatively, you can set a [custom DERP server](../reference/cli/server.md#--derp-server-stun-addresses) |
|
|
| DERP | By default, Coder's built-in DERP relay can be used, or [Tailscale's public relays](../admin/networking/index.md#relayed-connections). | By default, Coder's built-in DERP relay can be used, or [custom relays](../admin/networking/index.md#custom-relays). |
|
|
| PostgreSQL | If no [PostgreSQL connection URL](../reference/cli/server.md#--postgres-url) is specified, Coder will download Postgres from [repo1.maven.org](https://repo1.maven.org) | An external database is required, you must specify a [PostgreSQL connection URL](../reference/cli/server.md#--postgres-url) |
|
|
| Telemetry | Telemetry is on by default, and [can be disabled](../reference/cli/server.md#--telemetry) | Telemetry [can be disabled](../reference/cli/server.md#--telemetry) |
|
|
| Update check | By default, Coder checks for updates from [GitHub releases](https://github.com/coder/coder/releases) | Update checks [can be disabled](../reference/cli/server.md#--update-check) |
|
|
| License validation | License keys are validated locally using cryptographic signatures. No outbound connection to Coder is required | No changes needed. See [offline license validation](../admin/licensing/index.md#offline-license-validation) |
|
|
| AI Governance Usage Count | By default, deployments with the [AI Governance Add On](../ai-coder/ai-governance.md) report usage data | [Contact us](https://coder.com/contact) to request a license with usage reporting off. |
|
|
|
|
## Air-gapped container images
|
|
|
|
The following instructions walk you through how to build a custom Coder server
|
|
image for Docker or Kubernetes
|
|
|
|
First, build and push a container image extending our official image with the
|
|
following:
|
|
|
|
- CLI config (.tfrc) for Terraform referring to
|
|
[external mirror](https://www.terraform.io/cli/config/config-file#explicit-installation-method-configuration)
|
|
- [Terraform Providers](https://registry.terraform.io) for templates
|
|
- These could also be specified via a volume mount (Docker) or
|
|
[network mirror](https://www.terraform.io/internals/provider-network-mirror-protocol).
|
|
See below for details.
|
|
|
|
> [!NOTE]
|
|
> Coder includes the latest
|
|
> [supported version](../../provisioner/terraform/install.go#L23-L24)
|
|
> of Terraform in the official Docker images. If you need to bundle a different
|
|
> version of terraform, you can do so by customizing the image.
|
|
|
|
Here's an example Dockerfile:
|
|
|
|
```Dockerfile
|
|
FROM ghcr.io/coder/coder:latest
|
|
|
|
USER root
|
|
|
|
RUN apk add curl unzip
|
|
|
|
# Create directory for the Terraform CLI (and assets)
|
|
RUN mkdir -p /opt/terraform
|
|
|
|
# Terraform is already included in the official Coder image.
|
|
# See ../../scripts/Dockerfile.base#L15
|
|
# If you need to install a different version of Terraform, you can do so here.
|
|
# The below step is optional if you wish to keep the existing version.
|
|
# See ../../provisioner/terraform/install.go#L23-L24
|
|
# for supported Terraform versions.
|
|
ARG TERRAFORM_VERSION=1.11.0
|
|
RUN apk update && \
|
|
curl -LOs https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
|
|
&& unzip -o terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
|
|
&& mv terraform /opt/terraform \
|
|
&& rm terraform_${TERRAFORM_VERSION}_linux_amd64.zip
|
|
ENV PATH=/opt/terraform:${PATH}
|
|
|
|
# Additionally, a Terraform mirror needs to be configured
|
|
# to download the Terraform providers used in Coder templates.
|
|
# There are two options:
|
|
|
|
# Option 1) Use a filesystem mirror.
|
|
# We can seed this at build-time or by mounting a volume to
|
|
# /opt/terraform/plugins in the container.
|
|
# https://developer.hashicorp.com/terraform/cli/config/config-file#filesystem_mirror
|
|
# Be sure to add all the providers you use in your templates to /opt/terraform/plugins
|
|
|
|
RUN mkdir -p /home/coder/.terraform.d/plugins/registry.terraform.io
|
|
ADD filesystem-mirror-example.tfrc /home/coder/.terraformrc
|
|
|
|
# Optionally, we can "seed" the filesystem mirror with common providers.
|
|
# Comment out lines 40-49 if you plan on only using a volume or network mirror:
|
|
WORKDIR /home/coder/.terraform.d/plugins/registry.terraform.io
|
|
ARG CODER_PROVIDER_VERSION=2.2.0
|
|
RUN echo "Adding coder/coder v${CODER_PROVIDER_VERSION}" \
|
|
&& mkdir -p coder/coder && cd coder/coder \
|
|
&& curl -LOs https://github.com/coder/terraform-provider-coder/releases/download/v${CODER_PROVIDER_VERSION}/terraform-provider-coder_${CODER_PROVIDER_VERSION}_linux_amd64.zip
|
|
ARG DOCKER_PROVIDER_VERSION=3.0.2
|
|
RUN echo "Adding kreuzwerker/docker v${DOCKER_PROVIDER_VERSION}" \
|
|
&& mkdir -p kreuzwerker/docker && cd kreuzwerker/docker \
|
|
&& curl -LOs https://github.com/kreuzwerker/terraform-provider-docker/releases/download/v${DOCKER_PROVIDER_VERSION}/terraform-provider-docker_${DOCKER_PROVIDER_VERSION}_linux_amd64.zip
|
|
ARG KUBERNETES_PROVIDER_VERSION=2.36.0
|
|
RUN echo "Adding kubernetes/kubernetes v${KUBERNETES_PROVIDER_VERSION}" \
|
|
&& mkdir -p hashicorp/kubernetes && cd hashicorp/kubernetes \
|
|
&& curl -LOs https://releases.hashicorp.com/terraform-provider-kubernetes/${KUBERNETES_PROVIDER_VERSION}/terraform-provider-kubernetes_${KUBERNETES_PROVIDER_VERSION}_linux_amd64.zip
|
|
ARG AWS_PROVIDER_VERSION=5.89.0
|
|
RUN echo "Adding aws/aws v${AWS_PROVIDER_VERSION}" \
|
|
&& mkdir -p aws/aws && cd aws/aws \
|
|
&& curl -LOs https://releases.hashicorp.com/terraform-provider-aws/${AWS_PROVIDER_VERSION}/terraform-provider-aws_${AWS_PROVIDER_VERSION}_linux_amd64.zip
|
|
|
|
RUN chown -R coder:coder /home/coder/.terraform*
|
|
WORKDIR /home/coder
|
|
|
|
# Option 2) Use a network mirror.
|
|
# https://developer.hashicorp.com/terraform/cli/config/config-file#network_mirror
|
|
# Be sure uncomment line 60 and edit network-mirror-example.tfrc to
|
|
# specify the HTTPS base URL of your mirror.
|
|
|
|
# ADD network-mirror-example.tfrc /home/coder/.terraformrc
|
|
|
|
USER coder
|
|
|
|
# Use the .terraformrc file to inform Terraform of the locally installed providers.
|
|
ENV TF_CLI_CONFIG_FILE=/home/coder/.terraformrc
|
|
```
|
|
|
|
> [!NOTE]
|
|
> If you are bundling Terraform providers into your Coder image, be sure the
|
|
> provider version matches any templates or
|
|
> [example templates](../../examples/templates)
|
|
> you intend to use.
|
|
|
|
```tf
|
|
# filesystem-mirror-example.tfrc
|
|
provider_installation {
|
|
filesystem_mirror {
|
|
path = "/home/coder/.terraform.d/plugins"
|
|
}
|
|
}
|
|
```
|
|
|
|
```tf
|
|
# network-mirror-example.tfrc
|
|
provider_installation {
|
|
network_mirror {
|
|
url = "https://terraform.example.com/providers/"
|
|
}
|
|
}
|
|
```
|
|
|
|
<div class="tabs">
|
|
|
|
### Docker
|
|
|
|
Follow our [docker-compose](./docker.md#install-coder-via-docker-compose)
|
|
documentation and modify the docker-compose file to specify your custom Coder
|
|
image. Additionally, you can add a volume mount to add providers to the
|
|
filesystem mirror without re-building the image.
|
|
|
|
First, create an empty plugins directory:
|
|
|
|
```shell
|
|
mkdir $HOME/plugins
|
|
```
|
|
|
|
Next, add a volume mount to compose.yaml:
|
|
|
|
```shell
|
|
vim compose.yaml
|
|
```
|
|
|
|
```yaml
|
|
# compose.yaml
|
|
services:
|
|
coder:
|
|
image: registry.example.com/coder:latest
|
|
volumes:
|
|
- ./plugins:/opt/terraform/plugins
|
|
# ...
|
|
environment:
|
|
CODER_TELEMETRY_ENABLE: "false" # Disable telemetry
|
|
CODER_BLOCK_DIRECT: "true" # force SSH traffic through control plane's DERP proxy
|
|
CODER_DERP_SERVER_STUN_ADDRESSES: "disable" # Only use relayed connections
|
|
CODER_UPDATE_CHECK: "false" # Disable automatic update checks
|
|
database:
|
|
image: registry.example.com/postgres:17
|
|
# ...
|
|
```
|
|
|
|
The
|
|
[terraform providers mirror](https://www.terraform.io/cli/commands/providers/mirror)
|
|
command can be used to download the required plugins for a Coder template.
|
|
This can be uploaded into the `plugins` directory on your offline server.
|
|
|
|
### Kubernetes
|
|
|
|
We publish the Helm chart for download on
|
|
[GitHub Releases](https://github.com/coder/coder/releases/latest). Follow our
|
|
[Kubernetes](./kubernetes.md) documentation and modify the Helm values to
|
|
specify your custom Coder image.
|
|
|
|
```yaml
|
|
# values.yaml
|
|
coder:
|
|
image:
|
|
repo: "registry.example.com/coder"
|
|
tag: "latest"
|
|
env:
|
|
# Disable telemetry
|
|
- name: "CODER_TELEMETRY_ENABLE"
|
|
value: "false"
|
|
# Disable automatic update checks
|
|
- name: "CODER_UPDATE_CHECK"
|
|
value: "false"
|
|
# force SSH traffic through control plane's DERP proxy
|
|
- name: CODER_BLOCK_DIRECT
|
|
value: "true"
|
|
# Only use relayed connections
|
|
- name: "CODER_DERP_SERVER_STUN_ADDRESSES"
|
|
value: "disable"
|
|
# You must set up an external PostgreSQL database
|
|
- name: "CODER_PG_CONNECTION_URL"
|
|
value: ""
|
|
# ...
|
|
```
|
|
|
|
</div>
|
|
|
|
## Air-gapped docs
|
|
|
|
Coder also provides air-gapped documentation in case you want to host it on your
|
|
own server. The docs are exported as static files that you can host on any web
|
|
server, as demonstrated in the example below:
|
|
|
|
1. Go to the release page. In this case, we want to use the
|
|
[latest version](https://github.com/coder/coder/releases/latest).
|
|
2. Download the documentation files from the "Assets" section. It is named as
|
|
`coder_docs_<version>.tgz`.
|
|
3. Extract the file and move its contents to your server folder.
|
|
4. If you are using NodeJS, you can execute the following command:
|
|
`cd docs && npx http-server .`
|
|
5. Set the [CODER_DOCS_URL](../reference/cli/server.md#--docs-url) environment
|
|
variable to use the URL of your hosted docs. This way, the Coder UI will
|
|
reference the documentation from your specified URL.
|
|
|
|
With these steps, you'll have the Coder documentation hosted on your server and
|
|
accessible for your team to use.
|
|
|
|
## Template builder
|
|
|
|
The template builder requires outbound access to `registry.coder.com` for
|
|
`terraform init` to resolve module sources at template composition time.
|
|
|
|
For fully air-gapped deployments, disable the template builder:
|
|
|
|
```sh
|
|
CODER_DISABLE_TEMPLATE_BUILDER=true
|
|
```
|
|
|
|
When the builder is disabled, template creation falls back to the standard
|
|
upload and CLI workflows. The **New Template** button on the **Templates** page
|
|
links to the starter templates page instead of the builder.
|
|
|
|
For deployments using a self-hosted module registry mirror, set the registry URL
|
|
instead of disabling the builder:
|
|
|
|
```sh
|
|
CODER_TEMPLATE_BUILDER_REGISTRY_URL=registry.internal.example.com
|
|
```
|
|
|
|
This makes the builder generate module source paths pointing at your mirror
|
|
rather than `registry.coder.com`.
|
|
|
|
## Coder Modules
|
|
|
|
To use Coder modules in offline installations, you can either:
|
|
|
|
- [Mirror the Coder Registry with JFrog Artifactory](./registry-mirror-artifactory.md) (recommended)
|
|
- [Manually publish modules to Artifactory or use a private git repository](../admin/templates/extending-templates/modules.md#offline-installations)
|
|
|
|
## Firewall exceptions
|
|
|
|
In restricted internet networks, Coder may require connection to internet.
|
|
Ensure that the following web addresses are accessible from the machine where
|
|
Coder is installed.
|
|
|
|
- code-server.dev (install via AUR)
|
|
- open-vsx.org (optional if someone would use code-server)
|
|
- registry.terraform.io (to create and push template)
|
|
- v2-licensor.coder.com (developing Coder in Coder)
|
|
|
|
## JetBrains IDEs
|
|
|
|
Gateway, JetBrains' remote development product that works with Coder,
|
|
[has documented offline deployment steps.](../admin/templates/extending-templates/jetbrains-airgapped.md)
|
|
|
|
## Microsoft VS Code Remote - SSH
|
|
|
|
Installation of the
|
|
[Visual Studio Code Remote - SSH extension](https://code.visualstudio.com/docs/remote/ssh)
|
|
(for connecting a local VS Code to a remote Coder workspace) requires that your
|
|
local machine has outbound HTTPS (port 443) connectivity to:
|
|
|
|
- update.code.visualstudio.com
|
|
- vscode.blob.core.windows.net
|
|
- \*.vo.msecnd.net
|
|
|
|
## Next steps
|
|
|
|
- [Create your first template](../tutorials/template-from-scratch.md)
|
|
- [Control plane configuration](../admin/setup/index.md)
|