Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout. Co-authored-by: Cursor <cursoragent@cursor.com>
77 lines
1.9 KiB
Bash
Executable File
77 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install Spark SNI vhosts into the shared host nginx (do not replace nginx.conf).
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|
HOST_DIR="$ROOT/host"
|
|
BACKUP="/root/nginx-backup-$(date +%Y%m%d%H%M%S)"
|
|
|
|
need_certs() {
|
|
[[ -f /etc/letsencrypt/live/sparkapi.wyrs365.com/fullchain.pem ]] \
|
|
&& [[ -f /etc/letsencrypt/live/sparkim.wyrs365.com/fullchain.pem ]]
|
|
}
|
|
|
|
install_acme() {
|
|
mkdir -p /var/www/certbot
|
|
cp "$HOST_DIR/spark-acme.conf" /etc/nginx/conf.d/spark-acme.conf
|
|
nginx -t
|
|
systemctl reload nginx
|
|
}
|
|
|
|
issue_certs() {
|
|
certbot certonly --webroot -w /var/www/certbot \
|
|
--non-interactive --agree-tos --keep-until-expiring \
|
|
-d sparkapi.wyrs365.com
|
|
certbot certonly --webroot -w /var/www/certbot \
|
|
--non-interactive --agree-tos --keep-until-expiring \
|
|
-d sparkim.wyrs365.com
|
|
}
|
|
|
|
rewrite_http_443() {
|
|
local f
|
|
for f in /etc/nginx/conf.d/*.conf; do
|
|
case "$(basename "$f")" in
|
|
sparkapi.conf|spark-acme.conf) continue ;;
|
|
esac
|
|
if grep -qE 'listen[[:space:]]+127\.0\.0\.1:8443' "$f"; then
|
|
continue
|
|
fi
|
|
if grep -qE 'listen[[:space:]]+443[[:space:]]+ssl' "$f"; then
|
|
sed -i \
|
|
-e 's/listen 443 ssl;/listen 127.0.0.1:8443 ssl proxy_protocol;/' \
|
|
-e 's/listen \[::\]:443 ssl;/listen [::1]:8443 ssl proxy_protocol;/' \
|
|
"$f"
|
|
fi
|
|
done
|
|
}
|
|
|
|
install_sni() {
|
|
rewrite_http_443
|
|
rm -f /etc/nginx/conf.d/spark-acme.conf
|
|
cp "$HOST_DIR/sparkapi.conf" /etc/nginx/conf.d/sparkapi.conf
|
|
cp "$HOST_DIR/spark-sni.conf" /etc/nginx/stream.d/spark-sni.conf
|
|
if grep -RInE 'listen[[:space:]]+(\[::\]:)?443[[:space:]]+ssl' /etc/nginx/conf.d; then
|
|
echo "http still binds public 443" >&2
|
|
exit 1
|
|
fi
|
|
nginx -t
|
|
systemctl reload nginx
|
|
}
|
|
|
|
mkdir -p "$BACKUP"
|
|
cp -a /etc/nginx "$BACKUP/nginx"
|
|
echo "backup $BACKUP"
|
|
|
|
if ! need_certs; then
|
|
install_acme
|
|
issue_certs
|
|
fi
|
|
|
|
if ! need_certs; then
|
|
echo "certificates missing" >&2
|
|
exit 1
|
|
fi
|
|
|
|
install_sni
|
|
echo "nginx sni ready"
|