Ver código fonte

modify docker entrypoint

throwaway 2 anos atrás
pai
commit
b3515bc063

+ 1 - 2
Dockerfile

@@ -4,8 +4,7 @@ WORKDIR /var/www/html/4get
 RUN apk update && apk upgrade
 RUN apk add php apache2-ssl php82-fileinfo php82-openssl php82-iconv php82-common php82-dom php82-curl curl php82-pecl-apcu php82-apache2 imagemagick php82-pecl-imagick php-mbstring imagemagick-webp imagemagick-jpeg
 
-COPY ./apache/httpd.conf /etc/apache2/httpd.conf
-COPY ./apache/conf.d/ssl.conf /etc/apache2/conf.d/ssl.conf
+COPY ./docker/apache/ /etc/apache2/
 COPY . .
 
 RUN chmod 777 /var/www/html/4get/icons

+ 3 - 6
README.md

@@ -152,19 +152,17 @@ Now test the nginx config with `nginx -t`, if it says that everything is good, r
 ## Install using Docker (lol u lazy fuck)
 
 ```
-docker run -d -p 80:80 -e FOURGET_SERVER_NAME="4get.ca" -e FOURGET_SERVER_ADMIN_EMAIL="you@example.com" luuul/4get:latest
+docker run -d -p 80:80 -e FOURGET_SERVER_NAME="4get.ca" luuul/4get:latest
 ```
 
 ...Or with SSL:
 ```
-docker run -d -p 443:443 -e FOURGET_SERVER_NAME="4get.ca" -e FOURGET_SERVER_ADMIN_EMAIL="you@example.com" -v /etc/letsencrypt/live/domain.tld:/etc/4get/certs luuul/4get:latest
+docker run -d -p 443:443 -v /etc/letsencrypt/live/domain.tld:/etc/4get/certs -e FOURGET_SERVER_NAME="4get.ca" luuul/4get:latest
 ```
 
-replace enviroment variables FOURGET_SERVER_NAME and FOURGET_SERVER_ADMIN_EMAIL with relevant values
-
 if the certificate files are not mounted to /etc/4get/certs the service listens to port 80
 
-the certificate directory expects files named `cert.pem`, `chain.pem`, `privkey.pem`
+the certificate directory expects files named `fullchain.pem` and `privkey.pem`
 
 
 ## Install using Docker Compose 
@@ -189,7 +187,6 @@ services:
     restart: always
     environment:
       - FOURGET_SERVER_NAME=4get.ca
-      - FOURGET_SERVER_ADMIN_EMAIL="you@example.com"
 
     ports:
       - "80:80"

+ 0 - 1
docker-compose.yaml

@@ -8,7 +8,6 @@ services:
     environment:
       - FOURGET_VERSION=6
       - FOURGET_SERVER_NAME=4get.ca
-      - FOURGET_SERVER_ADMIN_EMAIL=you@example.com
 
     ports:
       - "80:80"

+ 0 - 0
apache/conf.d/ssl.conf → docker/apache/conf.d/ssl.conf


+ 89 - 0
docker/apache/http.conf

