#!/bin/bash # ExecStart for devdesk.service: builds the ttyd command line from # /etc/devdesk/env and /etc/devdesk/secret.env (loaded by systemd). set -euo pipefail if [ -z "${DEVDESK_CREDENTIAL:-}" ]; then echo "devdesk-serve: DEVDESK_CREDENTIAL is not set (expected in /etc/devdesk/secret.env)" >&2 exit 1 fi args=( --port "${DEVDESK_PORT:-7681}" --writable # ttyd >= 1.7.4 is read-only by default --url-arg # ?arg= becomes `devdesk attach ` --check-origin # refuse cross-site WebSocket connections --max-clients "${DEVDESK_MAX_CLIENTS:-32}" --credential "$DEVDESK_CREDENTIAL" # injected by NPM as an Authorization header --index "${DEVDESK_INDEX:-/usr/share/devdesk/index.html}" --debug "${DEVDESK_TTYD_LOG_LEVEL:-3}" # errors+warnings only: notice level would log the credential ) if [ -n "${DEVDESK_BIND:-}" ]; then args+=(--interface "$DEVDESK_BIND") fi exec "${DEVDESK_TTYD:-/usr/lib/devdesk/bin/ttyd}" "${args[@]}" "${DEVDESK_BIN:-/usr/bin/devdesk}" attach