From 02608271bb2a9f3a65ed536984d306ee14b48e34 Mon Sep 17 00:00:00 2001 From: Geo Halkiadakis Date: Sun, 12 Jul 2026 15:51:52 +0300 Subject: initialize repository; add docker config; migrate configuration to new specs --- docker/config/000-default.conf | 21 ++++++ docker/config/composer-naked.json | 12 ++++ docker/config/composer-redis.json | 13 ++++ docker/config/default-ssl.conf | 131 ++++++++++++++++++++++++++++++++++++++ docker/config/info.md | 69 ++++++++++++++++++++ docker/config/msmtprc.kill | 12 ++++ docker/config/opcache.ini | 9 +++ docker/config/php-ext-xdebug.ini | 24 +++++++ docker/config/php-overrides.ini | 3 + 9 files changed, 294 insertions(+) create mode 100644 docker/config/000-default.conf create mode 100644 docker/config/composer-naked.json create mode 100644 docker/config/composer-redis.json create mode 100644 docker/config/default-ssl.conf create mode 100644 docker/config/info.md create mode 100644 docker/config/msmtprc.kill create mode 100644 docker/config/opcache.ini create mode 100644 docker/config/php-ext-xdebug.ini create mode 100644 docker/config/php-overrides.ini (limited to 'docker/config') diff --git a/docker/config/000-default.conf b/docker/config/000-default.conf new file mode 100644 index 0000000..fafa395 --- /dev/null +++ b/docker/config/000-default.conf @@ -0,0 +1,21 @@ + + + # DEFAULT SITE CONFIGURATION + # (optional settings are commented with `##`) + # --- -- -- - - - + + ## ServerName www.example.com + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/public + + ## LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + ## Include conf-available/serve-cgi-bin.conf + + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet \ No newline at end of file diff --git a/docker/config/composer-naked.json b/docker/config/composer-naked.json new file mode 100644 index 0000000..171c35e --- /dev/null +++ b/docker/config/composer-naked.json @@ -0,0 +1,12 @@ +{ + "require": { + "phpmailer/phpmailer": "^6.8", + "erusev/parsedown": "^1.7" + }, + "autoload": { + "classmap": [ + "/var/www/core/classes", + "/var/www/public/app" + ] + } +} \ No newline at end of file diff --git a/docker/config/composer-redis.json b/docker/config/composer-redis.json new file mode 100644 index 0000000..facb782 --- /dev/null +++ b/docker/config/composer-redis.json @@ -0,0 +1,13 @@ +{ + "require": { + "predis/predis": "^2.0", + "phpmailer/phpmailer": "^6.8", + "erusev/parsedown": "^1.7" + }, + "autoload": { + "classmap": [ + "/var/www/core/classes", + "/var/www/public/app" + ] + } +} \ No newline at end of file diff --git a/docker/config/default-ssl.conf b/docker/config/default-ssl.conf new file mode 100644 index 0000000..deeebc5 --- /dev/null +++ b/docker/config/default-ssl.conf @@ -0,0 +1,131 @@ + + + # DEFAULT _SSL_ SITE CONFIGURATION + # (optional settings are commented with `##`) + # --- -- -- - - - + + ServerAdmin webmaster@localhost + + DocumentRoot /var/www/public + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + ## LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + ## Include conf-available/serve-cgi-bin.conf + + # SSL Engine Switch: + # Enable/Disable SSL for this virtual host. + SSLEngine on + + # A self-signed (snakeoil) certificate can be created by installing + # the ssl-cert package. See + # /usr/share/doc/apache2/README.Debian.gz for more info. + # If both key and certificate are stored in the same file, only the + # SSLCertificateFile directive is needed. + SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem + SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key + + # Server Certificate Chain: + # Point SSLCertificateChainFile at a file containing the + # concatenation of PEM encoded CA certificates which form the + # certificate chain for the server certificate. Alternatively + # the referenced file can be the same as SSLCertificateFile + # when the CA certificates are directly appended to the server + # certificate for convinience. + ## SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt + + # Certificate Authority (CA): + # Set the CA certificate verification path where to find CA + # certificates for client authentication or alternatively one + # huge file containing all of them (file must be PEM encoded) + # Note: Inside SSLCACertificatePath you need hash symlinks + # to point to the certificate files. Use the provided + # Makefile to update the hash symlinks after changes. + ## SSLCACertificatePath /etc/ssl/certs/ + ## SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt + + # Certificate Revocation Lists (CRL): + # Set the CA revocation path where to find CA CRLs for client + # authentication or alternatively one huge file containing all + # of them (file must be PEM encoded) + # Note: Inside SSLCARevocationPath you need hash symlinks + # to point to the certificate files. Use the provided + # Makefile to update the hash symlinks after changes. + ## SSLCARevocationPath /etc/apache2/ssl.crl/ + ## SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl + + # Client Authentication (Type): + # Client certificate verification type and depth. Types are + # none, optional, require and optional_no_ca. Depth is a + # number which specifies how deeply to verify the certificate + # issuer chain before deciding the certificate is not valid. + ## SSLVerifyClient require + ## SSLVerifyDepth 10 + + # SSL Engine Options: + # Set various options for the SSL engine. + # o FakeBasicAuth: + # Translate the client X.509 into a Basic Authorisation. This means that + # the standard Auth/DBMAuth methods can be used for access control. The + # user name is the `one line' version of the client's X.509 certificate. + # Note that no password is obtained from the user. Every entry in the user + # file needs this password: `xxj31ZMTZzkVA'. + # o ExportCertData: + # This exports two additional environment variables: SSL_CLIENT_CERT and + # SSL_SERVER_CERT. These contain the PEM-encoded certificates of the + # server (always existing) and the client (only existing when client + # authentication is used). This can be used to import the certificates + # into CGI scripts. + # o StdEnvVars: + # This exports the standard SSL/TLS related `SSL_*' environment variables. + # Per default this exportation is switched off for performance reasons, + # because the extraction step is an expensive operation and is usually + # useless for serving static content. So one usually enables the + # exportation for CGI and SSI requests only. + # o OptRenegotiate: + # This enables optimized SSL connection renegotiation handling when SSL + # directives are used in per-directory context. + ## SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + + # SSL Protocol Adjustments: + # The safe and default but still SSL/TLS standard compliant shutdown + # approach is that mod_ssl sends the close notify alert but doesn't wait for + # the close notify alert from client. When you need a different shutdown + # approach you can use one of the following variables: + # o ssl-unclean-shutdown: + # This forces an unclean shutdown when the connection is closed, i.e. no + # SSL close notify alert is send or allowed to received. This violates + # the SSL/TLS standard but is needed for some brain-dead browsers. Use + # this when you receive I/O errors because of the standard approach where + # mod_ssl sends the close notify alert. + # o ssl-accurate-shutdown: + # This forces an accurate shutdown when the connection is closed, i.e. a + # SSL close notify alert is send and mod_ssl waits for the close notify + # alert of the client. This is 100% SSL/TLS standard compliant, but in + # practice often causes hanging connections with brain-dead browsers. Use + # this only for browsers where you know that their SSL implementation + # works correctly. + # Notice: Most problems of broken clients are also related to the HTTP + # keep-alive facility, so you usually additionally want to disable + # keep-alive for those clients, too. Use variable "nokeepalive" for this. + # Similarly, one has to force some clients to use HTTP/1.0 to workaround + # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and + # "force-response-1.0" for this. + # BrowserMatch "MSIE [2-6]" \ + # nokeepalive ssl-unclean-shutdown \ + # downgrade-1.0 force-response-1.0 + + + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet \ No newline at end of file diff --git a/docker/config/info.md b/docker/config/info.md new file mode 100644 index 0000000..3ca1c81 --- /dev/null +++ b/docker/config/info.md @@ -0,0 +1,69 @@ +## About cron jobs + +(on docker containers) + +Dockerfile #1 + + RUN apt-get update && apt-get install cron -y + RUN crontab / + crontab -l | { cat; echo "10 * * * * /usr/local/bin/php /var/www/core/cli/cache-categories.php"; } | crontab - + CMD cron + + + +--- + + +Dockerfile #2 + + RUN apt-get update && \ + apt-get -y install tzdata cron + + RUN cp /usr/share/zoneinfo/Europe/Rome /etc/localtime && \ + echo "Europe/Rome" > /etc/timezone + + #RUN apt-get -y remove tzdata + RUN rm -rf /var/cache/apk/* + + # Copy cron file to the cron.d directory + COPY cron /etc/cron.d/cron + + # Give execution rights on the cron job + RUN chmod 0644 /etc/cron.d/cron + + # Apply cron job + RUN crontab /etc/cron.d/cron + + # Create the log file to be able to run tail + RUN mkdir -p /var/log/cron + + # Add a command to base-image entrypont scritp + RUN sed -i 's/^exec /service cron start\n\nexec /' /usr/local/bin/apache2-foreground + + +--- + +handle cron status + + service cron status + service cron stop + service cron start + + + +--- + + +docker folder: organizing configuration files + + docker + |-- bin: docker-ettrypoint.sh, optimize.sh + | + `-- config: composer*.json opcache.ini php-overides.ini cron-jobs + + +--- + + +check: +* http://www.idein.it/joomla/14-docker-php-apache-with-crontab \ No newline at end of file diff --git a/docker/config/msmtprc.kill b/docker/config/msmtprc.kill new file mode 100644 index 0000000..5382ecd --- /dev/null +++ b/docker/config/msmtprc.kill @@ -0,0 +1,12 @@ +account default +host mail.roptron.gr +port 587 +tls on +tls_starttls on +tls_trust_file /etc/ssl/certs/ca-certificates.crt +tls_certcheck on +auth on +user my@mail.com +password "YourAwesomeStr0ngP4zzw0rd" +from "my@mail.com" +logfile /var/log/msmtp.log diff --git a/docker/config/opcache.ini b/docker/config/opcache.ini new file mode 100644 index 0000000..6eba8b2 --- /dev/null +++ b/docker/config/opcache.ini @@ -0,0 +1,9 @@ +[opcache] +opcache.enable=1 +opcache.revalidate_freq=0 +opcache.validate_timestamps=0 +opcache.max_accelerated_files=10000 +opcache.memory_consumption=192 +opcache.max_wasted_percentage=10 +opcache.interned_strings_buffer=16 +opcache.fast_shutdown=1 \ No newline at end of file diff --git a/docker/config/php-ext-xdebug.ini b/docker/config/php-ext-xdebug.ini new file mode 100644 index 0000000..4a6a2ed --- /dev/null +++ b/docker/config/php-ext-xdebug.ini @@ -0,0 +1,24 @@ +; [xdebug] + +; uncomment next line to enable xdebug +zend_extension=xdebug + +; modes where xdebug is enabled +xdebug.mode=develop,debug + +; common parametres +xdebug.start_with_request=yes +xdebug.client_port=9003 +; xdebug.remote_handler=dbgp +xdebug.idekey=VSCODE +xdebug.client_host=host.docker.internal +xdebug.log=/usr/local/etc/php/xdebug.log +;error_reporting=E_ALL + + +; Note: +; Remove the comment ; to enable debugging +;zend_extension=xdebug +xdebug.client_host=host.docker.internal +xdebug.start_with_request=yes +xdebug.mode=debug \ No newline at end of file diff --git a/docker/config/php-overrides.ini b/docker/config/php-overrides.ini new file mode 100644 index 0000000..215db1a --- /dev/null +++ b/docker/config/php-overrides.ini @@ -0,0 +1,3 @@ +upload_max_filesize = 10M +post_max_size = 14M +memory_limit = 256M \ No newline at end of file -- cgit v1.2.3