diff --git a/.gitignore b/.gitignore index e3ad722..96788c9 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ references/ docker-compose.yml docker-compose.yaml .docker-certs/ +.docker-nginx/ diff --git a/scripts/setup/install_docker.sh b/scripts/setup/install_docker.sh index 6df6d35..e7b14ed 100755 --- a/scripts/setup/install_docker.sh +++ b/scripts/setup/install_docker.sh @@ -22,12 +22,15 @@ REPO_DIR="$(cd "$(dirname "$0")/../.." && pwd)" COMPOSE_FILE="$REPO_DIR/docker-compose.yml" EXAMPLE_FILE="$REPO_DIR/docker-compose.example.yml" SNAKEOIL_CERT_DIR="$REPO_DIR/.docker-certs" +NGINX_CONFIG_DIR="$REPO_DIR/.docker-nginx" +NGINX_CONFIG_BASENAME="remoteterm.conf" +NGINX_CONFIG_HOST_PATH="$NGINX_CONFIG_DIR/$NGINX_CONFIG_BASENAME" SNAKEOIL_CERT_BASENAME="remoteterm-snakeoil.crt" SNAKEOIL_KEY_BASENAME="remoteterm-snakeoil.key" SNAKEOIL_CERT_HOST_PATH="$SNAKEOIL_CERT_DIR/$SNAKEOIL_CERT_BASENAME" SNAKEOIL_KEY_HOST_PATH="$SNAKEOIL_CERT_DIR/$SNAKEOIL_KEY_BASENAME" -SNAKEOIL_CERT_CONTAINER_PATH="/app/certs/$SNAKEOIL_CERT_BASENAME" -SNAKEOIL_KEY_CONTAINER_PATH="/app/certs/$SNAKEOIL_KEY_BASENAME" +SNAKEOIL_CERT_CONTAINER_PATH="/etc/nginx/certs/$SNAKEOIL_CERT_BASENAME" +SNAKEOIL_KEY_CONTAINER_PATH="/etc/nginx/certs/$SNAKEOIL_KEY_BASENAME" IMAGE_MODE="image" TRANSPORT_MODE="serial" @@ -211,6 +214,49 @@ EOF chmod 644 "$SNAKEOIL_CERT_HOST_PATH" } +generate_nginx_tls_config() { + mkdir -p "$NGINX_CONFIG_DIR" + + cat >"$NGINX_CONFIG_HOST_PATH" <"$COMPOSE_FILE" echo -e "${GREEN}Generated ${COMPOSE_FILE}.${NC}" @@ -504,6 +552,11 @@ echo " sudo docker compose pull && sudo docker compose up -d # upgrade to the echo echo -e "${YELLOW}Note:${NC} serial passthrough generally needs ${BOLD}rootful Docker${NC}." echo "If Docker is running rootless on this host, serial-device mappings may fail even with a valid compose file." +if [[ "$ENABLE_SNAKEOIL_TLS" =~ ^[Yy]$ ]]; then + echo + echo -e "${GREEN}HTTPS will be handled by an nginx sidecar.${NC}" + echo "Host port 80 will redirect to HTTPS on port 8000." +fi if [ "$TRANSPORT_MODE" = "ble" ] || [ "$BLE_MANUAL_WARNING" = true ]; then echo echo -e "${RED}BLE requires more than the generated env vars.${NC}" @@ -519,6 +572,7 @@ echo -e "${PURPLE}└─────────────────── if [[ "$ENABLE_SNAKEOIL_TLS" =~ ^[Yy]$ ]]; then echo echo -e "After the container starts, open ${CYAN}https://${LOCAL_ACCESS_IP}:8000${NC}. Note that this address may change if you use DHCP/have not configured a static IP for your host via your router." + echo -e "Plain HTTP on ${CYAN}http://${LOCAL_ACCESS_IP}${NC} will redirect there automatically." echo -e "${YELLOW}Expect an untrusted/self-signed certificate warning the first time you connect.${NC}" else echo