From f0471429e1fc2c005a5bfba0bc238ab6cc670a97 Mon Sep 17 00:00:00 2001 From: jonaro00 <54029719+jonaro00@users.noreply.github.com> Date: Thu, 25 Jan 2024 12:29:34 +0100 Subject: [PATCH] feat: custom domain docs (#253) * feat: domain page * nit * better sections --- configuration/domain-names.mdx | 54 +++++++++++++++++++++++++++++-- images/cloudflare_root_cname.png | Bin 0 -> 20217 bytes images/cloudflare_sub_cname.png | Bin 0 -> 20611 bytes 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 images/cloudflare_root_cname.png create mode 100644 images/cloudflare_sub_cname.png diff --git a/configuration/domain-names.mdx b/configuration/domain-names.mdx index 4a6b143..645765e 100644 --- a/configuration/domain-names.mdx +++ b/configuration/domain-names.mdx @@ -6,7 +6,55 @@ icon: "globe" -Adding custom domain names to projects is currently available to Pro users. +By adding a custom domain to your project, web traffic can be served on your own fancy domain name instead of `*.shuttleapp.rs`. -For now, you have to reach out to the team to set up your domain. -This will be automated in the future. +You can add a root-level domain (`example.com`) or a subdomain (`thing.example.com`). + +Adding a custom domain to your project follows these steps: +- Purchase a domain name from a DNS provider, +- set up a DNS record to make it point to your Shuttle server, and +- get an SSL certificate that enables HTTPS traffic to your project. + +# Set up DNS record + +The process for setting up the required DNS rule looks different depending on which type of domain and registrar you have. + +## Cloudflare + +If you have your domain name on Cloudflare, the process is quite simple. Go to `Websites -> -> DNS -> Records -> Add Record`, then follow the relevant section below. + +### Root domain + +Add a `CNAME` record from `@` to your `.shuttleapp.rs` subdomain. Disable the Proxy. + +![cloudflare root cname](/images/cloudflare_root_cname.png) + +Adding a `CNAME` on the root level here is possible due to Cloudflare's [CNAME flattening](https://developers.cloudflare.com/dns/cname-flattening/). + +You can also add a `CNAME` for the `www` subdomain if you also want traffic to `www.example.com` to arrive to your service. + +### Subdomain + +Add a `CNAME` record from your subdomain to your `.shuttleapp.rs` subdomain. Disable the Proxy. + +![cloudflare subdomain cname](/images/cloudflare_sub_cname.png) + +In the example above, the subdomain `thing` (as in `thing.my-domain.com`) is being directed to `example.shuttleapp.rs`. + +## Other DNS providers + +The process for other providers can vary, but here are the general steps. If you want to add docs for a specific provider, feel free to contribute to this page. + +### Root domain + +If you are adding a root-level domain, add an `A` record that points to the same IP address that is returned by `dig A example.shuttleapp.rs`, which is currently `18.132.234.15`. + +### Subdomain + +If you are adding a subdomain, add a `CNAME` record from your subdomain to your `.shuttleapp.rs` subdomain. + +# Set up SSL certificate + +When your DNS record has propagated, you want to get an SSL certificate signed by Shuttle. + +For now, you have to reach out to the Shuttle team on Discord or `support@shuttle.rs` to set up your SSL certificate manually, but this will soon be automated. diff --git a/images/cloudflare_root_cname.png b/images/cloudflare_root_cname.png new file mode 100644 index 0000000000000000000000000000000000000000..838940e03fc14289913e4d542744d9ae8d360c3a GIT binary patch literal 20217 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