]> jfr.im git - uguu.git/commitdiff
docker support added
authornokonoko <redacted>
Sun, 17 Apr 2022 13:14:43 +0000 (15:14 +0200)
committernokonoko <redacted>
Sun, 17 Apr 2022 13:14:43 +0000 (15:14 +0200)
using alpine for the docker instead of ubuntu cuts the size and installation time by quite a bit

12 files changed:
dist.json
docker/.env
docker/Dockerfile
docker/dist.json
docker/docker-entrypoint.sh
docker/ssl/fullchain.pem [new file with mode: 0644]
docker/ssl/privkey.pem [new file with mode: 0644]
docker/supervisord.conf [new file with mode: 0644]
docker/uguu.conf
docker_build.sh [new file with mode: 0755]
docker_purge.sh [new file with mode: 0755]
package.json

index 5ab37cb1a38f3c6502a94023762b24e09c990004..38e8d1757a465cde8f822daf0ffedfc6ef48a16e 100644 (file)
--- a/dist.json
+++ b/dist.json
@@ -3,7 +3,7 @@
     "allowErrors": false
   },
   "dest": "dist",
-  "pkgVersion": "1.5.2",
+  "pkgVersion": "1.5.3",
   "banners": [
     "banners/malware_scans.swig",
     "banners/donations.swig"
index cbda4180bcfb1dbf6dcc558a7e6300cb73d95bb1..0f84c9849f41b2dfdd5021a032d20917e5936f53 100644 (file)
@@ -2,8 +2,8 @@ GEN_ROBOTS_TXT=false
 GEN_SITE_MAP=false
 MAX_UPLOAD_SIZE=128
 PROD=false
-SITE_NAME=
-SITE_URL=https://yoursite.com
+SITE_NAME=UGUU
+SITE_URL=https://localhost
 ABUSE_CONTACT=abuse@example.com
 INFO_CONTACT=info@example.com
 SERVER_CN_LOC=Sweden
@@ -20,4 +20,4 @@ ANTI_DUPE=false
 FILES_RETRIES=15
 SSL=true
 NAME_LENGTH=8
-URL=
+URL=https://filesdomain
index fe8724e7c7cb32584935fef7e002c6757abc2368..028d138cee3ab06707e90a2289718b73c49a820e 100644 (file)
@@ -1,42 +1,67 @@
-FROM ubuntu:latest
+FROM alpine:latest
 
 ARG VERSION
 
-RUN apt-get update && \
-    apt install -y software-properties-common && \
-    add-apt-repository ppa:ondrej/php && \
-    apt-get install -y build-essential nginx-full php8.0-fpm php8.0 sqlite3 php8.0-sqlite3 nodejs certbot git npm cron gettext-base && \
-    apt clean 
+# Install the needed software
+RUN apk add --no-cache curl nginx php8-fpm php8-sqlite3 php8-opcache sqlite nodejs git npm bash build-base supervisor
 
+# Create the www-data user and group
+RUN set -x ; \
+  addgroup -g 82 -S www-data ; \
+  adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
+
+# Link php bin
+RUN ln -s /usr/bin/php8 /usr/bin/php
+
+# Copy supervisor conf file
+COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
+
+# Set default workdir
 WORKDIR  /var/www/
 
 COPY docker/docker-entrypoint.sh .
 
-ADD https://github.com/nokonoko/Uguu/archive/refs/tags/v${VERSION}.tar.gz v${VERSION}.tar.gz
-
-RUN tar xvf v${VERSION}.tar.gz && \
-    mv Uguu-${VERSION}/ uguu
+# Download Uguu
+ADD https://git.pomf.se/Pomf/uguu/archive/v${VERSION}.tar.gz v${VERSION}.tar.gz
+RUN tar xvf v${VERSION}.tar.gz
 
+# Create the needed directories
 RUN mkdir /var/www/uguu/dist && \
     mkdir /var/www/db && \
     mkdir /var/www/files
     
+# Create the Sqlite DB
 RUN sqlite3 /var/www/db/uguu.sq3 -init /var/www/uguu/sqlite_schema.sql && \
-    chown -R www-data:www-data /var/www/db /var/www/files && \
+    chown -R www-data:www-data /var/www && \
     chmod -R 775 /var/www/
 
+# Fix script paths
 RUN chmod a+x /var/www/uguu/checkdb.sh && \
     chmod a+x /var/www/uguu/checkfiles.sh && \
     sed -i 's#/path/to/files/#/var/www/uguu/files/#g' /var/www/uguu/checkfiles.sh && \
     sed -i 's#/path/to/db/uguu.sq3#/var/www/db/uguu.sq3#g' /var/www/uguu/checkdb.sh 
 
-RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/root && \
-    echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/root
-      
-COPY docker/uguu.conf /etc/nginx/conf.d/
-     
-COPY dist.json /var/www/uguu/_dist.json 
+# Add scripts to cron
+RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/www-data && \
+    echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/www-data
+
+# Copy Nginx Server conf
+COPY docker/uguu.conf /etc/nginx/http.d/
+
+# Copy SSL certs
+COPY docker/ssl /etc/ssl
+
+# Copy Uguu config
+COPY dist.json /var/www/uguu/dist.json 
+
+# Give permissions to www-data
+RUN chown -R www-data:www-data /run /var/lib/php8 /var/lib/nginx /var/log/nginx /var/log/php8 /etc/nginx /etc/php8
+
+# Change user to www-data
+USER www-data
 
+# Expose port 80 from the container
 EXPOSE 80
 
+# Load entrypoint
 ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ]
