From 10674ac52337b3df7f9bcae0972fcfc44b7e9754 Mon Sep 17 00:00:00 2001 From: Christian Winther Date: Fri, 5 Jan 2024 16:18:48 +0000 Subject: [PATCH] iterate on apache example with docker-compose --- .gitignore | 3 + contrib/docker-compose/.env | 916 ++++++++++++++++++ contrib/docker-compose/README.md | 13 + .../docker-compose/docker-compose.apache.yml | 59 ++ .../root/docker/entrypoint.d/10-storage.sh | 2 +- .../templates/usr/local/etc/php/php.ini | 6 +- 6 files changed, 995 insertions(+), 4 deletions(-) create mode 100644 contrib/docker-compose/.env create mode 100644 contrib/docker-compose/README.md create mode 100644 contrib/docker-compose/docker-compose.apache.yml diff --git a/.gitignore b/.gitignore index 0494cee10..4396e4cdd 100644 --- a/.gitignore +++ b/.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 diff --git a/contrib/docker-compose/.env b/contrib/docker-compose/.env new file mode 100644 index 000000000..4cfde052b --- /dev/null +++ b/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" diff --git a/contrib/docker-compose/README.md b/contrib/docker-compose/README.md new file mode 100644 index 000000000..361c2622b --- /dev/null +++ b/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. diff --git a/contrib/docker-compose/docker-compose.apache.yml b/contrib/docker-compose/docker-compose.apache.yml new file mode 100644 index 000000000..ff7734797 --- /dev/null +++ b/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"] diff --git a/contrib/docker/shared/root/docker/entrypoint.d/10-storage.sh b/contrib/docker/shared/root/docker/entrypoint.d/10-storage.sh index fc952ea3a..b9809e24c 100755 --- a/contrib/docker/shared/root/docker/entrypoint.d/10-storage.sh +++ b/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 diff --git a/contrib/docker/shared/root/docker/templates/usr/local/etc/php/php.ini b/contrib/docker/shared/root/docker/templates/usr/local/etc/php/php.ini index 81ba3d207..c34266630 100644 --- a/contrib/docker/shared/root/docker/templates/usr/local/etc/php/php.ini +++ b/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