Skip to main content

Configuration Guide

This guide covers the essential configuration options for deploying Outline using the Helm chart.

Basic Configuration

Image Configuration

image:
repository: outlinewiki/outline
tag: "" # Uses chart appVersion by default
pullPolicy: IfNotPresent

Service Configuration

service:
type: ClusterIP
port: 3000
name: http
annotations: {}

Deployment Strategy

Choose between RollingUpdate and Recreate strategies:

strategy:
type: RollingUpdate # Recommended for multi-replica deployments
rollingUpdate:
maxSurge: "25%"
maxUnavailable: "25%"
tip

Use RollingUpdate for production deployments with multiple replicas to ensure zero-downtime updates.

Web Configuration

Configure web server settings:

web:
concurrency: 1
forceHttps: true
skipSSLVerification: false
info
  • concurrency: Number of worker processes (1-10)
  • forceHttps: Redirect HTTP to HTTPS
  • skipSSLVerification: Allow insecure connections (development only)

URL Configuration

Set the application URL:

url: "https://outline.yourdomain.com"
tip

If not set, the URL will be auto-generated from ingress configuration or service definition.

Language and Localization

Configure default language:

defaultLanguage: en_US

Available languages: en_US, en_GB, de_DE, fr_FR, es_ES, it_IT, ja_JP, ko_KR, pt_BR, ru_RU, tr_TR, zh_CN, zh_TW

Rate Limiting

Enable rate limiting for API protection:

rateLimiter:
enabled: true
limit: 100
window: 60

Auto Update Configuration

Configure automatic updates:

autoUpdate:
enabled: false
telemetry: false
warning

Disable auto updates in production to maintain control over your deployment.

Logging Configuration

Configure application logging:

logging:
level: info # error, warn, info, http, verbose, debug, silly
extraDebug: [] # Available modules: lifecycle, http, editor, router, collaboration, misc, store, plugins, policies

Resource Management

Set resource requests and limits:

resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi

Health Checks

Configure liveness and readiness probes:

livenessProbe:
httpGet:
path: /_health
port: http
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 3
failureThreshold: 5

readinessProbe:
httpGet:
path: /_health
port: http
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 3
failureThreshold: 5

Ingress Configuration

Enable ingress for external access:

ingress:
enabled: true
className: nginx
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: outline.yourdomain.com
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: outline-tls
hosts:
- outline.yourdomain.com

Security Context

Configure security settings:

podSecurityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch

securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1001
runAsGroup: 1001

Service Account

Configure service account settings:

serviceAccount:
create: true
automount: true
name: ""
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789012:role/outline-role"

Complete Example

Here's a complete configuration example for a production deployment:

# Basic deployment
replicaCount: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: "25%"
maxUnavailable: "25%"

# Image configuration
image:
repository: outlinewiki/outline
pullPolicy: IfNotPresent

# Web configuration
web:
concurrency: 2
forceHttps: true
skipSSLVerification: false

# URL and language
url: "https://outline.yourdomain.com"
defaultLanguage: en_US

# Rate limiting
rateLimiter:
enabled: true
limit: 100
window: 60

# Auto updates
autoUpdate:
enabled: false
telemetry: false

# Logging
logging:
level: info
extraDebug: []

# Resources
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi

# Ingress
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: outline.yourdomain.com
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: outline-tls
hosts:
- outline.yourdomain.com

# Security
podSecurityContext:
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch

securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
runAsUser: 1001
runAsGroup: 1001

Environment Variables

The chart automatically sets these environment variables:

VariableDescriptionDefault
NODE_ENVNode environmentproduction
SECRET_KEYApplication secret keyAuto-generated
UTILS_SECRETUtils secret keyAuto-generated
PORTApplication port3000
DEFAULT_LANGUAGEDefault languageen_US
URLApplication URLAuto-generated
RATE_LIMITER_ENABLEDRate limiter enabledfalse
ENABLE_UPDATESAuto updates enabledfalse
TELEMETRYTelemetry enabledfalse
FORCE_HTTPSForce HTTPS redirecttrue
WEB_CONCURRENCYWorker processes1
LOG_LEVELLogging levelinfo

Next Steps