config/config.example.yaml
Rama master · réplica de lectura del repositorio original.
# Persistent application data, including SQLite and encrypted key material.
data_dir: /data
server:
listen: 0.0.0.0:8080
public_url: https://certvault.home.example.com
# Disable the web console and browser authentication routes for API-only use.
ui_enabled: true
# debug, info, warn, warning, error, or a slog offset such as DEBUG+2.
log_level: info
# Only trust forwarding headers from proxies you operate. Entries may be
# individual IP addresses or CIDR networks.
# trusted_proxies:
# - 172.18.0.0/16
# - 192.168.1.10
acme:
email: admin@example.com
# Start with staging. Change this only after staging issuance succeeds.
directory_url: https://acme-staging-v02.api.letsencrypt.org/directory
# Public recursive resolvers keep DNS-01 checks independent of local or
# split-horizon DNS. Port 53 is assumed when omitted.
dns_resolvers:
- 1.1.1.1:53
- 1.0.0.1:53
accept_terms: true
automatic_issuance: true
# Authentication is optional, but at least one UI login method is recommended.
auth:
# Browser session lifetime. Defaults to 8h.
session_duration: 8h
# Use CERTVAULT_BOOTSTRAP_ADMIN_TOKEN instead when secrets come from the
# environment.
# bootstrap_token_file: /run/secrets/admin_token
# oidc:
# issuer_url: https://auth.example.com/realms/homelab
# client_id: certvault
# Use CERTVAULT_OIDC_CLIENT_SECRET instead when secrets come from the
# environment.
# client_secret_file: /run/secrets/oidc_client_secret
# Defaults to openid, profile, email, and groups. The openid scope is required.
# scopes: [openid, profile, email, groups]
# An empty list allows every successfully authenticated OIDC identity.
# allowed_groups:
# - cert-admins
# Omit retention or set it to 0d to keep audit events indefinitely.
audit:
retention: 90d
# Optional Apprise REST API delivery for issuance, renewal, and failure alerts.
# Notification URLs often contain credentials; prefer environment variables or
# deployment secrets over committing them to this file.
# notifications:
# apprise_url: http://apprise:8000/notify/certvault
# apprise_tags: [admin, homelab]
# apprise_urls:
# - discord://webhook_id/webhook_token
# Credential names are user-defined. Provider names and environment variables
# are documented at https://go-acme.github.io/lego/dns/.
dns_credentials:
cloudflare_main:
provider: cloudflare
environment:
# Empty means inherit CLOUDFLARE_DNS_API_TOKEN from the process.
CLOUDFLARE_DNS_API_TOKEN: ""
# Use a _FILE variable instead when mounting a secret file. Do not set
# both forms for the same provider credential.
# CLOUDFLARE_DNS_API_TOKEN_FILE: /run/secrets/cloudflare_token
# Zones map certificate domains to DNS credentials. The most specific matching
# zone is selected for each domain.
zones:
- name: example.com
credential: cloudflare_main
certificates:
- name: homelab-wildcard
domains:
- example.com
- "*.example.com"
# ec256, ec384, rsa2048, rsa3072, or rsa4096.
key_type: ec256
renew_before: 720h
# Optional override; omitted values inherit acme.automatic_issuance.
automatic_issuance: true
enabled: true
# This disabled example demonstrates a certificate-level credential override.
- name: explicit-credential-example
domains:
- service.example.net
key_type: rsa2048
renew_before: 480h
credential: cloudflare_main
automatic_issuance: false
enabled: false
# Supported events are certificate.issued, certificate.renewed, and
# certificate.failed. Hook timeout defaults to 15s.
hooks:
# - name: deploy-notification
# type: webhook
# events:
# - certificate.issued
# - certificate.renewed
# - certificate.failed
# # Omit certificates to receive matching events for every certificate.
# certificates:
# - homelab-wildcard
# url: https://automation.example.com/hooks/certvault
# secret_file: /run/secrets/webhook_secret
# timeout: 15s
# - name: deploy-locally
# type: exec
# events:
# - certificate.issued
# - certificate.renewed
# certificates:
# - homelab-wildcard
# command: /hooks/deploy-certificate
# args:
# - --reload
# - nginx
# timeout: 30s