@@ -8,19 +8,19 @@ This guide provides comprehensive deployment instructions for the Torrust Tracke
88across all supported environments:
99
1010- ** 🏠 Local Development** : KVM/libvirt for development and testing
11- - ** 🧪 Staging Environment** : Hetzner Cloud with ` torrust-demo.dev ` domain
11+ - ** 🧪 Staging Environment** : Hetzner Cloud with ` staging- torrust-demo.com ` domain
1212- ** 🚀 Production Environment** : Hetzner Cloud with ` torrust-demo.com ` domain
1313
1414The deployment follows ** twelve-factor app methodology** with Infrastructure as Code
1515principles for reproducible, maintainable deployments.
1616
1717### Deployment Environments
1818
19- | Environment | Provider | Domain | Purpose | Status |
20- | --------------- | ------------- | ------------------ | ----------------------------- | ------------------------ |
21- | ** Development** | KVM/libvirt | ` test.local ` | Local testing and development | ✅ ** Fully Implemented** |
22- | ** Staging** | Hetzner Cloud | ` torrust-demo.dev ` | Pre-production testing | 🚧 ** In Development** |
23- | ** Production** | Hetzner Cloud | ` torrust-demo.com ` | Live service | 🚧 ** Planned** |
19+ | Environment | Provider | Domain | Purpose | Status |
20+ | --------------- | ------------- | -------------------------- | ----------------------------- | ------------------------ |
21+ | ** Development** | KVM/libvirt | ` test.local ` | Local testing and development | ✅ ** Fully Implemented** |
22+ | ** Staging** | Hetzner Cloud | ` staging- torrust-demo.com ` | Pre-production testing | 🚧 ** In Development** |
23+ | ** Production** | Hetzner Cloud | ` torrust-demo.com ` | Live service | 🚧 ** Planned** |
2424
2525## 📋 Prerequisites
2626
@@ -506,7 +506,7 @@ Infrastructure: Hetzner Cloud servers with floating IPs
506506
507507Register your domains at any registrar. For this guide:
508508
509- - ** Staging Domain** : ` torrust-demo.dev `
509+ - ** Staging Domain** : ` staging- torrust-demo.com `
510510- ** Production Domain** : ` torrust-demo.com `
511511
512512** Note** : You can use any registrar (cdmon.com, Namecheap, GoDaddy, etc.). The key is
@@ -518,7 +518,7 @@ pointing the nameservers to Hetzner DNS.
518518
5195191 . Go to [ Hetzner DNS Console] ( https://dns.hetzner.com/ )
5205202 . Click ** "Create zone"**
521- 3 . Enter your domain: ` torrust-demo.dev `
521+ 3 . Enter your domain: ` staging- torrust-demo.com `
5225224 . Click ** "Create zone"**
523523
524524Repeat for production domain: ` torrust-demo.com `
@@ -537,7 +537,7 @@ After creating the zone, note the assigned nameservers:
537537
5385381 . Log in to your cdmon.com control panel
5395392 . Navigate to ** "Domain Management"** → ** "DNS Management"**
540- 3 . Find your domain (` torrust-demo.dev ` )
540+ 3 . Find your domain (` staging- torrust-demo.com ` )
5415414 . Click ** "Modify DNS"** or ** "Change Nameservers"**
5425425 . Replace existing nameservers with Hetzner nameservers:
543543 - ` hydrogen.ns.hetzner.com `
@@ -558,10 +558,10 @@ The process is similar for other registrars:
558558#### 4.1 Using Hetzner DNS Console
559559
5605601 . Go to [ Hetzner DNS Console] ( https://dns.hetzner.com/ )
561- 2 . Click on your zone (` torrust-demo.dev ` )
561+ 2 . Click on your zone (` staging- torrust-demo.com ` )
5625623 . Add the following records:
563563
564- ** Staging Environment (` torrust-demo.dev ` )** :
564+ ** Staging Environment (` staging- torrust-demo.com ` )** :
565565
566566| Type | Name | Value | TTL |
567567| ---- | --------- | ----------------------- | --- |
@@ -616,11 +616,11 @@ create_record() {
616616
617617# Setup staging DNS
618618setup_staging_dns () {
619- echo " Setting up DNS for torrust-demo.dev ..."
620- ZONE_ID=$( get_zone_id " torrust-demo.dev " )
619+ echo " Setting up DNS for staging- torrust-demo.com ..."
620+ ZONE_ID=$( get_zone_id " staging- torrust-demo.com " )
621621
622622 if [[ -z " $ZONE_ID " ]]; then
623- echo " Error: Zone not found for torrust-demo.dev "
623+ echo " Error: Zone not found for staging- torrust-demo.com "
624624 exit 1
625625 fi
626626
@@ -696,27 +696,27 @@ chmod +x manage-dns.sh
696696
697697``` bash
698698# Check if nameservers have propagated
699- dig NS torrust-demo.dev
699+ dig NS staging- torrust-demo.com
700700
701701# Should show Hetzner nameservers:
702- # torrust-demo.dev . 3600 IN NS hydrogen.ns.hetzner.com.
703- # torrust-demo.dev . 3600 IN NS oxygen.ns.hetzner.com.
704- # torrust-demo.dev . 3600 IN NS helium.ns.hetzner.de.
702+ # staging- torrust-demo.com . 3600 IN NS hydrogen.ns.hetzner.com.
703+ # staging- torrust-demo.com . 3600 IN NS oxygen.ns.hetzner.com.
704+ # staging- torrust-demo.com . 3600 IN NS helium.ns.hetzner.de.
705705```
706706
707707#### 5.2 Test DNS Resolution
708708
709709``` bash
710710# Test staging domain resolution
711- dig tracker.torrust-demo.dev
712- dig AAAA tracker.torrust-demo.dev
711+ dig tracker.staging- torrust-demo.com
712+ dig AAAA tracker.staging- torrust-demo.com
713713
714714# Test production domain resolution
715715dig tracker.torrust-demo.com
716716dig AAAA tracker.torrust-demo.com
717717
718718# Verify the records point to your floating IPs
719- nslookup tracker.torrust-demo.dev
719+ nslookup tracker.staging- torrust-demo.com
720720nslookup tracker.torrust-demo.com
721721```
722722
@@ -729,7 +729,7 @@ Use online tools to verify global propagation:
729729
730730Search for:
731731
732- - ` tracker.torrust-demo.dev ` (A record)
732+ - ` tracker.staging- torrust-demo.com ` (A record)
733733- ` tracker.torrust-demo.com ` (A record)
734734
735735### Step 6: DNS Management Scripts
@@ -743,7 +743,7 @@ For ongoing DNS management, create utility scripts:
743743# list-dns-records.sh
744744
745745HDNS_TOKEN=" your-hetzner-dns-token"
746- DOMAIN=${1:- " torrust-demo.dev " }
746+ DOMAIN=${1:- " staging- torrust-demo.com " }
747747
748748# Get zone ID
749749ZONE_ID=$( curl -s -H " Auth-API-Token: $HDNS_TOKEN " \
@@ -772,7 +772,7 @@ curl -s -H "Auth-API-Token: $HDNS_TOKEN" \
772772# update-dns-record.sh
773773
774774HDNS_TOKEN=" your-hetzner-dns-token"
775- DOMAIN=" torrust-demo.dev "
775+ DOMAIN=" staging- torrust-demo.com "
776776SUBDOMAIN=" tracker"
777777NEW_IP=" 78.47.140.132"
778778
@@ -815,8 +815,8 @@ automatic subdomain concatenation. Configure each service domain separately.
815815When you configure:
816816
817817``` bash
818- TRACKER_DOMAIN=tracker.torrust-demo.dev
819- GRAFANA_DOMAIN=grafana.torrust-demo.dev
818+ TRACKER_DOMAIN=tracker.staging- torrust-demo.com
819+ GRAFANA_DOMAIN=grafana.staging- torrust-demo.com
820820```
821821
822822The system uses these exact domain names:
@@ -827,8 +827,8 @@ The system uses these exact domain names:
827827#### Required Domain Configuration
828828
829829- ** Staging** :
830- - ` TRACKER_DOMAIN=tracker.torrust-demo.dev `
831- - ` GRAFANA_DOMAIN=grafana.torrust-demo.dev `
830+ - ` TRACKER_DOMAIN=tracker.staging- torrust-demo.com `
831+ - ` GRAFANA_DOMAIN=grafana.staging- torrust-demo.com `
832832- ** Production** :
833833 - ` TRACKER_DOMAIN=tracker.torrust-demo.com `
834834 - ` GRAFANA_DOMAIN=grafana.torrust-demo.com `
@@ -975,21 +975,21 @@ HCLOUD_FLOATING_IPV6=2a01:4f8:1c17:a01d::1
975975
976976# === HETZNER DNS CONFIGURATION ===
977977HDNS_TOKEN=your-hetzner-dns-token
978- HDNS_ZONE_NAME=torrust-demo.dev
978+ HDNS_ZONE_NAME=staging- torrust-demo.com
979979
980980# === VM CONFIGURATION ===
981981VM_TYPE=cx22 # 4 vCPU, 8GB RAM, 80GB SSD
982982VM_LOCATION=nbg1 # Nuremberg
983983VM_IMAGE=ubuntu-24.04
984984
985985# === DOMAIN CONFIGURATION ===
986- TRACKER_DOMAIN=tracker.torrust-demo.dev
987- GRAFANA_DOMAIN=grafana.torrust-demo.dev
986+ TRACKER_DOMAIN=tracker.staging- torrust-demo.com
987+ GRAFANA_DOMAIN=grafana.staging- torrust-demo.com
988988
989989# === SSL CONFIGURATION ===
990990ENABLE_SSL=true
991991SSL_GENERATION_METHOD=letsencrypt
992- CERTBOT_EMAIL=admin@torrust-demo.dev
992+ CERTBOT_EMAIL=admin@staging- torrust-demo.com
993993
994994# === DATABASE CONFIGURATION ===
995995MYSQL_ROOT_PASSWORD=secure_staging_root_password
@@ -1138,11 +1138,11 @@ make app-health-check ENVIRONMENT_TYPE=staging
11381138
11391139``` bash
11401140# Test staging endpoints
1141- curl -s https://tracker.torrust-demo.dev /api/health_check | jq
1142- curl -s " https://tracker.torrust-demo.dev /api/v1/stats?token=$ADMIN_TOKEN " | jq
1141+ curl -s https://tracker.staging- torrust-demo.com /api/health_check | jq
1142+ curl -s " https://tracker.staging- torrust-demo.com /api/v1/stats?token=$ADMIN_TOKEN " | jq
11431143
11441144# Monitor staging
1145- open https://grafana.torrust-demo.dev
1145+ open https://grafana.staging- torrust-demo.com
11461146```
11471147
11481148### Production Workflow (Coming Soon)
11941194
11951195#### Cloud Services
11961196
1197- | Service | Staging URL | Production URL | Purpose |
1198- | ----------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ------------ |
1199- | ** Tracker API** | ` https://tracker.torrust-demo.dev /api/health_check ` | ` https://tracker.torrust-demo.com/api/health_check ` | Health check |
1200- | ** Tracker Stats** | ` https://tracker.torrust-demo.dev /api/v1/stats?token=TOKEN ` | ` https://tracker.torrust-demo.com/api/v1/stats?token=TOKEN ` | Statistics |
1201- | ** HTTP Tracker** | ` https://tracker.torrust-demo.dev /announce ` | ` https://tracker.torrust-demo.com/announce ` | HTTP tracker |
1202- | ** UDP Tracker** | ` udp://tracker.torrust-demo.dev :6868/announce ` | ` udp://tracker.torrust-demo.com:6868/announce ` | UDP tracker |
1203- | ** UDP Tracker** | ` udp://tracker.torrust-demo.dev :6969/announce ` | ` udp://tracker.torrust-demo.com:6969/announce ` | UDP tracker |
1204- | ** Grafana** | ` https://grafana.torrust-demo.dev ` | ` https://grafana.torrust-demo.com ` | Monitoring |
1197+ | Service | Staging URL | Production URL | Purpose |
1198+ | ----------------- | ------------------------------------------------------------------- | ----------------------------------------------------------- | ------------ |
1199+ | ** Tracker API** | ` https://tracker.staging- torrust-demo.com /api/health_check ` | ` https://tracker.torrust-demo.com/api/health_check ` | Health check |
1200+ | ** Tracker Stats** | ` https://tracker.staging- torrust-demo.com /api/v1/stats?token=TOKEN ` | ` https://tracker.torrust-demo.com/api/v1/stats?token=TOKEN ` | Statistics |
1201+ | ** HTTP Tracker** | ` https://tracker.staging- torrust-demo.com /announce ` | ` https://tracker.torrust-demo.com/announce ` | HTTP tracker |
1202+ | ** UDP Tracker** | ` udp://tracker.staging- torrust-demo.com :6868/announce ` | ` udp://tracker.torrust-demo.com:6868/announce ` | UDP tracker |
1203+ | ** UDP Tracker** | ` udp://tracker.staging- torrust-demo.com :6969/announce ` | ` udp://tracker.torrust-demo.com:6969/announce ` | UDP tracker |
1204+ | ** Grafana** | ` https://grafana.staging- torrust-demo.com ` | ` https://grafana.torrust-demo.com ` | Monitoring |
12051205
12061206### Service Management Commands
12071207
@@ -1299,7 +1299,7 @@ curl -I https://tracker.torrust-demo.com
12991299
13001300** ⚠️ Important** : Grafana requires manual setup after deployment.
13011301
1302- 1 . ** Access Grafana** : ` https://grafana.torrust-demo.dev ` (or production URL)
1302+ 1 . ** Access Grafana** : ` https://grafana.staging- torrust-demo.com ` (or production URL)
130313032 . ** Login** : ` admin/admin ` (change password immediately)
130413043 . ** Add Prometheus data source** : ` http://prometheus:9090 `
130513054 . ** Import dashboards** from ` application/share/grafana/dashboards/ `
@@ -1414,11 +1414,11 @@ systemctl status ufw
14141414
14151415 ``` bash
14161416 # Check nameserver propagation
1417- dig NS torrust-demo.dev
1417+ dig NS staging- torrust-demo.com
14181418
14191419 # Test DNS resolution
1420- dig tracker.torrust-demo.dev
1421- nslookup tracker.torrust-demo.dev
1420+ dig tracker.staging- torrust-demo.com
1421+ nslookup tracker.staging- torrust-demo.com
14221422
14231423 # Check global propagation
14241424 # Use whatsmydns.net or dnschecker.org
0 commit comments