diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..609613e --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,17 @@ +--- +when: + - event: + - 'push' + - 'manual' + +steps: + - name: 'Build and deploy uffd container image' + image: 'quay.io/buildah/stable:latest' + privileged: true + environment: + DEPLOY_TOKEN: + from_secret: 'DEPLOY_TOKEN' + commands: + - 'buildah build -t git.enbewe.de/coding/uffd:latest .' + - 'buildah login -u enbewe -p $DEPLOY_TOKEN git.enbewe.de' + - 'buildah push git.enbewe.de/coding/uffd:latest' diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..c83ffd0 --- /dev/null +++ b/Containerfile @@ -0,0 +1,42 @@ +FROM docker.io/library/debian:bullseye-20250520-slim + +# Disable interactivity for debconf +ENV DEBIAN_FRONTEND=noninteractive +# Configure uwsgi parameters for running uffd as an app in there +ENV UWSGI_DEB_CONFNAMESPACE="app" +ENV UWSGI_DEB_CONFNAME="uffd" + +# Prepare the package sources and install needed software +RUN apt-get -qq update && \ + apt-get -qq dist-upgrade && \ + apt-get -qq install ca-certificates + +# Place the pacakge sources data in the image to download uffd +COPY cccv-archive-key.asc /etc/apt/trusted.gpg.d/ +COPY cccv-archive.list /etc/apt/sources.list.d/ +COPY uffd_2.3.1+git20241021T122809-98fe5690_all.deb /tmp/ + +# Install uffd from (new) package sources +RUN apt-get -qq update && \ + apt-get -qq install --no-install-recommends /tmp/uffd_*.deb && \ +# Create a "new" config from the inital config without the preset secret key + cat /etc/uffd/uffd.cfg | grep -v "SECRET_KEY=" > /etc/uffd/uffd.cfg.tmp && \ + mv /etc/uffd/uffd.cfg.tmp /etc/uffd/uffd.cfg && \ +# Create the needed paths for the app + mkdir --parents /var/www/uffd && \ + mkdir -p /run/uwsgi/app/uffd && \ + chown root:uffd /var/www/uffd + +COPY entrypoint.sh /entrypoint.sh + +USER uffd +USER root + +# Uffd application is exposed on port 3031 +EXPOSE 3031/tcp +# Statistics are exposed on port 9191 +EXPOSE 9191/tcp + +CMD bash /entrypoint.sh + +LABEL project="https://git.cccv.de/uffd/uffd" diff --git a/cccv-archive-key.asc b/cccv-archive-key.asc new file mode 100644 index 0000000..1dc3423 --- /dev/null +++ b/cccv-archive-key.asc @@ -0,0 +1,41 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +JRWMzY9EoBOHB1PubZuzUNIUQeui1vyX +=uRc5 +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/cccv-archive.list b/cccv-archive.list new file mode 100644 index 0000000..5b935b8 --- /dev/null +++ b/cccv-archive.list @@ -0,0 +1 @@ +deb [signed-by=/etc/apt/trusted.gpg.d/cccv-archive-key.asc] https://packages.cccv.de/uffd bullseye main diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..6266dfa --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +echo "Copying static files ..." +cp -r /usr/share/uffd/uffd/static /var/www/uffd + +db_ready="false" +count=0 +while [ $count -lt 4 ] && [ "$db_ready" != "true" ] ;do + if uffd-admin db current >> /dev/null 2>&1 ;then + db_ready="true" + else + echo "Waiting for db to become ready..." + ((duration=2**$count)) + sleep $duration + ((count=$count+1)) + fi +done + +if [ "$db_ready" == "true" ] ;then + echo "Running datbase migrations ..." + uffd-admin db upgrade + + if [ -n "$UFFD_INITIAL_ADMIN_PW" ] && [ "$(uffd-admin user list)" == "" ]; then + echo "Creating groups and roles for initial admin user ..." + if ! uffd-admin group show 'uffd_admin' >> /dev/null 2>&1 ;then + uffd-admin group create 'uffd_admin' + fi + if ! uffd-admin group show 'uffd_access' >> /dev/null 2>&1 ;then + uffd-admin group create 'uffd_access' + fi + if ! uffd-admin role show 'uffd_admin' >> /dev/null 2>&1 ;then + uffd-admin role create 'uffd_admin' --add-group 'uffd_admin' --add-group 'uffd_access' + fi + if [ -z "$UFFD_INITIAL_ADMIN_USER" ] ;then + UFFD_INITIAL_ADMIN_USER='uffd_admin' + fi + if [ -z "$UFFD_INITIAL_ADMIN_MAIL" ] ;then + UFFD_INITIAL_ADMIN_MAIL='uffd_admin@localhost' + fi + echo "Creating initial admin user ..." + uffd-admin user create "$UFFD_INITIAL_ADMIN_USER" --password "$UFFD_INITIAL_ADMIN_PW" --mail "$UFFD_INITIAL_ADMIN_MAIL" --add-role 'uffd_admin' + fi +else + echo "WARNING: Database is not ready yet, skipping migration and initialization" +fi + +echo "Starting server ..." +runuser --preserve-environment -u uffd -- \ + uwsgi --ini /etc/uwsgi/apps-enabled/uffd.ini --socket 0.0.0.0:3031 --master --stats 0.0.0.0:9191 diff --git a/uffd_2.3.1+git20241021T122809-98fe5690_all.deb b/uffd_2.3.1+git20241021T122809-98fe5690_all.deb new file mode 100644 index 0000000..422f62e Binary files /dev/null and b/uffd_2.3.1+git20241021T122809-98fe5690_all.deb differ