Bladeren bron

update php and improve docker docs

throwaway 2 jaren geleden
bovenliggende
commit
4afec792c4
3 gewijzigde bestanden met toevoegingen van 127 en 23 verwijderingen
  1. 3 1
      Dockerfile
  2. 10 5
      docker/docker-entrypoint.sh
  3. 114 17
      docs/docker.md

+ 3 - 1
Dockerfile

@@ -2,7 +2,7 @@ FROM alpine:latest
 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
+RUN apk add php apache2-ssl php83-fileinfo php83-openssl php83-iconv php83-common php83-dom php83-curl curl php83-pecl-apcu php83-apache2 imagemagick php83-pecl-imagick php-mbstring imagemagick-webp imagemagick-jpeg
 
 COPY ./docker/apache/ /etc/apache2/
 COPY . .
@@ -12,4 +12,6 @@ RUN chmod 777 /var/www/html/4get/icons
 EXPOSE 80
 EXPOSE 443
 
+ENV FOURGET_PROTO=http
+
 CMD  ["./docker/docker-entrypoint.sh"]

+ 10 - 5
docker/docker-entrypoint.sh

@@ -1,14 +1,19 @@
 #!/bin/sh
 set -e
-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
+
+# remove quotes from variable if present
+FOURGET_PROTO="${FOURGET_PROTO%\"}"
+FOURGET_PROTO="${FOURGET_PROTO#\"}"
+
+if [ "$FOURGET_PROTO" = "https" ] || [ -f /etc/4get/certs/fullchain.pem ] || [ -f /etc/4get/certs/privkey.pem ]; then
         echo "Using https configuration"
         cp /etc/apache2/https.conf /etc/apache2/httpd.conf
+else
+        echo "Using http configuration"
+        cp /etc/apache2/http.conf /etc/apache2/httpd.conf
 fi
 
-php82 ./docker/gen_config.php
+php ./docker/gen_config.php
 
 
 echo "4get is running"

+ 114 - 17
docs/docker.md

@@ -1,33 +1,84 @@
-# Install guide for Docker
+#### Install guide for Docker
+
+When using docker container any environment variables prefixed with `FOURGET_` will be added to the generated config located at `/var/www/html/4get/data/config.php`
+
+#### Special environment variables
+
+| Name              | value                          | Example                              |
+| -                 | -                              | -                                    |
+| FOURGET_PROTO     | "http" or "https"              | "https"                              |
+| FOURGET_INSTANCES | comma separated string of urls | "https://4get.ca,https://domain.tld" |
+
+#### Important directories
+
+| Mountpoint                      | Description               |
+| -                               | -                         |
+| /etc/4get/certs                 | SSL certificate directory |
+| /var/www/html/4get/banner       | Custom Banners directory  |
+| /var/www/html/4get/data/captcha | Captcha dataset           |
+
+
+the certificate directory `/etc/4get/certs` expects files named `fullchain.pem` and `privkey.pem`
+
+The captcha dataset should have a subdirectory for each category. In each category, images should be named from 1.png to X.png, and be 100x100 in size.
+
+example directory structure:
 
 ```
-docker run -d -p 80:80 -e FOURGET_SERVER_NAME="4get.ca" luuul/4get:latest
+captcha/
+  birds/
+    1.png
+    2.png
+    3.png
+ anime/
+    1.png
+    2.png
 ```
 
-...Or with SSL:
+For more information on configuration view [data/config.php](../data/config.php)
+
+#### Usage
+
+You can start 4get with
+
 ```
-docker run -d -p 443:443 -v /etc/letsencrypt/live/domain.tld:/etc/4get/certs -e FOURGET_SERVER_NAME="4get.ca" luuul/4get:latest
+docker run -d -p 80:80 -e FOURGET_SERVER_NAME="4get.ca" -e FOURGET_PROTO="http" luuul/4get:latest
 ```
 
-if the certificate files are not mounted to /etc/4get/certs the service listens to port 80
+...Or with SSL:
 
-the certificate directory expects files named `fullchain.pem` and `privkey.pem`
+```
+docker run -d -p 443:443 -e FOURGET_SERVER_NAME="4get.ca" -e FOURGET_PROTO="https" -v /etc/letsencrypt/live/domain.tld:/etc/4get/certs  luuul/4get:latest
+```
 
-# Install using Docker Compose 
 
-copy `docker-compose.yaml`
+#### With Docker Compose
 
-to serve custom banners create a directory named `banners` for example with images and mount to `/var/www/html/4get/banner`
+Replace relevant values and start with `docker compose up -d`
 
-to serve captcha images create a directory named `captchas` for example containing subfolders with images and mount to `/var/www/html/4get/data/captcha`
+##### HTTP
 
-any environment variables prefixed with `FOURGET_` will be added to the generated config
+```
+# docker-compose.yaml
+version: "3.7"
+
+services:
+  fourget:
+    image: luuul/4get:latest
+    restart: always
+    environment:
+      - FOURGET_VERSION=6
+      - FOURGET_PROTO=http
+      - FOURGET_SERVER_NAME=4get.ca
 
-the entrypoint will automatically set the `CAPTCHA_DATASET` value for you based on directory names and number of files in each
+    ports:
+      - "80:80"
+```
 
-to set `INSTANCES` pass a comma separated string of urls (FOURGET_INSTANCES = "https://4get.ca,https://domain.tld")
+##### HTTPS
 
 ```
+# docker-compose.yaml
 version: "3.7"
 
 services:
@@ -35,16 +86,62 @@ services:
     image: luuul/4get:latest
     restart: always
     environment:
+      - FOURGET_VERSION=6
+      - FOURGET_PROTO=https
       - FOURGET_SERVER_NAME=4get.ca
 
     ports:
       - "80:80"
       - "443:443"
-
+      
     volumes:
       - /etc/letsencrypt/live/domain.tld:/etc/4get/certs
-      - ./banners:/var/www/html/4get/banner
-      - ./captchas:/var/www/html/4get/data/captcha
 ```
 
-Replace relevant values and start with `docker compose up -d`
+##### Captcha Enabled
+
+Set `FOURGET_BOT_PROTECTION=1` and mount a directory containing captcha files to `/var/www/html/4get/data/captcha`
+
+
+```
+# docker-compose.yaml
+version: "3.7"
+
+services:
+  fourget:
+    image: luuul/4get:latest
+    restart: always
+    environment:
+      - FOURGET_VERSION=6
+      - FOURGET_PROTO=http
+      - FOURGET_SERVER_NAME=4get.ca
+      - FOURGET_BOT_PROTECTION=1
+
+    ports:
+      - "80:80"
+      
+    volumes:
+      - ./captcha:/var/www/html/4get/data/captcha
+```
+
+##### Custom Banners
+
+```
+# docker-compose.yaml
+version: "3.7"
+
+services:
+  fourget:
+    image: luuul/4get:latest
+    restart: always
+    environment:
+      - FOURGET_VERSION=6
+      - FOURGET_PROTO=http
+      - FOURGET_SERVER_NAME=4get.ca
+
+    ports:
+      - "80:80"
+      
+    volumes:
+      - ./banners:/var/www/html/4get/banner
+```