Merge pull request #19 from small-hack/move-base-config-to-configmap

move base config options to ConfigMap and move db migration/connection parameters to pixelfed.db section
This commit is contained in:
Jesse Hitch
2025-01-19 10:14:45 +01:00
committed by GitHub
5 changed files with 105 additions and 155 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.6.0
version: 0.7.0
# This is the version number of the application being deployed.
# renovate:image=ghcr.io/mattlqx/docker-pixelfed
+4 -4
View File
@@ -1,6 +1,6 @@
# pixelfed
![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.12.3-nginx](https://img.shields.io/badge/AppVersion-v0.12.3--nginx-informational?style=flat-square)
![Version: 0.7.0](https://img.shields.io/badge/Version-0.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.12.3-nginx](https://img.shields.io/badge/AppVersion-v0.12.3--nginx-informational?style=flat-square)
A Helm chart for deploying Pixelfed on Kubernetes
@@ -26,7 +26,6 @@ A Helm chart for deploying Pixelfed on Kubernetes
| autoscaling.maxReplicas | int | `100` | |
| autoscaling.minReplicas | int | `1` | |
| autoscaling.targetCPUUtilizationPercentage | int | `80` | |
| externalDatabase.connection | string | `"pgsql"` | options: sqlite mysql pgsql sqlsrv |
| externalDatabase.database | string | `"pixelfed"` | |
| externalDatabase.enabled | bool | `false` | enable using an external mysql or postgresql cluster |
| externalDatabase.existingSecret | string | `""` | get database credentials from an existing Kubernetes Secret |
@@ -77,7 +76,8 @@ A Helm chart for deploying Pixelfed on Kubernetes
| pixelfed.app.name | string | `"Pixelfed"` | The name of your server/instance |
| pixelfed.app.url | string | `"https://localhost"` | change this to the domain of your pixelfed instance |
| pixelfed.atom_feeds | string | `"true"` | https://docs.pixelfed.org/technical-documentation/config/#atom_feeds |
| pixelfed.db_apply_new_migrations_automatically | bool | `false` | |
| pixelfed.db.apply_new_migrations_automatically | bool | `false` | |
| pixelfed.db.connection | string | `"pgsql"` | options: sqlite mysql pgsql sqlsrv |
| pixelfed.enable_config_cache | bool | `true` | Enable the config cache to allow you to manage settings via the admin dashboard |
| pixelfed.enforce_email_verification | bool | `true` | Enforce email verification |
| pixelfed.exp_emc | bool | `true` | Experimental Configuration |
@@ -192,4 +192,4 @@ A Helm chart for deploying Pixelfed on Kubernetes
| volumes | list | `[]` | Additional volumes on the output Deployment definition. |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0)
@@ -0,0 +1,92 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "pixelfed.fullname" . }}-env
data:
# app data
APP_NAME: {{ .Values.pixelfed.app.name }}
APP_ENV: {{ .Values.pixelfed.app.env }}
APP_PORT: {{ .Values.service.targetPort | quote}}
APP_URL: {{ .Values.pixelfed.app.url }}
APP_LOCALE: {{ .Values.pixelfed.app.locale }}
{{- with .Values.pixelfed.app.domain }}
APP_DOMAIN: {{ . }}
{{- end }}
# registration related
OPEN_REGISTRATION: {{ .Values.pixelfed.open_registration | quote }}
ENFORCE_EMAIL_VERIFICATION: {{ .Values.pixelfed.enforce_email_verification | quote }}
IMAGE_QUALITY: {{ .Values.pixelfed.image_quality | quote }}
ACCOUNT_DELETION: {{ .Values.pixelfed.account_deletion | quote }}
OAUTH_ENABLED: {{ .Values.pixelfed.oauth_enabled | quote }}
# limits
MIN_PASSWORD_LENGTH: {{ .Values.pixelfed.min_password_length | quote }}
MAX_ACCOUNT_SIZE: {{ .Values.pixelfed.max_account_size | quote }}
MAX_PHOTO_SIZE: {{ .Values.pixelfed.max_photo_size | quote }}
MAX_AVATAR_SIZE: {{ .Values.pixelfed.max_avatar_size | quote }}
MAX_CAPTION_LENGTH: {{ .Values.pixelfed.max_caption_length | quote }}
MAX_BIO_LENGTH: {{ .Values.pixelfed.max_bio_length | quote }}
MAX_NAME_LENGTH: {{ .Values.pixelfed.max_name_length | quote }}
MAX_ALBUM_LENGTH: {{ .Values.pixelfed.max_album_length | quote }}
FORCE_HTTPS_URLS: {{ .Values.pixelfed.force_https_urls | quote }}
STORIES_ENABLED: {{ .Values.pixelfed.stories_enabled | quote }}
ENABLE_CONFIG_CACHE: {{ .Values.pixelfed.enable_config_cache | quote }}
# instance config
INSTANCE_DESCRIPTION: {{ .Values.pixelfed.instance.description | quote }}
INSTANCE_CONTACT_FORM: {{ .Values.pixelfed.instance.contact_form | quote }}
INSTANCE_DISCOVER_PUBLIC: {{ .Values.pixelfed.instance.discover_public | quote }}
INSTANCE_PUBLIC_HASHTAGS: {{ .Values.pixelfed.instance.public_hashtags | quote }}
{{- with .Values.pixelfed.instance.contact_email }}
INSTANCE_CONTACT_EMAIL: {{ .Values.pixelfed.instance.contact_email }}
{{- end }}
INSTANCE_PROFILE_EMBEDS: {{ .Values.pixelfed.instance.profile_embeds | quote }}
INSTANCE_POST_EMBEDS: {{ .Values.pixelfed.instance.post_embeds | quote }}
INSTANCE_REPORTS_EMAIL_ENABLED: {{ .Values.pixelfed.instance.reports.email_enabled | quote }}
{{- with .Values.pixelfed.instance.reports.email_addresses }}
INSTANCE_REPORTS_EMAIL_ADDRESSES: {{ join "," . }}
{{- end }}
INSTANCE_REPORTS_EMAIL_AUTOSPAM: {{ .Values.pixelfed.instance.reports.email_autospam | quote }}
INSTANCE_LANDING_SHOW_DIRECTORY: {{ .Values.pixelfed.instance.landing.show_directory | quote }}
INSTANCE_LANDING_SHOW_EXPLORE: {{ .Values.pixelfed.instance.landing.show_explore | quote }}
INSTANCE_CUR_REG: {{ .Values.pixelfed.instance.cur_reg | quote }}
INSTANCE_SHOW_PEERS: {{ .Values.pixelfed.instance.show_peers | quote }}
# public feed
PF_HIDE_NSFW_ON_PUBLIC_FEEDS: {{ .Values.pixelfed.pf.hide_nsfw_on_public_feeds | quote }}
PF_LOCAL_AVATAR_TO_CLOUD: {{ .Values.pixelfed.pf.local_avatar_to_cloud | quote }}
PF_ADMIN_INVITES_ENABLED: {{ .Values.pixelfed.pf.admin_invites_enabled | quote }}
PF_MAX_USER_BLOCKS: {{ .Values.pixelfed.pf.max_user_blocks | quote }}
PF_MAX_USER_MUTES: {{ .Values.pixelfed.pf.max_user_mutes | quote }}
PF_MAX_DOMAIN_BLOCKS: {{ .Values.pixelfed.pf.max_domain_blocks | quote }}
PF_ENABLE_CLOUD: {{ .Values.pixelfed.pf.enable_cloud | quote }}
PF_MAX_USERS: {{ .Values.pixelfed.pf.max_users | quote }}
PF_ENFORCE_MAX_USERS: {{ .Values.pixelfed.pf.enforce_max_users | quote }}
PF_OPTIMIZE_IMAGES: {{ .Values.pixelfed.pf.optimize_images | quote }}
PF_OPTIMIZE_VIDEOS: {{ .Values.pixelfed.pf.optimize_videos | quote }}
PF_MAX_COLLECTION_LENGTH: {{ .Values.pixelfed.pf.max_collection_length | quote }}
# Laravel Configuration
SESSION_DRIVER: "database"
CACHE_DRIVER: "redis"
QUEUE_DRIVER: "redis"
BROADCAST_DRIVER: "log"
LOG_CHANNEL: {{ .Values.pixelfed.laravel.log_channel }}
HORIZON_PREFIX: "horizon-"
# activity pub
ACTIVITY_PUB: {{ .Values.pixelfed.activity_pub.enabled | quote }}
AP_REMOTE_FOLLOW: {{ .Values.pixelfed.activity_pub.remote_follow | quote }}
AP_SHAREDINBOX: {{ .Values.pixelfed.activity_pub.sharedinbox | quote }}
AP_INBOX: {{ .Values.pixelfed.activity_pub.inbox | quote }}
AP_OUTBOX: {{ .Values.pixelfed.activity_pub.outbox | quote }}
# mail
MAIL_DRIVER: "{{ .Values.pixelfed.mail.driver }}"
MAIL_ENCRYPTION: "{{ .Values.pixelfed.mail.encryption }}"
# database configuration
DB_CONNECTION: {{ .Values.pixelfed.db.connection }}
DB_APPLY_NEW_MIGRATIONS_AUTOMATICALLY: "{{ .Values.pixelfed.db.apply_new_migrations_automatically }}"
+3 -146
View File
@@ -40,145 +40,10 @@ spec:
- name: http
containerPort: {{ .Values.service.targetPort }}
protocol: TCP
envFrom:
- configMapRef:
name: {{ include "pixelfed.fullname" . }}-env
env:
# app data
- name: APP_NAME
value: {{ .Values.pixelfed.app.name }}
- name: APP_ENV
value: {{ .Values.pixelfed.app.env }}
- name: APP_PORT
value: {{ .Values.service.targetPort | quote}}
- name: APP_URL
value: {{ .Values.pixelfed.app.url }}
- name: APP_LOCALE
value: {{ .Values.pixelfed.app.locale }}
{{- with .Values.pixelfed.app.domain }}
- name: APP_DOMAIN
value: {{ . }}
{{- end }}
# registration related
- name: OPEN_REGISTRATION
value: {{ .Values.pixelfed.open_registration | quote }}
- name: ENFORCE_EMAIL_VERIFICATION
value: {{ .Values.pixelfed.enforce_email_verification | quote }}
- name: IMAGE_QUALITY
value: {{ .Values.pixelfed.image_quality | quote }}
- name: ACCOUNT_DELETION
value: {{ .Values.pixelfed.account_deletion | quote }}
- name: OAUTH_ENABLED
value: {{ .Values.pixelfed.oauth_enabled | quote }}
# limits
- name: MIN_PASSWORD_LENGTH
value: {{ .Values.pixelfed.min_password_length | quote }}
- name: MAX_ACCOUNT_SIZE
value: {{ .Values.pixelfed.max_account_size | quote }}
- name: MAX_PHOTO_SIZE
value: {{ .Values.pixelfed.max_photo_size | quote }}
- name: MAX_AVATAR_SIZE
value: {{ .Values.pixelfed.max_avatar_size | quote }}
- name: MAX_CAPTION_LENGTH
value: {{ .Values.pixelfed.max_caption_length | quote }}
- name: MAX_BIO_LENGTH
value: {{ .Values.pixelfed.max_bio_length | quote }}
- name: MAX_NAME_LENGTH
value: {{ .Values.pixelfed.max_name_length | quote }}
- name: MAX_ALBUM_LENGTH
value: {{ .Values.pixelfed.max_album_length | quote }}
- name: FORCE_HTTPS_URLS
value: {{ .Values.pixelfed.force_https_urls | quote }}
- name: STORIES_ENABLED
value: {{ .Values.pixelfed.stories_enabled | quote }}
- name: ENABLE_CONFIG_CACHE
value: {{ .Values.pixelfed.enable_config_cache | quote }}
# instance config
- name: INSTANCE_DESCRIPTION
value: {{ .Values.pixelfed.instance.description | quote }}
- name: INSTANCE_CONTACT_FORM
value: {{ .Values.pixelfed.instance.contact_form | quote }}
- name: INSTANCE_DISCOVER_PUBLIC
value: {{ .Values.pixelfed.instance.discover_public | quote }}
- name: INSTANCE_PUBLIC_HASHTAGS
value: {{ .Values.pixelfed.instance.public_hashtags | quote }}
{{- with .Values.pixelfed.instance.contact_email }}
- name: INSTANCE_CONTACT_EMAIL
value: {{ .Values.pixelfed.instance.contact_email }}
{{- end }}
- name: INSTANCE_PROFILE_EMBEDS
value: {{ .Values.pixelfed.instance.profile_embeds | quote }}
- name: INSTANCE_POST_EMBEDS
value: {{ .Values.pixelfed.instance.post_embeds | quote }}
- name: INSTANCE_REPORTS_EMAIL_ENABLED
value: {{ .Values.pixelfed.instance.reports.email_enabled | quote }}
{{- with .Values.pixelfed.instance.reports.email_addresses }}
- name: INSTANCE_REPORTS_EMAIL_ADDRESSES
value: {{ join "," . }}
{{- end }}
- name: INSTANCE_REPORTS_EMAIL_AUTOSPAM
value: {{ .Values.pixelfed.instance.reports.email_autospam | quote }}
- name: INSTANCE_LANDING_SHOW_DIRECTORY
value: {{ .Values.pixelfed.instance.landing.show_directory | quote }}
- name: INSTANCE_LANDING_SHOW_EXPLORE
value: {{ .Values.pixelfed.instance.landing.show_explore | quote }}
- name: INSTANCE_CUR_REG
value: {{ .Values.pixelfed.instance.cur_reg | quote }}
- name: INSTANCE_SHOW_PEERS
value: {{ .Values.pixelfed.instance.show_peers | quote }}
# public feed
- name: PF_HIDE_NSFW_ON_PUBLIC_FEEDS
value: {{ .Values.pixelfed.pf.hide_nsfw_on_public_feeds | quote }}
- name: PF_LOCAL_AVATAR_TO_CLOUD
value: {{ .Values.pixelfed.pf.local_avatar_to_cloud | quote }}
- name: PF_ADMIN_INVITES_ENABLED
value: {{ .Values.pixelfed.pf.admin_invites_enabled | quote }}
- name: PF_MAX_USER_BLOCKS
value: {{ .Values.pixelfed.pf.max_user_blocks | quote }}
- name: PF_MAX_USER_MUTES
value: {{ .Values.pixelfed.pf.max_user_mutes | quote }}
- name: PF_MAX_DOMAIN_BLOCKS
value: {{ .Values.pixelfed.pf.max_domain_blocks | quote }}
- name: PF_ENABLE_CLOUD
value: {{ .Values.pixelfed.pf.enable_cloud | quote }}
- name: PF_MAX_USERS
value: {{ .Values.pixelfed.pf.max_users | quote }}
- name: PF_ENFORCE_MAX_USERS
value: {{ .Values.pixelfed.pf.enforce_max_users | quote }}
- name: PF_OPTIMIZE_IMAGES
value: {{ .Values.pixelfed.pf.optimize_images | quote }}
- name: PF_OPTIMIZE_VIDEOS
value: {{ .Values.pixelfed.pf.optimize_videos | quote }}
- name: PF_MAX_COLLECTION_LENGTH
value: {{ .Values.pixelfed.pf.max_collection_length | quote }}
# Laravel Configuration
- name: SESSION_DRIVER
value: "database"
- name: CACHE_DRIVER
value: "redis"
- name: QUEUE_DRIVER
value: "redis"
- name: BROADCAST_DRIVER
value: "log"
- name: LOG_CHANNEL
value: {{ .Values.pixelfed.laravel.log_channel }}
- name: HORIZON_PREFIX
value: "horizon-"
# activity pub
- name: ACTIVITY_PUB
value: {{ .Values.pixelfed.activity_pub.enabled | quote }}
- name: AP_REMOTE_FOLLOW
value: {{ .Values.pixelfed.activity_pub.remote_follow | quote }}
- name: AP_SHAREDINBOX
value: {{ .Values.pixelfed.activity_pub.sharedinbox | quote }}
- name: AP_INBOX
value: {{ .Values.pixelfed.activity_pub.inbox | quote }}
- name: AP_OUTBOX
value: {{ .Values.pixelfed.activity_pub.outbox | quote }}
# redis
- name: REDIS_HOST
{{- if .Values.externalValkey.existingSecret }}
@@ -217,8 +82,6 @@ spec:
{{- end }}
# mail
- name: MAIL_DRIVER
value: "{{ .Values.pixelfed.mail.driver }}"
- name: MAIL_HOST
valueFrom:
secretKeyRef:
@@ -263,12 +126,8 @@ spec:
name: pixelfed-mail
key: password
{{- end }}
- name: MAIL_ENCRYPTION
value: "{{ .Values.pixelfed.mail.encryption }}"
# database configuration
- name: DB_CONNECTION
value: {{ .Values.externalDatabase.connection }}
- name: DB_HOST
{{- if and .Values.externalDatabase.enabled .Values.externalDatabase.existingSecret }}
valueFrom:
@@ -332,8 +191,6 @@ spec:
{{- else }}
value: {{ .Values.postgresql.primary.service.ports.postgresql | quote }}
{{- end }}
- name: DB_APPLY_NEW_MIGRATIONS_AUTOMATICALLY
value: "{{ .Values.pixelfed.db_apply_new_migrations_automatically }}"
{{- with .Values.livenessProbe }}
livenessProbe:
+4 -3
View File
@@ -132,8 +132,6 @@ affinity: {}
externalDatabase:
# -- enable using an external mysql or postgresql cluster
enabled: false
# -- options: sqlite mysql pgsql sqlsrv
connection: pgsql
host: ""
port: 3306
database: pixelfed
@@ -241,8 +239,11 @@ postgresql:
storageClass: ""
pixelfed:
db:
# -- options: sqlite mysql pgsql sqlsrv
connection: pgsql
# -- Automatically run [artisan migrate --force] if new migrations are detected.
db_apply_new_migrations_automatically: false
apply_new_migrations_automatically: false
# -- timezone for docker container
timezone: "europe/amsterdam"