From: nokonoko Date: Sun, 17 Apr 2022 13:14:43 +0000 (+0200) Subject: docker support added X-Git-Tag: v.1.5.3~9 X-Git-Url: https://jfr.im/git/uguu.git/commitdiff_plain/b3c0237ad9cc9d83cc1cb7ff66a8e2fd9d299515?hp=c37c18d723243e7fbe5159e85809c869f4198685 docker support added using alpine for the docker instead of ubuntu cuts the size and installation time by quite a bit --- diff --git a/dist.json b/dist.json index 5ab37cb..38e8d17 100644 --- 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" diff --git a/docker/.env b/docker/.env index cbda418..0f84c98 100644 --- a/docker/.env +++ b/docker/.env @@ -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 diff --git a/docker/Dockerfile b/docker/Dockerfile index fe8724e..028d138 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -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" ] diff --git a/docker/dist.json b/docker/dist.json index 6741a2a..930d936 100644 --- a/docker/dist.json +++ b/docker/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" diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 6f3fe68..f78b068 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -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 index 0000000..e69de29 diff --git a/docker/ssl/privkey.pem b/docker/ssl/privkey.pem new file mode 100644 index 0000000..e69de29 diff --git a/docker/supervisord.conf b/docker/supervisord.conf new file mode 100644 index 0000000..7a704d3 --- /dev/null +++ b/docker/supervisord.conf @@ -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 diff --git a/docker/uguu.conf b/docker/uguu.conf index 46d9e7e..a4f7bbd 100644 --- a/docker/uguu.conf +++ b/docker/uguu.conf @@ -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 index 0000000..b62e028 --- /dev/null +++ b/docker_build.sh @@ -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 index 0000000..1d73142 --- /dev/null +++ b/docker_purge.sh @@ -0,0 +1,2 @@ +#!/bin/bash +make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu purge-container diff --git a/package.json b/package.json index 5eafc44..6a389b4 100644 --- a/package.json +++ b/package.json @@ -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 ", "Uguu Community " ], - "license": "MIT", + "license": "GPLV3", "bugs": { "url": "https://github.com/nokonoko/uguu/issues" },