Initial duckdb skill with HTTP API

This commit is contained in:
Azat
2026-02-02 22:37:55 +01:00
commit 4f754c7234
3 changed files with 349 additions and 0 deletions

100
scripts/autorun.sh Normal file
View File

@@ -0,0 +1,100 @@
#!/bin/bash
set -e
DUCKDB_VERSION="${DUCKDB_VERSION:-1.1.3}"
SKILLS_DIR="${SKILLS_DIR:-/skills}"
DUCKDB_DATA_DIR="${DUCKDB_DATA_DIR:-/data/duckdb}"
# Detect architecture
get_arch() {
case "$(uname -m)" in
x86_64) echo "amd64" ;;
aarch64) echo "aarch64" ;;
*)
echo "Unsupported architecture: $(uname -m)" >&2
exit 1
;;
esac
}
# Install DuckDB CLI
install_duckdb() {
if command -v duckdb &>/dev/null; then
echo "duckdb already installed: $(duckdb --version)"
return 0
fi
echo "Installing DuckDB v${DUCKDB_VERSION}..."
local arch=$(get_arch)
local url="https://github.com/duckdb/duckdb/releases/download/v${DUCKDB_VERSION}/duckdb_cli-linux-${arch}.zip"
apt-get update && apt-get install -y unzip
curl -sSL "$url" -o /tmp/duckdb.zip
unzip -o /tmp/duckdb.zip -d /tmp
mv /tmp/duckdb /usr/local/bin/duckdb
chmod +x /usr/local/bin/duckdb
rm /tmp/duckdb.zip
echo "DuckDB installed: $(duckdb --version)"
}
# Install socat for HTTP server
install_socat() {
if command -v socat &>/dev/null; then
return 0
fi
echo "Installing socat..."
apt-get update && apt-get install -y socat jq
}
# Setup directories
setup_dirs() {
mkdir -p "$DUCKDB_DATA_DIR"
echo "Data directory: $DUCKDB_DATA_DIR"
}
# Configure Caddy if present
configure_caddy() {
local caddy_dir="$SKILLS_DIR/caddy"
local duckdb_port="${DUCKDB_PORT:-8432}"
local duckdb_domain="${DUCKDB_DOMAIN:-}"
if [ ! -d "$caddy_dir" ]; then
echo "Caddy not found - DuckDB API on port $duckdb_port"
return 0
fi
echo "Caddy detected - configuring reverse proxy..."
mkdir -p "$caddy_dir/snippets.d"
local snippet="$caddy_dir/snippets.d/duckdb.caddy"
if [ -n "$duckdb_domain" ]; then
cat > "$snippet" << EOF
# Auto-generated by duckdb skill
$duckdb_domain {
reverse_proxy localhost:$duckdb_port
}
EOF
echo "Caddy config: $duckdb_domain -> localhost:$duckdb_port"
else
cat > "$snippet" << EOF
# Auto-generated by duckdb skill
# Add to your site block:
# handle /duckdb/* {
# uri strip_prefix /duckdb
# reverse_proxy localhost:$duckdb_port
# }
EOF
echo "Caddy snippet created (manual config needed)"
fi
}
install_duckdb
install_socat
setup_dirs
configure_caddy
echo "DuckDB setup complete"