mirror of
https://github.com/nokonoko/Uguu.git
synced 2024-01-06 13:35:15 +00:00
Merge pull request 'Dockerfile for Uguu' (#71) from r4jeshwar/dockerize-uguu into master
Reviewed-on: https://git.pomf.se/Pomf/uguu/pulls/71
This commit is contained in:
commit
64edada887
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ uguu.sq3
|
||||
*.xml
|
||||
.idea
|
||||
.phpdoc
|
||||
.vscode
|
15
Makefile
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
Normal file
23
docker/.env
Normal file
@ -0,0 +1,23 @@
|
||||
GEN_ROBOTS_TXT=false
|
||||
GEN_SITE_MAP=false
|
||||
MAX_UPLOAD_SIZE=128
|
||||
PROD=false
|
||||
SITE_NAME=
|
||||
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
Normal file
42
docker/Dockerfile
Normal file
@ -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
Normal file
70
docker/dist.json
Normal file
@ -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
Normal file
8
docker/docker-entrypoint.sh
Normal file
@ -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
Normal file
44
docker/uguu.conf
Normal file
@ -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…
Reference in New Issue
Block a user