### # # Environment variables are assigned at different times in docker. # 3 tags make it possible to distinguish them : # # - @install # - @build # - @run # # The "@deprecated" tag targets a deprecated variable. # # For better readability, see url below : # https://docs.phraseanet.com/4.1/en/Admin/EnvironnementVariables.html # --- ATTENTION POINTS FOR PHRASEANET CONFIGURATION ------------------------------------------------------------------- # 1. Default Passwords: Ensure all default passwords defined in this configuration are changed to secure, personalized passwords before deployment. # 2. MariaDB Container: The provided MariaDB container is not ready for production as-is and requires adjustments. It is recommended to use an external, redundant service for the primary datastore. # 3. Configuration Persistence: Changes made in this file need appropriate backups as they are crucial for system restoration and disaster recovery. # 4. Environment Specifics: Ensure that settings like database hosts, ports, and credentials are correctly configured for your specific environment. # 5. Environment Variable Customization: Environment variables should be tailored to fit the specific needs and usage intentions of the application. Always review and adjust these settings to align with operational requirements. # 6. Plugin Dependencies: some features, such as SAML authentication, require additional paid plugins not included in the public images. # --- Phraseanet stack composition ------------------------------------------------------------------------------------- # Stack composition use "COMPOSE_FILES" and "COMPOSE_PROFILES" variables. Use it # to adapt the stack in accordance with your needs. # # 1/ "COMPOSE_FILE" value define docker-compose files to include. See available # files list below : # - "docker-compose.yml" : Services Nginx, Phraseanet, workers, # scheduler # - "docker-compose.datastores.yml" : All data storage services required by # Phraseanet except for files storage. # - "docker-compose.tools.yml" : Dev and debug tools # - "docker-compose.override.yml" : For dev only, use the code from hosts, # activate ide debugger, ports mapping for # datastores # - "docker-compose.phrasea.yml" : For integrate this stack in the "traefik" of Phrasea stack # # - "docker-compose.limits.yml" : defines containers cpu and memory limits for all Phraseanet and gateway containers only. # # - "docker-compose.alternatives.yml": all alternative services, used only on evolution or transition or testing periods # # 2/ "COMPOSE_PROFILES" value define which profiles you want to use # in docker-compose. # See available services and worker profiles below: # # Profiles service list: # - "app" : launch Phraseanet and Workers. # - "setup" : launch a Phraseanet installation and configuration container, this container is launched to perform a default installation and # each time it is necessary to update the Phraseanet configuration using the env variables. # when an update is performed, the current phraseanet 'config/' repository is backuped in # - "gateway-classic" : launch Nginx service. # - "gateway-traefik" : Nginx is launched behind a traefik service, at this time `traefik` is not include in this stack but you can use your own # or use `Traefik` include in Phrasea Stack. # - "workers" : launch one worker container by kind of Jobs, you can also # choose to launch only some workers, see worker profile list below. # - "worker" : launch one container worker with all jobs run on it. # - "cmd" : launch a container based on worker image, useful for run cmd manualy. # - "db" : db profile will launch a mariadb container, with data stored on host and mounted in the db container. # because this is the primary datastore, you should use you own SGDD service for production needs. # - "db-docker-vol" : same as "db" profile but with data stored in a docker volume. # - "elastisearch" : launch a elasticsearch container. # - "rabbitmq" : launch a rabbitmq container. # - "redis" : launch a redis container for app cache. # - "redis-session" : launch a redis container for store fpm session. # - "builder" : launch the builder container, for dev only. # - "elk" : launch an elk stack, for dev only. # - "squid" : reverse proxy for dev only. # - "mailhog" : for catching all email emit by app for dev and testing. # - "db-backup" : launch and run a container to cron database backups and backup file's rotation. # - "pma" : launch a phpmyadmin container for test and dev purpose. # - "db-mysql8" : launch a mysql8 container (beta), (/!\ do not mix with the "db" profile) # Because this is the primary datastore, you should use you own SGDD service for production needs. # # Profiles worker list: # - "assetsInjest" # - "createRecord" # - "deleteRecord" # - "editRecord" # - "exportMail" # - "downloadAsync" # - "exposeUpload" # - "exportFtp" # - "mainQueue" # - "populateIndex" # - "pullAssets" # - "recordsActions" # - "subdefCreation" # - "subtitle" Not working (fixed in a future version) # - "validationReminder" # - "webhook" # - "writeMetadatas" # - "shareBasket" # # - "scheduler" : legacy task manager. Warning! Use only if your stack # require using old task. # # See [Docker compose profile documentation|https://docs.docker.com/compose/profiles/] # for more information about docker compose profiles. # # # See below some examples of stack composition: # # For development: # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml:docker-compose.override.yml # - COMPOSE_PROFILES=app,setup,db,pma,elasticsearch,redis,redis-session,rabbitmq,workers,mailhog,builder,gateway-classic,cmd # # For testing with tools: # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml # - COMPOSE_PROFILES=app,setup,db,pma,elasticsearch,rabbitmq,redis,redis-session,workers,cmd,mailhog,gateway-classic # # # To test with tools and apply resources throttling on Phraseanet containers : # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml:docker-compose.limits.yml # - COMPOSE_PROFILES=app,setup,db,pma,elasticsearch,rabbitmq,redis,redis-session,workers,cmd,mailhog,gateway-classic # # For testing with debug and SSL (the traekik is provide by Phrasea stack): # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml:docker-compose.under-phrasea.yml # - COMPOSE_PROFILES=app,setup,gateway-traefik,db,pma,elasticsearch,rabbitmq,redis,redis-session,worker,workers,mailhog # # For production (require using your own databases services and SSL): # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml:docker-compose.scheduler.yml # - COMPOSE_PROFILES=app,setup,workers,gateway-traefik # # Example with all profiles: # - COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml:docker-compose.limits.yml # - COMPOSE_PROFILES=app,setup,gateway-classic,db,elasticsearch,redis,redis-session,rabbitmq,pma,mailhog,assetsInjest,createRecord,deleteRecord,editRecord, # exportMail,downloadAsync,exposeUpload,exportFtp,mainQueue,populateIndex,pullAssets,recordsActions,subdefCreation, # validationReminder,webhook,writeMetadatas,shareBasket,scheduler,cmd,elk,db-backup,phraseanet-saml-sp # # Define "docker-compose" files to include. # @run COMPOSE_FILE=docker-compose.yml:docker-compose.datastores.yml:docker-compose.tools.yml # Define which profiles you want to use in "docker-compose". # @run COMPOSE_PROFILES=app,setup,gateway-classic,db,elasticsearch,rabbitmq,redis,redis-session,worker,mailhog,db-backup # --- Phraseanet container settings ------------------------------------------------------------------------------------ # Registry from which you pull docker images. # Avalaible values: # - "local" : build and use your images. # - "alchemyfr" : using predbuild images from Alchemy registry from dockerhub. # # @run PHRASEANET_DOCKER_REGISTRY=alchemyfr # Docker images tag. # @run PHRASEANET_DOCKER_TAG=4.1.20 # Stack Name # An optionnal Name for the stack # @run STACK_NAME= # --- CPU and Memory Configuration for Docker Services ------------------------------------------------------------------- # These settings are only active if 'docker-compose.limits.yml' is specified in the COMPOSE_FILE variable. # they define the resources allocated to the containers, for more explanation see the docker compose documentation # Number of CPUs allocated to the worker service. # @run WORKER_CPU=2 # Number of CPUs allocated to the gateway service. # @run GATEWAY_CPU=2 # Number of CPUs allocated to the PHP-FPM service. # @run FPM_CPU=2 # Maximum memory that the worker service can use. # @run WORKER_MEMORY_LIMIT=2048M # Maximum memory that the gateway service can use. # @run GATEWAY_MEMORY_LIMIT=2048M # Maximum memory that the PHP-FPM service can use. # @run FPM_MEMORY_LIMIT=2048M # Reserved memory for the worker service. # @run WORKER_MEMORY_RESERVATION=256M # Reserved memory for the gateway service. # @run GATEWAY_MEMORY_RESERVATION=256M # Reserved memory for the PHP-FPM service. # @run FPM_MEMORY_RESERVATION=256M # --- Phraseanet container network settings ------------------------------------------------------------------------------------ # Phraseanet network settings are used to define the network configuration # of the Phraseanet stack when traefik is used. # see phraseanet under traefik in Phrasea stack # Phrasea network Name, the name of Phrasea network and see by traefik # @run PHRASEA_NETWORK_NAME=ps_internal # Domain Name used by traefik in Phrasea stack # @run PHRASEA_DOMAIN=phrasea.local # Phrasea Gateway IP, the IP of the gateway container (traefik) in the Phrasea stack # @run PHRASEA_GATEWAY_IP=172.30.0.1 # Phrasea Gateway Name, the name of the gateway container (traefik) in the Phrasea stack # @run PHRASEA_COMPOSE_PROJECT_NAME=ps # --- Phraseanet container entrypoint settings ------------------------------------------------------------------------- # Do an installation if Phraseanet is not installed. # Avalaible values: "0" | "1" # @run PHRASEANET_INSTALL=1 # Apply they env variables values to config/configuration.yml file. # Avalaible values: "0" | "1" # @run PHRASEANET_SETUP=1 # Play an upgrade. # Avalaible values: "0" | "1" # @run PHRASEANET_UPGRADE=0 # Maintenance mode # show an Nginx unavailability message # Available values: "0" | "1" # 0 - for no maintenance mode # 1 - for persisting maintenance mode # During an upgrade, the unavailability message is automatically activated with a default message # "We are performing scheduled maintenance and will be back online in a few minutes." # @run PHRASEANET_MAINTENANCE=0 # Customize the maintenance message # this is possible to customize the displayed maintenance message. # Note: space needs to be encoded with space html character, quote and double quote need to be escaped # Example : # PHRASEANET_MAINTENANCE_MESSAGE="

