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
}