# Initial Deployment

This guide is for Systems Administrators, IT managers, SREs, or DevOps folks. It explains how to do an initial deployment of CiviForm into your production cloud environment. CiviForm has the following deployment options:

* Can be deployed into AWS using [Terraform](/it-manual/sre-playbook/initial-deployment/terraform-deploy-system.md).
* Can be custom deployed in cloud or on-prem using [CiviForm docker image](https://hub.docker.com/r/civiform/civiform) directly. This is not recommended, as it requires more configuration and maintenance. Additionally using the CiviForm Terraform-based deployment system is tested thoroughly and you will have less chance of unexpected breakage using it.

## Overview

This section describes the tasks necessary to deploy CiviForm to new infrastructure. Many tasks can and should be done in parallel. Tasks may vary depending on the specifics of each organization's needs, but the high-level components remain relevant.

### Information you will need

The following details are necessary for the initial deployment. A staging environment can be brought up without most of these values, but you will need all of them for a complete production deployment. Deciding on some of them might require coordination across different departments, so it is helpful to start tackling them early.

* The infrastructure you wish to deploy on (e.g. a specific cloud provider or on-premises infrastructure).
  * If using a cloud provider, the region you wish to deploy in.
* An authentication provider for administrators (including `client_id`, `client_secret`, and `discovery_uri` details).
* An authentication provider for applicants (including `client_id`, `client_secret`, and `discovery_uri` details).
* Two domain names for your deployment (one for a staging environment, and one for the production environment).
* Government logo images for branding
* A support email address to display on the site
* An understanding of which of your [existing systems you would like to integrate with](/user-manual/onboarding-guide/existing-processes.md) via CiviForm's API.
* SSL certificates for domain names and/or load balancers.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.civiform.us/it-manual/sre-playbook/initial-deployment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
