Skip to content
Snippets Groups Projects

Remark42

Version: 0.7.0 Type: application AppVersion: v1.13.0

A Helm chart for Remark42 on Kubernetes

TL;DR

helm repo add groundhog2k https://groundhog2k.github.io/helm-charts/
helm install my-release groundhog2k/remark42

Introduction

This chart uses the original Remark42 from Gitlab to deploy Remark42 in Kubernetes.

Limitations

The Remark42 image supports amd64 architecture only!

Prerequisites

  • Kubernetes 1.12+
  • Helm 3.x
  • PV provisioner support in the underlying infrastructure

Installing the Chart

To install the chart with the release name my-release:

helm install my-release groundhog2k/remark42

Uninstalling the Chart

To uninstall/delete the my-release deployment:

helm uninstall my-release

Requirements

Repository Name Version
@groundhog2k redis 0.6.14

Common parameters

Key Type Default Description
fullnameOverride string "" Fully override the deployment name
nameOverride string "" Partially override the deployment name

Deployment parameters

Key Type Default Description
image.pullPolicy string "IfNotPresent" Image pull policy
image.registry string "docker.io" Image registry
image.repository string "umputun/remark42" Image name
image.tag string "" Image tag
initCommand list ["/bin/sh"] Init container command
initArgs list ["-c","find /srvtmp -maxdepth 1 -type f -delete && rm -rf /srvtmp/web && cp -R /srv/* /srvtmp && mkdir -p /srvtmp/var"] Init container command args
imagePullSecrets list [] Image pull secrets
strategy object {} Pod deployment strategy
startupProbe object see values.yaml Startup probe configuration
livenessProbe object see values.yaml Liveness probe configuration
readinessProbe object see values.yaml Readiness probe configuration
customStartupProbe object {} Custom startup probe (overwrites default startup probe configuration)
customLivenessProbe object {} Custom liveness probe (overwrites default liveness probe configuration)
customReadinessProbe object {} Custom readiness probe (overwrites default readiness probe configuration)
resources object {} Resource limits and requests
nodeSelector."kubernetes.io/arch" string "amd64" Deployment node selector
customLabels object {} Additional labels for Deployment or StatefulSet
customAnnotations object {} Additional annotations for Deployment or StatefulSet
podAnnotations object {} Additional pod annotations
podLabels object {} Additional pod labels
podSecurityContext object see values.yaml Pod security context
securityContext object see values.yaml Container security context
env list [] Additional container environmment variables
serviceAccount.create bool false Enable service account creation
serviceAccount.name string "" Optional name of the service account
serviceAccount.annotations object {} Additional service account annotations
affinity object {} Affinity for pod assignment
tolerations list [] Tolerations for pod assignment
topologySpreadConstraints object {} Topology spread constraints for pods
containerPort int 8080 Internal http container port
revisionHistoryLimit int nil Maximum number of revisions maintained in revision history

Service paramters

Key Type Default Description
service.port int 80 Remark42 HTTP service port
service.type string "ClusterIP" Service type
service.nodePort int nil The node port (only relevant for type LoadBalancer or NodePort)
service.clusterIP string nil The cluster ip address (only relevant for type LoadBalancer or NodePort)
service.loadBalancerIP string nil The load balancer ip address (only relevant for type LoadBalancer)
service.annotations object {} Additional service annotations
service.labels object {} Additional service labels

Ingress parameters

Key Type Default Description
ingress.enabled bool false Enable ingress for Remark42 service
ingress.className string nil Optional ingress class name
ingress.annotations object {} Additional annotations for ingress
ingress.labels object {} Additional ingress lables
ingress.hosts[0].host string "" Hostname for the ingress endpoint
ingress.hosts[0].host.paths[0].path string "/" Path of the Ghost UI
ingress.hosts[0].host.paths[0].pathType string "ImplementationSpecific" Ingress path type (ImplementationSpecific, Prefix, Exact)

| ingress.host | string | nil | Hostname for the ingress endpoint | | ingress.path | string | / | Ingress endpoint path

| ingress.tls | object | {} | Ingress TLS parameters | | ingress.tls.secretName | string | nil | Ingress TLS secret name |

Network policies

Allows to define optional network policies for ingress and egress The policyTypes will be automatically set

Key Type Default Description
networkPolicy.ingress object {} Ingress network policies
networkPolicy.egress object {} Egress network policies

Redis cache

Key Type Default Description
externalCache.enabled bool false Enable external Redis cache
externalCache.host string nil External Redis host
externalCache.port int 6379 External Redis port
redis.enabled bool false Enable Redis cache deployment (will disable external cache settings)
redis.storage string nil Redis storage settings

Remark42 parameters

