@cryptotaxi247 / infra / commits / 5e687eac

Rename gh-releases.nixos.org to artifacts.nixos.org

This renames the GitHub releases proxy service to use a more generic name that better reflects its purpose as a general artifacts CDN. Changes: - Renamed DNS records from gh-releases to artifacts - Updated ACME challenge CNAME to match Terraform output - Renamed terraform/gh-releases.tf to terraform/artifacts.tf - Updated all references in Terraform configuration The service continues to proxy GitHub releases for NixOS projects through Fastly CDN with IPv6 support.

Jörg Thalheim committed Jun 20, 2025 at 15:56 UTC 5e687eac46dc5ba9be2d8223c9353107f2e395ca
2 files changed +19 -19
dns/nixos.org.js
+2 -2
@@ -41,13 +41,13 @@ D("nixos.org",
41
42 // fastly
43 CNAME("_acme-challenge.channels", "9u55qij5w2odiwqxfi.fastly-validations.com."),
44 - CNAME("_acme-challenge.gh-releases", "4pgghpw19iuvzjiz9k.fastly-validations.com."),
44 + CNAME("_acme-challenge.artifacts", "bsk6mjvi6b1r6wekb0.fastly-validations.com."),
45 CNAME("_acme-challenge.releases", "s731ezp9ameh5f349b.fastly-validations.com."),
46 CNAME("_acme-challenge.tarballs", "vnqm62k5sjx9jogeqg.fastly-validations.com."),
47 CNAME("cache", "dualstack.v2.shared.global.fastly.net."),
48 CNAME("cache-staging", "dualstack.v2.shared.global.fastly.net."),
49 CNAME("channels", "dualstack.v2.shared.global.fastly.net."),
50 - CNAME("gh-releases", "dualstack.v2.shared.global.fastly.net."),
50 + CNAME("artifacts", "dualstack.v2.shared.global.fastly.net."),
51 CNAME("releases", "dualstack.v2.shared.global.fastly.net."),
52 CNAME("tarballs", "dualstack.v2.shared.global.fastly.net."),
53
terraform/artifacts.tf renamed
+17 -17
@@ -1,4 +1,4 @@
1 -# GitHub Releases Proxy Service
1 +# Artifacts Proxy Service
2 #
3 # This service provides IPv6-enabled access to GitHub releases through Fastly CDN.
4 # It transparently follows GitHub's S3 redirects to provide direct file access.
@@ -10,26 +10,26 @@
10 # Testing commands:
11 #
12 # Basic functionality tests:
13 -# curl -I https://gh-releases.nixos.org/nix/0.27.0/nix-installer.sh
14 -# curl -s https://gh-releases.nixos.org/nix/0.27.0/nix-installer.sh | head -n 5
13 +# curl -I https://artifacts.nixos.org/nix/0.27.0/nix-installer.sh
14 +# curl -s https://artifacts.nixos.org/nix/0.27.0/nix-installer.sh | head -n 5
15 #
16 # IPv6 connectivity test:
17 -# curl -6 -I https://gh-releases.nixos.org/nix/0.27.0/nix-installer.sh
17 +# curl -6 -I https://artifacts.nixos.org/nix/0.27.0/nix-installer.sh
18 #
19 # Performance comparison (should show redirect following):
20 -# time curl -s https://gh-releases.nixos.org/nix/0.27.0/nix-installer-x86_64-linux > /dev/null
20 +# time curl -s https://artifacts.nixos.org/nix/0.27.0/nix-installer-x86_64-linux > /dev/null
21 # time curl -s https://github.com/NixOS/experimental-nix-installer/releases/download/0.27.0/nix-installer-x86_64-linux > /dev/null
22 #
23 # Error cases (should return 404):
24 -# curl -I https://gh-releases.nixos.org/invalid/path
25 -# curl -I https://gh-releases.nixos.org/patchelf/999.999.999/nonexistent-file
24 +# curl -I https://artifacts.nixos.org/invalid/path
25 +# curl -I https://artifacts.nixos.org/patchelf/999.999.999/nonexistent-file
26
27 locals {
28 - gh_releases_domain = "gh-releases.nixos.org"
28 + artifacts_domain = "artifacts.nixos.org"
29 }
30
31 -resource "fastly_service_vcl" "gh_releases" {
32 - name = local.gh_releases_domain
31 +resource "fastly_service_vcl" "artifacts" {
32 + name = local.artifacts_domain
33 default_ttl = 3600
34
35 backend {
@@ -89,7 +89,7 @@ resource "fastly_service_vcl" "gh_releases" {
89 }
90
91 domain {
92 - name = local.gh_releases_domain
92 + name = local.artifacts_domain
93 }
94
95 # Main VCL snippet to handle the redirect logic
@@ -161,25 +161,25 @@ resource "fastly_service_vcl" "gh_releases" {
161 }
162
163 logging_s3 {
164 - name = "${local.gh_releases_domain}-to-s3"
164 + name = "${local.artifacts_domain}-to-s3"
165 bucket_name = local.fastlylogs["bucket_name"]
166 compression_codec = "zstd"
167 domain = local.fastlylogs["s3_domain"]
168 format = local.fastlylogs["format"]
169 format_version = 2
170 - path = "${local.gh_releases_domain}/"
170 + path = "${local.artifacts_domain}/"
171 period = local.fastlylogs["period"]
172 message_type = "blank"
173 s3_iam_role = local.fastlylogs["iam_role_arn"]
174 }
175 }
176
177 -resource "fastly_tls_subscription" "gh_releases" {
178 - domains = [for domain in fastly_service_vcl.gh_releases.domain : domain.name]
177 +resource "fastly_tls_subscription" "artifacts" {
178 + domains = [for domain in fastly_service_vcl.artifacts.domain : domain.name]
179 configuration_id = local.fastly_tls12_sni_configuration_id
180 certificate_authority = "lets-encrypt"
181 }
182
183 -output "gh-releases-managed_dns_challenge" {
184 - value = fastly_tls_subscription.gh_releases.managed_dns_challenges
183 +output "artifacts-managed_dns_challenge" {
184 + value = fastly_tls_subscription.artifacts.managed_dns_challenges
185 }