@@ -8,6 +8,10 @@ if [[ -e /var/run/dstack.sock ]]; then
88else
99 TXT_PREFIX=${TXT_PREFIX:- " _tapp-address" }
1010fi
11+ PROXY_CMD=" proxy"
12+ if [[ " ${TARGET_ENDPOINT} " == grpc://* ]]; then
13+ PROXY_CMD=" grpc"
14+ fi
1115
1216echo " Setting up certbot environment"
1317
@@ -24,10 +28,7 @@ setup_certbot_env() {
2428 fi
2529}
2630
27- PROXY_CMD=" proxy"
28- if [[ " ${TARGET_ENDPOINT} " == grpc://* ]]; then
29- PROXY_CMD=" grpc"
30- fi
31+ setup_py_env
3132
3233setup_nginx_conf () {
3334 cat << EOF >/etc/nginx/conf.d/default.conf
@@ -84,29 +85,26 @@ server {
8485 }
8586}
8687EOF
87- mkdir -p /var/log/nginx
8888}
8989
90-
9190set_alias_record () {
92- # Use the unified DNS manager to set the alias record
93- source /opt/app-venv/bin/activate
94- echo " Setting alias record for $DOMAIN "
95- dns_manager.py set_alias \
96- --domain " $DOMAIN " \
91+ local domain=" $1 "
92+ echo " Setting alias record for $domain "
93+ dnsman.py set_alias \
94+ --domain " $domain " \
9795 --content " $GATEWAY_DOMAIN "
9896
9997 if [ $? -ne 0 ]; then
100- echo " Error: Failed to set alias record for $DOMAIN "
98+ echo " Error: Failed to set alias record for $domain "
10199 exit 1
102100 fi
103- echo " Alias record set for $DOMAIN "
101+ echo " Alias record set for $domain "
104102}
105103
106104set_txt_record () {
105+ local domain=" $1 "
107106 local APP_ID
108107
109- # Generate a unique app ID if not provided
110108 if [[ -e /var/run/dstack.sock ]]; then
111109 DSTACK_APP_ID=$( curl -s --unix-socket /var/run/dstack.sock http://localhost/Info | jq -j .app_id)
112110 export DSTACK_APP_ID
@@ -116,48 +114,72 @@ set_txt_record() {
116114 fi
117115 APP_ID=${APP_ID:- " $DSTACK_APP_ID " }
118116
119- # Use the unified DNS manager to set the TXT record
120- source /opt/app-venv/bin/activate
121- dns_manager.py set_txt \
122- --domain " ${TXT_PREFIX} .${DOMAIN} " \
117+ dnsman.py set_txt \
118+ --domain " ${TXT_PREFIX} .${domain} " \
123119 --content " $APP_ID :$PORT "
124120
125121 if [ $? -ne 0 ]; then
126- echo " Error: Failed to set TXT record for $DOMAIN "
122+ echo " Error: Failed to set TXT record for $domain "
127123 exit 1
128124 fi
129125}
130126
131127set_caa_record () {
128+ local domain=" $1 "
132129 if [ " $SET_CAA " != " true" ]; then
133130 echo " Skipping CAA record setup"
134131 return
135132 fi
136- # Add CAA record for the domain
137133 local ACCOUNT_URI
138- ACCOUNT_URI=$( jq -j ' .uri' /evidences/acme-account.json)
139- echo " Adding CAA record for $DOMAIN , accounturi=$ACCOUNT_URI "
140- source /opt/app-venv/bin/activate
141- dns_manager.py set_caa \
142- --domain " $DOMAIN " \
134+ ACCOUNT_URI=$( jq -j ' .uri' /etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/* /regr.json)
135+ echo " Adding CAA record for $domain , accounturi=$ACCOUNT_URI "
136+ dnsman.py set_caa \
137+ --domain " $domain " \
143138 --caa-tag " issue" \
144139 --caa-value " letsencrypt.org;validationmethods=dns-01;accounturi=$ACCOUNT_URI "
145140
146141 if [ $? -ne 0 ]; then
147- echo " Warning: Failed to set CAA record for $DOMAIN "
142+ echo " Warning: Failed to set CAA record for $domain "
148143 echo " This is not critical - certificates can still be issued without CAA records"
149144 echo " Consider disabling CAA records by setting SET_CAA=false if this continues to fail"
150145 # Don't exit - CAA records are optional for certificate generation
151146 fi
152147}
153148
149+ process_domain () {
150+ local domain=" $1 "
151+ echo " Processing domain: $domain "
152+
153+ set_alias_record " $domain "
154+ set_txt_record " $domain "
155+ renew-certificate.sh " $domain " || echo " First certificate renewal failed for $domain , will retry after set CAA record"
156+ set_caa_record " $domain "
157+ renew-certificate.sh " $domain "
158+ }
159+
154160bootstrap () {
155- echo " Bootstrap: Setting up $DOMAIN "
156- source /opt/app-venv/bin/activate
157- renew-certificate.sh -n
158- set_alias_record
159- set_txt_record
160- set_caa_record
161+ echo " Bootstrap: Setting up domains"
162+
163+ local all_domains
164+ all_domains=$( get-all-domains.sh)
165+
166+ if [ -z " $all_domains " ]; then
167+ echo " Error: No domains found. Set either DOMAIN or DOMAINS environment variable"
168+ exit 1
169+ fi
170+
171+ echo " Found domains:"
172+ echo " $all_domains "
173+
174+ while IFS= read -r domain; do
175+ [[ -n " $domain " ]] || continue
176+ process_domain " $domain "
177+ done <<< " $all_domains"
178+
179+ # Generate evidences after all certificates are obtained
180+ echo " Generating evidence files for all domains..."
181+ generate-evidences.sh
182+
161183 touch /.bootstrapped
162184}
163185
175197
176198renewal-daemon.sh &
177199
178- setup_nginx_conf
200+ mkdir -p /var/log/nginx
201+
202+ if [ -n " $DOMAIN " ] && [ -n " $TARGET_ENDPOINT " ]; then
203+ setup_nginx_conf
204+ fi
179205
180206exec " $@ "
0 commit comments