Key Type Default Description
settings.url string nil URL to this Remark42 site
settings.site string "remark" Site Id
settings.secretKey string nil Secret key
settings.timeZone string "GTC" Time zone (f.e. Europe/Berlin)
settings.maxBackupFiles int 10 Maximum number of nightly backup files to keep
settings.maxCommentSize int 2048 Comment size limit
settings.maxVotes int -1 Vote limits per comment (-1 for unlimited)
settings.votesIp bool false Restrict votes from same IP address
settings.anonymousVote bool false Allow votes from anonymous users
settings.votesIpTime string "5m" Restriction time for votes from same IP address
settings.lowScoreThreshold int -5 Low score threshold
settings.criticalScoreThresold int -10 Critical score threshold
settings.positiveScore bool false Restrict comments score to be only positive
settings.restrictedWords string nil Words banned in comments
settings.restrictedNames string nil Names prohibited to use by a user
settings.editTime string 5m Edit time window
settings.readonlyAge int nil Read-only age of comments in days
settings.imageProxyhttp2https bool false Enable http to https proxy for images
settings.proxyExternalCache bool false Enable caching of external images
settings.emoji bool false Enable emoji support
settings.simpleView bool false Minimized UI with basic information
settings.proxyCors bool false Disable internal CORS and delegate it to proxy
settings.allowedHosts string nil Limit hosts allowed to embed comments
settings.updateLimit string 0.5 Updates/sec limit
Key Type Default Description
settings.smtp.enabled bool false Enable SMTP
settings.smtp.from string nil SMTP from address
settings.smtp.host string nil SMTP host
settings.smtp.port int 465 SMTP port
settings.smtp.tls bool true Use TLS
settings.smtp.name string nil SMTP user name
settings.smtp.password string nil SMTP password
settings.smtp.timeout string 10s SMTP timeout
Key Type Default Description
settings.admin.sharedId string nil Admin Ids
settings.admin.sharedEmail string "admin@${REMARK_URL}" Admin Email addresses
settings.admin.password string nil Password for admin (Basic auth)
Key Type Default Description
settings.cache.maxItems int 1000 Maximum number of cached items
settings.cache.maxValue int 65536 Maximum size of cached value
settings.cache.maxSize int "50000000" Maximum size of all caches values
Key Type Default Description
settings.avatar.type string "fs" Avatar storage type (fs, bolt, uri)
settings.avatar.resizeLimit int 0 Maximum image size for resizing avatars (0 = disabled)
Key Type Default Description
settings.image.type string "fs" Image storage type (fs, bolt, uri)
settings.image.maxSize int "5000000" Maximum image size
settings.image.partitions int 10 Number of image partitions
settings.image.resize.width int 2400 Width of resized image
settings.image.resize.height int 900 Height of resized image
Key Type Default Description
settings.auth.ttl.jwt string "5m" JWT TTL
settings.auth.ttl.cookie string "200h" Cookie TTL
settings.auth.sentJwtHeader bool false Send JWT as header instead of cookie
settings.auth.sameSite string "default" Set same site policy for cookies (default, none, lax, strict)
settings.auth.anonymous bool false Enable anonymous login
settings.auth.email.enable bool false Enable authentication via email
settings.auth.email.from string nil Email from
settings.auth.email.subject string "remark42 confirmation" Email subject
settings.auth.email.contentType string "text/html" Email content type
settings.auth.email.template string nil Custom email message template file
Key Type Default Description
settings.notify.type.user string "none" User notification type (none, telegram, slack, email)
settings.notify.type.admin string "none" Admin notification type (none, telegram, slack, email, webhook)
settings.notify.queue int 100 Size of notification queue
settings.notify.telegram.token string nil Telegram token
settings.notify.telegram.channel string nil Telegram channel
settings.notify.telegram.timeout string "5s" Telegram timeout
settings.notify.slack.token string nil Slack token
settings.notify.slack.channel string "general" Slack channel
settings.notify.email.fromAddress string nil Email from address
settings.notify.email.verificationSubject string "Email verification" Verification message subject
settings.notify.email.emailAdmin bool false Notify admin on new comments via admin.sharedEmail (DEPRECATED OPTION - use settings.notify.type.admin = "email" instead) - This setting will overwrite settings.notify.type.admin
settings.notify.webhook.url string nil Webhook notification URL for admin notifications
settings.notify.webhook.template string {"text": ""} Webhook payload template
settings.notify.webhook.headers string nil HTTP header in format Header1:Value1,Header2:Value2,...
settings.notify.webhook.timeout string 5s Webhook request timeout
Key Type Default Description
settings.oauth.github.enabled bool false Enable Github OAuth
settings.oauth.github.key string nil Github OAuth key
settings.oauth.github.secret string nil Github OAuth secret
settings.oauth.facebook.enabled bool false Enable Facebook OAuth
settings.oauth.facebook.key string nil Facebook OAuth key
settings.oauth.facebook.secret string nil Facebook OAuth secret
settings.oauth.google.enabled bool false Enable Google OAuth
settings.oauth.google.key string nil Google OAuth key
settings.oauth.google.secret string nil Google OAuth secret
settings.oauth.twitter.enabled bool false Enable Twitter OAuth
settings.oauth.twitter.key string nil Twitter OAuth key
settings.oauth.twitter.secret string nil Twitter OAuth secret
settings.oauth.microsoft.enabled bool false Enable Microsoft OAuth
settings.oauth.microsoft.key string nil Microsoft OAuth key
settings.oauth.microsoft.secret string nil Microsoft OAuth secret
settings.oauth.yandex.enabled bool false Enable Yandex OAuth
settings.oauth.yandex.key string nil Yandex OAuth key
settings.oauth.yandex.secret string nil Yandex OAuth secret

Storage parameters

Key Type Default Description
storage object {} Remark42 data storage
storage.accessModes[0] string "ReadWriteOnce" Storage access mode
storage.persistentVolumeClaimName string nil PVC name when existing storage volume should be used
storage.requestedSize string nil Size for new PVC, when no existing PVC is used
storage.className string nil Storage class name
storage.keepPvc bool false Keep a created Persistent volume claim when uninstalling the helm chart
storage.annotations object {} Additional storage annotations
storage.labels object {} Additional storage labels

Extra resources

Key Type Default Description
extraResources list nil List of extra resource deployments