Initial caddy skill
This commit is contained in:
4
Caddyfile
Normal file
4
Caddyfile
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Default Caddyfile - customize as needed
|
||||||
|
:80 {
|
||||||
|
respond "VibeStack Agent - Caddy is running!"
|
||||||
|
}
|
||||||
54
SKILL.md
Normal file
54
SKILL.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
name: caddy
|
||||||
|
description: Caddy web server with automatic HTTPS
|
||||||
|
metadata:
|
||||||
|
version: "1.0.0"
|
||||||
|
vibestack:
|
||||||
|
main: false
|
||||||
|
---
|
||||||
|
|
||||||
|
# Caddy Skill
|
||||||
|
|
||||||
|
Installs and configures [Caddy](https://caddyserver.com/) web server with automatic HTTPS.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Automatic HTTPS with Let's Encrypt
|
||||||
|
- Reverse proxy support
|
||||||
|
- Static file serving
|
||||||
|
- Zero-downtime reloads
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Create a `Caddyfile` in your skill's directory or set `CADDYFILE_PATH` environment variable.
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
| Variable | Description | Default |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `CADDYFILE_PATH` | Path to Caddyfile | `/skills/caddy/Caddyfile` |
|
||||||
|
| `CADDY_DATA_DIR` | Caddy data directory | `/data/caddy` |
|
||||||
|
|
||||||
|
## Example Caddyfile
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
:80 {
|
||||||
|
respond "Hello from Caddy!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Reverse proxy example
|
||||||
|
# api.example.com {
|
||||||
|
# reverse_proxy localhost:8080
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
This skill is typically used as a dependency by other skills that need a web server:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
metadata:
|
||||||
|
vibestack:
|
||||||
|
requires:
|
||||||
|
- caddy
|
||||||
|
```
|
||||||
36
scripts/autorun.sh
Normal file
36
scripts/autorun.sh
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Idempotent Caddy installation
|
||||||
|
install_caddy() {
|
||||||
|
if command -v caddy &>/dev/null; then
|
||||||
|
echo "caddy already installed: $(caddy version)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing Caddy..."
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||||
|
|
||||||
|
# Add Caddy GPG key and repository
|
||||||
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||||
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
|
||||||
|
|
||||||
|
# Install Caddy
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y caddy
|
||||||
|
|
||||||
|
echo "Caddy installed: $(caddy version)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create data directory
|
||||||
|
setup_dirs() {
|
||||||
|
local data_dir="${CADDY_DATA_DIR:-/data/caddy}"
|
||||||
|
mkdir -p "$data_dir"
|
||||||
|
echo "Caddy data directory: $data_dir"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_caddy
|
||||||
|
setup_dirs
|
||||||
13
scripts/run.sh
Normal file
13
scripts/run.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CADDYFILE_PATH="${CADDYFILE_PATH:-/skills/caddy/Caddyfile}"
|
||||||
|
CADDY_DATA_DIR="${CADDY_DATA_DIR:-/data/caddy}"
|
||||||
|
|
||||||
|
if [ ! -f "$CADDYFILE_PATH" ]; then
|
||||||
|
echo "Error: Caddyfile not found at $CADDYFILE_PATH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting Caddy with config: $CADDYFILE_PATH"
|
||||||
|
exec caddy run --config "$CADDYFILE_PATH" --adapter caddyfile
|
||||||
Reference in New Issue
Block a user