pixelfed/.env.docker
2024-04-06 03:19:50 -06:00

1295 lines
44 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# -*- mode: bash -*-
# vi: ft=bash
# shellcheck disable=SC2034,SC2148
# Use Dottie (https://github.com/jippi/dottie) to manage this .env file easier!
#
# For example:
#
# Run [dottie update] to update your [.env] file with upstream (as part of upgrade)
# Run [dottie validate] to validate youe [.env] file
#
# @dottie/source .env.docker
################################################################################
# app
################################################################################
# The name/title for your site
# @see https://docs.pixelfed.org/technical-documentation/config/#app_name-1
# @dottie/example My Pixelfed Site
# @dottie/validate required,ne=My Pixelfed Site
APP_NAME=
# Application domain used for routing. (e.g., pixelfed.org)
#
# @see https://docs.pixelfed.org/technical-documentation/config/#app_domain
# @dottie/example example.com
# @dottie/validate required,ne=example.com,fqdn
APP_DOMAIN="example.com"
# This URL is used by the console to properly generate URLs when using the Artisan command line tool.
# You should set this to the root of your application so that it is used when running Artisan tasks.
#
# @see https://docs.pixelfed.org/technical-documentation/config/#app_url
# @dottie/validate required,http_url
APP_URL="https://${APP_DOMAIN}"
# Application domains used for routing.
#
# @see https://docs.pixelfed.org/technical-documentation/config/#admin_domain
# @dottie/validate required,fqdn
ADMIN_DOMAIN="${APP_DOMAIN}"
# This value determines the “environment” your application is currently running in.
# This may determine how you prefer to configure various services your application utilizes.
#
# @default "production"
# @see https://docs.pixelfed.org/technical-documentation/config/#app_env
# @dottie/validate required,oneof=production dev staging
#APP_ENV="production"
# When your application is in debug mode, detailed error messages with stack traces will
# be shown on every error that occurs within your application.
#
# If disabled, a simple generic error page is shown.
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#app_debug
# @dottie/validate required,boolean
#APP_DEBUG="false"
# Disable config cache
#
# If disabled, settings must be managed by .env variables.
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#config_cache
# @dottie/validate required,boolean
ENABLE_CONFIG_CACHE="false"
# Enable/disable new local account registrations.
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#open_registration
# @dottie/validate required,boolean
#OPEN_REGISTRATION="true"
# Require email verification before a new user can do anything.
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#enforce_email_verification
# @dottie/validate required,boolean
#ENFORCE_EMAIL_VERIFICATION="true"
# Allow a maximum number of user accounts.
#
# @default "1000"
# @see https://docs.pixelfed.org/technical-documentation/config/#pf_max_users
# @dottie/validate required,number
#PF_MAX_USERS="1000"
# Enforce the maximum number of user accounts
#
# @default "true"
# @dottie/validate boolean
#PF_ENFORCE_MAX_USERS="true"
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#oauth_enabled
# @dottie/validate required,boolean
#OAUTH_ENABLED="false"
# ! Do not edit your timezone once the service is running - or things will break!
#
# @default "UTC"
# @see https://docs.pixelfed.org/technical-documentation/config/#app_timezone
# @see https://www.php.net/manual/en/timezones.php
# @dottie/validate required,timezone
APP_TIMEZONE="UTC"
# The application locale determines the default locale that will be used by the translation service provider.
# You are free to set this value to any of the locales which will be supported by the application.
#
# @default "en"
# @see https://docs.pixelfed.org/technical-documentation/config/#app_locale
# @dottie/validate required
#APP_LOCALE="en"
# The fallback locale determines the locale to use when the current one is not available.
#
# You may change the value to correspond to any of the language folders that are provided through your application.
#
# @default "en"
# @see https://docs.pixelfed.org/technical-documentation/config/#app_fallback_locale
# @dottie/validate required
#APP_FALLBACK_LOCALE="en"
# @see https://docs.pixelfed.org/technical-documentation/config/#limit_account_size
# @dottie/validate required,boolean
#LIMIT_ACCOUNT_SIZE="true"
# Update the max account size, the per user limit of files in kB.
#
# @default "1000000" (1GB)
# @see https://docs.pixelfed.org/technical-documentation/config/#max_account_size-kb
# @dottie/validate required,number
#MAX_ACCOUNT_SIZE="1000000"
# Update the max photo size, in kB.
#
# @default "15000" (15MB)
# @see https://docs.pixelfed.org/technical-documentation/config/#max_photo_size-kb
# @dottie/validate required,number
#MAX_PHOTO_SIZE="15000"
# The max number of photos allowed per post.
#
# @default "4"
# @see https://docs.pixelfed.org/technical-documentation/config/#max_album_length
# @dottie/validate required,number
#MAX_ALBUM_LENGTH="4"
# Update the max avatar size, in kB.
#
# @default "2000" (2MB).
# @see https://docs.pixelfed.org/technical-documentation/config/#max_avatar_size-kb
# @dottie/validate required,number
#MAX_AVATAR_SIZE="2000"
# Change the caption length limit for new local posts.
#
# @default "500"
# @see https://docs.pixelfed.org/technical-documentation/config/#max_caption_length
# @dottie/validate required,number
#MAX_CAPTION_LENGTH="500"
# Change the bio length limit for user profiles.
#
# @default "125"
# @see https://docs.pixelfed.org/technical-documentation/config/#max_bio_length
# @dottie/validate required,number
#MAX_BIO_LENGTH="125"
# Change the length limit for user names.
#
# @default "30"
# @see https://docs.pixelfed.org/technical-documentation/config/#max_name_length
# @dottie/validate required,number
#MAX_NAME_LENGTH="30"
# Resize and optimize image uploads.
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#pf_optimize_images
# @dottie/validate required,boolean
#PF_OPTIMIZE_IMAGES="true"
# Set the image optimization quality, must be a value between 1-100.
#
# @default "80"
# @see https://docs.pixelfed.org/technical-documentation/config/#image_quality
# @dottie/validate required,number
#IMAGE_QUALITY="80"
# Resize and optimize video uploads.
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#pf_optimize_videos
# @dottie/validate required,boolean
#PF_OPTIMIZE_VIDEOS="true"
# Enable account deletion.
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#account_deletion
# @dottie/validate required,boolean
#ACCOUNT_DELETION="true"
# Set account deletion queue after X days, set to false to delete accounts immediately.
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#account_delete_after
# @dottie/validate required,boolean|number
#ACCOUNT_DELETE_AFTER="false"
# @default "Pixelfed - Photo sharing for everyone"
# @see https://docs.pixelfed.org/technical-documentation/config/#instance_description
# @dottie/validate required
#INSTANCE_DESCRIPTION=""
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#instance_public_hashtags
# @dottie/validate required,boolean
#INSTANCE_PUBLIC_HASHTAGS="false"
# The public e-mail address people can use to contact you by
#
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#instance_contact_email
# @dottie/validate required,ne=__CHANGE_ME__,email
INSTANCE_CONTACT_EMAIL="__CHANGE_ME__"
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#instance_public_local_timeline
# @dottie/validate required,boolean
#INSTANCE_PUBLIC_LOCAL_TIMELINE="false"
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#banned_usernames
#BANNED_USERNAMES=""
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#stories_enabled
# @dottie/validate required,boolean
#STORIES_ENABLED="false"
# Level is hardcoded to 1.
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#restricted_instance
# @dottie/validate required,boolean
#RESTRICTED_INSTANCE="false"
# @default false
# @see https://docs.pixelfed.org/technical-documentation/config/#media_exif_database
# @dottie/validate required,boolean
#MEDIA_EXIF_DATABASE="false"
# Pixelfed supports GD or ImageMagick to process images.
#
# Possible values:
# - "gd" (default)
# - "imagick"
#
# @default "gd"
# @see https://docs.pixelfed.org/technical-documentation/config/#image_driver
# @dottie/validate required,oneof=gd imagick
#IMAGE_DRIVER="gd"
# Set trusted proxy IP addresses.
#
# Both IPv4 and IPv6 addresses are supported, along with CIDR notation.
#
# The “*” character is syntactic sugar within TrustedProxy to trust any
# proxy that connects directly to your server, a requirement when you cannot
# know the address of your proxy (e.g. if using Rackspace balancers).
#
# The “**” character is syntactic sugar within TrustedProxy to trust not just any
# proxy that connects directly to your server, but also proxies that connect to those proxies,
# and all the way back until you reach the original source IP. It will mean that
# $request->getClientIp() always gets the originating client IP, no matter how many proxies
# that clients request has subsequently passed through.
#
# @default "*"
# @see https://docs.pixelfed.org/technical-documentation/config/#trust_proxies
# @dottie/validate required
#TRUST_PROXIES="*"
# This option controls the default cache connection that gets used while using this caching library.
#
# This connection is used when another is not explicitly specified when executing a given caching function.
#
# Possible values:
# - "apc"
# - "array"
# - "database"
# - "file" (default)
# - "memcached"
# - "redis"
#
# @default "file"
# @see https://docs.pixelfed.org/technical-documentation/config/#cache_driver
# @dottie/validate required,oneof=apc array database file memcached redis
CACHE_DRIVER="redis"
# @default ${APP_NAME}_cache, or laravel_cache if no APP_NAME is set.
# @see https://docs.pixelfed.org/technical-documentation/config/#cache_prefix
# @dottie/validate required
#CACHE_PREFIX="{APP_NAME}_cache"
# This option controls the default broadcaster that will be used by the framework when an event needs to be broadcast.
#
# Possible values:
# - "pusher"
# - "redis"
# - "log"
# - "null" (default)
#
# @default null
# @see https://docs.pixelfed.org/technical-documentation/config/#broadcast_driver
# @dottie/validate required,oneof=pusher redis log null
BROADCAST_DRIVER="redis"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#restrict_html_types
# @dottie/validate required,boolean
#RESTRICT_HTML_TYPES="true"
# Passport uses encryption keys while generating secure access tokens
# for your application.
#
# By default, the keys are stored as local files but can be set via environment
# variables when that is more convenient.
# @see https://docs.pixelfed.org/technical-documentation/config/#passport_private_key
# @dottie/validate required
#PASSPORT_PRIVATE_KEY=""
# @see https://docs.pixelfed.org/technical-documentation/config/#passport_public_key
# @dottie/validate required
#PASSPORT_PUBLIC_KEY=""
################################################################################
# database
################################################################################
# Database version to use (as Docker tag)
#
# @see https://hub.docker.com/_/mariadb
# @dottie/validate required
DB_VERSION="11.2"
# Here you may specify which of the database connections below
# you wish to use as your default connection for all database work.
#
# Of course you may use many connections at once using the database library.
#
# Possible values:
#
# - "sqlite"
# - "mysql" (default)
# - "pgsql"
# - "sqlsrv"
#
# @see https://docs.pixelfed.org/technical-documentation/config/#db_connection
# @dottie/validate required,oneof=sqlite mysql pgsql sqlsrv
DB_CONNECTION="mysql"
# @see https://docs.pixelfed.org/technical-documentation/config/#db_host
# @dottie/validate required,hostname
DB_HOST="db"
# @see https://docs.pixelfed.org/technical-documentation/config/#db_username
# @dottie/validate required
DB_USERNAME="pixelfed"
# The password to your database. Please make it secure.
# Use a site like https://pwgen.io/ to generate it
#
# @see https://docs.pixelfed.org/technical-documentation/config/#db_password
# @dottie/validate required
DB_PASSWORD=
# @see https://docs.pixelfed.org/technical-documentation/config/#db_database
# @dottie/validate required
DB_DATABASE="pixelfed_prod"
# Use "3306" for MySQL/MariaDB and "5432" for PostgreeSQL
#
# @see https://docs.pixelfed.org/technical-documentation/config/#db_port
# @dottie/validate required,number
DB_PORT="3306"
# Automatically run [artisan migrate --force] if new migrations are detected.
# @dottie/validate required,boolean
DB_APPLY_NEW_MIGRATIONS_AUTOMATICALLY="false"
################################################################################
# mail
################################################################################
# Laravel supports both SMTP and PHPs “mail” function as drivers for the sending of e-mail.
# You may specify which one youre using throughout your application here.
#
# Possible values:
#
# "smtp" (default)
# "sendmail"
# "mailgun"
# "mandrill"
# "ses"
# "sparkpost"
# "log"
# "array"
#
# @default "smtp"
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_driver
# @dottie/validate required,oneof=smtp sendmail mailgun mandrill ses sparkpost log array
#MAIL_DRIVER="smtp"
# The host address of the SMTP server used by your applications.
#
# A default option is provided that is compatible with the Mailgun mail service which will provide reliable deliveries.
#
# @default "smtp.mailgun.org"
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_host
# @dottie/validate required_with=MAIL_DRIVER,fqdn
#MAIL_HOST="smtp.mailgun.org"
# This is the SMTP port used by your application to deliver e-mails to users of the application.
#
# Like the host we have set this value to stay compatible with the Mailgun e-mail application by default.
#
# @default 587.
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_port
# @dottie/validate required_with=MAIL_DRIVER,number
#MAIL_PORT="587"
# Here, you may specify a name and address that is used globally for all e-mails that are sent by your application.
#
# You may wish for all e-mails sent by your application to be sent from the same address.
#
# @default "bot@example.com"
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_from_address
# @dottie/validate required_with=MAIL_DRIVER,email,ne=__CHANGE_ME__
#MAIL_FROM_ADDRESS="__CHANGE_ME__"
# The 'name' you send e-mail from
#
# @default "Example"
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_from_name
# @dottie/validate required_with=MAIL_DRIVER
#MAIL_FROM_NAME="${APP_NAME}"
# If your SMTP server requires a username for authentication, you should set it here.
#
# This will get used to authenticate with your server on connection.
# You may also set the “password” value below this one.
#
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_username
# @dottie/validate required_with=MAIL_DRIVER
#MAIL_USERNAME=""
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_password
# @dottie/validate required_with=MAIL_DRIVER
#MAIL_PASSWORD=""
# Here you may specify the encryption protocol that should be used when the application send e-mail messages.
#
# A sensible default using the transport layer security protocol should provide great security.
#
# @default "tls"
# @see https://docs.pixelfed.org/technical-documentation/config/#mail_encryption
# @dottie/validate required_with=MAIL_DRIVER
#MAIL_ENCRYPTION="tls"
################################################################################
# redis
################################################################################
# @default "phpredis"
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_client
# @dottie/validate required
#REDIS_CLIENT="phpredis"
# @default "tcp"
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_scheme
# @dottie/validate required
#REDIS_SCHEME="tcp"
# @default "localhost"
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_host
# @dottie/validate required
REDIS_HOST="redis"
# @default "null" (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_password
# @dottie/validate omitempty
#REDIS_PASSWORD=
# @default "6379"
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_port
# @dottie/validate required,number
REDIS_PORT="6379"
# @default "0"
# @see https://docs.pixelfed.org/technical-documentation/config/#redis_database
# @dottie/validate required,number
#REDIS_DATABASE="0"
################################################################################
# experiments
################################################################################
# Text only posts (alpha).
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#exp_top
# @dottie/validate required,boolean
#EXP_TOP="false"
# Poll statuses (alpha).
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#exp_polls
# @dottie/validate required,boolean
#EXP_POLLS="false"
# Cached public timeline for larger instances (beta).
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#exp_cpt
# @dottie/validate required,boolean
#EXP_CPT="false"
# Enforce Mastodon API Compatibility (alpha).
#
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#exp_emc
# @dottie/validate required,boolean
#EXP_EMC="true"
################################################################################
# ActivityPub
################################################################################
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#activity_pub
# @dottie/validate required,boolean
#ACTIVITY_PUB="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#ap_remote_follow
# @dottie/validate required,boolean
#AP_REMOTE_FOLLOW="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#ap_sharedinbox
# @dottie/validate required,boolean
#AP_SHAREDINBOX="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#ap_inbox
# @dottie/validate required,boolean
#AP_INBOX="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#ap_outbox
# @dottie/validate required,boolean
#AP_OUTBOX="true"
################################################################################
# Federation
################################################################################
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#atom_feeds
# @dottie/validate required,boolean
#ATOM_FEEDS="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#nodeinfo
# @dottie/validate required,boolean
#NODEINFO="true"
# @default "true"
# @see https://docs.pixelfed.org/technical-documentation/config/#webfinger
# @dottie/validate required,boolean
#WEBFINGER="true"
################################################################################
# Storage
################################################################################
# Store media on object storage like S3, Digital Ocean Spaces, Rackspace
#
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#pf_enable_cloud
# @dottie/validate required,boolean
#PF_ENABLE_CLOUD="false"
# Many applications store files both locally and in the cloud.
#
# For this reason, you may specify a default “cloud” driver here.
# This driver will be bound as the Cloud disk implementation in the container.
#
# @default "s3"
# @see https://docs.pixelfed.org/technical-documentation/config/#filesystem_cloud
# @dottie/validate required_with=PF_ENABLE_CLOUD
#FILESYSTEM_CLOUD="s3"
# @default true.
# @see https://docs.pixelfed.org/technical-documentation/config/#media_delete_local_after_cloud
# @dottie/validate required_with=PF_ENABLE_CLOUD,boolean
#MEDIA_DELETE_LOCAL_AFTER_CLOUD="true"
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_access_key_id
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_ACCESS_KEY_ID=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_secret_access_key
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_SECRET_ACCESS_KEY=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_default_region
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_DEFAULT_REGION=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_bucket
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_BUCKET=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_url
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_URL=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_endpoint
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_ENDPOINT=""
# @see https://docs.pixelfed.org/technical-documentation/config/#aws_use_path_style_endpoint
# @dottie/validate required_if=FILESYSTEM_CLOUD s3
#AWS_USE_PATH_STYLE_ENDPOINT="false"
################################################################################
# COSTAR
################################################################################
# Comma-separated list of domains to block.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_domains
# @dottie/validate
#CS_BLOCKED_DOMAINS=""
# Comma-separated list of domains to add warnings.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_cw_domains
# @dottie/validate
#CS_CW_DOMAINS=""
# Comma-separated list of domains to remove from public timelines.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_domains
# @dottie/validate
#CS_UNLISTED_DOMAINS=""
# Comma-separated list of keywords to block.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_keywords
# @dottie/validate
#CS_BLOCKED_KEYWORDS=""
# Comma-separated list of keywords to add warnings.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_cw_keywords
# @dottie/validate
#CS_CW_KEYWORDS=""
# Comma-separated list of keywords to remove from public timelines.
#
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_keywords
# @dottie/validate
#CS_UNLISTED_KEYWORDS=""
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_actor
# @dottie/validate
#CS_BLOCKED_ACTOR=""
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_cw_actor
# @dottie/validate
#CS_CW_ACTOR=""
# @default null (not set/commented out).
# @see https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_actor
# @dottie/validate
#CS_UNLISTED_ACTOR=""
################################################################################
# logging
################################################################################
# Possible values:
#
# - "stack" (default)
# - "single"
# - "daily"
# - "slack"
# - "stderr"
# - "syslog"
# - "errorlog"
# - "null"
# - "emergency"
# - "media"
#
# @default "stack"
# @dottie/validate required,oneof=stack single daily slack stderr syslog errorlog null emergency media
LOG_CHANNEL="stderr"
# Used by single, stderr and syslog.
#
# @default "debug"
# @see https://docs.pixelfed.org/technical-documentation/config/#log_level
# @dottie/validate required,oneof=debug info notice warning error critical alert emergency
#LOG_LEVEL="debug"
# Used by stderr.
#
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#log_stderr_formatter
#LOG_STDERR_FORMATTER=""
# Used by slack.
#
# @default ""
# @see https://docs.pixelfed.org/technical-documentation/config/#log_slack_webhook_url
# @dottie/validate required,http_url
#LOG_SLACK_WEBHOOK_URL=""
################################################################################
# queue
################################################################################
# Possible values:
# - "sync" (default)
# - "database"
# - "beanstalkd"
# - "sqs"
# - "redis"
# - "null"
#
# @default "sync"
# @see https://docs.pixelfed.org/technical-documentation/config/#queue_driver
# @dottie/validate required,oneof=sync database beanstalkd sqs redis null
QUEUE_DRIVER="redis"
# @default "your-public-key"
# @see https://docs.pixelfed.org/technical-documentation/config/#sqs_key
# @dottie/validate required_if=QUEUE_DRIVER sqs
#SQS_KEY="your-public-key"
# @default "your-secret-key"
# @see https://docs.pixelfed.org/technical-documentation/config/#sqs_secret
# @dottie/validate required_if=QUEUE_DRIVER sqs
#SQS_SECRET="your-secret-key"
# @default "https://sqs.us-east-1.amazonaws.com/your-account-id"
# @see https://docs.pixelfed.org/technical-documentation/config/#sqs_prefix
# @dottie/validate required_if=QUEUE_DRIVER sqs
#SQS_PREFIX=""
# @default "your-queue-name"
# @see https://docs.pixelfed.org/technical-documentation/config/#sqs_queue
# @dottie/validate required_if=QUEUE_DRIVER sqs
#SQS_QUEUE="your-queue-name"
# @default "us-east-1"
# @see https://docs.pixelfed.org/technical-documentation/config/#sqs_region
# @dottie/validate required_if=QUEUE_DRIVER sqs
#SQS_REGION="us-east-1"
################################################################################
# session
################################################################################
# This option controls the default session “driver” that will be used on requests.
#
# By default, we will use the lightweight native driver but you may specify any of the other wonderful drivers provided here.
#
# Possible values:
# - "file"
# - "cookie"
# - "database" (default)
# - "apc"
# - "memcached"
# - "redis"
# - "array"
#
# @default "database"
# @dottie/validate required,oneof=file cookie database apc memcached redis array
SESSION_DRIVER="redis"
# Here you may specify the number of minutes that you wish the session to be allowed to remain idle before it expires.
#
# If you want them to immediately expire on the browser closing, set that option.
#
# @default 86400.
# @see https://docs.pixelfed.org/technical-documentation/config/#session_lifetime
# @dottie/validate required,number
#SESSION_LIFETIME="86400"
# Here you may change the domain of the cookie used to identify a session in your application.
#
# This will determine which domains the cookie is available to in your application.
#
# A sensible default has been set.
#
# @default the value of APP_DOMAIN, or null.
# @see https://docs.pixelfed.org/technical-documentation/config/#session_domain
# @dottie/validate required,hostname
#SESSION_DOMAIN="${APP_DOMAIN}"
################################################################################
# horizon
################################################################################
# This prefix will be used when storing all Horizon data in Redis.
#
# You may modify the prefix when you are running multiple installations
# of Horizon on the same server so that they dont have problems.
#
# @default "horizon-"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_prefix
# @dottie/validate required
#HORIZON_PREFIX="horizon-"
# @default "false"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_darkmode
# @dottie/validate required,boolean
#HORIZON_DARKMODE="false"
# This value (in MB) describes the maximum amount of memory (in MB) the Horizon worker
# may consume before it is terminated and restarted.
#
# You should set this value according to the resources available to your server.
#
# @default "64"
# @dottie/validate required,number
#HORIZON_MEMORY_LIMIT="64"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_balance_strategy
# @dottie/validate required
#HORIZON_BALANCE_STRATEGY="auto"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_min_processes
# @dottie/validate required,number
#HORIZON_MIN_PROCESSES="1"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_max_processes
# @dottie/validate required,number
#HORIZON_MAX_PROCESSES="20"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_memory
# @dottie/validate required,number
#HORIZON_SUPERVISOR_MEMORY="64"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_tries
# @dottie/validate required,number
#HORIZON_SUPERVISOR_TRIES="3"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_nice
# @dottie/validate required,number
#HORIZON_SUPERVISOR_NICE="0"
# @see https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_timeout
# @dottie/validate required,number
#HORIZON_SUPERVISOR_TIMEOUT="300"
################################################################################
# docker shared
################################################################################
# A random 32-character string to be used as an encryption key.
#
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# ! NOTE: This will be auto-generated by Docker during bootstrap
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# This key is used by the Illuminate encrypter service and should be set to a random,
# 32 character string, otherwise these encrypted strings will not be safe.
#
# @see https://docs.pixelfed.org/technical-documentation/config/#app_key
# @dottie/validate required
APP_KEY=
# Prefix for container names (without any dash at the end)
# @dottie/validate required
DOCKER_ALL_CONTAINER_NAME_PREFIX="${APP_DOMAIN}"
# How often Docker health check should run for all services
#
# Can be overridden by individual [DOCKER_*_HEALTHCHECK_INTERVAL] settings further down
#
# @default "10s"
# @dottie/validate required
DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL="10s"
# Path (relative to the docker-compose.yml) or absolute (/some/other/path) where containers will *all* data
# will be stored (data, config, overrides)
#
# @default "./docker-compose-state"
# @dottie/validate required,dir
DOCKER_ALL_HOST_ROOT_PATH="./docker-compose-state"
# Path (relative to the docker-compose.yml) or absolute (/some/other/path) where containers will store their data
#
# @default "${DOCKER_ALL_HOST_ROOT_PATH}/data"
# @dottie/validate required,dir
DOCKER_ALL_HOST_DATA_ROOT_PATH="${DOCKER_ALL_HOST_ROOT_PATH:?error}/data"
# Path (relative to the docker-compose.yml) or absolute (/some/other/path) where containers will store their confguration
#
# @default "${DOCKER_ALL_HOST_ROOT_PATH}/config"
# @dottie/validate required,dir
DOCKER_ALL_HOST_CONFIG_ROOT_PATH="${DOCKER_ALL_HOST_ROOT_PATH:?error}/config"
# Path (relative to the docker-compose.yml) or absolute (/some/other/path) where containers will store overrides
#
# @default "${DOCKER_ALL_HOST_ROOT_PATH}/overrides"
# @dottie/validate required,dir
DOCKER_APP_HOST_OVERRIDES_PATH="${DOCKER_ALL_HOST_ROOT_PATH:?error}/overrides"
# Set timezone used by *all* containers - these must be in sync.
#
# ! Do not edit your timezone once the service is running - or things will break!
#
# @see https://www.php.net/manual/en/timezones.php
# @dottie/validate required,timezone
TZ="${APP_TIMEZONE}"
################################################################################
# docker app
################################################################################
# The docker tag prefix to use for pulling images, can be one of
#
# * latest
# * <some semver release>
# * staging
# * edge
# * branch-<some branch name>
# * pr-<some merge request id>
#
# Combined with [DOCKER_APP_RUNTIME] and [PHP_VERSION] configured
# elsewhere in this file, the final Docker tag is computed.
# @dottie/validate required
DOCKER_APP_RELEASE="branch-jippi-fork"
# The PHP version to use for [web] and [worker] container
#
# Any version published on https://hub.docker.com/_/php should work
#
# Example:
#
# * 8.1
# * 8.2
# * 8.2.14
# * latest
#
# Do *NOT* use the full Docker tag (e.g. "8.3.2RC1-fpm-bullseye")
# *only* the version part. The rest of the full tag is derived from
# the [DOCKER_APP_RUNTIME] and [PHP_DEBIAN_RELEASE] settings
# @dottie/validate required
DOCKER_APP_PHP_VERSION="8.2"
# The container runtime to use.
#
# @see https://docs.pixelfed.org/running-pixelfed/docker/runtimes.html
# @dottie/validate required,oneof=apache nginx fpm
DOCKER_APP_RUNTIME="apache"
# The Debian release variant to use of the [php] Docker image
#
# Examlpe: [bookworm] or [bullseye]
# @dottie/validate required,oneof=bookworm bullseye
DOCKER_APP_DEBIAN_RELEASE="bullseye"
# The [php] Docker image base type
#
# @see https://docs.pixelfed.org/running-pixelfed/docker/runtimes.html
# @dottie/validate required,oneof=apache fpm cli
DOCKER_APP_BASE_TYPE="apache"
# Image to pull the Pixelfed Docker images from.
#
# Example values:
#
# * "ghcr.io/pixelfed/pixelfed" to pull from GitHub
# * "pixelfed/pixelfed" to pull from DockerHub
# * "your/fork" to pull from a custom fork
#
# @dottie/validate required
DOCKER_APP_IMAGE="ghcr.io/jippi/pixelfed"
# Pixelfed version (image tag) to pull from the registry.
#
# @see https://github.com/pixelfed/pixelfed/pkgs/container/pixelfed
# @dottie/validate required
DOCKER_APP_TAG="${DOCKER_APP_RELEASE:?error}-${DOCKER_APP_RUNTIME:?error}-${DOCKER_APP_PHP_VERSION:?error}"
# Path (on host system) where the [app] + [worker] container will write
# its [storage] data (e.g uploads/images/profile pictures etc.).
#
# Path is relative (./some/other/path) to the docker-compose.yml or absolute (/some/other/path)
# @dottie/validate required,dir
DOCKER_APP_HOST_STORAGE_PATH="${DOCKER_ALL_HOST_DATA_ROOT_PATH:?error}/pixelfed/storage"
# Path (on host system) where the [app] + [worker] container will write
# its [cache] data.
#
# Path is relative (./some/other/path) to the docker-compose.yml or absolute (/some/other/path)
# @dottie/validate required,dir
DOCKER_APP_HOST_CACHE_PATH="${DOCKER_ALL_HOST_DATA_ROOT_PATH:?error}/pixelfed/cache"
# Automatically run "One-time setup tasks" commands.
#
# If you are migrating to this docker-compose setup or have manually run the "One time seutp"
# tasks (https://docs.pixelfed.org/running-pixelfed/installation/#setting-up-services)
# you can set this to "0" to prevent them from running.
#
# Otherwise, leave it at "1" to have them run *once*.
# @dottie/validate required,boolean
#DOCKER_APP_RUN_ONE_TIME_SETUP_TASKS="1"
# A space-seperated list of paths (inside the container) to *recursively* [chown]
# to the container user/group id (UID/GID) in case of permission issues.
#
# ! You should *not* leave this on permanently, at it can significantly slow down startup
# ! time for the container, and during normal operations there should never be permission
# ! issues. Please report a bug if you see behavior requiring this to be permanently on
#
# Example: "/var/www/storage /var/www/bootstrap/cache"
# @dottie/validate required
#DOCKER_APP_ENSURE_OWNERSHIP_PATHS=""
# Enable Docker Entrypoint debug mode (will call [set -x] in bash scripts)
# by setting this to "1"
# @dottie/validate required,boolean
#DOCKER_APP_ENTRYPOINT_DEBUG="0"
# Show the "diff" when applying templating to files
#
# @default "1"
# @dottie/validate required,boolean
#DOCKER_APP_ENTRYPOINT_SHOW_TEMPLATE_DIFF="1"
# Docker entrypoints that should be skipped on startup
# @default ""
#ENTRYPOINT_SKIP_SCRIPTS=""
# List of extra APT packages (separated by space) to install when building
# locally using [docker compose build].
#
# @see https://github.com/pixelfed/pixelfed/blob/dev/docker/customizing.md
# @dottie/validate required
#DOCKER_APP_APT_PACKAGES_EXTRA=""
# List of *extra* PECL extensions (separated by space) to install when
# building locally using [docker compose build].
#
# @see https://github.com/pixelfed/pixelfed/blob/dev/docker/customizing.md
# @dottie/validate required
#DOCKER_APP_PHP_PECL_EXTENSIONS_EXTRA=""
# List of *extra* PHP extensions (separated by space) to install when
# building locally using [docker compose build].
#
# @see https://github.com/pixelfed/pixelfed/blob/dev/docker/customizing.md
# @dottie/validate required
#DOCKER_APP_PHP_EXTENSIONS_EXTRA=""
# @default "128M"
# @see https://www.php.net/manual/en/ini.core.php#ini.memory-limit
# @dottie/validate required
#DOCKER_APP_PHP_MEMORY_LIMIT="128M"
# @default "E_ALL & ~E_DEPRECATED & ~E_STRICT"
# @see http://php.net/error-reporting
# @dottie/validate required
#DOCKER_APP_PHP_ERROR_REPORTING="E_ALL & ~E_DEPRECATED & ~E_STRICT"
# @default "off"
# @see http://php.net/display-errors
# @dottie/validate required,oneof=on off
#DOCKER_APP_PHP_DISPLAY_ERRORS="off"
# Enables the opcode cache.
#
# When disabled, code is not optimised or cached.
#
# @default "1"
# @see https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.enable
# @dottie/validate required,oneof=0 1
#DOCKER_APP_PHP_OPCACHE_ENABLE="1"
# If enabled, OPcache will check for updated scripts every [opcache.revalidate_freq] seconds.
#
# When this directive is disabled, you must reset OPcache manually via opcache_reset(),
# opcache_invalidate() or by restarting the Web server for changes to the filesystem to take effect.
#
# @default "0"
# @see https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.validate-timestamps
# @dottie/validate required,oneof=0 1
#DOCKER_APP_PHP_OPCACHE_VALIDATE_TIMESTAMPS="0"
# How often to check script timestamps for updates, in seconds.
# 0 will result in OPcache checking for updates on every request.
#
# @default "2"
# @see https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.revalidate-freq
# @dottie/validate required,oneof=0 1 2
#DOCKER_APP_PHP_OPCACHE_REVALIDATE_FREQ="2"
################################################################################
# docker redis
################################################################################
# Set this to a non-empty value (e.g. "disabled") to disable the [redis] service
#DOCKER_REDIS_PROFILE=
# Redis version to use as Docker tag
#
# @see https://hub.docker.com/_/redis
# @dottie/validate required
DOCKER_REDIS_VERSION="7.2"
# Path (on host system) where the [redis] container will store its data
#
# Path is relative (./some/other/path) to the docker-compose.yml or absolute (/some/other/path)
# @dottie/validate required,dir
DOCKER_REDIS_HOST_DATA_PATH="${DOCKER_ALL_HOST_DATA_ROOT_PATH:?error}/redis"
# Port that Redis will listen on *outside* the container (e.g. the host machine)
# @dottie/validate required,number
DOCKER_REDIS_HOST_PORT="${REDIS_PORT:?error}"
# The filename that Redis should store its config file within
#
# NOTE: The file *MUST* exists (even empty) before enabling this setting!
#
# Use a command like [touch "${DOCKER_ALL_HOST_CONFIG_ROOT_PATH}/redis/redis.conf"] to create it.
#
# @default ""
# @dottie/validate required
#DOCKER_REDIS_CONFIG_FILE="/etc/redis/redis.conf"
# How often Docker health check should run for [redis] service
#
# @default "10s"
# @dottie/validate required
DOCKER_REDIS_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"
################################################################################
# docker db
################################################################################
# Set this to a non-empty value (e.g. "disabled") to disable the [db] service
#DOCKER_DB_PROFILE=
# Docker image for the DB service
# @dottie/validate required
DOCKER_DB_IMAGE="mariadb:${DB_VERSION}"
# Command to pass to the [db] server container
# @dottie/validate required
DOCKER_DB_COMMAND="--default-authentication-plugin=mysql_native_password"
# Path (on host system) where the [db] container will store its data
#
# Path is relative (./some/other/path) to the docker-compose.yml or absolute (/some/other/path)
# @dottie/validate required,dir
DOCKER_DB_HOST_DATA_PATH="${DOCKER_ALL_HOST_DATA_ROOT_PATH:?error}/db"
# Path (inside the container) where the [db] will store its data.
#
# Path MUST be absolute.
#
# For MySQL this should be [/var/lib/mysql]
# For PostgreSQL this should be [/var/lib/postgresql/data]
# @dottie/validate required
DOCKER_DB_CONTAINER_DATA_PATH="/var/lib/mysql"
# Port that the database will listen on *OUTSIDE* the container (e.g. the host machine)
#
# Use "3306" for MySQL/MariaDB and "5432" for PostgreeSQL
# @dottie/validate required,number
DOCKER_DB_HOST_PORT="${DB_PORT:?error}"
# Port that the database will listen on *INSIDE* the container
#
# Use "3306" for MySQL/MariaDB and "5432" for PostgreeSQL
# @dottie/validate required,number
DOCKER_DB_CONTAINER_PORT="${DB_PORT:?error}"
# root password for the database. By default uses DB_PASSWORD
# but can be changed in situations where you are migrating
# to the included docker-compose and have a different password
# set already
#
# @dottie/validate required
DOCKER_DB_ROOT_PASSWORD="${DB_PASSWORD:?error}"
# How often Docker health check should run for [db] service
# @dottie/validate required
DOCKER_DB_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"
################################################################################
# docker web
################################################################################
# Set this to a non-empty value (e.g. "disabled") to disable the [web] service
#DOCKER_WEB_PROFILE=""
# Port to expose [web] container will listen on *outside* the container (e.g. the host machine) for *HTTP* traffic only
# @dottie/validate required,number
DOCKER_WEB_PORT_EXTERNAL_HTTP="8080"
# How often Docker health check should run for [web] service
# @dottie/validate required
DOCKER_WEB_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"
################################################################################
# docker worker
################################################################################
# Set this to a non-empty value (e.g. "disabled") to disable the [worker] service
#DOCKER_WORKER_PROFILE=""
# How often Docker health check should run for [worker] service
# @dottie/validate required
DOCKER_WORKER_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"
################################################################################
# docker proxy
################################################################################
# Set this to a non-empty value (e.g. "disabled") to disable the [proxy] and [proxy-acme] service
#DOCKER_PROXY_PROFILE=
# Set this to a non-empty value (e.g. "disabled") to disable the [proxy-acme] service
#DOCKER_PROXY_ACME_PROFILE="${DOCKER_PROXY_PROFILE:-}"
# The version of nginx-proxy to use
#
# @see https://hub.docker.com/r/nginxproxy/nginx-proxy
# @dottie/validate required
DOCKER_PROXY_VERSION="1.4"
# How often Docker health check should run for [proxy] service
# @dottie/validate required
DOCKER_PROXY_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"
# Port that the [proxy] will listen on *outside* the container (e.g. the host machine) for HTTP traffic
# @dottie/validate required,number
DOCKER_PROXY_HOST_PORT_HTTP="80"
# Port that the [proxy] will listen on *outside* the container (e.g. the host machine) for HTTPS traffic
# @dottie/validate required,number
DOCKER_PROXY_HOST_PORT_HTTPS="443"
# Path to the Docker socket on the *host*
# @dottie/validate required,file
DOCKER_PROXY_HOST_DOCKER_SOCKET_PATH="/var/run/docker.sock"
# The host to request LetsEncrypt certificate for
# @dottie/validate required,fqdn
DOCKER_PROXY_LETSENCRYPT_HOST="${APP_DOMAIN}"
# The e-mail to use for Lets Encrypt certificate requests.
# @dottie/validate required,email
DOCKER_PROXY_LETSENCRYPT_EMAIL="${INSTANCE_CONTACT_EMAIL:?error}"
# Lets Encrypt staging/test servers for certificate requests.
#
# Setting this to any value will change to letsencrypt test servers.
#DOCKER_PROXY_LETSENCRYPT_TEST="1"