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
|
*.xml
|
||||||
.idea
|
.idea
|
||||||
.phpdoc
|
.phpdoc
|
||||||
|
.vscode
|
15
Makefile
15
Makefile
@ -7,6 +7,9 @@ NPM="npm"
|
|||||||
DESTDIR="./dist"
|
DESTDIR="./dist"
|
||||||
PKG_VERSION := $( $(GREP) -Po '(?<="version": ")[^"]*' )
|
PKG_VERSION := $( $(GREP) -Po '(?<="version": ")[^"]*' )
|
||||||
TMPDIR := $(shell mktemp -d)
|
TMPDIR := $(shell mktemp -d)
|
||||||
|
DOCKER_IMAGE = "$(shell basename $(CURDIR) | tr [:upper:] [:lower:])"
|
||||||
|
DOCKER_TAG="$(DOCKER_TAG)"
|
||||||
|
CONTAINER_NAME="$(CONTAINER_NAME)"
|
||||||
# default modules
|
# default modules
|
||||||
MODULES="php"
|
MODULES="php"
|
||||||
|
|
||||||
@ -79,6 +82,18 @@ uninstall:
|
|||||||
npm_dependencies:
|
npm_dependencies:
|
||||||
$(NPM) install
|
$(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:
|
builddirs:
|
||||||
mkdir -p $(CURDIR)/build $(CURDIR)/build/img
|
mkdir -p $(CURDIR)/build $(CURDIR)/build/img
|
||||||
ifneq (,$(findstring php,$(MODULES)))
|
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