Under maintenance!

More information here

" # @run PHRASEANET_MAINTENANCE_MESSAGE= # --- RabbitMQ settings ------------------------------------------------------------------------------------------------ # RabbitMQ user account : create an account in RabbitMQ container and use it # in Phraseanet configuration. # @run RABBITMQ_DEFAULT_USER=alchemy # RabbitMQ password account. # @run RABBITMQ_DEFAULT_PASS=vdh4dpe5Wy3R # RabbitMQ Http interface management port. # @run RABBITMQ_MANAGEMENT_PORT=10811 # rabbit hostname, need also for the name of rabbit database dir to avoid random name after dc down/up # @run RABBITMQ_HOSTNAME=rabbit_phraseanet # @run RABBITMQ_IMAGE_TAG=rabbitmq:4.1.0-management # --- Gateway settings (Nginx) ----------------------------------------------------------------------------------------- # Value applied to "send_timeout", "keepalive_timeout", "client_header_timeout" # and "client_body_timeout" Nginx settings. # @run GATEWAY_SEND_TIMEOUT=120 # Timeout for establishing a connection with a proxied server. See [documentation| # https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout]. # @run GATEWAY_PROXY_TIMEOUT=120 # Value applied to "fastcgi_connect_timeout", "fastcgi_read_timeout" # and "fastcgi_send_timeout" Nginx settings. # @run GATEWAY_FASTCGI_TIMEOUT=300 # --- Gateway restricted access settings (Nginx) ----------------------------------------------------------------------------------------- # Activate application access restrictions. # Restrictions can be based on IP and/or password. Use these settings to control who can access the application. # Allowed IPs: Comma-separated list of IP addresses that are allowed to access the gateway. # Uncomment and specify IPs to enable. Example: GATEWAY_ALLOWED_IPS=10.0.0.1,10.0.1.1 # @run GATEWAY_ALLOWED_IPS= # Denied IPs: Comma-separated list of IP addresses that are denied access to the gateway. # Uncomment and specify IPs to enable. Example: GATEWAY_DENIED_IPS=172.1.0.1,172.1.0.2 # @run GATEWAY_DENIED_IPS= # Users: Specifies credentials for accessing the gateway. Format "username:password". # Uncomment and specify user credentials to enable. Example: GATEWAY_USERS="user1:password1,user2:password2" # @run GATEWAY_USERS= # Status and ping access Allowed IPs: Comma-separated list of IP addresses that are allowed to access the /status or /ping pages. # Uncomment and specify IPs to enable. Example: GATEWAY_STATUS_ALLOWED_IPS=10.0.0.1,10.0.1.1 # @run GATEWAY_STATUS_ALLOWED_IPS= # --- Gateway HTTP requests quota management (Nginx) ----------------------------------------------------------------------------------------- # Manage http incoming request limits by verbs using the "ngx_http_limit_req_module" module. # this feature is based on ip adresses and need PHRASEANET_TRUSTED_PROXIES defined to get real_ip # READ is for GET and HEAD requests # WRITE is for POST, PUT, DELETE and PATCH requests # Enabling the requests Limit # @run HTTP_REQUEST_LIMITS=false # In megabyte For Exemple 16,000 IP addresses takes 1 megabyte, so our zone can store about 160,000 addresses. # @run HTTP_READ_REQUEST_LIMIT_MEMORY=10 # request/seconde, sets the maximum request rate. By default here the rate cannot exceed 100 requests per second # @run HTTP_READ_REQUEST_LIMIT_RATE=100 # The burst parameter defines how many requests a client can make in excess of the rate specified # @run HTTP_READ_REQUEST_LIMIT_BURST=20 # (m) For Exemple 16,000 IP addresses takes 1 megabyte, so our zone can store about 160,000 addresses. # @run HTTP_WRITE_REQUEST_LIMIT_MEMORY=10 # (r/s) Sets the maximum request rate. By default here the rate cannot exceed 10 requests per second # @run HTTP_WRITE_REQUEST_LIMIT_RATE=100 # The burst parameter defines how many requests a client can make in excess of the rate specified # @run HTTP_WRITE_REQUEST_LIMIT_BURST=20 # --- Gateway HTTPS settings (Nginx) ------------------------------------------------------------------------------------ # https and reverse proxy (on/off) # set to on in the case : https behind a proxy # @run GATEWAY_FASTCGI_HTTPS=off # --- Gateway CSP settings (Nginx) -------------------------------------------------------------------------------------- # Content Security Policy (CSP) # helps to detect and mitigate some types of attacks, including Cross-Site Scripting (XSS). # CSP default values are included in the "Gateway" container entrypoint. # Use GATEWAY_CSP env var if you want to define yours or override Gateway default CSP values. # default value GATEWAY_CSP="default-src 'self' 127.0.0.1 https://sockjs-eu.pusher.com:443 wss://ws-eu.pusher.com https://apiws.carrick-skills.com:8443 https://apiws.carrick-flow.com:8443 https://fonts.gstatic.com *.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com *.axept.io *.matomo.cloud *.newrelic.com *.nr-data.net https://www.googletagmanager.com *.google-analytics.com *.phrasea.io https://apiws.carrick-flow.com:8443 https://apiws.carrick-skills.com:8443 https://maxcdn.bootstrapcdn.com data: ; script-src 'unsafe-inline' 'unsafe-eval' 'self' https://www.gstatic.com *.alchemyasp.com *.axept.io *.matomo.cloud *.newrelic.com https://www.googletagmanager.com https://apiws.carrick-flow.com:8443 https://apiws.carrick-skills.com:8443 https://maxcdn.bootstrapcdn.com data: blob: ; style-src 'self' 'unsafe-inline' https://fonts.gstatic.com https://fonts.googleapis.com https://www.google.com https://www.gstatic.com https://apiws.carrick-flow.com:8443 https://apiws.carrick-skills.com:8443 https://maxcdn.bootstrapcdn.com ; img-src 'self' data: blob: *.tiles.mapbox.com https://axeptio.imgix.net *.cloudfront.net *.phrasea.io *.amazonaws.com https://apiws.carrick-flow.com:8443 https://apiws.carrick-skills.com:8443 https://maxcdn.bootstrapcdn.com https://www.gnu.org/graphics/ ; object-src 'self'; frame-ancestors 'self'" # @run GATEWAY_CSP= # --- PHP settings ----------------------------------------------------------------------------------------------------- # Maximum request body size for Php and Nginx. Example "1G" # @run MAX_BODY_SIZE=1G # Maximum Php input var. See [max-input-vars Php documentation| # https://www.php.net/manual/en/info.configuration.php#ini.max-input-vars]. # @run MAX_INPUT_VARS=12000 # Maximum Php execution time in second. See [max-execution-time Php documentation| # https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time]. # @run MAX_EXECUTION_TIME=120 # Maximum Php input time in second. See [max-input-time Php documentation| # https://www.php.net/manual/en/info.configuration.php#ini.max-input-time]. # @run MAX_INPUT_TIME=60 # Php timeout for serving a single request after which the worker process will # be killed. This option should be used when the "max_execution_time" ini option # does not stop script execution for some reason. A value of "0" means "off". # Available units: s(econds)[default], m(inutes), h(ours), or d(ays). # @run REQUEST_TERMINATE_TIMEOUT=300s # Maximum amount of memory a script may consume (128MB) # http://php.net/memory-limit # Memory limit in FPM context # @run FPM_MEMORY_LIMIT=2048M # Memory limit for php-cli # @run PHP_CLI_MEMORY_LIMIT=2048M # Temporary directory for HTTP uploaded files (will use system default if not # specified). # http://php.net/upload-tmp-dir # @run PHP_UPLOAD_TMP_DIR=/var/alchemy/Phraseanet/tmp/php_upload_tmp # Php Opcache status. See [opcache Php documentation| # https://www.php.net/manual/en/intro.opcache.php]. # Avalaible values: "0" | "1" # @run OPCACHE_ENABLED=1 # Php session cache limiter. See [session-cache-limiter Php documentation| # https://www.php.net/manual/en/function.session-cache-limiter]. # Avalaible values: "off" | "on" # @run SESSION_CACHE_LIMITER=off # Php logging level. See [error-reporting Php documentation| # https://www.php.net/manual/en/function.error-reporting.php]. # Available values: "alert" | "error" | "warning" | "notice" | "debug" # @run PHP_LOG_LEVEL=warning # PHP Handler used to store/retrieve data. # http://php.net/session.save-handler # session handler can be "files" and path must be than # @run SESSION_SAVE_HANDLER=redis # @run SESSION_SAVE_PATH=tcp://redis-session:6379 # PHP session cookies to be secured # only works if the application is under ssl protection # @run COOKIE_SECURE=false # FPM # Choose how the process manager will control the number of child processes. # Possible Values: # static - a fixed number (pm.max_children) of child processes; # dynamic - the number of child processes are set dynamically based on the # @run FPM_PM_TYPE=dynamic # FPM # The number of child processes to be created when pm is set to 'static' and the # maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. # @run FPM_MAXCHILDREN=9 # FPM # The number of child processes created on startup. # Note: Used only when pm is set to 'dynamic' # @run FPM_STARTSERVERS=3 # FPM # The desired minimum number of idle server processes. # Note: Used only when pm is set to 'dynamic' # Note: Mandatory when pm is set to 'dynamic' # @run FPM_MINSPARESERVER=2 # FPM # The desired maximum number of idle server processes. # Note: Used only when pm is set to 'dynamic' # Note: Mandatory when pm is set to 'dynamic' # @run FPM_MAXSPARESERVER=4 # FPM # The number of requests each child process should execute before respawning. # @run FPM_MAX_REQUESTS=1000 # --- MySQL settings --------------------------------------------------------------------------------------------------- # MySQL root password. # A change is mandatory for security reasons. # @build MYSQL_ROOT_PASSWORD=root # MySQL server host address. # @build SERVER_NAME=phraseanet-docker # MySQL maximum allowed packet. # Value applied to "max_allowed_packet" MySQL server setting. # @run MYSQL_MAX_ALLOWED_PACKET=16M # Value applied to "max_connection" MySQL server setting. # @run MYSQL_MAX_CONNECTION=200 # Enable the slow query log to see queries with especially long duration. # Value applied to "slow_query_log" MySQL server setting. # @run MYSQL_SLOW_QUERY_LOG=0 # Value applied to "long_query_time" MySQL server setting. # @run MYSQL_LONG_QUERY_TIME=10 # Cache only tiny result sets, so we can fit more in the query cache. # Value applied to "query_cache_limit" MySQL server setting. # @run MYSQL_QUERY_CACHE_LIMIT=128k # Value applied to "query_cache_size" MySQL server setting. # @run MYSQL_QUERY_CACHE_SIZE=64M # Value applied to "key_buffer_size" MySQL server setting. # @run MYSQL_KEY_BUFFER_SIZE=128M # Value applied to "connect_timeout" MySQL server setting. # @run MYSQL_CONNECT_TIMEOUT=60 # Value applied to "wait_timeout" MySQL server setting. # @run MYSQL_WAIT_TIMEOUT=600 # This Environment variable will run mariadb-upgrade is essential when mariadb version changes. # https://mariadb.com/kb/en/mariadb-upgrade/ # @run MARIADB_AUTO_UPGRADE=1 # --- DB Backup settings --------------------------------------------------------------------------------------------- # "db-backup" profile launch and run a container to cron database backups and backup file's rotation. # This container is based on the "alpine" image and use the "mysql-client" package to perform backups. # Path where the backuped files will be locally stored # @run DB_BACKUP_VOLUME_PATH=./datas # The database server host # @run DB_BACKUP_MYSQL_HOST=db # The database server user # @run DB_BACKUP_MYSQL_USER=root # The database server pass # @run DB_BACKUP_MYSQL_PASS=${MYSQL_ROOT_PASSWORD} # The backup file's rotation time in days # @run DB_BACKUP_MAX_BACKUPS=7 # If set, create a backup when the container starts # @run DB_BACKUP_INIT_BACKUP=0 # If set, restores latest backup. # @run DB_BACKUP_INIT_RESTORE_LATEST=0 # Every day at 03:00 # @run #DB_BACKUP_CRON_TIME=0 3 * * DB_BACKUP_CRON_TIME= # Make it small # @run DB_BACKUP_GZIP_LEVEL=9 # --- redis cache settings --------------------------------------------------------------------------------------------- # Redis session Image Tag. # @run REDIS_CACHE_IMAGE_TAG=redis:8.0.1 # --- redis session settings --------------------------------------------------------------------------------------------- # Redis cache Image Tag. # @run REDIS_SESSION_IMAGE_TAG=redis:8.0.1 # --- Pusher Settings --- # Phraseanet use the Pusher service to notify users of asynchronous downloads https://pusher.com. # These settings are required when asynchronous downloads are enabled via 'download_async / enabled=true' in configuration.yml. # A Pusher account is necessary. # For account setup and further details, refer to the official Pusher documentation at https://pusher.com/docs. # Pusher Authentication Key: Key used for authenticating with the Pusher API. # @run PUSHER_AUTH_KEY= # Pusher Secret: Secret key for secure interactions with the Pusher API. # @run PUSHER_SECRET= # Pusher App ID: The unique identifier for your Pusher application. # @run PUSHER_APP_ID= # --- Application Cache Settings --- # Configuration for caching mechanisms within the application. # Supports 'redis' for distributed caching or 'arraycache' for in-memory caching. # These settings are effective when the corresponding cache type is enabled in the system configuration. # Cache Type: Specifies the caching mechanism ('redis' or 'arraycache'). # @run PHRASEANET_CACHE_TYPE=redis # Cache Host: Hostname or IP address of the cache server. # @run PHRASEANET_CACHE_HOST=redis # Cache Port: Port number on which the cache server is running. # @run PHRASEANET_CACHE_PORT=6379 # --- PHP Session Management Settings --- # Configures storage mechanism for PHP sessions, correlating with the SESSION_SAVE_HANDLER setting. # Options are 'redis', 'file', or 'native'. # 'redis' : Using Redis as a session storage mechanism. # 'file' : Using file-based session storage. # 'native' : Using PHP’s built-in session management which is file-based but can be configured to use a custom session handler. # When `native` is choseen see also SESSION_SAVE_HANDLER and SESSION_SAVE_PATH setting in php section # 'native' is mandatory for environments where SAML authentication is enabled, # see SAML section below # Session Type: Specifies the session storage mechanism. # @run PHRASEANET_SESSION_TYPE=redis # Session Host: Hostname or IP address of the session storage server. # @run PHRASEANET_SESSION_HOST=redis-session # Session Port: Port number on which the session storage server is running. # @run PHRASEANET_SESSION_PORT=6379 # --- Phraseanet general settings -------------------------------------------------------------------------------------- # Variables below are used in the "configuration.yml" file: # Application title displayed on Phraseanet homepage. # Available values: # - "0" : Keep value define configuration.yml # - "1" : Use PHRASEANET_PROJECT_NAME # # @run ENV_SET_PHRASEANET_PROJECT_NAME=1 # Application title displayed on Phraseanet homepage. Depend on # "ENV_SET_PHRASEANET_PROJECT_NAME" variable value. # @run PHRASEANET_PROJECT_NAME=Phraseanet # Application static url is made by combining PHRASEANET_SCHEME, PHRASEANET_HOSTNAME and PHRASEANET_APP_PORT # An non declarative variable is generated for other uses needed for deploiment (helm for exemple) # Domain name used by traefik in Phrasea stack # @run PHRASEANET_HOSTNAME=phraseanet.phrasea.local # @run PHRASEANET_SCHEME=http # @run PHRASEANET_APP_PORT=8082 # Variables below used to define the first user / email couple : # Phraseanet root account ID. If this variable is filled in, # "PHRASEANET_ADMIN_ACCOUNT_PASSWORD" variable value will override # targeted account ID password each time Phraseanet is started. # @run PHRASEANET_ADMIN_ACCOUNT_ID= # @run PHRASEANET_ADMIN_ACCOUNT_EMAIL=admin@phraseanet.local # require to be change for securitie reasons # @run PHRASEANET_ADMIN_ACCOUNT_PASSWORD=iJRqXU0MwbyJewQLBbra6IWHsWly # Use Pusher to enable async download. # @run PHRASEANET_DOWNLOAD_ASYNC=false # --- User Session Duration Settings --- # These settings control the lifetime and idle timeout of user sessions in the application. # User Session Idle Timeout: Duration in seconds a session can remain inactive before being ended by the server. # This setting helps manage resources efficiently and improves security by limiting the risk of sessions being hijacked during periods of inactivity. # @run PHRASEANET_USER_SESSION_IDLE=14400 # User Session Lifetime: Maximum duration in seconds that a session can exist, regardless of activity. # This setting defines the absolute maximum time a session will remain active, # after which it will be terminated to prevent long-lived sessions. # @run PHRASEANET_USER_SESSION_LIFETIME=86400 # --- Phraseanet SGBD Settings --- # Configure the database settings for Phraseanet. # Note: The default settings provided below are for initial setup and development purposes only. # For production environments, ensure to use secure credentials and consider connecting to a managed database service for enhanced security and performance. # SGBD Host: Specifies the hostname or IP address of the database server. # @install PHRASEANET_DB_HOST=db # SGBD Port: Specifies the port number on which the database server is accessible. # @install PHRASEANET_DB_PORT=3306 # SGBD User: Username for accessing the database. Change from default 'root' to a user with lesser privileges for security reasons. # @install PHRASEANET_DB_USER=root # Recommend changing to a specific, non-root user for production. # SGBD Password: Password for the database user. Ensure to change this from the default for security reasons. # @install PHRASEANET_DB_PASSWORD=root # Strongly recommend setting a strong, unique password for production. # --- Phraseanet Database Settings --------------------------------------------------------------------------------------- # Configure the initial database settings for Phraseanet installation. # These settings specify the templates and database identifiers used during the setup process. # Note: The databases specified here exist by default in the provided 'db' container. # If using an external database server, ensure these databases are created prior to installation. # Database Template: Specifies the template for database setup, guiding the initial configuration structure. # @install INSTALL_DB_TEMPLATE=DublinCore # Application Database Identifier: Specifies the identifier for the primary application database. # Typically named as 'ab_master' or similar; adjust as needed. # @install INSTALL_APPBOX=ab_master # Data Database Identifier: Specifies the identifier for the primary data storage database. # Typically named as 'db_databox1' or similar; adjust as needed. # @install INSTALL_DATABOX=db_databox1 # --- Phraseanet languages settings ------------------------------------------------------------------------------------ # Available languages (list of language code separated by comma). # @run PHRASEANET_AVAILABLE_LANGUAGE=de,en,fr,nl # Default language code. # @run PHRASEANET_DEFAULT_LANGUAGE=en # --- Phraseanet Binaries Execution Timeouts Settings ------------------------------------------------------------------- # These settings define the maximum allowed execution time in minutes for various media processing tools used by Phraseanet. # If a process exceeds the specified timeout, it will be considered as having encountered an error. # These timeouts should be adjusted based on the file sizes being processed. # FFMPEG Timeout: Maximum execution time for FFMPEG processes, used for video encoding and processing. # @run PHRASEANET_FFMPEG_TIMEOUT=7200 # FFPROBE Timeout: Maximum execution time for FFPROBE processes, used for video file analysis. # @run PHRASEANET_FFPROBE_TIMEOUT=120 # Ghostscript Timeout: Maximum execution time for Ghostscript processes, used for processing PDFs and PostScript files. # @run PHRASEANET_GS_TIMEOUT=120 # MP4Box Timeout: Maximum execution time for MP4Box processes, used for multimedia stream manipulation. # @run PHRASEANET_MP4BOX_TIMEOUT=120 # SWFTools Timeout: Maximum execution time for SWFTools processes, used for processing SWF files. # @run PHRASEANET_SWFTOOLS_TIMEOUT=120 # Unoconv Timeout: Maximum execution time for Unoconv processes, used for document conversion between various formats. # @run PHRASEANET_UNOCON_TIMEOUT=120 # ExifTool Timeout: Maximum execution time for ExifTool processes, used for managing metadata within media files. # @run PHRASEANET_EXIFTOOL_TIMEOUT=120 # --- Phraseanet RabbitMQ Settings --- # Configuration settings for RabbitMQ, used for message queuing within Phraseanet. # These settings define how Phraseanet connects to the RabbitMQ server to handle asynchronous message queuing. # RabbitMQ Host: The hostname or IP address of the RabbitMQ server. # @run PHRASEANET_RABBITMQ_HOST=rabbitmq # RabbitMQ Port: The port number on which the RabbitMQ server is accessible. # @run PHRASEANET_RABBITMQ_PORT=5672 # RabbitMQ SSL: Whether to use SSL/TLS to encrypt the connection. Set to 'false' to disable. # @run PHRASEANET_RABBITMQ_SSL=false # RabbitMQ Virtual Host: The namespace where queues and exchanges are defined within RabbitMQ. # @run PHRASEANET_RABBITMQ_VHOST=/ # RabbitMQ Heartbeat: The timeout interval in seconds for sending heartbeats to keep the connection alive. # @run PHRASEANET_RABBITMQ_HEARTBEAT=30 # --- Phraseanet Elasticsearch Settings --- # Initial configuration for Elasticsearch during the installation process of Phraseanet. # Note: These environment variables are used only during installation. # To modify these settings post-installation, use the configuration.yml file or the Phraseanet admin GUI. # Elasticsearch Host: The hostname or IP address of the Elasticsearch server. # @install PHRASEANET_ELASTICSEARCH_HOST=elasticsearch # Elasticsearch Port: The port number on which Elasticsearch is accessible. # @install PHRASEANET_ELASTICSEARCH_PORT=9200 # Elasticsearch Index: The default index name for Elasticsearch. Set to 'null' to use the default setting from Phraseanet. # @install PHRASEANET_ELASTICSEARCH_INDEX=null # Elasticsearch Number of Shards: The number of shards for the Elasticsearch index. # @install PHRASEANET_ELASTICSEARCH_SHARD=3 # Elasticsearch Number of Replicas: The number of replicas for each shard in the Elasticsearch index. # @install PHRASEANET_ELASTICSEARCH_REPLICAS=0 # Elasticsearch Minimum Score: The minimum score for search results to be considered relevant. # @install PHRASEANET_ELASTICSEARCH_MINSCORE=2 # Elasticsearch Highlight: Whether search results should be highlighted. Set to 'true' to enable. # @install PHRASEANET_ELASTICSEARCH_HIGHLIGHT=true # Elasticsearch Max Result Window: The maximum number of search results that can be returned in a single query. # @install PHRASEANET_ELASTICSEARCH_MAXRESULTWINDOW=500000 # Elasticsearch Populate Order: The default order in which search results are populated. # @install PHRASEANET_ELASTICSEARCH_POPULATEORDER=RECORD_ID # Elasticsearch Active Tab: The active tab in the Elasticsearch dashboard. Set to 'null' to use the default setting from Phraseanet. # @install PHRASEANET_ELASTICSEARCH_ACTIVETAB=null # Elasticsearch Facet Base: Base number for calculating facets in search results. # @install PHRASEANET_ELASTICSEARCH_FACET_BASE=10 # Elasticsearch Facet per Collection: Number of facets to be calculated for collection in search results. # @install PHRASEANET_ELASTICSEARCH_FACET_COLLECTION=10 # Elasticsearch Facet per Document Type: Number of facets to be calculated for document type in search results. # @install PHRASEANET_ELASTICSEARCH_FACET_DOCTYPE=10 # Elasticsearch Facet Orientation: Number of facets to be calculated based on the orientation of media in search results. # @install PHRASEANET_ELASTICSEARCH_FACET_ORIENTATION=10 # --- Phraseanet Network Settings --- # Configure trusted IPs and network settings for secure access and operation within a controlled network environment. # Trusted Proxies: Comma-separated list of IP addresses or subnets that are trusted as proxies by Phraseanet. # @run PHRASEANET_TRUSTED_PROXIES= # Debug Allowed IP: Comma-separated list of IP addresses allowed to access debugging features. # @run PHRASEANET_DEBUG_ALLOWED_IP= # Subnet IPs: Define the IP subnet within which Phraseanet services will operate. # @run PHRASEANET_SUBNET_IPS=172.32.0.0/16 # --- Phraseanet API Settings --- # Enable and configure the API settings to dictate how external applications interact with Phraseanet. # API Enabled: Enables the API functionality, allowing for external access. # @run PHRASEANET_API_ENABLED=true # API SSL: Enables SSL encryption for API connections, ensuring data security. # @run PHRASEANET_API_SSL=true # API Auth Token Header Only: Restricts API authentication to headers only, enhancing security by not allowing token in URL. # @run PHRASEANET_API_AUTH_TOKEN_HEADER_ONLY=false # --- Phraseanet Mapbox Geolocation Settings --- # Configure settings for geolocation features within Phraseanet, using Mapbox services. # Require a Mapbox account and access token to enable and use these features. # Mapbox Activate: Enables or disables Mapbox integration. # @run PHRASEANET_MAPBOX_ACTIVATE=false # Mapbox Token: The access token for using Mapbox services. # @run PHRASEANET_MAPBOX_TOKEN= # Mapbox Kind: Specifies the type of Mapbox service to use. # @run PHRASEANET_MAPBOX_KIND= # --- Phraseanet Mail Settings --- # Configure email sending capabilities and SMTP settings for Phraseanet. # Emitter Email: The email address that appears as the sender for emails sent by Phraseanet. # @run PHRASEANET_EMITTER_EMAIL=phraseanet@example.com # Mail Object Prefix: A prefix for the subject line of emails sent by Phraseanet. # @run PHRASEANET_MAIL_OBJECT_PREFIX="phraseanet" # SMTP Enabled: Toggle to enable SMTP settings from .env file or disable to configure in GUI. # @run PHRASEANET_SMTP_ENABLED=true # SMTP Host: The hostname of the SMTP server used for sending emails. # @run PHRASEANET_SMTP_HOST=mailhog # SMTP Port: The port number on which the SMTP server is accessible. # @run PHRASEANET_SMTP_PORT=1025 # SMTP Auth Enabled: Toggle to require authentication for sending emails via SMTP. # @run PHRASEANET_SMTP_AUTH_ENABLED=false # SMTP Secure Mode: Defines the encryption method used (e.g., SSL, TLS), set to null to disable. # @run PHRASEANET_SMTP_SECURE_MODE=null # SMTP User: Username for SMTP authentication, if required. # @run PHRASEANET_SMTP_USER= # SMTP Password: Password for SMTP authentication, if required. # @run PHRASEANET_SMTP_PASSWORD= # --- Phraseanet Workers and Scheduler settings ------------------------------------------------------------------------ # Define how many process are launched in the "worker" container: # - "0" : Only one process is launched inside the container with no specializing, # in this case the scaling needs to be made by the orchestation eg K8S. # This is the recommended way. # - "1" : Deploys one phraseanet worker for each kind of job, the parallelime is # defined by value of envs started by "PHRASEANET_WORKER_XXX" # # Eg: For two subdefinitions builded at the same time, set # "PHRASEANET_WORKER_subdefCreation=2" # @run PHRASEANET_EXPLODE_WORKER=1 # When PHRASEANET_EXPLODE_WORKER=1, it define the method for launching # Phraseanet workers process. # Available values : # - "supervisor" : Launch it with supervisor. # - "" : Launch phraseanet workers with a "bin/console". # # Note for old Phraseanet task planner AKA "Phraseanet scheduler": To launch the # "scheduler" container, add "scheduler" profile to "COMPOSE_PROFILES" env # variable. # Launch this container only if you need to use the old Phraseanet Archive tasks. # @run PHRASEANET_WORKERS_LAUNCH_METHOD= # --- Phraseanet Worker Settings ---------------------------------------------------------------------------------------- # Define the number of parallel processes launched in a worker container. # Prefer scaling the number of containers over the number of processes within a container. # this default setting is for a test platform, for production, adjust the number of workers based on the expected workload and to your infrastructure capacity. # @run PHRASEANET_WORKER_assetsIngest=1 # @run PHRASEANET_WORKER_createRecord=1 # @run PHRASEANET_WORKER_deleteRecord=1 # @run PHRASEANET_WORKER_editRecord=1 # @run PHRASEANET_WORKER_exportMail=1 # @run PHRASEANET_WORKER_downloadAsync=1 # @run PHRASEANET_WORKER_exposeUpload=1 # @run PHRASEANET_WORKER_ftp=1 # @run PHRASEANET_WORKER_mainQueue=1 # @run PHRASEANET_WORKER_populateIndex=1 # @run PHRASEANET_WORKER_pullAssets=1 # @run PHRASEANET_WORKER_recordsActions=1 # @run PHRASEANET_WORKER_subdefCreation=1 # @run PHRASEANET_WORKER_subtitle=1 # @run PHRASEANET_WORKER_validationReminder=1 # @run PHRASEANET_WORKER_webhook=1 # @run PHRASEANET_WORKER_writeMetadatas=1 # @run PHRASEANET_WORKER_shareBasket=1 # PHRASEANET_CMD_MODE=1, set a worker container for run bin/console... or bin/maintenance... manualy # Add "cmd" profile to COMPOSE_PROFILE # @run PHRASEANET_CMD_MODE=1 # --- Phraseanet Locales settings -------------------------------------------------------------------------------------- # @run LC_MESSAGES=C.UTF-8 # @run LC_COLLATE=C.UTF-8 # @run LC_IDENTIFICATION=C.UTF-8 # @run LANG=C.UTF-8 # @run LC_MEASUREMENT=C.UTF-8 # @run LC_CTYPE=C.UTF-8 # @run LC_TIME=C.UTF-8 # @run LC_NAME=C.UTF-8 # --- Phraseanet Volumes Location Settings ------------------------------------------------------------------------------ # Configure the directory paths for various operational and data storage aspects of Phraseanet. # These settings specify the locations on the file system where different types of data and operational files are stored, # ensuring proper data management and accessibility. # Configuration Directory: Location for Phraseanet configuration files. # @run PHRASEANET_CONFIG_DIR=./config # Logs Directory: Location for storing logs generated by Phraseanet operations. # @run PHRASEANET_LOGS_DIR=./logs # Data Directory: General data storage location used by Phraseanet. # any change here must be reflected in the db. # @run PHRASEANET_DATA_DIR=./datas # Database Directory: Location for database volume storage. # @run PHRASEANET_DB_DIR=./volumes/db # Elasticsearch Directory: Location for Elasticsearch data storage. # @run PHRASEANET_ELASTICSEARCH_DIR=./volumes/elasticsearch # Thumbnails Directory: Location for storing generated thumbnails. # @run PHRASEANET_THUMBNAILS_DIR=./www/thumbnails # Custom Directory: Location for custom scripts or extensions. # @run PHRASEANET_CUSTOM_DIR=./www/custom # Plugins Directory: Location for Phraseanet plugins. # @run PHRASEANET_PLUGINS_DIR=./www/plugins # Temporary Directory: Location for temporary files. # @run PHRASEANET_TMP_DIR=./tmp # Cache Directory: Location for caching data to improve application performance. # @run PHRASEANET_CACHE_DIR=./cache # Download Directory: Location for storing files that are available for download. # @run PHRASEANET_DOWNLOAD_DIR=./datas/download # Lazaret Directory: Location for storing temporary or quarantined files before final processing or deletion. # @run PHRASEANET_LAZARET_DIR=./datas/lazaret # Caption Directory: Location for storing caption data for media files. # @run PHRASEANET_CAPTION_DIR=./tmp/caption # Worker Temporary Directory: Temporary storage for worker processes. # @run PHRASEANET_WORKER_TMP=./tmp/worker # Backup Directory: Location for backup Phraseanet 'config/' repository. # the backup is perfomed by 'setup' container before performing an update # Executed # @run PHRASEANET_BACKUP_DIR=./backup # FTP Directory: Location for FTP uploads or downloads. # @run PHRASEANET_FTP_DIR=./ftp # --- Phraseanet plugin support settings ------------------------------------------------------------------------------- # Configure settings for enabling and managing plugins within Phraseanet. # Plugins git repository, separated by comma. # @build PHRASEANET_PLUGINS= # key for git repository access # @build PHRASEANET_SSH_PRIVATE_KEY= # --- ImageMagick Default Policy Override Setting --------------------------------------------------------------------- # Configure specific operational limits for ImageMagick to manage resource usage and ensure performance and security. # reference: https://imagemagick.org/script/security-policy.php # Policy Version: Specifies the version of ImageMagick policies being applied. # @run IMAGEMAGICK_POLICY_VERSION=7 # Maximum Width: Maximum width in pixels that ImageMagick is allowed to process. # default value is 48,000 pixels # @run IMAGEMAGICK_POLICY_WIDTH=48KP # Map Limit: Maximum amount of memory map ImageMagick is allowed to allocate for image cache. # default value is 2,048 Megabytes # @run IMAGEMAGICK_POLICY_MAP=2048MiB # Area Limit: Maximum area in pixels ImageMagick is allowed to allocate for an image. # default value is 4,096 Megabytes # @run IMAGEMAGICK_POLICY_AREA=4096MB # Disk Limit: Maximum amount of disk space ImageMagick is allowed to use for iamge cache. # default value is 6 Gigabyte # @run IMAGEMAGICK_POLICY_DISK=6GiB # Temporary Path: Location for ImageMagick's temporary files. # default value is /tmp # @run IMAGEMAGICK_POLICY_TEMPORARY_PATH=/tmp # --- New Relic Monitoring Settings --- # Enable and configure the New Relic agent for platform monitoring to analyze and optimize the application's performance. # refer to the official New Relic documentation at https://docs.newrelic.com/docs/agents/php-agent/getting-started/introduction-new-relic-php # New Relic Enabled: Toggle to enable or disable New Relic monitoring. # @run NEWRELIC_ENABLED=false # New Relic License Key: The license key for your New Relic account. # @run NEWRELIC_LICENSE_KEY= # New Relic App Name: The name of the application as registered in New Relic. # @run NEWRELIC_APP_NAME= # --- SAML Authentication Settings -------------------------------------------------------------------------------------- # Configure settings for SAML (Security Assertion Markup Language) authentication within Phraseanet to enable secure single sign-on (SSO) capabilities. # Note: This setup requires an additional paid plugin that is not included in the public images. # It also requires extra containers that must be declared in the Docker compose stack by adding 'phraseanet-saml-sp' to COMPOSE_PROFILES. # Allow Debug: Enables detailed logging for SAML operations. Useful for troubleshooting during setup and testing. # @run SAML_ALLOW_DEBUG=true # Phraseanet Host: The URL where Phraseanet is hosted, used in SAML exchanges. # @run SAML_PHRASEANET_HOST=http://127.0.0.1:8082 # Service Provider Config Directory: Path to the directory where the SAML service provider configuration is stored. # @run SAML_SP_CONFIG_DIR=./saml-config/ # Service Provider Auth Sources: Specifies the authentication sources configuration for the service provider. # @run SAML_SP_AUTHSOURCES= # Service Provider Certificate Directory: Path to the directory where the SAML service provider certificates are stored. # @run SAML_SP_CERT_DIR=./saml-cert/ # Identity Provider Metadata Configuration: Configuration details for the SAML identity provider. # @run SAML_IDP_METADATA_CONFIG= # Local Identity Provider Metadata Directory: Path to the directory where local metadata configurations for identity providers are stored. # @run SAML_IDP_METADATA_LOCAL_CONFIG_DIR=./saml-metadata/ # --- Development purpose ---------------------------------------------------------------------------------------------- # See [Phraseanet development-mode documentation| # https://github.com/alchemy-fr/Phraseanet#development-mode] for more information. # "PhpMyAdmin" http port mapping. # @run PHRASEANET_PHPMYADMIN_PORT=8089 # "Mailhog" http port mapping. # @run MAILHOG_GUI_PORT=8025 # "Xdebug" settings: # @run XDEBUG_ENABLED=0 # @run XDEBUG_PROFILER_ENABLED=0 # @run IDE_KEY=PHPSTORM # @run XDEBUG_REMOTE_HOST=172.32.0.1 # @run PHP_IDE_CONFIG=serverName=docker-server-phraseanet # For dev or testing export ftp-server # @run PHRASEANET_FTP_DIR=./datas/ftp # For dev proxy squid WIP: # - PHRASEANET_SQUID_DIR=./volumes/squid # - PHRASEANET_SQUID_CONF= ./docker/squid/squid.conf # - PHRASEANET_SQUID_PORT=3128 # # For dev who don't have SSH_AUTH_SOCK (avoid an empty volume name) # @run SSH_AUTH_SOCK=/dev/null # Kubernet context needs full pod hosname on Nginx reverse proxing # This is need for PHraseanet SAML context on K8S # @run PHRASEANET_K8S_NAMESPACE=