77 lines
1.9 KiB
Bash
77 lines
1.9 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
REDIS_DATA_DIR="${REDIS_DATA_DIR:-/data/redis}"
|
|
SKILLS_DIR="${SKILLS_DIR:-/skills}"
|
|
|
|
# Idempotent Redis installation
|
|
install_redis() {
|
|
if command -v redis-server &>/dev/null; then
|
|
echo "Redis already installed: $(redis-server --version)"
|
|
return 0
|
|
fi
|
|
|
|
echo "Installing Redis..."
|
|
|
|
# Install dependencies
|
|
apt-get update
|
|
apt-get install -y curl gpg lsb-release
|
|
|
|
# Add Redis repository
|
|
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
|
|
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" > /etc/apt/sources.list.d/redis.list
|
|
|
|
# Install Redis
|
|
apt-get update
|
|
apt-get install -y redis
|
|
|
|
echo "Redis installed: $(redis-server --version)"
|
|
}
|
|
|
|
# Setup directories
|
|
setup_dirs() {
|
|
mkdir -p "$REDIS_DATA_DIR"
|
|
chown -R redis:redis "$REDIS_DATA_DIR" 2>/dev/null || true
|
|
chmod 755 "$REDIS_DATA_DIR"
|
|
|
|
echo "Redis data directory: $REDIS_DATA_DIR"
|
|
}
|
|
|
|
# Configure Caddy if present
|
|
configure_caddy() {
|
|
local caddy_dir="$SKILLS_DIR/caddy"
|
|
local redis_domain="${REDIS_DOMAIN:-}"
|
|
local redis_port="${REDIS_PORT:-6379}"
|
|
|
|
if [ ! -d "$caddy_dir" ]; then
|
|
echo "Caddy not found - Redis will run standalone"
|
|
return 0
|
|
fi
|
|
|
|
if [ -z "$redis_domain" ]; then
|
|
echo "REDIS_DOMAIN not set - skipping Caddy config"
|
|
return 0
|
|
fi
|
|
|
|
echo "Caddy detected - configuring reverse proxy..."
|
|
|
|
local snippets_dir="$caddy_dir/snippets.d"
|
|
mkdir -p "$snippets_dir"
|
|
|
|
cat > "$snippets_dir/redis.caddy" << EOF
|
|
# Auto-generated by redis skill
|
|
# Note: Redis protocol is not HTTP - this is for Redis Insight or similar tools
|
|
# $redis_domain {
|
|
# reverse_proxy localhost:$redis_port
|
|
# }
|
|
EOF
|
|
|
|
echo "Caddy snippet created (manual config needed for Redis)"
|
|
}
|
|
|
|
install_redis
|
|
setup_dirs
|
|
configure_caddy
|
|
|
|
echo "Redis setup complete"
|