فهرست منبع

iterate on apache example with docker-compose

Christian Winther 1 سال پیش
والد
کامیت
10674ac523

+ 3 - 0
.gitignore

@@ -20,3 +20,6 @@ yarn-error.log
 .git-credentials
 /.composer/
 /nginx.conf
+/contrib/docker-compose/data
+/contrib/docker-compose/config
+!/contrib/docker-compose/.env

+ 916 - 0
contrib/docker-compose/.env

@@ -0,0 +1,916 @@
+# -*- mode: bash -*-
+# vi: ft=bash
+
+###############################################################
+# Docker-wide configuration
+###############################################################
+
+# Path (relative) to the docker-compose file where containers will store their data
+DOCKER_DATA_ROOT="./data"
+
+# Path (relative) to the docker-compose file where containers will store their config
+DOCKER_CONFIG_ROOT="./config"
+
+# Pixelfed version (image tag) to pull from the registry
+DOCKER_TAG="branch-jippi-fork-apache-8.1"
+
+# Set timezone used by *all* containers - these should be in sync
+#
+# See: https://www.php.net/manual/en/timezones.php
+TZ="UTC"
+
+###############################################################
+# Pixelfed application configuration
+###############################################################
+
+# A random 32-character string to be used as an encryption key.
+#
+# No default value; use [php artisan key:generate] to generate.
+#
+# 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.
+#
+# Please do this before deploying an application!
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_key
+APP_KEY=""
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_name-1
+APP_NAME="Pixelfed Prod"
+
+# Application domains used for routing.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_domain
+APP_DOMAIN="your-domain-here-dot-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
+APP_URL=https://${APP_DOMAIN}
+
+# Application domains used for routing.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#admin_domain
+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.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_env
+#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.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_debug
+#APP_DEBUG="false"
+
+# Enable/disable new local account registrations.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#open_registration
+#OPEN_REGISTRATION=true
+
+# Require email verification before a new user can do anything.
+#
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#enforce_email_verification
+#ENFORCE_EMAIL_VERIFICATION="true"
+
+# Allow a maximum number of user accounts.
+#
+# Defaults to "1000".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#pf_max_users
+PF_MAX_USERS="false"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#oauth_enabled
+# OAUTH_ENABLED="true"
+
+# Defaults to "UTC".
+#
+# Do not edit your timezone or things will break!
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_timezone
+# See: https://www.php.net/manual/en/timezones.php
+APP_TIMEZONE="${TZ}"
+
+# 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.
+#
+# Defaults to "en".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_locale
+#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.
+#
+# Defaults to "en".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#app_fallback_locale
+APP_FALLBACK_LOCALE="en"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#limit_account_size
+#LIMIT_ACCOUNT_SIZE="true"
+
+# Update the max account size, the per user limit of files in kB.
+#
+# Defaults to "1000000" (1GB).
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_account_size-kb
+#MAX_ACCOUNT_SIZE="1000000"
+
+# Update the max photo size, in kB.
+#
+# Defaults to "15000" (15MB).
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_photo_size-kb
+#MAX_PHOTO_SIZE="15000"
+
+# Update the max avatar size, in kB.
+#
+# Defaults to "2000" (2MB).
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_avatar_size-kb
+#MAX_AVATAR_SIZE="2000"
+
+# Change the caption length limit for new local posts.
+#
+# Defaults to "500".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_caption_length
+#MAX_CAPTION_LENGTH="500"
+
+# Change the bio length limit for user profiles.
+#
+# Defaults to "125".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_bio_length
+#MAX_BIO_LENGTH="125"
+
+# Change the length limit for user names.
+#
+# Defaults to "30".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_name_length
+#MAX_NAME_LENGTH="30"
+
+# The max number of photos allowed per post.
+#
+# Defaults to "4".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#max_album_length
+#MAX_ALBUM_LENGTH="4"
+
+# Set the image optimization quality, must be a value between 1-100.
+#
+# Defaults to "80".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#image_quality
+#IMAGE_QUALITY="80"
+
+# Resize and optimize image uploads.
+#
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#pf_optimize_images
+#PF_OPTIMIZE_IMAGES="true"
+
+# Resize and optimize video uploads.
+#
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#pf_optimize_videos
+#PF_OPTIMIZE_VIDEOS="true"
+
+# Enable account deletion.
+#
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#account_deletion
+#ACCOUNT_DELETION="true"
+
+# Set account deletion queue after X days, set to false to delete accounts immediately.
+#
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#account_delete_after
+#ACCOUNT_DELETE_AFTER="false"
+
+# Defaults to "Pixelfed - Photo sharing for everyone".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#instance_description
+#INSTANCE_DESCRIPTION=
+
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#instance_public_hashtags
+#INSTANCE_PUBLIC_HASHTAGS="false"
+
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#instance_contact_email
+INSTANCE_CONTACT_EMAIL="admin@${APP_DOMAIN}"
+
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#instance_public_local_timeline
+#INSTANCE_PUBLIC_LOCAL_TIMELINE="false"
+
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#banned_usernames
+#BANNED_USERNAMES=
+
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#stories_enabled
+#STORIES_ENABLED="false"
+
+# Defaults to "false".
+#
+# Level is hardcoded to 1.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#restricted_instance
+#RESTRICTED_INSTANCE="false"
+
+###############################################################
+# Database configuration
+###############################################################
+
+# 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
+DB_CONNECTION="mysql"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_host
+DB_HOST="db"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_username
+DB_USERNAME="pixelfed"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_password
+DB_PASSWORD="__CHANGE_ME__"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_database
+DB_DATABASE="pixelfed_prod"
+
+# Use "3306" for MySQL/MariaDB and "5432" for PostgreeSQL
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_port
+DB_PORT="3306"
+
+###############################################################
+# Mail configuration
+###############################################################
+
+# 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"
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_driver
+#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.
+#
+# Defaults to "smtp.mailgun.org".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_host
+#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.
+#
+# Defaults to 587.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_port
+#MAIL_PORT="587"
+
+# You may wish for all e-mails sent by your application to be sent from the same address.
+#
+# Here, you may specify a name and address that is used globally for all e-mails that are sent by your application.
+#
+# Defaults to "hello@example.com".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_from_address
+MAIL_FROM_ADDRESS="hello@${APP_DOMAIN}"
+
+# Defaults to "Example".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_from_name
+MAIL_FROM_NAME="Pixelfed @ ${APP_DOMAIN}"
+
+# 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.
+#
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_username
+#MAIL_USERNAME=
+
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_password
+#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.
+#
+# Defaults to "tls".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#mail_encryption
+#MAIL_ENCRYPTION="tls"
+
+###############################################################
+# Redis configuration
+###############################################################
+
+# Defaults to "phpredis".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#db_username
+#REDIS_CLIENT="phpredis"
+
+# Defaults to "tcp".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#redis_scheme
+#REDIS_SCHEME="tcp"
+
+# Defaults to "localhost".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#redis_host
+REDIS_HOST="cache"
+
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#redis_password
+#REDIS_PASSWORD=
+
+# Defaults to 6379.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#redis_port
+REDIS_PORT="6379"
+
+# Defaults to 0.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#redis_database
+#REDIS_DATABASE="0"
+
+###############################################################
+# Cache settings
+###############################################################
+
+# 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"
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cache_driver
+CACHE_DRIVER="redis"
+
+# Defaults to ${APP_NAME}_cache, or laravel_cache if no APP_NAME is set.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cache_prefix
+# CACHE_PREFIX="{APP_NAME}_cache"
+
+###############################################################
+# Horizon settings
+###############################################################
+
+# 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.
+#
+# Defaults to "horizon-".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_prefix
+#HORIZON_PREFIX="horizon-"
+
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_darkmode
+#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.
+#
+# Defaults to "64".
+#HORIZON_MEMORY_LIMIT="64"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_balance_strategy
+#HORIZON_BALANCE_STRATEGY="auto"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_min_processes
+#HORIZON_MIN_PROCESSES="1"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_max_processes
+#HORIZON_MAX_PROCESSES="20"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_memory
+#HORIZON_SUPERVISOR_MEMORY="64"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_tries
+#HORIZON_SUPERVISOR_TRIES="3"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_nice
+#HORIZON_SUPERVISOR_NICE="0"
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#horizon_supervisor_timeout
+#HORIZON_SUPERVISOR_TIMEOUT="300"
+
+###############################################################
+# Experiments
+###############################################################
+
+# Text only posts (alpha).
+#
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#exp_top
+#EXP_TOP="false"
+
+# Poll statuses (alpha).
+#
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#exp_polls
+#EXP_POLLS="false"
+
+# Cached public timeline for larger instances (beta).
+#
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#exp_cpt
+#EXP_CPT="false"
+
+# Enforce Mastoapi Compatibility (alpha).
+#
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#exp_emc
+#EXP_EMC="true"
+
+###############################################################
+# ActivityPub confguration
+###############################################################
+
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#activity_pub
+#ACTIVITY_PUB="false"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#ap_remote_follow
+#AP_REMOTE_FOLLOW="true"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#ap_sharedinbox
+#AP_SHAREDINBOX="true"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#ap_inbox
+#AP_INBOX="true"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#ap_outbox
+#AP_OUTBOX="true"
+
+###############################################################
+# Federation confguration
+###############################################################
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#atom_feeds
+#ATOM_FEEDS="true"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#nodeinfo
+#NODEINFO="true"
+
+# Defaults to "true".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#webfinger
+#WEBFINGER="true"
+
+###############################################################
+# Storage (cloud)
+###############################################################
+
+# Store media on object storage like S3, Digital Ocean Spaces, Rackspace
+#
+# Defaults to "false".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#pf_enable_cloud
+#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.
+#
+# Defaults to "s3".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#filesystem_cloud
+#FILESYSTEM_CLOUD="s3"
+
+# Defaults to true.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#media_delete_local_after_cloud
+#MEDIA_DELETE_LOCAL_AFTER_CLOUD="true"
+
+###############################################################
+# Storage (cloud) - S3
+###############################################################
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_access_key_id
+#AWS_ACCESS_KEY_ID=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_secret_access_key
+#AWS_SECRET_ACCESS_KEY=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_default_region
+#AWS_DEFAULT_REGION=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_bucket
+#AWS_BUCKET=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_url
+#AWS_URL=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_endpoint
+#AWS_ENDPOINT=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#aws_use_path_style_endpoint
+#AWS_USE_PATH_STYLE_ENDPOINT="false"
+
+###############################################################
+# COSTAR - Confirm Object Sentiment Transform and Reduce
+###############################################################
+
+# Comma-separated list of domains to block.
+#
+# Defaults to null
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_domains
+#CS_BLOCKED_DOMAINS=
+
+# Comma-separated list of domains to add warnings.
+#
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_cw_domains
+#CS_CW_DOMAINS=
+
+# Comma-separated list of domains to remove from public timelines.
+#
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_domains
+#CS_UNLISTED_DOMAINS=
+
+# Comma-separated list of keywords to block.
+#
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_keywords
+#CS_BLOCKED_KEYWORDS=
+
+# Comma-separated list of keywords to add warnings.
+#
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_cw_keywords
+#CS_CW_KEYWORDS=
+
+# Comma-separated list of keywords to remove from public timelines.
+#
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_keywords
+#CS_UNLISTED_KEYWORDS=
+
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_blocked_actor
+#CS_BLOCKED_ACTOR=
+
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_cw_actor
+#CS_CW_ACTOR=
+
+# Defaults to null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#cs_unlisted_actor
+#CS_UNLISTED_ACTOR=
+
+###############################################################
+# Media
+###############################################################
+
+# Defaults to false.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#media_exif_database
+MEDIA_EXIF_DATABASE="true"
+
+# Pixelfed supports GD or ImageMagick to process images.
+#
+# Defaults to "gd".
+#
+# Possible values:
+#  - "gd" (default)
+#  - "imagick"
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#image_driver
+#IMAGE_DRIVER="gd"
+
+###############################################################
+# Logging
+###############################################################
+
+# Possible values:
+#
+# - "stack" (default)
+# - "single"
+# - "daily"
+# - "slack"
+# - "stderr"
+# - "syslog"
+# - "errorlog"
+# - "null"
+# - "emergency"
+# - "media"
+LOG_CHANNEL="stderr"
+
+# Used by single, stderr and syslog.
+#
+# Defaults to "debug" for all of those.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#log_level
+#LOG_LEVEL="debug"
+
+# Used by stderr.
+#
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#log_stderr_formatter
+#LOG_STDERR_FORMATTER=
+
+# Used by slack.
+#
+# Defaults to "".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#log_slack_webhook_url
+#LOG_SLACK_WEBHOOK_URL=
+
+###############################################################
+# Broadcasting settings
+###############################################################
+
+# 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)
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#broadcast_driver
+#BROADCAST_DRIVER=
+
+###############################################################
+# Other settings
+###############################################################
+
+# Defaults to true.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#restrict_html_types
+#RESTRICT_HTML_TYPES="true"
+
+###############################################################
+# Queue configuration
+###############################################################
+
+# Possible values:
+#   - "sync" (default)
+#   - "database"
+#   - "beanstalkd"
+#   - "sqs"
+#   - "redis"
+#   - "null"
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#queue_driver
+QUEUE_DRIVER="redis"
+
+###############################################################
+# Queue (SQS) configuration
+###############################################################
+
+# Defaults to "your-public-key".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#sqs_key
+#SQS_KEY="your-public-key"
+
+# Defaults to "your-secret-key".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#sqs_secret
+#SQS_SECRET="your-secret-key"
+
+# Defaults to "https://sqs.us-east-1.amazonaws.com/your-account-id".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#sqs_prefix
+#SQS_PREFIX=
+
+# Defaults to "your-queue-name".
+#
+# https://docs.pixelfed.org/technical-documentation/config/#sqs_queue
+#SQS_QUEUE="your-queue-name"
+
+# Defaults to "us-east-1".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#sqs_region
+#SQS_REGION="us-east-1"
+
+###############################################################
+# Session configuration
+###############################################################
+
+# 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"
+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.
+#
+# Defaults to 86400.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#session_lifetime
+#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.
+#
+# Defaults to the value of APP_DOMAIN, or null.
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#session_domain
+#SESSION_DOMAIN="${APP_DOMAIN}"
+
+###############################################################
+# Proxy configuration
+###############################################################
+
+# 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.
+#
+# Defaults to "*".
+#
+# See: https://docs.pixelfed.org/technical-documentation/config/#trust_proxies
+TRUST_PROXIES="*"
+
+###############################################################
+# Passport configuration
+###############################################################
+#
+# 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
+#PASSPORT_PRIVATE_KEY=
+
+# See: https://docs.pixelfed.org/technical-documentation/config/#passport_public_key
+#PASSPORT_PUBLIC_KEY=
+
+###############################################################
+# PHP configuration
+###############################################################
+
+# See: https://www.php.net/manual/en/ini.core.php#ini.memory-limit
+#PHP_MEMORY_LIMIT="128M"
+
+###############################################################
+# MySQL DB container configuration (DO NOT CHANGE)
+###############################################################
+#
+# See "Environment Variables" at https://hub.docker.com/_/mysql
+
+MYSQL_ROOT_PASSWORD="${DB_PASSWORD}"
+MYSQL_USER="${DB_USERNAME}"
+MYSQL_PASSWORD="${DB_PASSWORD}"
+MYSQL_DATABASE="${DB_DATABASE}"
+
+###############################################################
+# MySQL (MariaDB) DB container configuration (DO NOT CHANGE)
+###############################################################
+#
+# See "Start a mariadb server instance with user, password and database" at https://hub.docker.com/_/mariadb
+
+MARIADB_ROOT_PASSWORD="${DB_PASSWORD}"
+MARIADB_USER="${DB_USERNAME}"
+MARIADB_PASSWORD="${DB_PASSWORD}"
+MARIADB_DATABASE="${DB_DATABASE}"
+
+###############################################################
+# PostgreSQL DB container configuration (DO NOT CHANGE)
+###############################################################
+#
+# See "Environment Variables" at https://hub.docker.com/_/postgres
+
+POSTGRES_USER="${DB_USERNAME}"
+POSTGRES_PASSWORD="${DB_PASSWORD}"
+POSTGRES_DB="${DB_DATABASE}"
+
+###############################################################
+# Docker Specific configuration
+###############################################################
+
+# Image to pull the Pixelfed Docker images from
+#
+# Possible values:
+#   - "ghcr.io/pixelfed/pixelfed" to pull from GitHub
+#   - "pixelfed/pixelfed" to pull from DockerHub
+#
+DOCKER_IMAGE="ghcr.io/jippi/pixelfed"
+
+# Port that Redis will listen on *outside* the container (e.g. the host machine)
+DOCKER_REDIS_PORT_EXTERNAL="${REDIS_PORT}"
+
+# Port that the database will listen on *outside* the container (e.g. the host machine)
+#
+# Use "3306" for MySQL/MariaDB and "5432" for PostgreeSQL
+DOCKER_DB_PORT_EXTERNAL="${DB_PORT}"
+
+# Port that the web will listen on *outside* the container (e.g. the host machine)
+DOCKER_WEB_PORT_EXTERNAL="8080"

