Browse Source

Dockerize Uguu to work with the default SQLite DB

r4jeshwar/dockerize-uguu
r4jeshwar 1 month ago
parent
commit
0a6585a2bd
  1. 1
      .gitignore
  2. 15
      Makefile
  3. 23
      docker/.env
  4. 42
      docker/Dockerfile
  5. 70
      docker/dist.json
  6. 8
      docker/docker-entrypoint.sh
  7. 44
      docker/uguu.conf

1
.gitignore vendored

@ -7,3 +7,4 @@ uguu.sq3
*.xml
.idea
.phpdoc
.vscode

15
Makefile

@ -7,6 +7,9 @@ NPM="npm"
DESTDIR="./dist"
PKG_VERSION := $( $(GREP) -Po '(?<="version": ")[^"]*' )
TMPDIR := $(shell mktemp -d)
DOCKER_IMAGE = "$(shell basename $(CURDIR) | tr [:upper:] [:lower:])"
DOCKER_TAG="$(DOCKER_TAG)"
CONTAINER_NAME="$(CONTAINER_NAME)"
# default modules
MODULES="php"
@ -79,6 +82,18 @@ uninstall:
npm_dependencies:
$(NPM) install
build-image:
docker build -f docker/Dockerfile --build-arg VERSION=$(UGUU_RELEASE_VER) --no-cache -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
run-container:
docker run --name $(CONTAINER_NAME) -d -p 8080:80 --env-file docker/.env $(DOCKER_IMAGE):$(DOCKER_TAG)
purge-container:
if docker images | grep $(DOCKER_IMAGE); then \
docker rm -f $(CONTAINER_NAME) && docker rmi $(DOCKER_IMAGE):$(DOCKER_TAG) || true;\
fi;
builddirs:
mkdir -p $(CURDIR)/build $(CURDIR)/build/img
ifneq (,$(findstring php,$(MODULES)))

23
docker/.env

@ -0,0 +1,23 @@
GEN_ROBOTS_TXT=false
GEN_SITE_MAP=false
MAX_UPLOAD_SIZE=128
PROD=false
SITE_NAME=DEVOPS
SITE_URL=https://yoursite.com
ABUSE_CONTACT=abuse@example.com
INFO_CONTACT=info@example.com
SERVER_CN_LOC=Sweden
SITE_META_INFO=SITENAME is a temporary file hosting service, upload files up to 128MiB for 24 hours.
PAYPAL_URL=
BTC_ADDR=
FLATTR_URL=
DB_PATH=/var/www/db/uguu.sq3
FILES_ROOT=/var/www/files/
LOG_IP=false
DB_USER=NULL
DB_PASS=NULL
ANTI_DUPE=false
FILES_RETRIES=15
SSL=true
NAME_LENGTH=8
URL=

42
docker/Dockerfile

@ -0,0 +1,42 @@
FROM ubuntu: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
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
RUN mkdir /var/www/uguu/dist && \
mkdir /var/www/db && \
mkdir /var/www/files
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 && \
chmod -R 775 /var/www/
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
EXPOSE 80
ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ]

70
docker/dist.json

@ -0,0 +1,70 @@
{
"init": {
"allowErrors": false
},
"dest": "dist",
"pkgVersion": "1.5.2",
"banners": [
"banners/malware_scans.swig",
"banners/donations.swig"
],
"src": [
"templates/index.swig",
"templates/faq.swig",
"templates/tools.swig"
],
"generateRobotstxt": "${GEN_ROBOTS_TXT}",
"generateSitemap": "${GEN_SITE_MAP}",
"max_upload_size": "${MAX_UPLOAD_SIZE}",
"production": "${PROD}",
"siteName": "${SITE_NAME}",
"siteUrl": "${SITE_URL}",
"abuseContact": "${ABUSE_CONTACT}",
"infoContact": "${INFO_CONTACT}",
"ServerCountryLocation": "${SERVER_CN_LOC}",
"SiteMetaInfo": "${SITE_META_INFO}",
"ToolsDesc": "The following tools might need editing to work on this clone of Uguu, usually editing the URL works.",
"paypalUrl": "${PAYPAL_URL}",
"bitcoinAddress": "${BTC_ADDR}",
"flattrUrl": "${FLATTR_URL}",
"DB_MODE": "sqlite",
"DB_PATH": "${DB_PATH}",
"DB_USER": "${DB_USER}",
"DB_PASS": "${DB_PASS}",
"LOG_IP": "${LOG_IP}",
"ANTI_DUPE": "${ANTI_DUPE}",
"BLACKLIST_DB": true,
"FILTER_MODE": true,
"FILES_ROOT": "${FILES_ROOT}",
"FILES_RETRIES": "${FILES_RETRIES}",
"SSL": "${SSL}",
"URL": "${URL}",
"NAME_LENGTH": "${NAME_LENGTH}",
"ID_CHARSET": "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ",
"BLOCKED_EXTENSIONS": [
"exe",
"scr",
"com",
"vbs",
"bat",
"cmd",
"htm",
"html",
"jar",
"msi",
"apk",
"phtml",
"svg"
],
"BLOCKED_MIME": [
"application/msword",
"text/html",
"application/x-dosexec",
"application/java",
"application/java-archive",
"application/x-executable",
"application/x-mach-binary",
"image/svg+xml"
]
}

8
docker/docker-entrypoint.sh

@ -0,0 +1,8 @@
#!/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;'

44
docker/uguu.conf

@ -0,0 +1,44 @@
server{
listen 80;
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;
root /var/www/uguu/dist/;
autoindex on;
access_log on;
index index.html index.php;
location ~* \.(css|js|jpg|jpeg|gif|png|ico|xml|eot|woff|woff2|ttf|svg|otf|x-icon|avif|webp|apng)$ {
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;
gzip_proxied any;
gzip_types text/css text/js text/javascript application/javascript application/x-javascript;
location ~* \.php$ {
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Loading…
Cancel
Save