@@ -0,0 +1,89 @@
+Listen 80
+ServerTokens OS
+ServerRoot /var/www
+ServerSignature On
+ServerName localhost
+
+DocumentRoot "/var/www/html/4get"
+
+LogLevel warn
+CustomLog /dev/null common
+ErrorLog /dev/null
+
+<Directory "/var/www/html/4get">
+    RewriteEngine On
+    RewriteCond %{THE_REQUEST} ^\w+\ /(.*)\.php(\?.*)?\ HTTP/
+    RewriteRule ^ http://%{HTTP_HOST}/%1 [R=301]
+    RewriteCond %{REQUEST_FILENAME}.php -f
+    RewriteRule .* $0.php
+    Options Indexes FollowSymLinks
+    AllowOverride None
+    Require all granted
+</Directory>
+
+LoadModule rewrite_module modules/mod_rewrite.so
+LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
+LoadModule authn_file_module modules/mod_authn_file.so
+LoadModule authn_core_module modules/mod_authn_core.so
+LoadModule authz_host_module modules/mod_authz_host.so
+LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
+LoadModule authz_user_module modules/mod_authz_user.so
+LoadModule authz_core_module modules/mod_authz_core.so
+LoadModule access_compat_module modules/mod_access_compat.so
+LoadModule auth_basic_module modules/mod_auth_basic.so
+LoadModule reqtimeout_module modules/mod_reqtimeout.so
+LoadModule filter_module modules/mod_filter.so
+LoadModule mime_module modules/mod_mime.so
+LoadModule log_config_module modules/mod_log_config.so
+LoadModule env_module modules/mod_env.so
+LoadModule headers_module modules/mod_headers.so
+LoadModule setenvif_module modules/mod_setenvif.so
+LoadModule version_module modules/mod_version.so
+LoadModule unixd_module modules/mod_unixd.so
+LoadModule status_module modules/mod_status.so
+LoadModule autoindex_module modules/mod_autoindex.so
+LoadModule dir_module modules/mod_dir.so
+LoadModule alias_module modules/mod_alias.so
+LoadModule negotiation_module modules/mod_negotiation.so
+
+<IfModule unixd_module>
+User apache
+Group apache
+</IfModule>
+
+
+
+<Directory />
+    AllowOverride none
+    Require all denied
+</Directory>
+
+
+
+
+<IfModule dir_module>
+    DirectoryIndex index.html
+</IfModule>
+
+<Files ".ht*">
+    Require all denied
+</Files>
+
+
+
+<IfModule headers_module>
+    RequestHeader unset Proxy early
+</IfModule>
+
+<IfModule mime_module>
+    TypesConfig /etc/apache2/mime.types
+    AddType application/x-compress .Z
+    AddType application/x-gzip .gz .tgz
+</IfModule>
+
+<IfModule mime_magic_module>
+    MIMEMagicFile /etc/apache2/magic
+</IfModule>
+
+IncludeOptional /etc/apache2/conf.d/*.conf
+

+ 2 - 4
apache/httpd.conf → docker/apache/https.conf

@@ -1,8 +1,7 @@
 ServerTokens OS
 ServerRoot /var/www
 ServerSignature On
-ServerName 4get.ca
-ServerAdmin you@example.com
+ServerName localhost
 
 DocumentRoot "/var/www/html/4get"
 
@@ -12,9 +11,8 @@ ErrorLog /dev/null
 
 <VirtualHost *:443>
     SSLEngine on
-    SSLCertificateFile /etc/4get/certs/cert.pem
+    SSLCertificateFile /etc/4get/certs/fullchain.pem
     SSLCertificateKeyFile /etc/4get/certs/privkey.pem
-    SSLCertificateChainFile /etc/4get/certs/chain.pem
 </VirtualHost>
 
 <Directory "/var/www/html/4get">

+ 6 - 13
docker/docker-entrypoint.sh

@@ -1,20 +1,13 @@
 #!/bin/sh
 set -e
-sed -i "s/ServerName.*/ServerName ${FOURGET_SERVER_NAME}/g" /etc/apache2/httpd.conf
-sed -i "s/ServerAdmin.*/ServerAdmin ${FOURGET_SERVER_ADMIN_EMAIL}/g" /etc/apache2/httpd.conf
-
-if [ ! -f /etc/4get/certs/cert.pem ] || [ ! -f /etc/4get/certs/chain.pem ] || [ ! -f /etc/4get/certs/privkey.pem ]; then
-        # remove SSL VirtualHost
-        echo "No certificate files detected. Listening on port 80"
-        sed -i '/<VirtualHost \*:443>/,/<\/VirtualHost>/d' /etc/apache2/httpd.conf
-
-        # prepend Listen 80 to /apache2/httpd.conf
-        echo "Listen 80" > /etc/apache2/httpd.conf_temp
-        cat /etc/apache2/httpd.conf >> /etc/apache2/httpd.conf_temp
-        mv /etc/apache2/httpd.conf_temp /etc/apache2/httpd.conf
+if [ ! -f /etc/4get/certs/fullchain.pem ] || [ ! -f /etc/4get/certs/privkey.pem ]; then
+        echo "Using http configuration"
+        cp /etc/apache2/http.conf /etc/apache2/httpd.conf
+else
+        echo "Using https configuration"
+        cp /etc/apache2/https.conf /etc/apache2/httpd.conf
 fi
 
-
 php82 ./docker/gen_config.php