Compare commits

...

15 Commits

  1. 1
      .gitignore
  2. 2
      .mailmap
  3. 15
      Makefile
  4. 10
      README.md
  5. 2
      dist.json
  6. 23
      docker/.env
  7. 70
      docker/Dockerfile
  8. 70
      docker/dist.json
  9. 5
      docker/docker-entrypoint.sh
  10. 0
      docker/ssl/fullchain.pem
  11. 0
      docker/ssl/privkey.pem
  12. 32
      docker/supervisord.conf
  13. 64
      docker/uguu.conf
  14. 8
      docker_build.sh
  15. 2
      docker_purge.sh
  16. 4
      package.json

1
.gitignore vendored

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

2
.mailmap

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

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

10
README.md

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

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

23
docker/.env

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

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

@ -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"
]
}

5
docker/docker-entrypoint.sh

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

0
docker/ssl/privkey.pem

32
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

64
docker/uguu.conf

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

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

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

4
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 <github.com/pomf/pomf>",
"Uguu Community <github.com/nokonoko/uguu>"
],
"license": "MIT",
"license": "GPLV3",
"bugs": {
"url": "https://github.com/nokonoko/uguu/issues"
},

Loading…
Cancel
Save