From 4d111d1b1ad1d2ff3cfea543fb040ad2bfa838d8 Mon Sep 17 00:00:00 2001
From: vjrj <vjrj@comunes.org>
Date: Sun, 26 Mar 2023 18:21:46 +0200
Subject: [PATCH] Added Docker support (wip)

---
 docker-compose.yml  | 29 ++++++++++++++++++++++++++++
 nginx.conf.template | 47 +++++++++++++++++++++++++++++++++++++++++++++
 proxy-gva.conf      | 14 ++++++++++++++
 startup.sh          |  5 +++++
 4 files changed, 95 insertions(+)
 create mode 100644 docker-compose.yml
 create mode 100644 nginx.conf.template
 create mode 100644 proxy-gva.conf
 create mode 100644 startup.sh

diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..66926dd5
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,29 @@
+version: '3'
+
+services:
+  g1nkgo:
+    image: g1nkgo:latest
+    container_name: g1nkgo
+    restart: always
+    hostname: g1nkgo
+    ports:
+      - "1801:80"
+      - "14431:443"
+    volumes:
+      - ~/.ginkgo/nginx-conf:/etc/nginx/:rw
+      - ./assets:/usr/share/nginx/html/assets:rw
+
+    environment:
+      # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+      # Useful for having logs with local time
+      TZ: "Europe/Copenhagen"
+    command: /bin/bash -c "/usr/local/bin/startup.sh && nginx -g 'daemon off;'"
+
+  watchtower:
+    image: containrrr/watchtower
+    container_name: g1nkgo-watchtower
+    restart: unless-stopped
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock
+    # Additional watchtower args
+    # commmand:
diff --git a/nginx.conf.template b/nginx.conf.template
new file mode 100644
index 00000000..50ac2a6d
--- /dev/null
+++ b/nginx.conf.template
@@ -0,0 +1,47 @@
+# nginx.conf.template
+server {
+  listen *:${NGINX_HTTP_PORT};
+  listen [::]:${NGINX_HTTP_PORT};
+  server_name ginkgo.example.com;
+
+  index  index.html index.htm index.php;
+
+  access_log            /var/log/nginx/g1demo.comunes.net.access.log combined;
+  error_log             /var/log/nginx/g1demo.comunes.net.error.log;
+
+  include /etc/nginx/snippets/proxy-gva.conf;
+
+  location / {
+    root /usr/share/nginx/html;
+    index index.html;
+  }
+}
+
+# server {
+#   listen ${NGINX_HTTP_PORT} ssl http2;
+#   listen [::]:${NGINX_HTTP_PORT} ssl http2;
+#   server_name ginkgo.example.com;
+
+#   ssl on;
+
+#   ssl_certificate           /etc/letsencrypt/live/ginkgo.example.com/fullchain.pem;
+#   ssl_certificate_key       /etc/letsencrypt/live/ginkgo.example.com/privkey.pem;
+#   ssl_protocols TLSv1.3 TLSv1.2  ;
+#   ssl_session_cache         shared:SSL:10m;
+#   ssl_session_timeout       5m;
+#   ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
+#   ssl_ciphers               ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
+#   ssl_prefer_server_ciphers on;
+
+#   index  index.html index.htm index.php;
+
+#   access_log            /var/log/nginx/ssl-ginkgo.example.com.access.log combined;
+#   error_log             /var/log/nginx/ssl-ginkgo.example.com.error.log;
+
+#   include /etc/nginx/snippets/proxy-gva.conf;
+
+#   location / {
+#     root /usr/share/nginx/html;
+#     index index.html;
+#   }
+# }
diff --git a/proxy-gva.conf b/proxy-gva.conf
new file mode 100644
index 00000000..3ede8822
--- /dev/null
+++ b/proxy-gva.conf
@@ -0,0 +1,14 @@
+location ~ ^/proxy/(.*)/(gva(/.*)?)$ {
+    set $proxy_url $1;
+    set $proxy_uri $2;
+    # resolver 1.1.1.1;
+    add_header 'Access-Control-Allow-Origin' '*';
+    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
+    add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
+    proxy_set_header Host $host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_pass $proxy_url/gva/$proxy_uri$is_args$args;
+    proxy_redirect off;
+}
diff --git a/startup.sh b/startup.sh
new file mode 100644
index 00000000..a539531f
--- /dev/null
+++ b/startup.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+if [ -z "$(ls -A /etc/nginx)" ]; then
+    cp -a /etc/nginx-default/* /etc/nginx/
+fi
-- 
GitLab