Cloud Account
You will need an AWS or GCP account to run Nuon BYOC in. The installation process is the same on both platforms. Platform-specific architecture is covered in Architecture.If you are hosting Nuon BYOC on GCP, a public S3 bucket is still required to support CloudFormation Quick create links for customer AWS install stacks.
By default, we will provision a bucket for you, but if you would like to own the bucket yourself, you will need an AWS account.
DNS
Root DNS
In order to serve Nuon BYOC at your own domain — for example,nuon.my-domain.com — you will need a DNS zone to place the records in.
1
Before creating the install, create the DNS zone
my-domain.com in your preferred hosting provider, if it does not already exist.2
While provisioning the install stack, provide
nuon.my-domain.com as the value for the Root Domain input.3
Once Nuon BYOC has fully provisioned, the nameservers for the install will be available in the outputs.
4
Create an NS record named
nuon.my-domain.com using the nameserver values from the install outputs.5
Once propagation is complete, your Nuon BYOC install will be available at
nuon.my-domain.com.nuon.my-domain.com. Only the runner API needs to be public. The rest can be private to your internal network.
Install Delegation DNS (Optional)
If you don’t want your customers to have to set up DNS when installing your app, you can configure DNS delegation. A subdomain is provisioned for each install under a subdomain you control. Nuon Cloud, for example, creates a subdomain for each install at<install_id>.nuon.run by default.
For details, see Custom Domains.
GitHub App
Create a GitHub App so Nuon can access your GitHub org. This allows it to access private repos and receive webhook events.1
Go to GitHub App Settings and click New GitHub App.
2
Configure the app with the following settings.
3
Configure the following permissions.Repository permissions
Organization permissions
The Webhooks permission lets Nuon register a webhook to trigger app branch runs. If you do not want to grant this access, you can instead trigger runs from your own CI using the Nuon GitHub Action.
4
Under “Where can this GitHub App be installed?”, select Only on this account (unless you need to access repos in other GitHub organizations).
5
Click Create GitHub App.
6
After creation, scroll to the bottom of the page and click Generate a private key. Save the PEM file to provide as a secret.
The GitHub App PEM key must be base64 encoded to preserve newlines.
7
Save the App ID and Client ID from the app settings page to provide as inputs.
Identity Provider
Configure your preferred identity provider to control user access to Nuon.1
Go to the Google Cloud Console and create or select a project.
2
Navigate to APIs & Services > Credentials.
3
Click Create Credentials > OAuth client ID and select Web application as the application type.
4
Configure the OAuth client.
5
Click Create.
6
After creation, save the Client ID to provide as an input, and the Client Secret to provide as a secret.
You will also need the Issuer URL for Google. It is always
https://accounts.google.com.Okta
To use Okta as your IdP, set up an OIDC Application in Okta.1
In the Okta Admin Console, navigate to Applications and create a new OIDC application.
- For Sign-in method, select OIDC - OpenID Connect
- For Application type, select Web Application
2
Set the Sign In Redirect to
https://auth.<your-root-domain>/auth3
Set Trusted Origins to
<your-root-domain>4
Click Save.
5
After creation, save the Issuer URL and Client ID to provide as an input, and the Secret to provide as a secret.
Auth0 (Legacy)
To use Auth0 for authentication, you will need to configure an API, applications, and a custom action in your Auth0 tenant. Nuon provides a Terraform module to automate Auth0 configuration. We recommend this over manual configuration. Apply the following Terraform to use it.1
Add an action to enrich the access token with the user’s email.
- Go to Actions > Library in your Auth0 dashboard
- Click Create Action > Build from scratch
- Name it
AddScopeand select the latest runtime - Replace the code with:
- Deploy the action
- Go to Actions > Triggers > Post Login
- Drag the
AddScopeaction into the flow and save
2
Create an API with the following settings.
The Identifier must match your API URL exactly. It cannot be changed after creation.
3
Create a Single Page Application for the Dashboard UI.
4
Create a Native Application for CLI authentication.