Loading...
Loading...
Deploy Perses server: Docker Compose for local dev, Helm chart for K8s, or binary for bare metal. Configure database (file/SQL), auth (native/OIDC/OAuth), plugins, provisioning folders, and frontend settings. Use when user wants to deploy, install, set up, or configure a Perses server instance. Use for "deploy perses", "install perses", "perses setup", "perses server", "run perses". Do NOT use for dashboard creation (use perses-dashboard-create) or plugin development (use perses-plugin-create).
npx skill4agent add notque/claude-code-toolkit perses-deploy/api/v1/projects# Simplest — single container with defaults
docker run --name perses -d -p 127.0.0.1:8080:8080 persesdev/perses
# With custom config
docker run --name perses -d -p 127.0.0.1:8080:8080 \
-v /path/to/config.yaml:/etc/perses/config.yaml \
-v /path/to/data:/perses/data \
persesdev/perses --config=/etc/perses/config.yamlhelm repo add perses https://perses.github.io/helm-charts
helm repo update
helm install perses perses/perses \
--namespace perses --create-namespace \
--set config.database.file.folder=/perses/data \
--set config.security.enable_auth=true# Install via Homebrew
brew install perses/tap/perses
brew install perses/tap/percli
# Or download from GitHub releases
# Run with config
perses --config=./config.yamlhelm repo add perses https://perses.github.io/helm-charts
helm install perses-operator perses/perses-operator \
--namespace perses-system --create-namespace
# Then create a Perses CR
cat <<EOF | kubectl apply -f -
apiVersion: perses.dev/v1alpha2
kind: Perses
metadata:
name: perses
namespace: perses
spec:
config:
database:
file:
folder: '/perses'
extension: 'yaml'
containerPort: 8080
EOF# Database
database:
file:
folder: "/perses/data"
extension: "yaml"
# Security
security:
readonly: false
enable_auth: true
encryption_key: "<32-byte-AES-256-key>"
authentication:
access_token_ttl: "15m"
refresh_token_ttl: "24h"
providers:
enable_native: true
# oidc:
# - slug_id: github
# name: "GitHub"
# client_id: "<client-id>"
# client_secret: "<client-secret>"
# issuer: "https://github.com"
# redirect_uri: "https://perses.example.com/api/auth/providers/oidc/github/callback"
# Plugins
plugin:
archive_path: "plugins-archive"
path: "plugins"
# Provisioning (auto-load resources from folders)
provisioning:
folders:
- "/perses/provisioning"
# Frontend
frontend:
time_range:
disable_custom: falsePERSES_PERSES_DATABASE_FILE_FOLDER=/perses/dataPERSES_SECURITY_ENABLE_AUTH=truePERSES_SECURITY_ENCRYPTION_KEY=<key># Check API is responding
curl -s http://localhost:8080/api/v1/projects | head
# Install percli and login
percli login http://localhost:8080 --username admin --password <password>
percli whoami
# Create a test project
percli apply -f - <<EOF
kind: Project
metadata:
name: test
spec: {}
EOF
# Verify
percli get project# Install perses-mcp-server from releases
# Create config
cat > perses-mcp-config.yaml <<EOF
transport: stdio
read_only: false
perses_server:
url: "http://localhost:8080"
native_auth:
login: "admin"
password: "<password>"
EOF
# Add to Claude Code settings.json
# mcpServers.perses.command = "perses-mcp-server"
# mcpServers.perses.args = ["--config", "/path/to/perses-mcp-config.yaml"]