index 6741a2adb1e6914bf21dccf91cca0076ad2f64c8..930d936ddaf40c3ae720adb746ea674d11699c9d 100644 (file)
@@ -3,7 +3,7 @@
     "allowErrors": false
   },
   "dest": "dist",
-  "pkgVersion": "1.5.2",
+  "pkgVersion": "1.5.3",
   "banners": [
     "banners/malware_scans.swig",
     "banners/donations.swig"
index 6f3fe68a784ad664de19a3a7c89487cb623d5fc2..f78b068ed3442d24bb076015549c9bcfb9a8b10c 100644 (file)
@@ -1,8 +1,5 @@
 #!/bin/bash
-envsubst < /var/www/uguu/_dist.json > /var/www/uguu/dist.json 
 cd /var/www/uguu/
 make
 make install
-service php8.0-fpm start
-service cron start
-nginx -g 'daemon off;'
+/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
diff --git a/docker/ssl/fullchain.pem b/docker/ssl/fullchain.pem
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/docker/ssl/privkey.pem b/docker/ssl/privkey.pem
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/docker/supervisord.conf b/docker/supervisord.conf
new file mode 100644 (file)
index 0000000..7a704d3
--- /dev/null
@@ -0,0 +1,32 @@
+[supervisord]
+nodaemon=true
+logfile=/dev/null
+logfile_maxbytes=0
+pidfile=/run/supervisord.pid
+
+[program:php-fpm]
+command=php-fpm8 -F
+stdout_logfile=/dev/stdout
+stdout_logfile_maxbytes=0
+stderr_logfile=/dev/stderr
+stderr_logfile_maxbytes=0
+autorestart=false
+startretries=0
+
+[program:nginx]
+command=nginx -g 'daemon off;'
+stdout_logfile=/dev/stdout
+stdout_logfile_maxbytes=0
+stderr_logfile=/dev/stderr
+stderr_logfile_maxbytes=0
+autorestart=false
+startretries=0
+
+[program:crond]
+command=crond -b
+stdout_logfile=/dev/stdout
+stdout_logfile_maxbytes=0
+stderr_logfile=/dev/stderr
+stderr_logfile_maxbytes=0
+autorestart=false
+startretries=0
index 46d9e7e30c6c5306c56e9429912e82ec43b51597..a4f7bbdefda784c600ac8ba0edacbb0b00af88b2 100644 (file)
@@ -1,13 +1,25 @@
+server {
+    listen 80;
+    server_name localhost; 
+    return 301 https://localhost$request_uri;
+}
+
+server {
+    listen 80;
+    server_name filesdomain;
+    return 301 https://filesdomain$request_uri;
+}
+
 server{
 
-    listen          80;
+    listen          443 ssl;
     server_name     localhost;
-   # ssl on;
-   # ssl_certificate /path/to/fullchain.pem;
-   # ssl_certificate_key /path/to/privkey.pem;
-   # ssl_protocols TLSv1.2 TLSv1.3;
-   # ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
-   # ssl_ecdh_curve secp384r1;
+    ssl on;
+    ssl_certificate /etc/nginx/ssl/fullchain.pem;
+    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
+    ssl_ecdh_curve secp384r1;
 
     root /var/www/uguu/dist/;
     autoindex       on;
@@ -18,15 +30,6 @@ server{
     expires 30d;
     }
 
-    location ^~ /files/ {
-     alias /var/www/files/;
-     index index.html index.htm;
-     autoindex off;
-     include mime.types;
-     types {
-     text/plain php;
-    }
- }
     gzip on;
     gzip_min_length 1000;
     gzip_comp_level 6;
@@ -41,4 +44,21 @@ server{
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     }
-}
\ No newline at end of file
+}
+
+server {
+    listen          443 ssl;
+    server_name     filesdomain;
+
+    ssl on;
+    ssl_certificate /etc/nginx/ssl/fullchain.pem;
+    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
+    ssl_protocols TLSv1.2 TLSv1.3;
+    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
+    ssl_ecdh_curve secp384r1;
+
+    root            /var/www/files/;
+    autoindex       off;
+    access_log      off;
+    index           index.html;
+}
diff --git a/docker_build.sh b/docker_build.sh
new file mode 100755 (executable)
index 0000000..b62e028
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+echo ">>> BUILDING UGUU CONTAINER <<<"
+make UGUU_RELEASE_VER=$(cat package.json | grep version | cut -d '"' -f4) DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) build-image
+echo ">>> DONE! <<<"
+
+echo ">>> Starting Uguu container! <<<"
+make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu run-container
+echo ">>> DONE! <<<"
diff --git a/docker_purge.sh b/docker_purge.sh
new file mode 100755 (executable)
index 0000000..1d73142
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/bash
+make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu purge-container
index 5eafc445d03507bfa1cfe57e0d11c597f38f61f8..6a389b425c64b18165bbbd9930685e181abdb1b8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "uguu",
-  "version": "1.5.2",
+  "version": "1.5.3",
   "description": "Kawaii file host",
   "homepage": "https://uguu.se/",
   "repository": {
@@ -12,7 +12,7 @@
     "Pomf Community <github.com/pomf/pomf>",
     "Uguu Community <github.com/nokonoko/uguu>"
   ],
-  "license": "MIT",
+  "license": "GPLV3",
   "bugs": {
     "url": "https://github.com/nokonoko/uguu/issues"
   },