diff --git a/Dockerfile b/Dockerfile index 160793c..aa29152 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,127 +1,127 @@ -# docker-dotclear:* -# docker-dotclear Dockerfile - -## -# Alpine -## - -# Use latest Alpine docker release -FROM alpine:latest - -# Set system timezone -RUN echo "UTC" > /etc/timezone - -# Select Dotclear release canal (stable | unstable) -ARG CANAL stable -ENV CNL_DOTCLEAR=$CANAL - -# Image label -LABEL org.opencontainers.image.source=https://github.com/JcDenis/docker-dotclear -LABEL org.opencontainers.image.description="Dotclear docker image $CNL_DOTCLEAR" -LABEL org.opencontainers.image.licenses=AGPL-3.0 - -## -# Nginx -## - -# Create user -RUN adduser -D -g 'www' www - -# Install required package -RUN apk add --no-cache --update \ - nginx \ - curl \ - tar \ - unzip \ - xq - -# Create directories structure -RUN mkdir -p /var/www/dotclear -RUN chown -R www:www /var/lib/nginx /var/www - -# Copy nginx configuration -COPY etc/nginx.conf /etc/nginx/nginx.conf -COPY etc/snippets_subfolder.conf /etc/nginx/snippets/snippets_subfolder.conf -COPY etc/snippets_subdomain.conf /etc/nginx/snippets/snippets_subdomain.conf -COPY etc/snippets_common.conf /etc/nginx/snippets/snippets_common.conf - -## -# PHP -## - -# Use PHP 8.3 release -ENV VER_PHP=php83 - -# Install PHP required packages -RUN apk add --no-cache --update \ - ${VER_PHP}-common \ - ${VER_PHP}-cli \ - ${VER_PHP}-fpm \ - ${VER_PHP}-session \ - ${VER_PHP}-curl \ - ${VER_PHP}-gd \ - ${VER_PHP}-gmp \ - ${VER_PHP}-exif \ - ${VER_PHP}-tidy \ - ${VER_PHP}-intl \ - ${VER_PHP}-json \ - ${VER_PHP}-mbstring \ - ${VER_PHP}-iconv \ - ${VER_PHP}-gettext \ - ${VER_PHP}-mysqli \ - ${VER_PHP}-opcache \ - ${VER_PHP}-dom \ - ${VER_PHP}-xml \ - ${VER_PHP}-simplexml \ - ${VER_PHP}-zip \ - ${VER_PHP}-pdo_sqlite - -# Copy PHP configuration -COPY etc/${CNL_DOTCLEAR}-php.ini /etc/${VER_PHP}/php.ini -COPY etc/php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf - -## -# Dotclear -## - -# Download latest Dotclear version -RUN curl -fsSL -o versions.xml "http://download.dotclear.org/versions.xml" \ - && curl -fsSL -o dotclear.zip $(cat versions.xml | xq -x "//release[@name='$CNL_DOTCLEAR']/@href") \ - && echo "$(cat versions.xml | xq -x "//release[@name='$CNL_DOTCLEAR']/@checksum") dotclear.zip" | md5sum -c - \ - && mkdir -p /usr/src/dotclear \ - && unzip -d /usr/src dotclear.zip \ - && rm dotclear.zip \ - && chown -R www:www /usr/src/dotclear \ - && chmod -R 755 /usr/src/dotclear/public /usr/src/dotclear/cache \ - && rm -f /var/www/dotclear/app/* - -# Create www structure -COPY www /var/lib/dotclear -RUN chown -R www:www /var/lib/dotclear - -# These variables are only used for first install, see inc/config.php, from dotclear 2.32 -# Custom path for dotclear config file -ENV DC_RC_PATH=/var/www/dotclear/config.php -# Directory of third party plugins -ENV DC_PLUGINS_ROOT=/var/www/dotclear/plugins -# Directory for template cache files -ENV DC_TPL_CACHE=/var/www/dotclear/cache -# Directory for dotclear var -ENV DC_VAR=/var/www/dotclear/var - -## -# END -## - -# Docker container uses port 80 -EXPOSE 80 - -# Set working diretory for container starting script -WORKDIR /var/www/dotclear/app - -# Add container starting script -ADD docker-entrypoint.sh /entrypoint.sh -ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] - -# Docker container healthcheck +# docker-dotclear:* +# docker-dotclear Dockerfile + +## +# Alpine +## + +# Use latest Alpine docker release +FROM alpine:latest + +# Set system timezone +RUN echo "UTC" > /etc/timezone + +# Select Dotclear release canal (stable | unstable) +ARG CANAL stable +ENV CNL_DOTCLEAR=$CANAL + +# Image label +LABEL org.opencontainers.image.source=https://github.com/JcDenis/docker-dotclear +LABEL org.opencontainers.image.description="Dotclear docker image $CNL_DOTCLEAR" +LABEL org.opencontainers.image.licenses=AGPL-3.0 + +## +# Nginx +## + +# Create user +RUN adduser -D -g 'www' www + +# Install required package +RUN apk add --no-cache --update \ + nginx \ + curl \ + tar \ + unzip \ + xq + +# Create directories structure +RUN mkdir -p /var/www/dotclear +RUN chown -R www:www /var/lib/nginx /var/www + +# Copy nginx configuration +COPY etc/nginx.conf /etc/nginx/nginx.conf +COPY etc/snippets_subfolder.conf /etc/nginx/snippets/snippets_subfolder.conf +COPY etc/snippets_subdomain.conf /etc/nginx/snippets/snippets_subdomain.conf +COPY etc/snippets_common.conf /etc/nginx/snippets/snippets_common.conf + +## +# PHP +## + +# Use PHP 8.3 release +ENV VER_PHP=php83 + +# Install PHP required packages +RUN apk add --no-cache --update \ + ${VER_PHP}-common \ + ${VER_PHP}-cli \ + ${VER_PHP}-fpm \ + ${VER_PHP}-session \ + ${VER_PHP}-curl \ + ${VER_PHP}-gd \ + ${VER_PHP}-gmp \ + ${VER_PHP}-exif \ + ${VER_PHP}-tidy \ + ${VER_PHP}-intl \ + ${VER_PHP}-json \ + ${VER_PHP}-mbstring \ + ${VER_PHP}-iconv \ + ${VER_PHP}-gettext \ + ${VER_PHP}-mysqli \ + ${VER_PHP}-opcache \ + ${VER_PHP}-dom \ + ${VER_PHP}-xml \ + ${VER_PHP}-simplexml \ + ${VER_PHP}-zip \ + ${VER_PHP}-pdo_sqlite + +# Copy PHP configuration +COPY etc/${CNL_DOTCLEAR}-php.ini /etc/${VER_PHP}/php.ini +COPY etc/php-fpm.conf /etc/${VER_PHP}/php-fpm.d/www.conf + +## +# Dotclear +## + +# Download latest Dotclear version +RUN curl -fsSL -o versions.xml "http://download.dotclear.org/versions.xml" \ + && curl -fsSL -o dotclear.zip $(cat versions.xml | xq -x "//release[@name='$CNL_DOTCLEAR']/@href") \ + && echo "$(cat versions.xml | xq -x "//release[@name='$CNL_DOTCLEAR']/@checksum") dotclear.zip" | md5sum -c - \ + && mkdir -p /usr/src/dotclear \ + && unzip -d /usr/src dotclear.zip \ + && rm dotclear.zip \ + && chown -R www:www /usr/src/dotclear \ + && chmod -R 755 /usr/src/dotclear/public /usr/src/dotclear/cache \ + && rm -f /var/www/dotclear/app/* + +# Create www structure +COPY www /var/lib/dotclear +RUN chown -R www:www /var/lib/dotclear + +# These variables are only used for first install, see inc/config.php, from dotclear 2.32 +# Custom path for dotclear config file +ENV DC_RC_PATH=/var/www/dotclear/config.php +# Directory of third party plugins +ENV DC_PLUGINS_ROOT=/var/www/dotclear/plugins +# Directory for template cache files +ENV DC_TPL_CACHE=/var/www/dotclear/cache +# Directory for dotclear var +ENV DC_VAR=/var/www/dotclear/var + +## +# END +## + +# Docker container uses port 80 +EXPOSE 80 + +# Set working diretory for container starting script +WORKDIR /var/www/dotclear/app + +# Add container starting script +ADD docker-entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] + +# Docker container healthcheck HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:80/fpm-ping || exit 1 \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index fa5ef70..675021b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,3 +1,3 @@ -# Docker Dotclear Security Policy - +# Docker Dotclear Security Policy + To report a Vulnerability or a security issue, please send a mail to \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 3cd62d0..594eb9e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,44 +1,44 @@ -# jcpd/docker-dotclear:latest -volumes: - dc_app: - dc_db: - -services: - dc_db: - image: mariadb:latest - container_name: dotcleardb - restart: unless-stopped - command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW - volumes: - - dc_db:/var/lib/mysql - environment: - MYSQL_ROOT_PASSWORD: dotclear_root - MYSQL_DATABASE: dotclear_db - MYSQL_USER: dotclear_user - MYSQL_PASSWORD: dotclear_pwd - healthcheck: - test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] - start_period: 10s - interval: 10s - timeout: 5s - retries: 3 - - dc_app: - image: jcpd/docker-dotclear:latest - container_name: dotclearphp - restart: unless-stopped - volumes: - - dc_app:/var/www/dotclear - ports: - - 80:80 - depends_on: - dc_db: # MYSQL database service - condition: service_healthy # Waiting for database ready - environment: - DC_DBDRIVER: mysqlimb4 - DC_DBHOST: dc_db - DC_DBNAME: dotclear_db - DC_DBUSER: dotclear_user - DC_DBPASSWORD: dotclear_pwd - DC_DBPREFIX: dc_ +# jcpd/docker-dotclear:latest +volumes: + dc_app: + dc_db: + +services: + dc_db: + image: mariadb:latest + container_name: dotcleardb + restart: unless-stopped + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW + volumes: + - dc_db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: dotclear_root + MYSQL_DATABASE: dotclear_db + MYSQL_USER: dotclear_user + MYSQL_PASSWORD: dotclear_pwd + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 + + dc_app: + image: jcpd/docker-dotclear:latest + container_name: dotclearphp + restart: unless-stopped + volumes: + - dc_app:/var/www/dotclear + ports: + - 80:80 + depends_on: + dc_db: # MYSQL database service + condition: service_healthy # Waiting for database ready + environment: + DC_DBDRIVER: mysqlimb4 + DC_DBHOST: dc_db + DC_DBNAME: dotclear_db + DC_DBUSER: dotclear_user + DC_DBPASSWORD: dotclear_pwd + DC_DBPREFIX: dc_ DC_ADMINMAILFROM: contact@exemple.com \ No newline at end of file diff --git a/etc/nginx.conf b/etc/nginx.conf index c0d7c9e..90da1c5 100644 --- a/etc/nginx.conf +++ b/etc/nginx.conf @@ -1,21 +1,21 @@ -# docker-dotclear:* -# /etc/nginx/nginx.conf -# Nginx configuration - -user www; -daemon off; -worker_processes auto; -error_log /dev/stderr notice; -pid /var/run/nginx/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - sendfile on; - keepalive_timeout 3000; - include /var/www/dotclear/servers/*.conf; +# docker-dotclear:* +# /etc/nginx/nginx.conf +# Nginx configuration + +user www; +daemon off; +worker_processes auto; +error_log /dev/stderr notice; +pid /var/run/nginx/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 3000; + include /var/www/dotclear/servers/*.conf; } \ No newline at end of file diff --git a/etc/php-fpm.conf b/etc/php-fpm.conf index ce9ac46..e2e70a5 100644 --- a/etc/php-fpm.conf +++ b/etc/php-fpm.conf @@ -1,23 +1,23 @@ -; docker-dotclear:* -; /etc/phpXX/php-fpm.d/www.conf -; PHP-FPM configuration - -[global] -error_log = /dev/stderr -pid = /var/run/php-fpm.pid - -[www] -user = www -group = www -listen = /run/php-fpm.sock -listen.owner = www -listen.group = www -listen.mode = 0660 -pm = ondemand -pm.max_children = 100 -pm.process_idle_timeout = 10s; -pm.max_requests = 1000 -ping.path = /fpm-ping -catch_workers_output = yes -decorate_workers_output = no -clear_env = no +; docker-dotclear:* +; /etc/phpXX/php-fpm.d/www.conf +; PHP-FPM configuration + +[global] +error_log = /dev/stderr +pid = /var/run/php-fpm.pid + +[www] +user = www +group = www +listen = /run/php-fpm.sock +listen.owner = www +listen.group = www +listen.mode = 0660 +pm = ondemand +pm.max_children = 100 +pm.process_idle_timeout = 10s; +pm.max_requests = 1000 +ping.path = /fpm-ping +catch_workers_output = yes +decorate_workers_output = no +clear_env = no diff --git a/etc/snippets_common.conf b/etc/snippets_common.conf index 6dd239f..2789029 100644 --- a/etc/snippets_common.conf +++ b/etc/snippets_common.conf @@ -1,37 +1,37 @@ -# docker-dotclear:* -# /etc/nginx/snippets/snippets_commmon.conf -# Dotclear nginx default server common configurations - -# Disable some dotclear paths -location ~ ^/(db|cache|plugins|inc|var) { - deny all; - return 404; -} - -# Docker healthcheck -location ~ ^/(fpm-ping)$ { - access_log off; - allow 127.0.0.1; - deny all; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include fastcgi_params; - fastcgi_pass unix:/run/php-fpm.sock; -} - -# Dotclear .php files -location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - if (!-f $document_root$fastcgi_script_name) { - return 404; - } - - include fastcgi_params; - set $path_info $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; - fastcgi_param DC_BLOG_ID $dc_blog_id; - fastcgi_pass unix:/run/php-fpm.sock; - fastcgi_index index.php; -} - +# docker-dotclear:* +# /etc/nginx/snippets/snippets_commmon.conf +# Dotclear nginx default server common configurations + +# Disable some dotclear paths +location ~ ^/(db|cache|plugins|inc|var) { + deny all; + return 404; +} + +# Docker healthcheck +location ~ ^/(fpm-ping)$ { + access_log off; + allow 127.0.0.1; + deny all; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_pass unix:/run/php-fpm.sock; +} + +# Dotclear .php files +location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + if (!-f $document_root$fastcgi_script_name) { + return 404; + } + + include fastcgi_params; + set $path_info $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; + fastcgi_param DC_BLOG_ID $dc_blog_id; + fastcgi_pass unix:/run/php-fpm.sock; + fastcgi_index index.php; +} + diff --git a/etc/snippets_subdomain.conf b/etc/snippets_subdomain.conf index 782e6a0..67ac780 100644 --- a/etc/snippets_subdomain.conf +++ b/etc/snippets_subdomain.conf @@ -1,38 +1,38 @@ -# docker-dotclear:* -# /etc/nginx/snippets/snippets_subdomain.conf -# Dotclear nginx default server blogs configuration by subdomains - -listen 80; -listen [::]:80; -index index.php index.html; -root /var/www/dotclear/app; -client_max_body_size 32m; - -# Default URL and blog -if ($dc_blog_id = '') { - set $dc_blog_id default; -} - -# Blogs public paths -location ~ /public { - root /var/www/dotclear/blogs; - rewrite /public/(.*) /$dc_blog_id/$1 break; - try_files $uri =404; -} - -# Blogs themes paths (common to all blogs) -location ~ /themes { - root /var/www/dotclear/themes; - rewrite /themes/(.*) /$1 break; - try_files $uri =404; -} - -# Dotclear regular files -location / { - try_files $uri $uri/ @dotclear_path_info; -} - -# Blogs path_info URL -location @dotclear_path_info { - rewrite ^/(.*) /index.php/$1 last; -} +# docker-dotclear:* +# /etc/nginx/snippets/snippets_subdomain.conf +# Dotclear nginx default server blogs configuration by subdomains + +listen 80; +listen [::]:80; +index index.php index.html; +root /var/www/dotclear/app; +client_max_body_size 32m; + +# Default URL and blog +if ($dc_blog_id = '') { + set $dc_blog_id default; +} + +# Blogs public paths +location ~ /public { + root /var/www/dotclear/blogs; + rewrite /public/(.*) /$dc_blog_id/$1 break; + try_files $uri =404; +} + +# Blogs themes paths (common to all blogs) +location ~ /themes { + root /var/www/dotclear/themes; + rewrite /themes/(.*) /$1 break; + try_files $uri =404; +} + +# Dotclear regular files +location / { + try_files $uri $uri/ @dotclear_path_info; +} + +# Blogs path_info URL +location @dotclear_path_info { + rewrite ^/(.*) /index.php/$1 last; +} diff --git a/etc/snippets_subfolder.conf b/etc/snippets_subfolder.conf index ae9b444..3ffd8d7 100644 --- a/etc/snippets_subfolder.conf +++ b/etc/snippets_subfolder.conf @@ -1,40 +1,40 @@ -# docker-dotclear:* -# /etc/nginx/snippets/snippets_subfolder.conf -# Dotclear nginx default server blogs configuration by subfolders - -listen 80; -listen [::]:80; -index index.php index.html; -root /var/www/dotclear/app; -client_max_body_size 32m; -set $dc_blog_id default; - -# Blogs public paths -location ~ /([^/]+)/public { - root /var/www/dotclear/blogs; - rewrite /([^/]+)/public/(.*) /$1/$2 break; - try_files $uri =404; -} - -# Blogs themes paths (common to all blogs) -location ~ /([^/]+)/themes { - root /var/www/dotclear/themes; - rewrite /([^/]+)/themes/(.*) /$2 break; - try_files $uri =404; -} - -# Dotclear regular files -location / { - set $dc_blog_id default; - try_files $uri $uri/ @dotclear_path_info; -} - -# Blogs path_info URL -location @dotclear_path_info { - # URI first part is blog id - if ($request_uri ~ ^/([^/]+)) { - set $dc_blog_id $1; - rewrite ^/([^/]+)(/.*|$) /index.php$2 last; - } - rewrite ^/(.*) /index.php/$1 last; -} +# docker-dotclear:* +# /etc/nginx/snippets/snippets_subfolder.conf +# Dotclear nginx default server blogs configuration by subfolders + +listen 80; +listen [::]:80; +index index.php index.html; +root /var/www/dotclear/app; +client_max_body_size 32m; +set $dc_blog_id default; + +# Blogs public paths +location ~ /([^/]+)/public { + root /var/www/dotclear/blogs; + rewrite /([^/]+)/public/(.*) /$1/$2 break; + try_files $uri =404; +} + +# Blogs themes paths (common to all blogs) +location ~ /([^/]+)/themes { + root /var/www/dotclear/themes; + rewrite /([^/]+)/themes/(.*) /$2 break; + try_files $uri =404; +} + +# Dotclear regular files +location / { + set $dc_blog_id default; + try_files $uri $uri/ @dotclear_path_info; +} + +# Blogs path_info URL +location @dotclear_path_info { + # URI first part is blog id + if ($request_uri ~ ^/([^/]+)) { + set $dc_blog_id $1; + rewrite ^/([^/]+)(/.*|$) /index.php$2 last; + } + rewrite ^/(.*) /index.php/$1 last; +} diff --git a/etc/stable-php.ini b/etc/stable-php.ini index 9e5e45f..2c917b4 100644 --- a/etc/stable-php.ini +++ b/etc/stable-php.ini @@ -1,118 +1,118 @@ -; docker-dotclear:latest -; /etc/phpXX/php.ini -; PHP configuration - -[PHP] - -engine = Onn -short_open_tag = Off -precision = 14 -output_buffering = 4096 -zlib.output_compression = Off -implicit_flush = Off -unserialize_callback_func = -serialize_precision = -1 -disable_functions = -disable_classes = -zend.enable_gc = On -zend.exception_ignore_args = On -zend.exception_string_param_max_len = 0 - -expose_php = Off - -max_execution_time = 30 -max_input_time = 60 -memory_limit = 256M -max_input_vars = 1500 - -error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR -display_errors = Off -display_startup_errors = Off -log_errors = On -ignore_repeated_errors = Off -ignore_repeated_source = Off -report_memleaks = On -error_log = /dev/stderr - -variables_order = "GPCS" -request_order = "GP" -register_argc_argv = Off -auto_globals_jit = On -post_max_size = 100M -auto_prepend_file = -auto_append_file = -default_mimetype = "text/html" -default_charset = "UTF-8" - -include_path = ".:/usr/share/php83" -doc_root = -user_dir = -enable_dl = Off - -file_uploads = On -upload_max_filesize = 10M -max_file_uploads = 100 - -allow_url_fopen = On -allow_url_include = Off -default_socket_timeout = 60 - -[CLI Server] -cli_server.color = On - -[mail function] -SMTP = localhost -smtp_port = 25 -mail.add_x_header = Off -mail.mixed_lf_and_crlf = Off - -[MySQLi] -mysqli.max_persistent = -1 -mysqli.allow_persistent = On -mysqli.max_links = -1 -mysqli.default_port = 3306 -mysqli.default_socket = -mysqli.default_host = -mysqli.default_user = -mysqli.default_pw = - -[PostgreSQL] -pgsql.allow_persistent = On -pgsql.auto_reset_persistent = Off -pgsql.max_persistent = -1 -pgsql.max_links = -1 -pgsql.ignore_notice = 0 -pgsql.log_notice = 0 - -[Session] -session.save_handler = files -session.use_strict_mode = 0 -session.use_cookies = 1 -session.use_only_cookies = 1 -session.name = PHPSESSID -session.auto_start = 0 -session.cookie_lifetime = 0 -session.cookie_path = / -session.cookie_domain = -session.cookie_httponly = -session.cookie_samesite = -session.serialize_handler = php -session.gc_probability = 1 -session.gc_divisor = 1000 -session.gc_maxlifetime = 1440 -session.referer_check = -session.cache_limiter = nocache -session.cache_expire = 180 -session.use_trans_sid = 0 -session.sid_length = 26 -session.trans_sid_tags = "a=href,area=href,frame=src,form=" -session.sid_bits_per_character = 5 - -[opcache] -opcache.enable=1 -opcache.enable_cli=1 -opcache.memory_consumption=128 -opcache.interned_strings_buffer=8 -opcache.max_accelerated_files=4000 -opcache.revalidate_freq=2 - +; docker-dotclear:latest +; /etc/phpXX/php.ini +; PHP configuration + +[PHP] + +engine = Onn +short_open_tag = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = -1 +disable_functions = +disable_classes = +zend.enable_gc = On +zend.exception_ignore_args = On +zend.exception_string_param_max_len = 0 + +expose_php = Off + +max_execution_time = 30 +max_input_time = 60 +memory_limit = 256M +max_input_vars = 1500 + +error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR +display_errors = Off +display_startup_errors = Off +log_errors = On +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +error_log = /dev/stderr + +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 100M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" + +include_path = ".:/usr/share/php83" +doc_root = +user_dir = +enable_dl = Off + +file_uploads = On +upload_max_filesize = 10M +max_file_uploads = 100 + +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 + +[CLI Server] +cli_server.color = On + +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = Off +mail.mixed_lf_and_crlf = Off + +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = + +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 + +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.cookie_samesite = +session.serialize_handler = php +session.gc_probability = 1 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.sid_length = 26 +session.trans_sid_tags = "a=href,area=href,frame=src,form=" +session.sid_bits_per_character = 5 + +[opcache] +opcache.enable=1 +opcache.enable_cli=1 +opcache.memory_consumption=128 +opcache.interned_strings_buffer=8 +opcache.max_accelerated_files=4000 +opcache.revalidate_freq=2 + diff --git a/etc/testing-php.ini b/etc/testing-php.ini index 9e5e45f..2c917b4 100644 --- a/etc/testing-php.ini +++ b/etc/testing-php.ini @@ -1,118 +1,118 @@ -; docker-dotclear:latest -; /etc/phpXX/php.ini -; PHP configuration - -[PHP] - -engine = Onn -short_open_tag = Off -precision = 14 -output_buffering = 4096 -zlib.output_compression = Off -implicit_flush = Off -unserialize_callback_func = -serialize_precision = -1 -disable_functions = -disable_classes = -zend.enable_gc = On -zend.exception_ignore_args = On -zend.exception_string_param_max_len = 0 - -expose_php = Off - -max_execution_time = 30 -max_input_time = 60 -memory_limit = 256M -max_input_vars = 1500 - -error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR -display_errors = Off -display_startup_errors = Off -log_errors = On -ignore_repeated_errors = Off -ignore_repeated_source = Off -report_memleaks = On -error_log = /dev/stderr - -variables_order = "GPCS" -request_order = "GP" -register_argc_argv = Off -auto_globals_jit = On -post_max_size = 100M -auto_prepend_file = -auto_append_file = -default_mimetype = "text/html" -default_charset = "UTF-8" - -include_path = ".:/usr/share/php83" -doc_root = -user_dir = -enable_dl = Off - -file_uploads = On -upload_max_filesize = 10M -max_file_uploads = 100 - -allow_url_fopen = On -allow_url_include = Off -default_socket_timeout = 60 - -[CLI Server] -cli_server.color = On - -[mail function] -SMTP = localhost -smtp_port = 25 -mail.add_x_header = Off -mail.mixed_lf_and_crlf = Off - -[MySQLi] -mysqli.max_persistent = -1 -mysqli.allow_persistent = On -mysqli.max_links = -1 -mysqli.default_port = 3306 -mysqli.default_socket = -mysqli.default_host = -mysqli.default_user = -mysqli.default_pw = - -[PostgreSQL] -pgsql.allow_persistent = On -pgsql.auto_reset_persistent = Off -pgsql.max_persistent = -1 -pgsql.max_links = -1 -pgsql.ignore_notice = 0 -pgsql.log_notice = 0 - -[Session] -session.save_handler = files -session.use_strict_mode = 0 -session.use_cookies = 1 -session.use_only_cookies = 1 -session.name = PHPSESSID -session.auto_start = 0 -session.cookie_lifetime = 0 -session.cookie_path = / -session.cookie_domain = -session.cookie_httponly = -session.cookie_samesite = -session.serialize_handler = php -session.gc_probability = 1 -session.gc_divisor = 1000 -session.gc_maxlifetime = 1440 -session.referer_check = -session.cache_limiter = nocache -session.cache_expire = 180 -session.use_trans_sid = 0 -session.sid_length = 26 -session.trans_sid_tags = "a=href,area=href,frame=src,form=" -session.sid_bits_per_character = 5 - -[opcache] -opcache.enable=1 -opcache.enable_cli=1 -opcache.memory_consumption=128 -opcache.interned_strings_buffer=8 -opcache.max_accelerated_files=4000 -opcache.revalidate_freq=2 - +; docker-dotclear:latest +; /etc/phpXX/php.ini +; PHP configuration + +[PHP] + +engine = Onn +short_open_tag = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = -1 +disable_functions = +disable_classes = +zend.enable_gc = On +zend.exception_ignore_args = On +zend.exception_string_param_max_len = 0 + +expose_php = Off + +max_execution_time = 30 +max_input_time = 60 +memory_limit = 256M +max_input_vars = 1500 + +error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR +display_errors = Off +display_startup_errors = Off +log_errors = On +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +error_log = /dev/stderr + +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 100M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" + +include_path = ".:/usr/share/php83" +doc_root = +user_dir = +enable_dl = Off + +file_uploads = On +upload_max_filesize = 10M +max_file_uploads = 100 + +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 + +[CLI Server] +cli_server.color = On + +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = Off +mail.mixed_lf_and_crlf = Off + +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = + +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 + +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.cookie_samesite = +session.serialize_handler = php +session.gc_probability = 1 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.sid_length = 26 +session.trans_sid_tags = "a=href,area=href,frame=src,form=" +session.sid_bits_per_character = 5 + +[opcache] +opcache.enable=1 +opcache.enable_cli=1 +opcache.memory_consumption=128 +opcache.interned_strings_buffer=8 +opcache.max_accelerated_files=4000 +opcache.revalidate_freq=2 + diff --git a/etc/unstable-php.ini b/etc/unstable-php.ini index 88eec57..980c2dd 100644 --- a/etc/unstable-php.ini +++ b/etc/unstable-php.ini @@ -1,118 +1,118 @@ -; docker-dotclear:unstable -; /etc/phpXX/php.ini -; PHP configuration - -[PHP] - -engine = On -short_open_tag = Off -precision = 14 -output_buffering = 4096 -zlib.output_compression = Off -implicit_flush = Off -unserialize_callback_func = -serialize_precision = -1 -disable_functions = -disable_classes = -zend.enable_gc = On -zend.exception_ignore_args = On -zend.exception_string_param_max_len = 0 - -expose_php = On - -max_execution_time = 60 -max_input_time = 60 -memory_limit = 512M -max_input_vars = 1500 - -error_reporting = E_ALL -display_errors = On -display_startup_errors = On -log_errors = On -ignore_repeated_errors = Off -ignore_repeated_source = Off -report_memleaks = On -error_log = /dev/stderr - -variables_order = "GPCS" -request_order = "GP" -register_argc_argv = Off -auto_globals_jit = On -post_max_size = 100M -auto_prepend_file = -auto_append_file = -default_mimetype = "text/html" -default_charset = "UTF-8" - -include_path = ".:/usr/share/php83" -doc_root = -user_dir = -enable_dl = Off - -file_uploads = On -upload_max_filesize = 50M -max_file_uploads = 200 - -allow_url_fopen = On -allow_url_include = Off -default_socket_timeout = 60 - -[CLI Server] -cli_server.color = On - -[mail function] -SMTP = localhost -smtp_port = 25 -mail.add_x_header = Off -mail.mixed_lf_and_crlf = Off - -[MySQLi] -mysqli.max_persistent = -1 -mysqli.allow_persistent = On -mysqli.max_links = -1 -mysqli.default_port = 3306 -mysqli.default_socket = -mysqli.default_host = -mysqli.default_user = -mysqli.default_pw = - -[PostgreSQL] -pgsql.allow_persistent = On -pgsql.auto_reset_persistent = Off -pgsql.max_persistent = -1 -pgsql.max_links = -1 -pgsql.ignore_notice = 0 -pgsql.log_notice = 0 - -[Session] -session.save_handler = files -session.use_strict_mode = 0 -session.use_cookies = 1 -session.use_only_cookies = 1 -session.name = PHPSESSID -session.auto_start = 0 -session.cookie_lifetime = 0 -session.cookie_path = / -session.cookie_domain = -session.cookie_httponly = -session.cookie_samesite = -session.serialize_handler = php -session.gc_probability = 1 -session.gc_divisor = 1000 -session.gc_maxlifetime = 1440 -session.referer_check = -session.cache_limiter = nocache -session.cache_expire = 180 -session.use_trans_sid = 0 -session.sid_length = 26 -session.trans_sid_tags = "a=href,area=href,frame=src,form=" -session.sid_bits_per_character = 5 - -[opcache] -opcache.enable=1 -opcache.enable_cli=1 -opcache.memory_consumption=128 -opcache.interned_strings_buffer=8 -opcache.max_accelerated_files=4000 -opcache.revalidate_freq=2 - +; docker-dotclear:unstable +; /etc/phpXX/php.ini +; PHP configuration + +[PHP] + +engine = On +short_open_tag = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = -1 +disable_functions = +disable_classes = +zend.enable_gc = On +zend.exception_ignore_args = On +zend.exception_string_param_max_len = 0 + +expose_php = On + +max_execution_time = 60 +max_input_time = 60 +memory_limit = 512M +max_input_vars = 1500 + +error_reporting = E_ALL +display_errors = On +display_startup_errors = On +log_errors = On +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +error_log = /dev/stderr + +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 100M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" + +include_path = ".:/usr/share/php83" +doc_root = +user_dir = +enable_dl = Off + +file_uploads = On +upload_max_filesize = 50M +max_file_uploads = 200 + +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 + +[CLI Server] +cli_server.color = On + +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = Off +mail.mixed_lf_and_crlf = Off + +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = + +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 + +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.cookie_samesite = +session.serialize_handler = php +session.gc_probability = 1 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.sid_length = 26 +session.trans_sid_tags = "a=href,area=href,frame=src,form=" +session.sid_bits_per_character = 5 + +[opcache] +opcache.enable=1 +opcache.enable_cli=1 +opcache.memory_consumption=128 +opcache.interned_strings_buffer=8 +opcache.max_accelerated_files=4000 +opcache.revalidate_freq=2 + diff --git a/www/blogs/index.php b/www/blogs/index.php index 4debc31..4b4219b 100644 --- a/www/blogs/index.php +++ b/www/blogs/index.php @@ -1,2 +1,2 @@ -\w*?)?\.?(\w+\.\w+)$; - - # Redirect a particular subdomain - if ($dc_blog_id = 'blog') { - set $dc_blog_id default; - } - - # To use custom configuration only use - # include /etc/nginx/snippets/snippets_common.conf; - # Adapt to your needs here the content of - # /etc/nginx/snippets/snippets_subdomain.conf - # Then disable the Dotclear plugin DockerDotclear - # (or change their settings) - include /etc/nginx/snippets/snippets_subdomain.conf; - include /etc/nginx/snippets/snippets_common.conf; -} +# docker-dotclear:* +# /var/www/dotclear/servers/subdomain.conf +# Nginx server by subdomains + +server { + # By default, server URLs look like: + # - http://default.domain.tld/ + # - http://blog2.domain.tld/ + # - ... + server_name ~^(?\w*?)?\.?(\w+\.\w+)$; + + # Redirect a particular subdomain + if ($dc_blog_id = 'blog') { + set $dc_blog_id default; + } + + # To use custom configuration only use + # include /etc/nginx/snippets/snippets_common.conf; + # Adapt to your needs here the content of + # /etc/nginx/snippets/snippets_subdomain.conf + # Then disable the Dotclear plugin DockerDotclear + # (or change their settings) + include /etc/nginx/snippets/snippets_subdomain.conf; + include /etc/nginx/snippets/snippets_common.conf; +} diff --git a/www/servers/subfolder.conf b/www/servers/subfolder.conf index 1f74a9c..3af925c 100644 --- a/www/servers/subfolder.conf +++ b/www/servers/subfolder.conf @@ -1,20 +1,20 @@ -# docker-dotclear:* -# /var/www/dotclear/servers/subfolder.conf -# Nginx server by subfolders - -server { - # By default, server URLs look like: - # - http://localhost/default - # - http://localhost/blog2 - # - ... - server_name localhost; - - # To use custom configuration only use - # include /etc/nginx/snippets/snippets_common.conf; - # Adapt to your needs here the content of - # /etc/nginx/snippets/snippets_subfolder.conf - # Then disable the Dotclear plugin DockerDotclear - # (or change their settings) - include /etc/nginx/snippets/snippets_subfolder.conf; - include /etc/nginx/snippets/snippets_common.conf; +# docker-dotclear:* +# /var/www/dotclear/servers/subfolder.conf +# Nginx server by subfolders + +server { + # By default, server URLs look like: + # - http://localhost/default + # - http://localhost/blog2 + # - ... + server_name localhost; + + # To use custom configuration only use + # include /etc/nginx/snippets/snippets_common.conf; + # Adapt to your needs here the content of + # /etc/nginx/snippets/snippets_subfolder.conf + # Then disable the Dotclear plugin DockerDotclear + # (or change their settings) + include /etc/nginx/snippets/snippets_subfolder.conf; + include /etc/nginx/snippets/snippets_common.conf; } \ No newline at end of file