+ 13 - 0
contrib/docker-compose/README.md

@@ -0,0 +1,13 @@
+# Pixelfed + Docker + Docker Compose
+
+## Prerequisites
+
+* One of the `docker-compose.yml` files in this directory
+* A copy of the `example.env` file
+
+In order to set configuration, please use a .env file in your compose project directory (the same directory as your docker-compose.yml), and set database options, application
+name, key, and other settings there.
+
+A list of available settings is available in .env.example
+
+The services should scale properly across a swarm cluster if the volumes are properly shared between cluster members.

+ 59 - 0
contrib/docker-compose/docker-compose.apache.yml

@@ -0,0 +1,59 @@
+---
+version: "3"
+
+services:
+  web:
+    image: "${DOCKER_IMAGE}:${DOCKER_TAG}"
+    restart: unless-stopped
+    env_file:
+      - "./.env"
+    volumes:
+      - "./.env:/var/www/.env"
+      - "${DOCKER_DATA_ROOT}/pixelfed/bootstrap:/var/www/bootstrap"
+      - "${DOCKER_DATA_ROOT}/pixelfed/storage:/var/www/storage"
+    ports:
+      - "${DOCKER_WEB_PORT_EXTERNAL}:80"
+    depends_on:
+      - db
+      - redis
+
+  worker:
+    image: "${DOCKER_IMAGE}:${DOCKER_TAG}"
+    command: gosu www-data php artisan horizon
+    restart: unless-stopped
+    env_file:
+      - "./.env"
+    volumes:
+      - "./.env:/var/www/.env"
+      - "${DOCKER_DATA_ROOT}/pixelfed/bootstrap:/var/www/bootstrap"
+      - "${DOCKER_DATA_ROOT}/pixelfed/storage:/var/www/storage"
+    depends_on:
+      - db
+      - redis
+
+  db:
+    image: mariadb:11.2
+    command: --default-authentication-plugin=mysql_native_password
+    restart: unless-stopped
+    env_file:
+      - "./.env"
+    volumes:
+      - "${DOCKER_DATA_ROOT}/db:/var/lib/mysql"
+    ports:
+      - "${DOCKER_DB_PORT_EXTERNAL}:3306"
+
+  redis:
+    image: redis:7
+    restart: unless-stopped
+    env_file:
+      - "./.env"
+    volumes:
+      - "${DOCKER_CONFIG_ROOT}/redis:/etc/redis"
+      - "${DOCKER_DATA_ROOT}/redis:/data"
+    ports:
+      - "${DOCKER_REDIS_PORT_EXTERNAL}:6399"
+    healthcheck:
+      interval: 10s
+      timeout: 5s
+      retries: 2
+      test: ["CMD", "redis-cli", "-p", "6399", "ping"]

