diff --git a/docs/images/self-hosting/deployment-options/deployment-flyio-secrets.png b/docs/images/self-hosting/deployment-options/deployment-flyio-secrets.png new file mode 100644 index 000000000..885e9ec41 Binary files /dev/null and b/docs/images/self-hosting/deployment-options/deployment-flyio-secrets.png differ diff --git a/docs/mint.json b/docs/mint.json index 2cfacf1bd..ecb2bb258 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -162,7 +162,8 @@ "self-hosting/deployment-options/kubernetes-helm", "self-hosting/deployment-options/aws-ec2", "self-hosting/deployment-options/docker-compose", - "self-hosting/deployment-options/digital-ocean-marketplace" + "self-hosting/deployment-options/digital-ocean-marketplace", + "self-hosting/deployment-options/fly.io" ] }, "self-hosting/configuration/envars", diff --git a/docs/self-hosting/configuration/envars.mdx b/docs/self-hosting/configuration/envars.mdx index 7c108e66b..3ea1762e2 100644 --- a/docs/self-hosting/configuration/envars.mdx +++ b/docs/self-hosting/configuration/envars.mdx @@ -18,15 +18,14 @@ Other environment variables are listed below to increase the functionality of yo Must be a random 32 byte base64 string. Can be generated with `openssl rand -base64 32` - - *TLS based connection string is not yet supported - + + Mongo connection string. *TLS based connection string is not yet supported + - - Redis connection string - - - + + Redis connection string + + When email service is not configured, Infisical will have limited functionality diff --git a/docs/self-hosting/deployment-options/fly.io.mdx b/docs/self-hosting/deployment-options/fly.io.mdx index b8c561224..35e962130 100644 --- a/docs/self-hosting/deployment-options/fly.io.mdx +++ b/docs/self-hosting/deployment-options/fly.io.mdx @@ -1,63 +1,108 @@ --- title: "Fly.io" -description: "Learn to install Infisical on Fly.io" +description: "Deploy Infisical with Fly.io" --- -**Prerequisites** -- Familiar with Fly.io deployment -- Logged in via fly CLI +Prerequisites: +- Have an account with [Fly.io](https://fly.io/) +- Have installed the [Fly.io CLI](https://fly.io/docs/hands-on/install-flyctl/) -#### 1. Make a copy of the deployment config -To begin, you'll to make a copy of the following file on your local machine + + + In your terminal, run the following command from the source directory of your project to create a new Fly.io app + with a `fly.toml` configuration file: + + ``` + fly launch + ``` + + + Add a **build** section to the `fly.toml` file to specify the [Infisical public Docker image](https://hub.docker.com/r/infisical/infisical): -```toml fly.toml -# fly.toml app configuration file generated for infisical on 2023-05-05T08:57:03-04:00 -# -# See https://fly.io/docs/reference/configuration/ for information about how to use this file. -# + ``` + [build] + image = "infisical/infisical:v0.43.4" + ``` -app = "infisical" -primary_region = "iad" + Afterwards, your `fly.toml` file should look similar to: -[build] - image = "infisical/infisical:latest" + ``` + app = "infisical" + primary_region = "lax" -[env] - ENCRYPTION_KEY = <> - JWT_AUTH_SECRET = <> - JWT_REFRESH_SECRET = <> - JWT_SERVICE_SECRET = <> - JWT_SIGNUP_SECRET = <> - MONGO_URL = <> + [http_service] + internal_port = 8080 + force_https = true + auto_stop_machines = true + auto_start_machines = true + min_machines_running = 0 + processes = ["app"] -[http_service] - internal_port = 8080 + [[vm]] + cpu_kind = "shared" + cpus = 1 + memory_mb = 1024 -``` + [build] + image = "infisical/infisical:v0.43.4" + ``` + + + Depending on your use-case and requirements, you may find it helpful to further configure your `fly.toml` file + with options [here](https://fly.io/docs/reference/configuration/). -#### 2. Add environment variables + For example, you may want to adjust the `primary-region` option to specify which [region](https://fly.io/docs/reference/regions/) to create the new machine for your + instance of Infisical to minimize distance and therefore latency between the instance and your infrastructure. + + + + + Running Infisical requires a few environment variables to be set on the Fly.io machine. + At minimum, Infisical requires that you set the variables `ENCRYPTION_KEY`, `AUTH_SECRET`, `MONGO_URL`, and `REDIS_URL` + which you can read more about [here](/self-hosting/configuration/envars). + + For this step, we recommend setting the variables as Fly.io [app secrets](https://fly.io/docs/reference/secrets/) which + are made available to the app as environment variables. You can set the variables either via the Fly.io CLI or project [dashboard](https://fly.io/dashboard). + + + + Run the following command (with each `VALUE` replaced) in the source directory of your project to set the required variables: -Before we can deploy Infisical, we'll need to provide values for the keys under `[env]` config block. For each of the following keys + ``` + flyctl secrets set ENCRYPTION_KEY=VALUE AUTH_SECRET=VALUE MONGO_URL=VALUE REDIS_URL=VALUE... + ``` + + + In Fly.io, head to your Project > Secrets and add the required variables. -- `ENCRYPTION_KEY` -- `JWT_AUTH_SECRET` -- `JWT_REFRESH_SECRET` -- `JWT_SERVICE_SECRET` -- `JWT_SIGNUP_SECRET` + ![Fly.io deployment secrets](/images/self-hosting/deployment-options/deployment-flyio-secrets.png) + + + + + To use more features like emailing and single sign-on, you can set additional configuration options [here](/self-hosting/configuration/envars). + + + + Finally, run the following command in the source directory of your project to deploy your Infisical instance on Fly.io + with the updated `fly.toml` configuration file from step 2 and secrets from step 3: -you will need to generate a random 16 byte hex string. This can can be generated with `openssl rand -hex 16`. + ``` + fly deploy + ``` + + + + + Yes, here are a few that come to mind: + - In step 2, we recommend pinning the Docker image to a specific [version of Infisical](https://hub.docker.com/r/infisical/infisical/tags) + instead of referring to the `latest` tag to avoid any unexpected version-to-version migration issues. + - In step 2, we recommend selecting a `primary_region` option that is closest to your infrastructure/clients to reduce latency; a full list of regions supported by Fly.io can be found [here](https://fly.io/docs/reference/regions/). + + We're working on putting together a fuller list of deployment best practices as well as minimum resource configuration requirements for running Infisical so stay tuned! + + -Lastly, the `MONGO_URL` environment variable requires a document database connection URL. -You can obtain this URL by creating a document database using services such as [MongoDB](https://www.mongodb.com/), [AWS DocumentDB](https://aws.amazon.com/documentdb/), and others. - -#### 3. Deploy - -Run `fly launch` in the directory where you have the local version of config from step 1 and follow the instructions. -Once done, your very own instance of Infisical should be up and running on Fly.io. - -Please note that this version of Infisical requires at least 250MB of memory to operate smoothly. - - -Once installation is complete, you will have to create the first account. No default account is provided. - +Resources: +- [Fly.io documentation](https://fly.io/docs/) \ No newline at end of file diff --git a/docs/self-hosting/deployment-options/gcp-cloud-run.mdx b/docs/self-hosting/deployment-options/gcp-cloud-run.mdx new file mode 100644 index 000000000..2a7f833a2 --- /dev/null +++ b/docs/self-hosting/deployment-options/gcp-cloud-run.mdx @@ -0,0 +1,5 @@ +--- +title: "GCP Cloud Run" +description: "Deploy Infisical with GCP Cloud Run" +--- + diff --git a/docs/self-hosting/deployment-options/standalone-infisical.mdx b/docs/self-hosting/deployment-options/standalone-infisical.mdx index 418459375..fbfa1b2a1 100644 --- a/docs/self-hosting/deployment-options/standalone-infisical.mdx +++ b/docs/self-hosting/deployment-options/standalone-infisical.mdx @@ -24,25 +24,23 @@ docker pull infisical/infisical:latest ## Run with docker To run Infisical, we'll need to configure the required configs listed below. Other configs can be found [here](../configuration/envars) - + Must be a random 16 byte hex string. Can be generated with `openssl rand -hex 16` - Must be a random 16 byte hex string. Can be generated with `openssl rand -hex 16` + Must be a random 32 byte base64 string. Can be generated with `openssl rand -base64 32` - A MongoDB connection string. Can use any MongoDB PaaS such as Mongo Atlas, AWS Document DB, etc. *TLS based connection string is not yet supported - - Redis connection string. Only required if you plan to use web integrations or secret reminders. + + Redis connection string - Once you have added the required environment variables to your docker run command, execute it in your terminal. ```bash diff --git a/docs/self-hosting/overview.mdx b/docs/self-hosting/overview.mdx index 8e72c5c01..975c7ba31 100644 --- a/docs/self-hosting/overview.mdx +++ b/docs/self-hosting/overview.mdx @@ -33,10 +33,17 @@ Choose from a variety of deployment options listed below to get started. Install Infisical using our Docker Compose template + title="Kubernetes" + color="#ea5a0c" + href="deployment-options/kubernetes-helm" + > Use our Helm chart to Install Infisical on your Kubernetes cluster - + + + Deploy Infisical with Fly.io +