Compare commits

...

15 Commits

Author SHA1 Message Date
Go Johansson da5fc5295b Update 'README.md' 2022-04-17 13:46:54 +00:00
Go Johansson 1704a52542 Update '.mailmap' 2022-04-17 13:37:00 +00:00
Go Johansson 1736639a04 Update 'README.md' 2022-04-17 13:36:42 +00:00
Go Johansson ccf3370ab5 Update 'docker/Dockerfile' 2022-04-17 13:33:58 +00:00
Go Johansson ab53dc2d5c Update 'Makefile' 2022-04-17 13:33:09 +00:00
Go Johansson 2d4a30d675 Update 'README.md' 2022-04-17 13:22:36 +00:00
nokonoko b2eba08767 Merge branch 'master' of https://git.pomf.se/Pomf/uguu 2022-04-17 15:19:27 +02:00
nokonoko fca510308b Merge branch 'master' of https://git.pomf.se/Pomf/uguu 2022-04-17 15:19:15 +02:00
Go Johansson 4717c93610 Update 'docker/Dockerfile' 2022-04-17 13:18:55 +00:00
nokonoko b3c0237ad9 docker support added
using alpine for the docker instead of ubuntu cuts the size and installation time by quite a bit
2022-04-17 15:14:43 +02:00
Go Johansson 9650e66147 Update 'docker/Dockerfile' 2022-04-17 10:43:11 +00:00
Go Johansson c37c18d723 Update 'README.md' 2022-04-17 08:50:53 +00:00
Go Johansson 64edada887 Merge pull request 'Dockerfile for Uguu' (#71) from r4jeshwar/dockerize-uguu into master
Reviewed-on: https://git.pomf.se/Pomf/uguu/pulls/71
2022-04-17 08:43:04 +00:00
Rajeshwar R a4bf8f8017
Update .env 2022-04-13 11:43:58 +05:30
r4jeshwar 0a6585a2bd Dockerize Uguu to work with the default SQLite DB 2022-04-13 11:38:13 +05:30
16 changed files with 302 additions and 6 deletions

1
.gitignore vendored
View File

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

View File

@ -1 +1 @@
Eric Johansson <neku@pomf.se>
Go Johansson <neku@pomf.se>

View File

@ -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 -p 8081:443 --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)))

View File

@ -34,7 +34,11 @@ Node is used to compile Uguu, after that it runs on PHP.
Installation and configuration can be found at [Uguu Documentation](https://docs.uguu.se).
If you need a admin panel check out [Moe Panel](https://github.com/pomf/MoePanel).
If you need a admin panel check out [Moe Panel](https://git.pomf.se/Pomf/MoePanel).
## Docker
For Docker read [this guide](https://git.pomf.se/Pomf/uguu/wiki/Deploying-using-Docker).
## Getting help
@ -51,9 +55,11 @@ coding style guides. We use ESLint and PHPCS tools to enforce these standards.
You can also help by sending us feature requests or writing documentation and
tests.
The Uguu repo has changed home and now resides at [Pomf Git](https://git.pomf.se/Pomf/Uguu).
## Credits
Uguu is based on [Pomf](http://github.com/pomf/pomf) which was written by Emma Lejack & Eric Johansson (nekunekus) and with help from the open source community.
Uguu is based on [Pomf](http://github.com/pomf/pomf) which was written by Emma Lejack & Go Johansson (nekunekus) and with help from the open source community.
## License

View 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"

23
docker/.env Normal file
View File

@ -0,0 +1,23 @@
GEN_ROBOTS_TXT=false
GEN_SITE_MAP=false
MAX_UPLOAD_SIZE=128
PROD=false
SITE_NAME=UGUU
SITE_URL=https://localhost
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=https://filesdomain

70
docker/Dockerfile Normal file
View File

@ -0,0 +1,70 @@
FROM alpine:latest
ARG VERSION
# 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 .
# 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 && \
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
# 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
# Expose port 443 from the container
EXPOSE 443
# Load entrypoint
ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ]

70
docker/dist.json Normal file
View File

@ -0,0 +1,70 @@
{
"init": {
"allowErrors": false
},
"dest": "dist",
"pkgVersion": "1.5.3",
"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"
]
}

View File

@ -0,0 +1,5 @@
#!/bin/bash
cd /var/www/uguu/
make
make install
/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf

0
docker/ssl/fullchain.pem Normal file
View File

0
docker/ssl/privkey.pem Normal file
View File

32
docker/supervisord.conf Normal file
View File

@ -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

64
docker/uguu.conf Normal file
View File

@ -0,0 +1,64 @@
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 443 ssl;
server_name localhost;
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;
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;
}
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;
}
}
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;
}

8
docker_build.sh Executable file
View File

@ -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! <<<"

2
docker_purge.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu purge-container

View 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"
},