#!/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 client’s 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 PHP’s “mail” function as drivers for the sending of e-mail. # You may specify which one you’re 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 don’t 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 # * # * staging # * edge # * branch- # * pr- # # 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"