+ 1 - 1
contrib/docker/shared/root/docker/entrypoint.d/10-storage.sh

@@ -4,7 +4,7 @@ source /docker/helpers.sh
 entrypoint-set-script-name "$0"
 
 # Copy the [storage/] skeleton files over the "real" [storage/] directory so assets are updated between versions
-run-as-runtime-user cp --recursive storage.skel/ storage/
+run-as-runtime-user cp --recursive storage.skel/. storage/.
 
 # Ensure storage linkk are correctly configured
 run-as-runtime-user php artisan storage:link

+ 3 - 3
contrib/docker/shared/root/docker/templates/usr/local/etc/php/php.ini

@@ -376,7 +376,7 @@ zend.exception_ignore_args = On
 ; threat in any way, but it makes it possible to determine whether you use PHP
 ; on your server or not.
 ; http://php.net/expose-php
-expose_php = On
+expose_php = Off
 
 ;;;;;;;;;;;;;;;;;;;
 ; Resource Limits ;
@@ -406,7 +406,7 @@ max_input_time = 60
 
 ; Maximum amount of memory a script may consume (128MB)
 ; http://php.net/memory-limit
-memory_limit = 128M
+memory_limit = {{ getenv "PHP_MEMORY_LIMIT" "128M" }}
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Error handling and logging ;
@@ -947,7 +947,7 @@ cli_server.color = On
 [Date]
 ; Defines the default timezone used by the date functions
 ; http://php.net/date.timezone
-;date.timezone =
+date.timezone = {{ getenv "TZ" "UTC" }}
 
 ; http://php.net/date.default-latitude
 ;date.default_latitude = 31.7667