Add smart Caddy auto-configuration
This commit is contained in:
16
SKILL.md
16
SKILL.md
@@ -29,6 +29,7 @@ Installs [ttyd](https://github.com/tsl0922/ttyd) - a simple command-line tool fo
|
||||
| `TTYD_COMMAND` | Command to run | `/bin/bash` |
|
||||
| `TTYD_CREDENTIAL` | Basic auth (user:pass) | (none) |
|
||||
| `TTYD_OPTIONS` | Additional ttyd options | (none) |
|
||||
| `TTYD_DOMAIN` | Domain for Caddy auto-config | (none) |
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -54,7 +55,20 @@ TTYD_CREDENTIAL="admin:secret" ./scripts/run.sh
|
||||
TTYD_COMMAND="htop" ./scripts/run.sh
|
||||
```
|
||||
|
||||
### With Caddy (HTTPS)
|
||||
### Auto-configuration with Caddy
|
||||
|
||||
If the `caddy` skill is present, ttyd will automatically register itself:
|
||||
|
||||
```bash
|
||||
# Set domain for auto-config
|
||||
TTYD_DOMAIN="terminal.example.com"
|
||||
```
|
||||
|
||||
This creates a snippet in `caddy/snippets.d/ttyd.caddy` that Caddy imports on startup.
|
||||
|
||||
### Manual Caddy Config
|
||||
|
||||
If not using auto-config:
|
||||
|
||||
```caddyfile
|
||||
terminal.example.com {
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
set -e
|
||||
|
||||
TTYD_VERSION="${TTYD_VERSION:-1.7.7}"
|
||||
SKILLS_DIR="${SKILLS_DIR:-/skills}"
|
||||
TTYD_PORT="${TTYD_PORT:-7681}"
|
||||
TTYD_DOMAIN="${TTYD_DOMAIN:-}"
|
||||
|
||||
# Idempotent ttyd installation
|
||||
install_ttyd() {
|
||||
@@ -32,4 +35,46 @@ install_ttyd() {
|
||||
echo "ttyd installed: $(ttyd --version)"
|
||||
}
|
||||
|
||||
# Configure Caddy if present
|
||||
configure_caddy() {
|
||||
local caddy_dir="$SKILLS_DIR/caddy"
|
||||
|
||||
if [ ! -d "$caddy_dir" ]; then
|
||||
echo "Caddy not found - ttyd will run standalone on port $TTYD_PORT"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Caddy detected - configuring reverse proxy..."
|
||||
|
||||
# Create snippets directory for modular config
|
||||
local snippets_dir="$caddy_dir/snippets.d"
|
||||
mkdir -p "$snippets_dir"
|
||||
|
||||
# Generate ttyd snippet
|
||||
local snippet="$snippets_dir/ttyd.caddy"
|
||||
|
||||
if [ -n "$TTYD_DOMAIN" ]; then
|
||||
# Domain-based routing
|
||||
cat > "$snippet" << EOF
|
||||
# Auto-generated by ttyd skill
|
||||
$TTYD_DOMAIN {
|
||||
reverse_proxy localhost:$TTYD_PORT
|
||||
}
|
||||
EOF
|
||||
echo "Caddy config: $TTYD_DOMAIN -> localhost:$TTYD_PORT"
|
||||
else
|
||||
# Path-based routing (fallback)
|
||||
cat > "$snippet" << EOF
|
||||
# Auto-generated by ttyd skill
|
||||
# Add to your site block:
|
||||
# handle /terminal/* {
|
||||
# uri strip_prefix /terminal
|
||||
# reverse_proxy localhost:$TTYD_PORT
|
||||
# }
|
||||
EOF
|
||||
echo "Caddy snippet created: $snippet (manual path-based config)"
|
||||
fi
|
||||
}
|
||||
|
||||
install_ttyd
|
||||
configure_caddy
|
||||
|
||||
Reference in New Issue
Block a user