From 9999957f24fc8bfd1456898aa0454f2d1b0f65a1 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 4 Oct 2025 11:26:30 +0200 Subject: [PATCH 01/28] feat(bareos): Added Bareos 24 images based on Ubuntu 24.04 --- client/24-ubuntu/Dockerfile | 46 +++++++ client/24-ubuntu/docker-entrypoint.sh | 33 +++++ director-mysql/24-ubuntu/Dockerfile | 61 +++++++++ director-mysql/24-ubuntu/docker-entrypoint.sh | 121 +++++++++++++++++ director-mysql/24-ubuntu/webhook-notify | 41 ++++++ director-pgsql/24-ubuntu/Dockerfile | 60 ++++++++ director-pgsql/24-ubuntu/docker-entrypoint.sh | 128 ++++++++++++++++++ director-pgsql/24-ubuntu/webhook-notify | 41 ++++++ storage/24-ubuntu/Dockerfile | 48 +++++++ storage/24-ubuntu/docker-entrypoint.sh | 22 +++ webui/24-ubuntu/Dockerfile | 46 +++++++ webui/24-ubuntu/docker-entrypoint.sh | 26 ++++ 12 files changed, 673 insertions(+) create mode 100644 client/24-ubuntu/Dockerfile create mode 100644 client/24-ubuntu/docker-entrypoint.sh create mode 100644 director-mysql/24-ubuntu/Dockerfile create mode 100644 director-mysql/24-ubuntu/docker-entrypoint.sh create mode 100644 director-mysql/24-ubuntu/webhook-notify create mode 100644 director-pgsql/24-ubuntu/Dockerfile create mode 100644 director-pgsql/24-ubuntu/docker-entrypoint.sh create mode 100644 director-pgsql/24-ubuntu/webhook-notify create mode 100644 storage/24-ubuntu/Dockerfile create mode 100644 storage/24-ubuntu/docker-entrypoint.sh create mode 100644 webui/24-ubuntu/Dockerfile create mode 100644 webui/24-ubuntu/docker-entrypoint.sh diff --git a/client/24-ubuntu/Dockerfile b/client/24-ubuntu/Dockerfile new file mode 100644 index 00000000..1a28ae96 --- /dev/null +++ b/client/24-ubuntu/Dockerfile @@ -0,0 +1,46 @@ +# Dockerfile Bareos client/file daemon +FROM ubuntu:noble + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +ENV BAREOS_DAEMON_USER bareos +ENV BAREOS_DAEMON_GROUP bareos +ENV DEBIAN_FRONTEND noninteractive +ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN apt-get update -qq \ + && apt-get -qq -y install --no-install-recommends curl tzdata gnupg gosu \ + && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ + && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ + add /tmp/bareos.key \ + && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && apt-get update -qq \ + && apt-get install -qq -y --no-install-recommends \ + bareos-client mysql-client postgresql-client bareos-tools \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod a+x /docker-entrypoint.sh + +RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d + +EXPOSE 9102 + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-fd", "-f"] diff --git a/client/24-ubuntu/docker-entrypoint.sh b/client/24-ubuntu/docker-entrypoint.sh new file mode 100644 index 00000000..3b1cbf43 --- /dev/null +++ b/client/24-ubuntu/docker-entrypoint.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +#set -x + +bareos_fd_config="/etc/bareos/bareos-fd.d/director/bareos-dir.conf" + +if [ "${FORCE_ROOT}" = true ]; then + BAREOS_DAEMON_USER='root' + BAREOS_DAEMON_GROUP='root' +fi + +if [ $(id -u) = '0' ]; then + [ -n "${PUID}" ] && usermod -u ${PUID} ${BAREOS_DAEMON_USER} + [ -n "${PGID}" ] && groupmod -g ${PGID} ${BAREOS_DAEMON_GROUP} + + if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xzf /bareos-fd.tgz --backup=simple --suffix=.before-control + + # Force client/file daemon password + sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' $bareos_fd_config + + # Control file + touch /etc/bareos/bareos-config.control + fi + + # Fix permissions + find /etc/bareos ! -user ${BAREOS_DAEMON_USER} -exec chown ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} {} \; + chown -R ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} /var/lib/bareos /var/log/bareos + + # Gosu + [ "${BAREOS_DAEMON_USER}" != 'root' ] && exec gosu "${BAREOS_DAEMON_USER}" "$BASH_SOURCE" "$@" +fi + +exec "$@" diff --git a/director-mysql/24-ubuntu/Dockerfile b/director-mysql/24-ubuntu/Dockerfile new file mode 100644 index 00000000..aba3748f --- /dev/null +++ b/director-mysql/24-ubuntu/Dockerfile @@ -0,0 +1,61 @@ +# Bareos director Dockerfile +FROM ubuntu:noble + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +ENV DEBIAN_FRONTEND noninteractive +ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ +ENV BAREOS_DPKG_CONF bareos-database-common bareos-database-common + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN apt-get update -qq \ + && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ + && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ + && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ + add /tmp/bareos.key \ + && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/install-error select ignore" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/database-type select mysql" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/missing-db-package-error select ignore" \ + | debconf-set-selections \ + && echo 'postfix postfix/main_mailer_type select No configuration' \ + | debconf-set-selections \ + && apt-get update -qq \ + && apt-get install -qq -y --no-install-recommends \ + bareos bareos-database-mysql mysql-client \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN tar czf /bareos-dir.tgz /etc/bareos + +COPY webhook-notify /usr/local/bin/webhook-notify +RUN chmod u+x /usr/local/bin/webhook-notify + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +EXPOSE 9101 + +VOLUME /etc/bareos +VOLUME /var/lib/bareos + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"] diff --git a/director-mysql/24-ubuntu/docker-entrypoint.sh b/director-mysql/24-ubuntu/docker-entrypoint.sh new file mode 100644 index 00000000..085322a3 --- /dev/null +++ b/director-mysql/24-ubuntu/docker-entrypoint.sh @@ -0,0 +1,121 @@ +#!/usr/bin/env bash + +github_bareos='raw.githubusercontent.com/bareos/bareos' +webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example' + +if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control + + # Download default admin profile config + if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \ + --output /etc/bareos/bareos-dir.d/profile/webui-admin.conf + fi + + # Download default webUI admin config + if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${admin_conf}" \ + --output /etc/bareos/bareos-dir.d/console/admin.conf + fi + + # Update bareos-director configs + # Director / mycatalog & mail report + sed -i "s#dbuser =.*#dbuser = ${DB_USER}#" \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbpassword =.*#dbpassword = '\""${DB_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbname =.*#dbname = '\""${DB_NAME}"\"' \n dbaddress = '\""${DB_HOST}"\"'\n dbport = '\""${DB_PORT}"\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + + # Setup webhook + if [ "${WEBHOOK_NOTIFICATION}" = true ]; then + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + fi + + # storage daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + + # client/file daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + + # webUI + sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/console/admin.conf + sed -i "s#}# TlsEnable = false\n}#" \ + /etc/bareos/bareos-dir.d/console/admin.conf + + # MyCatalog Backup + sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/${DB_NAME}.sql#" \ + /etc/bareos/bareos-dir.d/fileset/Catalog.conf + + # Control file + touch /etc/bareos/bareos-config.control +fi + +if [[ -z ${CI_TEST} ]] ; then + # MySQL check + # Waiting for mysqld + sqlup=1 + while [ "$sqlup" -ne 0 ] ; do + echo "Waiting for mysqld..." + mysqladmin --silent -u root -p"${DB_PASSWORD}" -h "${DB_HOST}" ping + if [ $? -ne 0 ] ; then + sqlup=1 + sleep 5 + else + sqlup=0 + echo "...mysqld is alive" + fi + done +fi + +# Set mysqld access for root +echo -e "[client]\nhost=${DB_HOST}\nuser=root\npassword=${DB_PASSWORD}" > /root/.my.cnf + +# Force statistics colum to 0 with mysqldump +echo -e '[mysqldump]\ncolumn-statistics=0' > /etc/mysql/conf.d/mysqldump-bareos.cnf + +# MySQL init for Bareos if required +if [ ! -f /etc/bareos/bareos-db.control ] ; then + # Init MySQL DB + mysql -e "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}'" + mysql -e "GRANT ALL PRIVILEGES ON TABLE ${DB_NAME}.* TO ${DB_USER}@'%'" + mysql -e "FLUSH PRIVILEGES" + /usr/lib/bareos/scripts/create_bareos_database + /usr/lib/bareos/scripts/make_bareos_tables + + # Control file + touch /etc/bareos/bareos-db.control +else + # Try MySQL DB upgrade + /usr/lib/bareos/scripts/update_bareos_tables +fi + +# Fix permissions +find /etc/bareos/bareos-dir.d ! -user bareos -exec chown bareos {} \; +chown bareos:bareos /var/lib/bareos + +# Run Dockerfile CMD +exec "$@" diff --git a/director-mysql/24-ubuntu/webhook-notify b/director-mysql/24-ubuntu/webhook-notify new file mode 100644 index 00000000..801e3eaa --- /dev/null +++ b/director-mysql/24-ubuntu/webhook-notify @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + +job_type=$1 +job_status=$2 +job_client=$3 +job_level=$4 +job_name=$5 +msg_icon="❌" + +if [ "$job_status" = "OK" ] ;then + msg_icon="✅" +fi + +msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \ +$job_level (${job_name})" + +load_json() +{ + if [ "${WEBHOOK_TYPE}" = "slack" ] ; then + cat < /etc/apt/sources.list.d/bareos.list \ + && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/install-error select ignore" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/database-type select pgsql" \ + | debconf-set-selections \ + && echo "${BAREOS_DPKG_CONF}/missing-db-package-error select ignore" \ + | debconf-set-selections \ + && echo 'postfix postfix/main_mailer_type select No configuration' \ + | debconf-set-selections \ + && apt-get update -qq \ + && apt-get install -qq -y --no-install-recommends \ + bareos postgresql-client bareos-tools \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN tar czf /bareos-dir.tgz /etc/bareos + +COPY webhook-notify /usr/local/bin/webhook-notify +RUN chmod u+x /usr/local/bin/webhook-notify + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +EXPOSE 9101 + +VOLUME /etc/bareos + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"] diff --git a/director-pgsql/24-ubuntu/docker-entrypoint.sh b/director-pgsql/24-ubuntu/docker-entrypoint.sh new file mode 100644 index 00000000..c6f3928e --- /dev/null +++ b/director-pgsql/24-ubuntu/docker-entrypoint.sh @@ -0,0 +1,128 @@ +#!/usr/bin/env bash + +github_bareos='raw.githubusercontent.com/bareos/bareos' +webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example' + +if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control + + # Download default admin profile config + if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \ + --output /etc/bareos/bareos-dir.d/profile/webui-admin.conf + fi + + # Download default webUI admin config + if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${admin_conf}" \ + --output /etc/bareos/bareos-dir.d/console/admin.conf + fi + + # Update bareos-director configs + # Director / mycatalog & mail report + sed -i 's#dbuser = "bareos"#dbuser = '\"${DB_USER}\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbpassword = ""#dbpassword = '\"${DB_PASSWORD}\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbname = "bareos"#dbname = '\"${DB_NAME}\"'\n dbaddress = '\"${DB_HOST}\"'\n dbport = '\"${DB_PORT}\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + + # Setup webhook + if [ "${WEBHOOK_NOTIFICATION}" = true ]; then + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + fi + + # storage daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + + # client/file daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + + # webUI + sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/console/admin.conf + sed -i "s#}# TlsEnable = false\n}#" \ + /etc/bareos/bareos-dir.d/console/admin.conf + + # MyCatalog Backup + sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/bareos.sql#" \ + /etc/bareos/bareos-dir.d/fileset/Catalog.conf + + # Control file + touch /etc/bareos/bareos-config.control +fi + +if [[ -z ${CI_TEST} ]] ; then + # Waiting Postgresql is up + sqlup=1 + while [ "$sqlup" -ne 0 ] ; do + echo "Waiting for postgresql..." + pg_isready --host="${DB_HOST}" --port="${DB_PORT}" --user="${DB_ADMIN_USER}" + if [ $? -ne 0 ] ; then + sqlup=1 + sleep 5 + else + sqlup=0 + echo "...postgresql is alive" + fi + done +fi + +export PGUSER=${DB_ADMIN_USER} +export PGHOST=${DB_HOST} +export PGPASSWORD=${DB_ADMIN_PASSWORD} +[[ -z "${DB_INIT}" ]] && DB_INIT='false' +[[ -z "${DB_UPDATE}" ]] && DB_UPDATE='false' + +if [ ! -f /etc/bareos/bareos-db.control ] && [ "${DB_INIT}" == 'true' ] ; then + # Init Postgresql DB + echo "Bareos DB init" + echo "Bareos DB init: Create user ${DB_USER}" + psql -c "create user ${DB_USER} with createdb createrole login;" + echo "Bareos DB init: Set user password" + psql -c "alter user ${DB_USER} password '${DB_PASSWORD}';" + /usr/lib/bareos/scripts/create_bareos_database 2>/dev/null + /usr/lib/bareos/scripts/make_bareos_tables 2>/dev/null + /usr/lib/bareos/scripts/grant_bareos_privileges 2>/dev/null + + # Control file + touch /etc/bareos/bareos-db.control +fi + +if [ "${DB_UPDATE}" == 'true' ] ; then + # Try Postgres upgrade + echo "Bareoos DB update" + echo "Bareoos DB update: Update tables" + /usr/lib/bareos/scripts/update_bareos_tables 2>/dev/null + echo "Bareoos DB update: Grant privileges" + /usr/lib/bareos/scripts/grant_bareos_privileges 2>/dev/null +fi + +# Fix permissions +find /etc/bareos ! -user bareos -exec chown bareos {} \; +chown -R bareos:bareos /var/lib/bareos + +# Run Dockerfile CMD +exec "$@" diff --git a/director-pgsql/24-ubuntu/webhook-notify b/director-pgsql/24-ubuntu/webhook-notify new file mode 100644 index 00000000..801e3eaa --- /dev/null +++ b/director-pgsql/24-ubuntu/webhook-notify @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + +job_type=$1 +job_status=$2 +job_client=$3 +job_level=$4 +job_name=$5 +msg_icon="❌" + +if [ "$job_status" = "OK" ] ;then + msg_icon="✅" +fi + +msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \ +$job_level (${job_name})" + +load_json() +{ + if [ "${WEBHOOK_TYPE}" = "slack" ] ; then + cat < /etc/apt/sources.list.d/bareos.list \ + && apt-get update -qq \ + && apt-get install -qq -y --no-install-recommends \ + bareos-storage bareos-tools bareos-storage-tape mtx scsitools \ + sg3-utils mt-st bareos-storage-droplet \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d + +EXPOSE 9103 + +VOLUME /etc/bareos +VOLUME /var/lib/bareos/storage + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-sd", "-u", "bareos", "-f"] diff --git a/storage/24-ubuntu/docker-entrypoint.sh b/storage/24-ubuntu/docker-entrypoint.sh new file mode 100644 index 00000000..a7134011 --- /dev/null +++ b/storage/24-ubuntu/docker-entrypoint.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +bareos_sd_config="/etc/bareos/bareos-sd.d/director/bareos-dir.conf" + +if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xfz /bareos-sd.tgz --backup=simple --suffix=.before-control + + # Update bareos-storage configs + sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' $bareos_sd_config + + # Control file + touch /etc/bareos/bareos-config.control +fi + +# Fix permissions +find /var/lib/bareos ! -user bareos -exec chown bareos {} \; +find /etc/bareos/bareos-sd.d ! -user bareos -exec chown bareos {} \; +find /dev -regex "/dev/[n]?st[0-9]+" ! -user bareos -exec chown bareos {} \; +find /dev -regex "/dev/tape/.*" ! -user bareos -exec chown bareos {} \; + +# Run Dockerfile CMD +exec "$@" diff --git a/webui/24-ubuntu/Dockerfile b/webui/24-ubuntu/Dockerfile new file mode 100644 index 00000000..ba46a940 --- /dev/null +++ b/webui/24-ubuntu/Dockerfile @@ -0,0 +1,46 @@ +# Bareos Web-ui Dockerfile +FROM ubuntu:noble + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ +ENV DEBIAN_FRONTEND noninteractive + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN apt-get update -qq \ + && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ + && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ + && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ + add /tmp/bareos.key \ + && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && apt-get update -qq \ + && apt-get install -qq -y --no-install-recommends \ + bareos-webui \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +RUN tar czf /bareos-webui.tgz /etc/bareos-webui + +EXPOSE 80 + +VOLUME /etc/bareos-webui + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] diff --git a/webui/24-ubuntu/docker-entrypoint.sh b/webui/24-ubuntu/docker-entrypoint.sh new file mode 100644 index 00000000..a951ee04 --- /dev/null +++ b/webui/24-ubuntu/docker-entrypoint.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env ash + +if [ ! -f /etc/bareos-webui/bareos-config.control ] + then + tar xfvz /bareos-webui-config.tgz + + # Update bareos-webui config + sed -i "s/diraddress = \"localhost\"/diraddress = \"${BAREOS_DIR_HOST}\"/" /etc/bareos-webui/directors.ini + + # Control file + touch /etc/bareos-webui/bareos-config.control +fi + +if [ ! -f /usr/share/bareos-webui/bareos-config.control ] + then + tar xfvz /bareos-webui-code.tgz + touch /usr/share/bareos-webui/bareos-config.control +fi + +# Fix nginx 'client_max_body_size' +sed -i "s#client_max_body_size 1m#client_max_body_size 20m#" /etc/nginx/nginx.conf + +# set php-fpm host andd port +sed -i "s/fastcgi_pass 127.0.0.1:9000;/fastcgi_pass ${PHP_FPM_HOST}:${PHP_FPM_PORT};/" /etc/nginx/http.d/bareos-webui.conf + +exec "$@" From 66d44e9a5e10491151d77e9a2c0f82b122f51c48 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 4 Oct 2025 11:43:23 +0200 Subject: [PATCH 02/28] fix(bareos): Issue with keyring, Debian/Ubuntu have deprecated the usage of apt-key --- client/24-ubuntu/Dockerfile | 6 ++---- director-mysql/24-ubuntu/Dockerfile | 6 ++---- director-pgsql/24-ubuntu/Dockerfile | 6 ++---- storage/24-ubuntu/Dockerfile | 6 ++---- webui/24-ubuntu/Dockerfile | 6 ++---- 5 files changed, 10 insertions(+), 20 deletions(-) diff --git a/client/24-ubuntu/Dockerfile b/client/24-ubuntu/Dockerfile index 1a28ae96..6bc1416a 100644 --- a/client/24-ubuntu/Dockerfile +++ b/client/24-ubuntu/Dockerfile @@ -25,10 +25,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg gosu \ - && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ - && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ - add /tmp/bareos.key \ - && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ bareos-client mysql-client postgresql-client bareos-tools \ diff --git a/director-mysql/24-ubuntu/Dockerfile b/director-mysql/24-ubuntu/Dockerfile index aba3748f..ca685d4b 100644 --- a/director-mysql/24-ubuntu/Dockerfile +++ b/director-mysql/24-ubuntu/Dockerfile @@ -24,10 +24,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ - && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ - add /tmp/bareos.key \ - && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ | debconf-set-selections \ && echo "${BAREOS_DPKG_CONF}/install-error select ignore" \ diff --git a/director-pgsql/24-ubuntu/Dockerfile b/director-pgsql/24-ubuntu/Dockerfile index e1fc9ac3..af0f0d68 100644 --- a/director-pgsql/24-ubuntu/Dockerfile +++ b/director-pgsql/24-ubuntu/Dockerfile @@ -24,10 +24,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ - && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ - add /tmp/bareos.key \ - && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ | debconf-set-selections \ && echo "${BAREOS_DPKG_CONF}/install-error select ignore" \ diff --git a/storage/24-ubuntu/Dockerfile b/storage/24-ubuntu/Dockerfile index 40a17716..adebd227 100644 --- a/storage/24-ubuntu/Dockerfile +++ b/storage/24-ubuntu/Dockerfile @@ -23,10 +23,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ - && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ - add /tmp/bareos.key \ - && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ bareos-storage bareos-tools bareos-storage-tape mtx scsitools \ diff --git a/webui/24-ubuntu/Dockerfile b/webui/24-ubuntu/Dockerfile index ba46a940..9a147972 100644 --- a/webui/24-ubuntu/Dockerfile +++ b/webui/24-ubuntu/Dockerfile @@ -23,10 +23,8 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /tmp/bareos.key \ - && apt-key --keyring /etc/apt/trusted.gpg.d/breos-keyring.gpg \ - add /tmp/bareos.key \ - && echo "deb $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ + && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ bareos-webui \ From ed3b4a9e0579633fb2e26a0f2418cb102dc03f76 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 4 Oct 2025 11:54:45 +0200 Subject: [PATCH 03/28] fix(bareos): GPG key issue --- client/24-ubuntu/Dockerfile | 12 +- director-mysql/24-ubuntu/Dockerfile | 59 --------- director-mysql/24-ubuntu/docker-entrypoint.sh | 121 ------------------ director-mysql/24-ubuntu/webhook-notify | 41 ------ director-pgsql/24-ubuntu/Dockerfile | 12 +- storage/24-ubuntu/Dockerfile | 8 +- webui/24-ubuntu/Dockerfile | 8 +- 7 files changed, 20 insertions(+), 241 deletions(-) delete mode 100644 director-mysql/24-ubuntu/Dockerfile delete mode 100644 director-mysql/24-ubuntu/docker-entrypoint.sh delete mode 100644 director-mysql/24-ubuntu/webhook-notify diff --git a/client/24-ubuntu/Dockerfile b/client/24-ubuntu/Dockerfile index 6bc1416a..a60cbc83 100644 --- a/client/24-ubuntu/Dockerfile +++ b/client/24-ubuntu/Dockerfile @@ -15,17 +15,17 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vcs-url="https://github.com/barcus/bareos" \ org.label-schema.version=$VERSION -ENV BAREOS_DAEMON_USER bareos -ENV BAREOS_DAEMON_GROUP bareos -ENV DEBIAN_FRONTEND noninteractive -ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key -ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ +ENV BAREOS_DAEMON_USER=bareos +ENV BAREOS_DAEMON_GROUP=bareos +ENV DEBIAN_FRONTEND=noninteractive +ENV BAREOS_KEY=http://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_24.04/ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg gosu \ - && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && curl -Ls $BAREOS_KEY | gpg --dearmor -o /usr/share/keyrings/bareos.gpg \ && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ diff --git a/director-mysql/24-ubuntu/Dockerfile b/director-mysql/24-ubuntu/Dockerfile deleted file mode 100644 index ca685d4b..00000000 --- a/director-mysql/24-ubuntu/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# Bareos director Dockerfile -FROM ubuntu:noble - -LABEL maintainer="barcus@tou.nu" - -ARG BUILD_DATE -ARG NAME -ARG VCS_REF -ARG VERSION - -LABEL org.label-schema.schema-version="1.0" \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name=$NAME \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/barcus/bareos" \ - org.label-schema.version=$VERSION - -ENV DEBIAN_FRONTEND noninteractive -ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key -ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ -ENV BAREOS_DPKG_CONF bareos-database-common bareos-database-common - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN apt-get update -qq \ - && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ - && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ - && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ - | debconf-set-selections \ - && echo "${BAREOS_DPKG_CONF}/install-error select ignore" \ - | debconf-set-selections \ - && echo "${BAREOS_DPKG_CONF}/database-type select mysql" \ - | debconf-set-selections \ - && echo "${BAREOS_DPKG_CONF}/missing-db-package-error select ignore" \ - | debconf-set-selections \ - && echo 'postfix postfix/main_mailer_type select No configuration' \ - | debconf-set-selections \ - && apt-get update -qq \ - && apt-get install -qq -y --no-install-recommends \ - bareos bareos-database-mysql mysql-client \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -RUN tar czf /bareos-dir.tgz /etc/bareos - -COPY webhook-notify /usr/local/bin/webhook-notify -RUN chmod u+x /usr/local/bin/webhook-notify - -COPY docker-entrypoint.sh /docker-entrypoint.sh -RUN chmod u+x /docker-entrypoint.sh - -EXPOSE 9101 - -VOLUME /etc/bareos -VOLUME /var/lib/bareos - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"] diff --git a/director-mysql/24-ubuntu/docker-entrypoint.sh b/director-mysql/24-ubuntu/docker-entrypoint.sh deleted file mode 100644 index 085322a3..00000000 --- a/director-mysql/24-ubuntu/docker-entrypoint.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env bash - -github_bareos='raw.githubusercontent.com/bareos/bareos' -webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' -admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example' - -if [ ! -f /etc/bareos/bareos-config.control ]; then - tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control - - # Download default admin profile config - if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then - curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \ - --output /etc/bareos/bareos-dir.d/profile/webui-admin.conf - fi - - # Download default webUI admin config - if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then - curl --silent --insecure "https://${github_bareos}/${admin_conf}" \ - --output /etc/bareos/bareos-dir.d/console/admin.conf - fi - - # Update bareos-director configs - # Director / mycatalog & mail report - sed -i "s#dbuser =.*#dbuser = ${DB_USER}#" \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - sed -i 's#dbpassword =.*#dbpassword = '\""${DB_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - sed -i 's#dbname =.*#dbname = '\""${DB_NAME}"\"' \n dbaddress = '\""${DB_HOST}"\"'\n dbport = '\""${DB_PORT}"\"'#' \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - - # Setup webhook - if [ "${WEBHOOK_NOTIFICATION}" = true ]; then - sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - fi - - # storage daemon - sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \ - /etc/bareos/bareos-dir.d/storage/File.conf - sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/storage/File.conf - - # client/file daemon - sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \ - /etc/bareos/bareos-dir.d/client/bareos-fd.conf - sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/client/bareos-fd.conf - - # webUI - sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/console/admin.conf - sed -i "s#}# TlsEnable = false\n}#" \ - /etc/bareos/bareos-dir.d/console/admin.conf - - # MyCatalog Backup - sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/${DB_NAME}.sql#" \ - /etc/bareos/bareos-dir.d/fileset/Catalog.conf - - # Control file - touch /etc/bareos/bareos-config.control -fi - -if [[ -z ${CI_TEST} ]] ; then - # MySQL check - # Waiting for mysqld - sqlup=1 - while [ "$sqlup" -ne 0 ] ; do - echo "Waiting for mysqld..." - mysqladmin --silent -u root -p"${DB_PASSWORD}" -h "${DB_HOST}" ping - if [ $? -ne 0 ] ; then - sqlup=1 - sleep 5 - else - sqlup=0 - echo "...mysqld is alive" - fi - done -fi - -# Set mysqld access for root -echo -e "[client]\nhost=${DB_HOST}\nuser=root\npassword=${DB_PASSWORD}" > /root/.my.cnf - -# Force statistics colum to 0 with mysqldump -echo -e '[mysqldump]\ncolumn-statistics=0' > /etc/mysql/conf.d/mysqldump-bareos.cnf - -# MySQL init for Bareos if required -if [ ! -f /etc/bareos/bareos-db.control ] ; then - # Init MySQL DB - mysql -e "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}'" - mysql -e "GRANT ALL PRIVILEGES ON TABLE ${DB_NAME}.* TO ${DB_USER}@'%'" - mysql -e "FLUSH PRIVILEGES" - /usr/lib/bareos/scripts/create_bareos_database - /usr/lib/bareos/scripts/make_bareos_tables - - # Control file - touch /etc/bareos/bareos-db.control -else - # Try MySQL DB upgrade - /usr/lib/bareos/scripts/update_bareos_tables -fi - -# Fix permissions -find /etc/bareos/bareos-dir.d ! -user bareos -exec chown bareos {} \; -chown bareos:bareos /var/lib/bareos - -# Run Dockerfile CMD -exec "$@" diff --git a/director-mysql/24-ubuntu/webhook-notify b/director-mysql/24-ubuntu/webhook-notify deleted file mode 100644 index 801e3eaa..00000000 --- a/director-mysql/24-ubuntu/webhook-notify +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env sh - -job_type=$1 -job_status=$2 -job_client=$3 -job_level=$4 -job_name=$5 -msg_icon="❌" - -if [ "$job_status" = "OK" ] ;then - msg_icon="✅" -fi - -msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \ -$job_level (${job_name})" - -load_json() -{ - if [ "${WEBHOOK_TYPE}" = "slack" ] ; then - cat < /etc/apt/sources.list.d/bareos.list \ && echo "${BAREOS_DPKG_CONF}/dbconfig-install boolean false" \ | debconf-set-selections \ @@ -38,7 +38,7 @@ RUN apt-get update -qq \ | debconf-set-selections \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ - bareos postgresql-client bareos-tools \ + bareos postgresql-client bareos-database-tools \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* diff --git a/storage/24-ubuntu/Dockerfile b/storage/24-ubuntu/Dockerfile index adebd227..3e3ede93 100644 --- a/storage/24-ubuntu/Dockerfile +++ b/storage/24-ubuntu/Dockerfile @@ -15,15 +15,15 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vcs-url="https://github.com/barcus/bareos" \ org.label-schema.version=$VERSION -ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key -ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ -ENV DEBIAN_FRONTEND noninteractive +ENV BAREOS_KEY=http://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_24.04/ +ENV DEBIAN_FRONTEND=noninteractive SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && curl -Ls $BAREOS_KEY | gpg --dearmor -o /usr/share/keyrings/bareos.gpg \ && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ diff --git a/webui/24-ubuntu/Dockerfile b/webui/24-ubuntu/Dockerfile index 9a147972..bcf32581 100644 --- a/webui/24-ubuntu/Dockerfile +++ b/webui/24-ubuntu/Dockerfile @@ -15,15 +15,15 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vcs-url="https://github.com/barcus/bareos" \ org.label-schema.version=$VERSION -ENV BAREOS_KEY https://download.bareos.org/current/xUbuntu_24.04/Release.key -ENV BAREOS_REPO https://download.bareos.org/current/xUbuntu_24.04/ -ENV DEBIAN_FRONTEND noninteractive +ENV BAREOS_KEY=http://download.bareos.org/current/xUbuntu_24.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_24.04/ +ENV DEBIAN_FRONTEND=noninteractive SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update -qq \ && apt-get -qq -y install --no-install-recommends curl tzdata gnupg \ - && curl -Ls $BAREOS_KEY -o /usr/share/keyrings/bareos.gpg \ + && curl -Ls $BAREOS_KEY | gpg --dearmor -o /usr/share/keyrings/bareos.gpg \ && echo "deb [signed-by=/usr/share/keyrings/bareos.gpg] $BAREOS_REPO /" > /etc/apt/sources.list.d/bareos.list \ && apt-get update -qq \ && apt-get install -qq -y --no-install-recommends \ From bbc45d2d59288dee48c75885403a370376b5d155 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Tue, 18 Nov 2025 20:09:38 +0100 Subject: [PATCH 04/28] Update lint job to use ubuntu-latest --- .github/workflows/test-n-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-n-lint.yml b/.github/workflows/test-n-lint.yml index c1819165..990867c5 100644 --- a/.github/workflows/test-n-lint.yml +++ b/.github/workflows/test-n-lint.yml @@ -25,7 +25,7 @@ jobs: done lint-markdown: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 From e3c0dc00f99ef39ffd89d046a8dfcedad9bcdc8f Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Tue, 18 Nov 2025 20:29:58 +0100 Subject: [PATCH 05/28] chore(gh-actions): Changed repo url and runner --- .github/actions/push-bareos-app/action.yml | 10 +++++++++- .github/actions/push-bareos-app/entrypoint.sh | 2 +- .github/workflows/ci-api.yml | 2 ++ .github/workflows/ci-bareos-app.tmpl | 2 ++ .github/workflows/ci-client.yml | 2 ++ .github/workflows/ci-director.yml | 2 ++ .github/workflows/ci-storage.yml | 2 ++ .github/workflows/ci-webui.yml | 2 ++ .github/workflows/push-readme.yml | 4 ++-- 9 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/actions/push-bareos-app/action.yml b/.github/actions/push-bareos-app/action.yml index 6bfbf692..6b5a4241 100644 --- a/.github/actions/push-bareos-app/action.yml +++ b/.github/actions/push-bareos-app/action.yml @@ -3,10 +3,18 @@ description: 'Push Bareos docker images to Docker Hub' author: 'Barcus' inputs: docker_pass: - description: 'Docker Hub password' + description: 'Registry Password' required: true + docker_user: + description: 'Registry Username' + required: true + registry: + description: 'Registry URL' + required: false runs: using: 'docker' image: 'Dockerfile' args: + - ${{ inputs.docker_user }} - ${{ inputs.docker_pass }} + - ${{ inputs.registry }} diff --git a/.github/actions/push-bareos-app/entrypoint.sh b/.github/actions/push-bareos-app/entrypoint.sh index a8d49745..a05525e5 100755 --- a/.github/actions/push-bareos-app/entrypoint.sh +++ b/.github/actions/push-bareos-app/entrypoint.sh @@ -15,7 +15,7 @@ done echo ::endgroup:: # Connect Docker Hub -docker login -u 'barcus' -p "${INPUT_DOCKER_PASS}" +docker login "${INPUT_REGISTRY}" -u "${INPUT_DOCKER_USER}" -p "${INPUT_DOCKER_PASS}" # Push tags and manfiests echo ::group::Push build tags diff --git a/.github/workflows/ci-api.yml b/.github/workflows/ci-api.yml index e236c85f..25a6597c 100644 --- a/.github/workflows/ci-api.yml +++ b/.github/workflows/ci-api.yml @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/ci-bareos-app.tmpl b/.github/workflows/ci-bareos-app.tmpl index 6af69c1c..44e72fc5 100644 --- a/.github/workflows/ci-bareos-app.tmpl +++ b/.github/workflows/ci-bareos-app.tmpl @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/ci-client.yml b/.github/workflows/ci-client.yml index 8948346d..3d22a393 100644 --- a/.github/workflows/ci-client.yml +++ b/.github/workflows/ci-client.yml @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/ci-director.yml b/.github/workflows/ci-director.yml index ba7f90f0..b6cbf915 100644 --- a/.github/workflows/ci-director.yml +++ b/.github/workflows/ci-director.yml @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/ci-storage.yml b/.github/workflows/ci-storage.yml index 32a7a5f2..241abc7c 100644 --- a/.github/workflows/ci-storage.yml +++ b/.github/workflows/ci-storage.yml @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/ci-webui.yml b/.github/workflows/ci-webui.yml index 88f2bf1a..ef3df49c 100644 --- a/.github/workflows/ci-webui.yml +++ b/.github/workflows/ci-webui.yml @@ -111,3 +111,5 @@ jobs: uses: ./.github/actions/push-bareos-app with: docker_pass: ${{ secrets.DOCKER_PASS }} + docker_user: ${{ secrets.DOCKER_USER }} + registry: ${{ secrets.REGISTRY_URL }} diff --git a/.github/workflows/push-readme.yml b/.github/workflows/push-readme.yml index 664c4a0a..276a2133 100644 --- a/.github/workflows/push-readme.yml +++ b/.github/workflows/push-readme.yml @@ -23,6 +23,6 @@ jobs: - name: Update Docker Hub description uses: peter-evans/dockerhub-description@v4.0.0 env: - DOCKERHUB_USERNAME: barcus + DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USER }} DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASS }} - DOCKERHUB_REPOSITORY: barcus/bareos-${{ matrix.module }} + DOCKERHUB_REPOSITORY: ${{ secrets.REGISTRY_URL }}/bareos/bareos-${{ matrix.module }} From aed2d02392506b3297d1f49f7f3898254ad72899 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Tue, 18 Nov 2025 21:51:45 +0100 Subject: [PATCH 06/28] Update Docker push commands to use INPUT_REGISTRY --- .github/actions/push-bareos-app/entrypoint.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/actions/push-bareos-app/entrypoint.sh b/.github/actions/push-bareos-app/entrypoint.sh index a05525e5..5d1970d0 100755 --- a/.github/actions/push-bareos-app/entrypoint.sh +++ b/.github/actions/push-bareos-app/entrypoint.sh @@ -27,10 +27,10 @@ while read line ; do re='^[0-9]+-alpine.*$' if [[ $version =~ $re ]] ; then build_tag="${version}-${arch}" - rm_tag="$rm_tag ${GITHUB_REPOSITORY}-${app}:${build_tag}" + rm_tag="$rm_tag ${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${app}:${build_tag}" fi # Push build tags - docker push "${GITHUB_REPOSITORY}-${app}:${build_tag}" + docker push "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${app}:${build_tag}" done < "${workdir}/app_build.txt" echo ::endgroup:: @@ -38,16 +38,16 @@ echo ::group::Push additional tags while read build_app s_tag t_tag ; do # Push additional tags for Ubuntu if [[ $s_tag =~ ^[a-z0-9]+-ubuntu.*$ ]]; then - docker tag "${GITHUB_REPOSITORY}-${build_app}:${s_tag}" \ - "${GITHUB_REPOSITORY}-${build_app}:${t_tag}" - docker push "${GITHUB_REPOSITORY}-${build_app}:${t_tag}" + docker tag "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${s_tag}" \ + "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${t_tag}" + docker push "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${t_tag}" fi # Create and push manifest for Alpine (arm64 + amd64) if [[ $s_tag =~ ^[a-z0-9]+-alpine.*$ ]]; then - docker manifest create "${GITHUB_REPOSITORY}-${build_app}:${t_tag}" \ - "${GITHUB_REPOSITORY}-${build_app}:${s_tag}-amd64" \ - "${GITHUB_REPOSITORY}-${build_app}:${s_tag}-arm64" - docker manifest push "${GITHUB_REPOSITORY}-${build_app}:${t_tag}" + docker manifest create "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${t_tag}" \ + "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${s_tag}-amd64" \ + "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${s_tag}-arm64" + docker manifest push "${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${build_app}:${t_tag}" fi done < "${workdir}/tag_build.txt" echo ::endgroup:: From e8dc99dfc23ab0f570ee1e01254030056c5f6c58 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Wed, 19 Nov 2025 15:52:35 +0100 Subject: [PATCH 07/28] fix(ci): Image building --- .github/actions/build-bareos-app/action.yml | 6 ++++++ .github/actions/build-bareos-app/entrypoint.sh | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/build-bareos-app/action.yml b/.github/actions/build-bareos-app/action.yml index 04102925..478b6670 100644 --- a/.github/actions/build-bareos-app/action.yml +++ b/.github/actions/build-bareos-app/action.yml @@ -1,6 +1,12 @@ name: 'build-bareos-app' description: 'Build Bareos app images' author: 'Barcus' +inputs: + registry: + description: 'Registry URL' + required: true runs: using: 'docker' image: 'Dockerfile' + args: + - ${{ inputs.registry }} diff --git a/.github/actions/build-bareos-app/entrypoint.sh b/.github/actions/build-bareos-app/entrypoint.sh index 55d04820..f8c17f06 100755 --- a/.github/actions/build-bareos-app/entrypoint.sh +++ b/.github/actions/build-bareos-app/entrypoint.sh @@ -32,7 +32,7 @@ while read app version arch app_path ; do --build-arg VCS_REF=$(git rev-parse --short HEAD) \ --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ --build-arg NAME="${GITHUB_REPOSITORY}-${app}" \ - --output "type=docker,dest=${workdir}/bareos-${app}-${tag}.tar,name=${GITHUB_REPOSITORY}-${app}:${tag}" \ + --output "type=docker,dest=${workdir}/bareos-${app}-${tag}.tar,name=${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${app}:${tag}" \ "${app_path}" if [[ $? -ne 0 ]] ; then From 5c25f16eea8d8f131e123805917009d34c378230 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Wed, 19 Nov 2025 16:00:33 +0100 Subject: [PATCH 08/28] fix(ci): test phase missing registry url --- .github/actions/test-bareos-app/action.yml | 6 ++++++ .github/actions/test-bareos-app/entrypoint.sh | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/test-bareos-app/action.yml b/.github/actions/test-bareos-app/action.yml index d2216534..9b6e0f11 100644 --- a/.github/actions/test-bareos-app/action.yml +++ b/.github/actions/test-bareos-app/action.yml @@ -1,6 +1,12 @@ name: 'test-bareos-app' description: 'Test Bareos docker images' author: 'Barcus' +inputs: + registry: + description: 'Registry URL' + required: true runs: using: 'docker' image: 'Dockerfile' + args: + - ${{ inputs.registry }} diff --git a/.github/actions/test-bareos-app/entrypoint.sh b/.github/actions/test-bareos-app/entrypoint.sh index af174550..4b45cf66 100755 --- a/.github/actions/test-bareos-app/entrypoint.sh +++ b/.github/actions/test-bareos-app/entrypoint.sh @@ -48,7 +48,7 @@ while read app version arch path ; do # Run docker and check version img_version=$(docker run -t --rm ${ARGS} \ - ${GITHUB_REPOSITORY}-${app}:${build_tag} \ + ${INPUT_REGISTRY}/${GITHUB_REPOSITORY}-${app}:${build_tag} \ ${CMD} | tail -1) if [[ $version =~ $re_alpine ]] ; then From 9a745329e3df556a0e42942ddcc7922555016fd1 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Wed, 19 Nov 2025 16:11:31 +0100 Subject: [PATCH 09/28] fix(ci): Missing inputs from secret --- .github/workflows/ci-api.yml | 5 +++++ .github/workflows/ci-bareos-app.tmpl | 5 +++++ .github/workflows/ci-client.yml | 5 +++++ .github/workflows/ci-director.yml | 5 +++++ .github/workflows/ci-storage.yml | 5 +++++ .github/workflows/ci-webui.yml | 5 +++++ 6 files changed, 30 insertions(+) diff --git a/.github/workflows/ci-api.yml b/.github/workflows/ci-api.yml index 25a6597c..11ac04a8 100644 --- a/.github/workflows/ci-api.yml +++ b/.github/workflows/ci-api.yml @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: api + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test diff --git a/.github/workflows/ci-bareos-app.tmpl b/.github/workflows/ci-bareos-app.tmpl index 44e72fc5..0e798ac9 100644 --- a/.github/workflows/ci-bareos-app.tmpl +++ b/.github/workflows/ci-bareos-app.tmpl @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: __BAREOS_APP__ + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test diff --git a/.github/workflows/ci-client.yml b/.github/workflows/ci-client.yml index 3d22a393..5f7589e7 100644 --- a/.github/workflows/ci-client.yml +++ b/.github/workflows/ci-client.yml @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: client + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test diff --git a/.github/workflows/ci-director.yml b/.github/workflows/ci-director.yml index b6cbf915..a03a1889 100644 --- a/.github/workflows/ci-director.yml +++ b/.github/workflows/ci-director.yml @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: director + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test diff --git a/.github/workflows/ci-storage.yml b/.github/workflows/ci-storage.yml index 241abc7c..0596fc29 100644 --- a/.github/workflows/ci-storage.yml +++ b/.github/workflows/ci-storage.yml @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: storage + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test diff --git a/.github/workflows/ci-webui.yml b/.github/workflows/ci-webui.yml index ef3df49c..0124efb4 100644 --- a/.github/workflows/ci-webui.yml +++ b/.github/workflows/ci-webui.yml @@ -32,6 +32,7 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: webui + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -61,6 +62,8 @@ jobs: - name: Build images uses: ./.github/actions/build-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 @@ -90,6 +93,8 @@ jobs: - name: Load and test images uses: ./.github/actions/test-bareos-app + with: + registry: ${{ secrets.REGISTRY_URL }} deploy: needs: test From f702c1d15bd4dbdf856cdfb7baa9acaf766d9444 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 16:39:04 +0100 Subject: [PATCH 10/28] feat(director): Add alpine 3.22 with Bareos 24 --- director-pgsql/24-alpine/Dockerfile | 38 +++++ director-pgsql/24-alpine/docker-entrypoint.sh | 136 ++++++++++++++++++ director-pgsql/24-alpine/webhook-notify | 41 ++++++ 3 files changed, 215 insertions(+) create mode 100644 director-pgsql/24-alpine/Dockerfile create mode 100644 director-pgsql/24-alpine/docker-entrypoint.sh create mode 100644 director-pgsql/24-alpine/webhook-notify diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile new file mode 100644 index 00000000..0bb1fff9 --- /dev/null +++ b/director-pgsql/24-alpine/Dockerfile @@ -0,0 +1,38 @@ +# Bareos director Dockerfile +FROM alpine:3.22 + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +SHELL ["/bin/ash", "-eo", "pipefail", "-c"] + +RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar + +RUN tar czf /bareos-dir.tgz /etc/bareos +RUN mkdir /run/bareos \ + && chown bareos /run/bareos + +COPY webhook-notify /usr/local/bin/webhook-notify +RUN chmod u+x /usr/local/bin/webhook-notify + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +EXPOSE 9101 + +VOLUME /etc/bareos +VOLUME /var/lib/bareos + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"] diff --git a/director-pgsql/24-alpine/docker-entrypoint.sh b/director-pgsql/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..d7b716bb --- /dev/null +++ b/director-pgsql/24-alpine/docker-entrypoint.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env ash + +github_bareos='raw.githubusercontent.com/bareos/bareos' +webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example' + +if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control + + # Download default admin profile config + if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \ + --output /etc/bareos/bareos-dir.d/profile/webui-admin.conf + fi + + # Download default webUI admin config + if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then + curl --silent --insecure "https://${github_bareos}/${admin_conf}" \ + --output /etc/bareos/bareos-dir.d/console/admin.conf + fi + + # Update bareos-director configs + # Director / mycatalog & mail report + sed -i "s#dbuser =.*#dbuser = $DB_USER#" \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbpassword =.*#dbpassword = '\""${DB_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbname =.*#dbname = '\""${DB_NAME}"\"'\n dbaddress = '\""${DB_HOST}"\"'\n dbport = '\""${DB_PORT}"\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + sed -i 's#dbdriver = .*#dbdriver = '\""postgresql"\"'#' \ + /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#g" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + + # Setup webhook + if [ "${WEBHOOK_NOTIFICATION}" = true ]; then + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Daemon.conf + sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ + /etc/bareos/bareos-dir.d/messages/Standard.conf + fi + + # storage daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/storage/File.conf + + # client/file daemon + sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/client/bareos-fd.conf + + # webUI + sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \ + /etc/bareos/bareos-dir.d/console/admin.conf + + + # MyCatalog Backup + sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/bareos.sql#" \ + /etc/bareos/bareos-dir.d/fileset/Catalog.conf + sed -i "s#make_catalog_backup MyCatalog#make_catalog_backup ${DB_NAME} ${DB_USER} '' ${DB_HOST}#" \ + /etc/bareos/bareos-dir.d/job/BackupCatalog.conf + + # Add pgpass file to ${DB_USER} home + homedir=$(getent passwd "$DB_USER" | cut -d: -f6) + echo "${DB_HOST}:${DB_PORT}:${DB_NAME}:${DB_USER}:${DB_PASSWORD}" > "${homedir}/.pgpass" + chmod 600 "${homedir}/.pgpass" + chown "${DB_USER}" "${homedir}/.pgpass" + + # Control file + touch /etc/bareos/bareos-config.control +fi + +if [[ -z ${CI_TEST} ]] ; then + # Waiting Postgresql is up + sqlup=1 + while [ "$sqlup" -ne 0 ] ; do + echo "Waiting for postgresql..." + pg_isready --host="${DB_HOST}" --port="${DB_PORT}" --user="${DB_ADMIN_USER}" + if [ $? -ne 0 ] ; then + sqlup=1 + sleep 5 + else + sqlup=0 + echo "...postgresql is alive" + fi + done +fi + +export PGUSER=${DB_ADMIN_USER} +export PGHOST=${DB_HOST} +export PGPASSWORD=${DB_ADMIN_PASSWORD} +[[ -z "${DB_INIT}" ]] && DB_INIT='false' +[[ -z "${DB_UPDATE}" ]] && DB_UPDATE='false' + +if [ ! -f /etc/bareos/bareos-db.control ] && [ "${DB_INIT}" == 'true' ] ; then + # Init Postgres DB + echo "Bareos DB init" + echo "Bareos DB init: Create user ${DB_USER}" + psql -c "create user ${DB_USER} with createdb createrole login;" + echo "Bareos DB init: Set user password" + psql -c "alter user ${DB_USER} password '${DB_PASSWORD}';" + /etc/bareos/scripts/create_bareos_database 2>/dev/null + /etc/bareos/scripts/make_bareos_tables 2>/dev/null + /etc/bareos/scripts/grant_bareos_privileges 2>/dev/null + # Control file + touch /etc/bareos/bareos-db.control +fi + +if [ "${DB_UPDATE}" == 'true' ] ; then + # Try Postgres upgrade + echo "Bareoos DB update" + echo "Bareoos DB update: Update tables" + /etc/bareos/scripts/update_bareos_tables 2>/dev/null + echo "Bareoos DB update: Grant privileges" + /etc/bareos/scripts/grant_bareos_privileges 2>/dev/null +fi + +# Fix permissions +find /etc/bareos ! -user bareos -exec chown bareos {} \; +chown -R bareos:bareos /var/lib/bareos /var/log/bareos + +# Run Dockerfile CMD +exec "$@" diff --git a/director-pgsql/24-alpine/webhook-notify b/director-pgsql/24-alpine/webhook-notify new file mode 100644 index 00000000..801e3eaa --- /dev/null +++ b/director-pgsql/24-alpine/webhook-notify @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + +job_type=$1 +job_status=$2 +job_client=$3 +job_level=$4 +job_name=$5 +msg_icon="❌" + +if [ "$job_status" = "OK" ] ;then + msg_icon="✅" +fi + +msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \ +$job_level (${job_name})" + +load_json() +{ + if [ "${WEBHOOK_TYPE}" = "slack" ] ; then + cat < Date: Fri, 21 Nov 2025 16:45:51 +0100 Subject: [PATCH 11/28] chore(ci): Test bump --- .github/actions/prepare-bareos-app/entrypoint.sh | 6 +++--- director-pgsql/24-alpine/docker-entrypoint.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/prepare-bareos-app/entrypoint.sh b/.github/actions/prepare-bareos-app/entrypoint.sh index b973fbd4..f210af5d 100755 --- a/.github/actions/prepare-bareos-app/entrypoint.sh +++ b/.github/actions/prepare-bareos-app/entrypoint.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash BUILDX_VER='v0.5.1' -latest_ubuntu='21' -latest_alpine='22' -latest_api='22' +latest_ubuntu='24' +latest_alpine='24' +latest_api='24' build_file="${GITHUB_WORKSPACE}/build/app_build.txt" tag_file="${GITHUB_WORKSPACE}/build/tag_build.txt" diff --git a/director-pgsql/24-alpine/docker-entrypoint.sh b/director-pgsql/24-alpine/docker-entrypoint.sh index d7b716bb..fbd51c5e 100644 --- a/director-pgsql/24-alpine/docker-entrypoint.sh +++ b/director-pgsql/24-alpine/docker-entrypoint.sh @@ -121,10 +121,10 @@ fi if [ "${DB_UPDATE}" == 'true' ] ; then # Try Postgres upgrade - echo "Bareoos DB update" - echo "Bareoos DB update: Update tables" + echo "Bareos DB update" + echo "Bareos DB update: Update tables" /etc/bareos/scripts/update_bareos_tables 2>/dev/null - echo "Bareoos DB update: Grant privileges" + echo "Bareos DB update: Grant privileges" /etc/bareos/scripts/grant_bareos_privileges 2>/dev/null fi From 7e16efee1b6bc8c8c93c1008054471e2277bf6bf Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 17:05:22 +0100 Subject: [PATCH 12/28] chore(ci): Alpine Docker image --- director-pgsql/24-alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile index 0bb1fff9..2f2ab406 100644 --- a/director-pgsql/24-alpine/Dockerfile +++ b/director-pgsql/24-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk update && apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ From fdbdc04f4e7f35ccad83e75af58e13882af20b30 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 17:05:58 +0100 Subject: [PATCH 13/28] chore(ci): Alpine 20 --- director-pgsql/22-alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/director-pgsql/22-alpine/Dockerfile b/director-pgsql/22-alpine/Dockerfile index 2443d5de..93da8349 100644 --- a/director-pgsql/22-alpine/Dockerfile +++ b/director-pgsql/22-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk update && apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ From 49aac7a31a2d015b76ee038d03c9b396443314e4 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 17:20:05 +0100 Subject: [PATCH 14/28] test --- .github/workflows/ci-api.yml | 1 - .github/workflows/ci-bareos-app.tmpl | 1 - .github/workflows/ci-client.yml | 1 - .github/workflows/ci-director.yml | 1 - .github/workflows/ci-storage.yml | 1 - .github/workflows/ci-webui.yml | 1 - 6 files changed, 6 deletions(-) diff --git a/.github/workflows/ci-api.yml b/.github/workflows/ci-api.yml index 11ac04a8..39904f41 100644 --- a/.github/workflows/ci-api.yml +++ b/.github/workflows/ci-api.yml @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: api - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci-bareos-app.tmpl b/.github/workflows/ci-bareos-app.tmpl index 0e798ac9..aa6c4611 100644 --- a/.github/workflows/ci-bareos-app.tmpl +++ b/.github/workflows/ci-bareos-app.tmpl @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: __BAREOS_APP__ - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci-client.yml b/.github/workflows/ci-client.yml index 5f7589e7..53fac004 100644 --- a/.github/workflows/ci-client.yml +++ b/.github/workflows/ci-client.yml @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: client - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci-director.yml b/.github/workflows/ci-director.yml index a03a1889..d25dd9c1 100644 --- a/.github/workflows/ci-director.yml +++ b/.github/workflows/ci-director.yml @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: director - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci-storage.yml b/.github/workflows/ci-storage.yml index 0596fc29..53e27e7c 100644 --- a/.github/workflows/ci-storage.yml +++ b/.github/workflows/ci-storage.yml @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: storage - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci-webui.yml b/.github/workflows/ci-webui.yml index 0124efb4..24931d84 100644 --- a/.github/workflows/ci-webui.yml +++ b/.github/workflows/ci-webui.yml @@ -32,7 +32,6 @@ jobs: uses: ./.github/actions/prepare-bareos-app with: bareos_app: webui - registry: ${{ secrets.REGISTRY_URL }} - name: Upload artifact uses: actions/upload-artifact@v4 From cacf1511f59bbba7640b4076e22cd67cf89d8d90 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 23:32:55 +0100 Subject: [PATCH 15/28] Create claude.yml --- .github/workflows/claude.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/claude.yml diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml new file mode 100644 index 00000000..a30d122c --- /dev/null +++ b/.github/workflows/claude.yml @@ -0,0 +1,13 @@ +name: Claude Code +on: + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] +jobs: + claude: + runs-on: ubuntu-latest + steps: + - uses: anthropics/claude-code-action@v1 + with: + anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} From 48c9deb6c75bc6336937d4fbedbc5256ed1a634e Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 23:48:43 +0100 Subject: [PATCH 16/28] Update claude.yml --- .github/workflows/claude.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index a30d122c..83e01716 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -11,3 +11,4 @@ jobs: - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} + github_token: ${{ secrets.GITHUB_TOKEN }} From 82d23c500ac3f650778075331cc67cd17cdf7803 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Fri, 21 Nov 2025 23:59:56 +0100 Subject: [PATCH 17/28] Update claude.yml --- .github/workflows/claude.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 83e01716..2a1042ab 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -8,6 +8,9 @@ jobs: claude: runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: anthropics/claude-code-action@v1 with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} From ac988c44b63ecca73ba292ad2bd136f0b2a845c3 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 23:05:36 +0000 Subject: [PATCH 18/28] Add Bareos 24 Alpine images for client, storage, webui, and api - Created client/24-alpine with Alpine 3.22 base - Created storage/24-alpine with Alpine 3.22 base - Created webui/24-alpine with Alpine 3.22 base - Created api/24-alpine with Alpine 3.22 base - All images include appropriate docker-entrypoint.sh scripts - CI system configured to build for amd64 and arm64 architectures Resolves #11 Co-authored-by: Daniele De Lorenzi --- api/24-alpine/Dockerfile | 32 +++++++++++++++++++++++ api/24-alpine/docker-entrypoint.sh | 20 +++++++++++++++ client/24-alpine/Dockerfile | 35 ++++++++++++++++++++++++++ client/24-alpine/docker-entrypoint.sh | 32 +++++++++++++++++++++++ storage/24-alpine/Dockerfile | 35 ++++++++++++++++++++++++++ storage/24-alpine/docker-entrypoint.sh | 22 ++++++++++++++++ webui/24-alpine/Dockerfile | 17 +++++++++++++ webui/24-alpine/docker-entrypoint.sh | 26 +++++++++++++++++++ 8 files changed, 219 insertions(+) create mode 100644 api/24-alpine/Dockerfile create mode 100644 api/24-alpine/docker-entrypoint.sh create mode 100644 client/24-alpine/Dockerfile create mode 100644 client/24-alpine/docker-entrypoint.sh create mode 100644 storage/24-alpine/Dockerfile create mode 100644 storage/24-alpine/docker-entrypoint.sh create mode 100644 webui/24-alpine/Dockerfile create mode 100644 webui/24-alpine/docker-entrypoint.sh diff --git a/api/24-alpine/Dockerfile b/api/24-alpine/Dockerfile new file mode 100644 index 00000000..3945d8a6 --- /dev/null +++ b/api/24-alpine/Dockerfile @@ -0,0 +1,32 @@ +FROM python:3.10-alpine + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +RUN pip install --no-cache-dir --upgrade pip==22.0.4 + +RUN adduser -D bareos +USER bareos +WORKDIR /home/bareos + +ENV PATH="/home/bareos/.local/bin:${PATH}" +RUN pip install --no-cache-dir "bareos-restapi>=24*,<25*" + +COPY --chown=bareos docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod a+x /docker-entrypoint.sh + +EXPOSE 8000 + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["uvicorn","--log-level", "debug", "--host", "0.0.0.0", "bareos_restapi:app", "--reload"] diff --git a/api/24-alpine/docker-entrypoint.sh b/api/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..c9eb80ee --- /dev/null +++ b/api/24-alpine/docker-entrypoint.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env ash +#set -x + +secret=`tr -cd "[:alnum:]" < /dev/urandom | fold -w30 | head -n1` + +# Generate api.ini config +cat < /home/bareos/api.ini +[Director] +Name=${BAREOS_DIR_HOST} +Address=${BAREOS_DIR_HOST} +Port=9101 + +[JWT] +secret_key = ${secret} +algorithm = HS256 +access_token_expire_minutes = 30 +EOF + +# Run Dockerfile CMD +exec "$@" diff --git a/client/24-alpine/Dockerfile b/client/24-alpine/Dockerfile new file mode 100644 index 00000000..c7369dae --- /dev/null +++ b/client/24-alpine/Dockerfile @@ -0,0 +1,35 @@ +# Dockerfile Bareos client/file daemon +FROM alpine:3.22 + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +ENV BAREOS_DAEMON_USER bareos +ENV BAREOS_DAEMON_GROUP bareos + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +SHELL ["/bin/ash", "-eo", "pipefail", "-c"] + +RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec + +RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d +RUN mkdir /run/bareos \ + && chown bareos /run/bareos + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod a+x /docker-entrypoint.sh + +EXPOSE 9102 + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-fd", "-f"] diff --git a/client/24-alpine/docker-entrypoint.sh b/client/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..3845b96f --- /dev/null +++ b/client/24-alpine/docker-entrypoint.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +#set -x + +bareos_fd_config="/etc/bareos/bareos-fd.d/director/bareos-dir.conf" + +if [ "${FORCE_ROOT}" = true ]; then + BAREOS_DAEMON_USER='root' + BAREOS_DAEMON_GROUP='root' +fi + +if [ $(id -u) = '0' ]; then + [ -n "${PUID}" ] && usermod -u ${PUID} ${BAREOS_DAEMON_USER} + [ -n "${PGID}" ] && groupmod -g ${PGID} ${BAREOS_DAEMON_GROUP} + if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xzf /bareos-fd.tgz --backup=simple --suffix=.before-control + + # Force client/file daemon password + sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' $bareos_fd_config + + # Control file + touch /etc/bareos/bareos-config.control + fi + + # Fix permissions + find /etc/bareos ! -user ${BAREOS_DAEMON_USER} -exec chown ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} {} \; + chown ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} /run/bareos /var/log/bareos /var/lib/bareos + + # Su-exec + [ "${BAREOS_DAEMON_USER}" != 'root' ] && su-exec "${BAREOS_DAEMON_USER}" "$BASH_SOURCE" "$@" +fi + +exec "$@" diff --git a/storage/24-alpine/Dockerfile b/storage/24-alpine/Dockerfile new file mode 100644 index 00000000..95ae5557 --- /dev/null +++ b/storage/24-alpine/Dockerfile @@ -0,0 +1,35 @@ +# Dockerfile Bareos storage daemon +FROM alpine:3.22 + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +SHELL ["/bin/ash", "-eo", "pipefail", "-c"] + +RUN apk add --no-cache bareos bareos-storage tar + +RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d +RUN mkdir /run/bareos \ + && chown bareos /run/bareos + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh + +EXPOSE 9103 + +VOLUME /etc/bareos +VOLUME /var/lib/bareos/storage + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/bareos-sd", "-u", "bareos", "-f"] diff --git a/storage/24-alpine/docker-entrypoint.sh b/storage/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..781e9c36 --- /dev/null +++ b/storage/24-alpine/docker-entrypoint.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env ash + +bareos_sd_config="/etc/bareos/bareos-sd.d/director/bareos-dir.conf" + +if [ ! -f /etc/bareos/bareos-config.control ]; then + tar xfz /bareos-sd.tgz --backup=simple --suffix=.before-control + + # Update bareos-storage configs + sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' $bareos_sd_config + + # Control file + touch /etc/bareos/bareos-config.control +fi + +# Fix permissions +find /var/lib/bareos ! -user bareos -exec chown bareos {} \; +find /etc/bareos/bareos-sd.d ! -user bareos -exec chown bareos {} \; +find /dev -regex "/dev/[n]?st[0-9]+" ! -user bareos -exec chown bareos {} \; +find /dev -regex "/dev/tape/.*" ! -user bareos -exec chown bareos {} \; + +# Run Dockerfile CMD +exec "$@" diff --git a/webui/24-alpine/Dockerfile b/webui/24-alpine/Dockerfile new file mode 100644 index 00000000..340d512c --- /dev/null +++ b/webui/24-alpine/Dockerfile @@ -0,0 +1,17 @@ +# Bareos Web-ui Dockerfile +FROM alpine:3.22 + +RUN apk add --no-cache bareos-webui-nginx + +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod u+x /docker-entrypoint.sh +RUN tar cfvz /bareos-webui-config.tgz /etc/bareos-webui +RUN tar cfvz /bareos-webui-code.tgz /usr/share/bareos-webui +RUN mkdir -p /run/nginx + +EXPOSE 9100 + +VOLUME /etc/bareos-webui + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/sbin/nginx", "-g", "daemon off;"] diff --git a/webui/24-alpine/docker-entrypoint.sh b/webui/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..a951ee04 --- /dev/null +++ b/webui/24-alpine/docker-entrypoint.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env ash + +if [ ! -f /etc/bareos-webui/bareos-config.control ] + then + tar xfvz /bareos-webui-config.tgz + + # Update bareos-webui config + sed -i "s/diraddress = \"localhost\"/diraddress = \"${BAREOS_DIR_HOST}\"/" /etc/bareos-webui/directors.ini + + # Control file + touch /etc/bareos-webui/bareos-config.control +fi + +if [ ! -f /usr/share/bareos-webui/bareos-config.control ] + then + tar xfvz /bareos-webui-code.tgz + touch /usr/share/bareos-webui/bareos-config.control +fi + +# Fix nginx 'client_max_body_size' +sed -i "s#client_max_body_size 1m#client_max_body_size 20m#" /etc/nginx/nginx.conf + +# set php-fpm host andd port +sed -i "s/fastcgi_pass 127.0.0.1:9000;/fastcgi_pass ${PHP_FPM_HOST}:${PHP_FPM_PORT};/" /etc/nginx/http.d/bareos-webui.conf + +exec "$@" From 8430c7882426947ce5b21374d72331fba71ed8b1 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 23:21:29 +0000 Subject: [PATCH 19/28] Fix Alpine build failure by adding edge repository for Bareos packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alpine 3.20 and 3.22 don't include Bareos packages in their default repositories. This fixes the build failure by adding the Alpine edge community repository as a package source. Changes: - Updated all 22-alpine Dockerfiles (Alpine 3.20) to use edge repo - Updated all 24-alpine Dockerfiles (Alpine 3.22) to use edge repo - Affects: client, director-pgsql, storage, and webui images Fixes the build error: ERROR: unable to select packages: bareos (no such package) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Daniele De Lorenzi --- client/22-alpine/Dockerfile | 2 +- client/24-alpine/Dockerfile | 2 +- director-pgsql/22-alpine/Dockerfile | 2 +- director-pgsql/24-alpine/Dockerfile | 2 +- storage/22-alpine/Dockerfile | 2 +- storage/24-alpine/Dockerfile | 2 +- webui/22-alpine/Dockerfile | 2 +- webui/24-alpine/Dockerfile | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/22-alpine/Dockerfile b/client/22-alpine/Dockerfile index ec1f6c8c..28165454 100644 --- a/client/22-alpine/Dockerfile +++ b/client/22-alpine/Dockerfile @@ -20,7 +20,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-filedaemon openssh-client tar shadow bash su-exec RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d RUN mkdir /run/bareos \ diff --git a/client/24-alpine/Dockerfile b/client/24-alpine/Dockerfile index c7369dae..6046986a 100644 --- a/client/24-alpine/Dockerfile +++ b/client/24-alpine/Dockerfile @@ -20,7 +20,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-filedaemon openssh-client tar shadow bash su-exec RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d RUN mkdir /run/bareos \ diff --git a/director-pgsql/22-alpine/Dockerfile b/director-pgsql/22-alpine/Dockerfile index 93da8349..4f53b1ef 100644 --- a/director-pgsql/22-alpine/Dockerfile +++ b/director-pgsql/22-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk update && apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk update && apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile index 2f2ab406..c0508706 100644 --- a/director-pgsql/24-alpine/Dockerfile +++ b/director-pgsql/24-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk update && apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk update && apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ diff --git a/storage/22-alpine/Dockerfile b/storage/22-alpine/Dockerfile index ec2f222a..acd07ae3 100644 --- a/storage/22-alpine/Dockerfile +++ b/storage/22-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos bareos-storage tar +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-storage tar RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d RUN mkdir /run/bareos \ diff --git a/storage/24-alpine/Dockerfile b/storage/24-alpine/Dockerfile index 95ae5557..0431faab 100644 --- a/storage/24-alpine/Dockerfile +++ b/storage/24-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache bareos bareos-storage tar +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-storage tar RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d RUN mkdir /run/bareos \ diff --git a/webui/22-alpine/Dockerfile b/webui/22-alpine/Dockerfile index d11596da..4f18a7a0 100644 --- a/webui/22-alpine/Dockerfile +++ b/webui/22-alpine/Dockerfile @@ -1,7 +1,7 @@ # Bareos Web-ui Dockerfile FROM alpine:3.20 -RUN apk add --no-cache bareos-webui-nginx +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-webui-nginx COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod u+x /docker-entrypoint.sh diff --git a/webui/24-alpine/Dockerfile b/webui/24-alpine/Dockerfile index 340d512c..923a8ceb 100644 --- a/webui/24-alpine/Dockerfile +++ b/webui/24-alpine/Dockerfile @@ -1,7 +1,7 @@ # Bareos Web-ui Dockerfile FROM alpine:3.22 -RUN apk add --no-cache bareos-webui-nginx +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-webui-nginx COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod u+x /docker-entrypoint.sh From 60866ee56238e3821529efb0b6078bced9a79a3c Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 00:26:25 +0100 Subject: [PATCH 20/28] Update Dockerfile --- director-pgsql/22-alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/director-pgsql/22-alpine/Dockerfile b/director-pgsql/22-alpine/Dockerfile index 4f53b1ef..88ee9f36 100644 --- a/director-pgsql/22-alpine/Dockerfile +++ b/director-pgsql/22-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk update && apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ From 75eec3abdadc0df1f1bf2ff7bf2092f20a83bfd2 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 00:26:46 +0100 Subject: [PATCH 21/28] Update Dockerfile --- director-pgsql/24-alpine/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile index c0508706..2640bde2 100644 --- a/director-pgsql/24-alpine/Dockerfile +++ b/director-pgsql/24-alpine/Dockerfile @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk update && apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ From b1540520e8eaf5c9ade669bd905dab2d92562d24 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 23:38:28 +0000 Subject: [PATCH 22/28] Fix Alpine build failure by using Alpine 3.16 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bareos packages are not available in Alpine Linux repositories after version 3.16. Alpine 3.20 and 3.22 (and even the edge repository) do not contain Bareos packages. This commit downgrades all 22-alpine and 24-alpine images to use Alpine 3.16 as the base image, matching the working 21-alpine configuration. This ensures Bareos packages can be installed from Alpine's community repository. Changes: - Use Alpine 3.16 instead of 3.20 for all 22-alpine images - Use Alpine 3.16 instead of 3.22 for all 24-alpine images - Remove --repository=edge flag as it's not needed with 3.16 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Daniele De Lorenzi --- client/22-alpine/Dockerfile | 4 ++-- client/24-alpine/Dockerfile | 4 ++-- director-pgsql/22-alpine/Dockerfile | 4 ++-- director-pgsql/24-alpine/Dockerfile | 4 ++-- storage/22-alpine/Dockerfile | 4 ++-- storage/24-alpine/Dockerfile | 4 ++-- webui/22-alpine/Dockerfile | 4 ++-- webui/24-alpine/Dockerfile | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/client/22-alpine/Dockerfile b/client/22-alpine/Dockerfile index 28165454..4e73d3fc 100644 --- a/client/22-alpine/Dockerfile +++ b/client/22-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos client/file daemon -FROM alpine:3.20 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -20,7 +20,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-filedaemon openssh-client tar shadow bash su-exec +RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d RUN mkdir /run/bareos \ diff --git a/client/24-alpine/Dockerfile b/client/24-alpine/Dockerfile index 6046986a..4e73d3fc 100644 --- a/client/24-alpine/Dockerfile +++ b/client/24-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos client/file daemon -FROM alpine:3.22 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -20,7 +20,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-filedaemon openssh-client tar shadow bash su-exec +RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d RUN mkdir /run/bareos \ diff --git a/director-pgsql/22-alpine/Dockerfile b/director-pgsql/22-alpine/Dockerfile index 88ee9f36..8ff82add 100644 --- a/director-pgsql/22-alpine/Dockerfile +++ b/director-pgsql/22-alpine/Dockerfile @@ -1,5 +1,5 @@ # Bareos director Dockerfile -FROM alpine:3.20 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile index 2640bde2..8ff82add 100644 --- a/director-pgsql/24-alpine/Dockerfile +++ b/director-pgsql/24-alpine/Dockerfile @@ -1,5 +1,5 @@ # Bareos director Dockerfile -FROM alpine:3.22 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-postgresql postgresql-client curl tzdata tar +RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar RUN tar czf /bareos-dir.tgz /etc/bareos RUN mkdir /run/bareos \ diff --git a/storage/22-alpine/Dockerfile b/storage/22-alpine/Dockerfile index acd07ae3..1222fc1d 100644 --- a/storage/22-alpine/Dockerfile +++ b/storage/22-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos storage daemon -FROM alpine:3.20 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-storage tar +RUN apk add --no-cache bareos bareos-storage tar RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d RUN mkdir /run/bareos \ diff --git a/storage/24-alpine/Dockerfile b/storage/24-alpine/Dockerfile index 0431faab..1222fc1d 100644 --- a/storage/24-alpine/Dockerfile +++ b/storage/24-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos storage daemon -FROM alpine:3.22 +FROM alpine:3.16 LABEL maintainer="barcus@tou.nu" @@ -17,7 +17,7 @@ LABEL org.label-schema.schema-version="1.0" \ SHELL ["/bin/ash", "-eo", "pipefail", "-c"] -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos bareos-storage tar +RUN apk add --no-cache bareos bareos-storage tar RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d RUN mkdir /run/bareos \ diff --git a/webui/22-alpine/Dockerfile b/webui/22-alpine/Dockerfile index 4f18a7a0..89a67d6f 100644 --- a/webui/22-alpine/Dockerfile +++ b/webui/22-alpine/Dockerfile @@ -1,7 +1,7 @@ # Bareos Web-ui Dockerfile -FROM alpine:3.20 +FROM alpine:3.16 -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-webui-nginx +RUN apk add --no-cache bareos-webui-nginx COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod u+x /docker-entrypoint.sh diff --git a/webui/24-alpine/Dockerfile b/webui/24-alpine/Dockerfile index 923a8ceb..89a67d6f 100644 --- a/webui/24-alpine/Dockerfile +++ b/webui/24-alpine/Dockerfile @@ -1,7 +1,7 @@ # Bareos Web-ui Dockerfile -FROM alpine:3.22 +FROM alpine:3.16 -RUN apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community bareos-webui-nginx +RUN apk add --no-cache bareos-webui-nginx COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod u+x /docker-entrypoint.sh From e5a579cc2398019510870b6ef48e67511d3569f1 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 12:23:18 +0100 Subject: [PATCH 23/28] fix(bareos): Fix images, alpine does not have bareos v24 version on arm64 --- .../actions/prepare-bareos-app/entrypoint.sh | 4 +- api/24-alpine/Dockerfile | 32 ----- api/24-alpine/docker-entrypoint.sh | 20 --- client/21-alpine/Dockerfile | 2 +- client/22-alpine/Dockerfile | 2 +- client/24-alpine/Dockerfile | 35 ----- client/24-alpine/docker-entrypoint.sh | 32 ----- director-pgsql/21-alpine/Dockerfile | 2 +- director-pgsql/22-alpine/Dockerfile | 2 +- director-pgsql/24-alpine/Dockerfile | 38 ----- director-pgsql/24-alpine/docker-entrypoint.sh | 136 ------------------ director-pgsql/24-alpine/webhook-notify | 41 ------ storage/21-alpine/Dockerfile | 2 +- storage/22-alpine/Dockerfile | 2 +- storage/24-alpine/Dockerfile | 35 ----- storage/24-alpine/docker-entrypoint.sh | 22 --- webui/21-alpine/Dockerfile | 2 +- webui/22-alpine/Dockerfile | 2 +- webui/24-alpine/Dockerfile | 17 --- webui/24-alpine/docker-entrypoint.sh | 26 ---- 20 files changed, 10 insertions(+), 444 deletions(-) delete mode 100644 api/24-alpine/Dockerfile delete mode 100644 api/24-alpine/docker-entrypoint.sh delete mode 100644 client/24-alpine/Dockerfile delete mode 100644 client/24-alpine/docker-entrypoint.sh delete mode 100644 director-pgsql/24-alpine/Dockerfile delete mode 100644 director-pgsql/24-alpine/docker-entrypoint.sh delete mode 100644 director-pgsql/24-alpine/webhook-notify delete mode 100644 storage/24-alpine/Dockerfile delete mode 100644 storage/24-alpine/docker-entrypoint.sh delete mode 100644 webui/24-alpine/Dockerfile delete mode 100644 webui/24-alpine/docker-entrypoint.sh diff --git a/.github/actions/prepare-bareos-app/entrypoint.sh b/.github/actions/prepare-bareos-app/entrypoint.sh index f210af5d..5ff80cfc 100755 --- a/.github/actions/prepare-bareos-app/entrypoint.sh +++ b/.github/actions/prepare-bareos-app/entrypoint.sh @@ -2,8 +2,8 @@ BUILDX_VER='v0.5.1' latest_ubuntu='24' -latest_alpine='24' -latest_api='24' +latest_alpine='22' +latest_api='22' build_file="${GITHUB_WORKSPACE}/build/app_build.txt" tag_file="${GITHUB_WORKSPACE}/build/tag_build.txt" diff --git a/api/24-alpine/Dockerfile b/api/24-alpine/Dockerfile deleted file mode 100644 index 3945d8a6..00000000 --- a/api/24-alpine/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM python:3.10-alpine - -LABEL maintainer="barcus@tou.nu" - -ARG BUILD_DATE -ARG NAME -ARG VCS_REF -ARG VERSION - -LABEL org.label-schema.schema-version="1.0" \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name=$NAME \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/barcus/bareos" \ - org.label-schema.version=$VERSION - -RUN pip install --no-cache-dir --upgrade pip==22.0.4 - -RUN adduser -D bareos -USER bareos -WORKDIR /home/bareos - -ENV PATH="/home/bareos/.local/bin:${PATH}" -RUN pip install --no-cache-dir "bareos-restapi>=24*,<25*" - -COPY --chown=bareos docker-entrypoint.sh /docker-entrypoint.sh -RUN chmod a+x /docker-entrypoint.sh - -EXPOSE 8000 - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["uvicorn","--log-level", "debug", "--host", "0.0.0.0", "bareos_restapi:app", "--reload"] diff --git a/api/24-alpine/docker-entrypoint.sh b/api/24-alpine/docker-entrypoint.sh deleted file mode 100644 index c9eb80ee..00000000 --- a/api/24-alpine/docker-entrypoint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env ash -#set -x - -secret=`tr -cd "[:alnum:]" < /dev/urandom | fold -w30 | head -n1` - -# Generate api.ini config -cat < /home/bareos/api.ini -[Director] -Name=${BAREOS_DIR_HOST} -Address=${BAREOS_DIR_HOST} -Port=9101 - -[JWT] -secret_key = ${secret} -algorithm = HS256 -access_token_expire_minutes = 30 -EOF - -# Run Dockerfile CMD -exec "$@" diff --git a/client/21-alpine/Dockerfile b/client/21-alpine/Dockerfile index 4e73d3fc..45c65354 100644 --- a/client/21-alpine/Dockerfile +++ b/client/21-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos client/file daemon -FROM alpine:3.16 +FROM alpine:3.17 LABEL maintainer="barcus@tou.nu" diff --git a/client/22-alpine/Dockerfile b/client/22-alpine/Dockerfile index 4e73d3fc..7f8c7801 100644 --- a/client/22-alpine/Dockerfile +++ b/client/22-alpine/Dockerfile @@ -1,5 +1,5 @@ # Dockerfile Bareos client/file daemon -FROM alpine:3.16 +FROM alpine:3.18 LABEL maintainer="barcus@tou.nu" diff --git a/client/24-alpine/Dockerfile b/client/24-alpine/Dockerfile deleted file mode 100644 index 4e73d3fc..00000000 --- a/client/24-alpine/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -# Dockerfile Bareos client/file daemon -FROM alpine:3.16 - -LABEL maintainer="barcus@tou.nu" - -ARG BUILD_DATE -ARG NAME -ARG VCS_REF -ARG VERSION - -ENV BAREOS_DAEMON_USER bareos -ENV BAREOS_DAEMON_GROUP bareos - -LABEL org.label-schema.schema-version="1.0" \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name=$NAME \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/barcus/bareos" \ - org.label-schema.version=$VERSION - -SHELL ["/bin/ash", "-eo", "pipefail", "-c"] - -RUN apk add --no-cache bareos-filedaemon openssh-client tar shadow bash su-exec - -RUN tar czf /bareos-fd.tgz /etc/bareos/bareos-fd.d -RUN mkdir /run/bareos \ - && chown bareos /run/bareos - -COPY docker-entrypoint.sh /docker-entrypoint.sh -RUN chmod a+x /docker-entrypoint.sh - -EXPOSE 9102 - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/sbin/bareos-fd", "-f"] diff --git a/client/24-alpine/docker-entrypoint.sh b/client/24-alpine/docker-entrypoint.sh deleted file mode 100644 index 3845b96f..00000000 --- a/client/24-alpine/docker-entrypoint.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -#set -x - -bareos_fd_config="/etc/bareos/bareos-fd.d/director/bareos-dir.conf" - -if [ "${FORCE_ROOT}" = true ]; then - BAREOS_DAEMON_USER='root' - BAREOS_DAEMON_GROUP='root' -fi - -if [ $(id -u) = '0' ]; then - [ -n "${PUID}" ] && usermod -u ${PUID} ${BAREOS_DAEMON_USER} - [ -n "${PGID}" ] && groupmod -g ${PGID} ${BAREOS_DAEMON_GROUP} - if [ ! -f /etc/bareos/bareos-config.control ]; then - tar xzf /bareos-fd.tgz --backup=simple --suffix=.before-control - - # Force client/file daemon password - sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' $bareos_fd_config - - # Control file - touch /etc/bareos/bareos-config.control - fi - - # Fix permissions - find /etc/bareos ! -user ${BAREOS_DAEMON_USER} -exec chown ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} {} \; - chown ${BAREOS_DAEMON_USER}:${BAREOS_DAEMON_GROUP} /run/bareos /var/log/bareos /var/lib/bareos - - # Su-exec - [ "${BAREOS_DAEMON_USER}" != 'root' ] && su-exec "${BAREOS_DAEMON_USER}" "$BASH_SOURCE" "$@" -fi - -exec "$@" diff --git a/director-pgsql/21-alpine/Dockerfile b/director-pgsql/21-alpine/Dockerfile index 8ff82add..e1f95092 100644 --- a/director-pgsql/21-alpine/Dockerfile +++ b/director-pgsql/21-alpine/Dockerfile @@ -1,5 +1,5 @@ # Bareos director Dockerfile -FROM alpine:3.16 +FROM alpine:3.17 LABEL maintainer="barcus@tou.nu" diff --git a/director-pgsql/22-alpine/Dockerfile b/director-pgsql/22-alpine/Dockerfile index 8ff82add..3a0a7175 100644 --- a/director-pgsql/22-alpine/Dockerfile +++ b/director-pgsql/22-alpine/Dockerfile @@ -1,5 +1,5 @@ # Bareos director Dockerfile -FROM alpine:3.16 +FROM alpine:3.18 LABEL maintainer="barcus@tou.nu" diff --git a/director-pgsql/24-alpine/Dockerfile b/director-pgsql/24-alpine/Dockerfile deleted file mode 100644 index 8ff82add..00000000 --- a/director-pgsql/24-alpine/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -# Bareos director Dockerfile -FROM alpine:3.16 - -LABEL maintainer="barcus@tou.nu" - -ARG BUILD_DATE -ARG NAME -ARG VCS_REF -ARG VERSION - -LABEL org.label-schema.schema-version="1.0" \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name=$NAME \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/barcus/bareos" \ - org.label-schema.version=$VERSION - -SHELL ["/bin/ash", "-eo", "pipefail", "-c"] - -RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar - -RUN tar czf /bareos-dir.tgz /etc/bareos -RUN mkdir /run/bareos \ - && chown bareos /run/bareos - -COPY webhook-notify /usr/local/bin/webhook-notify -RUN chmod u+x /usr/local/bin/webhook-notify - -COPY docker-entrypoint.sh /docker-entrypoint.sh -RUN chmod u+x /docker-entrypoint.sh - -EXPOSE 9101 - -VOLUME /etc/bareos -VOLUME /var/lib/bareos - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"] diff --git a/director-pgsql/24-alpine/docker-entrypoint.sh b/director-pgsql/24-alpine/docker-entrypoint.sh deleted file mode 100644 index fbd51c5e..00000000 --- a/director-pgsql/24-alpine/docker-entrypoint.sh +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env ash - -github_bareos='raw.githubusercontent.com/bareos/bareos' -webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' -admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example' - -if [ ! -f /etc/bareos/bareos-config.control ]; then - tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control - - # Download default admin profile config - if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then - curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \ - --output /etc/bareos/bareos-dir.d/profile/webui-admin.conf - fi - - # Download default webUI admin config - if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then - curl --silent --insecure "https://${github_bareos}/${admin_conf}" \ - --output /etc/bareos/bareos-dir.d/console/admin.conf - fi - - # Update bareos-director configs - # Director / mycatalog & mail report - sed -i "s#dbuser =.*#dbuser = $DB_USER#" \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - sed -i 's#dbpassword =.*#dbpassword = '\""${DB_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - sed -i 's#dbname =.*#dbname = '\""${DB_NAME}"\"'\n dbaddress = '\""${DB_HOST}"\"'\n dbport = '\""${DB_PORT}"\"'#' \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - sed -i 's#dbdriver = .*#dbdriver = '\""postgresql"\"'#' \ - /etc/bareos/bareos-dir.d/catalog/MyCatalog.conf - [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - [ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#g" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - - # Setup webhook - if [ "${WEBHOOK_NOTIFICATION}" = true ]; then - sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ - /etc/bareos/bareos-dir.d/messages/Daemon.conf - sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \ - /etc/bareos/bareos-dir.d/messages/Standard.conf - fi - - # storage daemon - sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \ - /etc/bareos/bareos-dir.d/storage/File.conf - sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/storage/File.conf - - # client/file daemon - sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \ - /etc/bareos/bareos-dir.d/client/bareos-fd.conf - sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/client/bareos-fd.conf - - # webUI - sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \ - /etc/bareos/bareos-dir.d/console/admin.conf - - - # MyCatalog Backup - sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/bareos.sql#" \ - /etc/bareos/bareos-dir.d/fileset/Catalog.conf - sed -i "s#make_catalog_backup MyCatalog#make_catalog_backup ${DB_NAME} ${DB_USER} '' ${DB_HOST}#" \ - /etc/bareos/bareos-dir.d/job/BackupCatalog.conf - - # Add pgpass file to ${DB_USER} home - homedir=$(getent passwd "$DB_USER" | cut -d: -f6) - echo "${DB_HOST}:${DB_PORT}:${DB_NAME}:${DB_USER}:${DB_PASSWORD}" > "${homedir}/.pgpass" - chmod 600 "${homedir}/.pgpass" - chown "${DB_USER}" "${homedir}/.pgpass" - - # Control file - touch /etc/bareos/bareos-config.control -fi - -if [[ -z ${CI_TEST} ]] ; then - # Waiting Postgresql is up - sqlup=1 - while [ "$sqlup" -ne 0 ] ; do - echo "Waiting for postgresql..." - pg_isready --host="${DB_HOST}" --port="${DB_PORT}" --user="${DB_ADMIN_USER}" - if [ $? -ne 0 ] ; then - sqlup=1 - sleep 5 - else - sqlup=0 - echo "...postgresql is alive" - fi - done -fi - -export PGUSER=${DB_ADMIN_USER} -export PGHOST=${DB_HOST} -export PGPASSWORD=${DB_ADMIN_PASSWORD} -[[ -z "${DB_INIT}" ]] && DB_INIT='false' -[[ -z "${DB_UPDATE}" ]] && DB_UPDATE='false' - -if [ ! -f /etc/bareos/bareos-db.control ] && [ "${DB_INIT}" == 'true' ] ; then - # Init Postgres DB - echo "Bareos DB init" - echo "Bareos DB init: Create user ${DB_USER}" - psql -c "create user ${DB_USER} with createdb createrole login;" - echo "Bareos DB init: Set user password" - psql -c "alter user ${DB_USER} password '${DB_PASSWORD}';" - /etc/bareos/scripts/create_bareos_database 2>/dev/null - /etc/bareos/scripts/make_bareos_tables 2>/dev/null - /etc/bareos/scripts/grant_bareos_privileges 2>/dev/null - # Control file - touch /etc/bareos/bareos-db.control -fi - -if [ "${DB_UPDATE}" == 'true' ] ; then - # Try Postgres upgrade - echo "Bareos DB update" - echo "Bareos DB update: Update tables" - /etc/bareos/scripts/update_bareos_tables 2>/dev/null - echo "Bareos DB update: Grant privileges" - /etc/bareos/scripts/grant_bareos_privileges 2>/dev/null -fi - -# Fix permissions -find /etc/bareos ! -user bareos -exec chown bareos {} \; -chown -R bareos:bareos /var/lib/bareos /var/log/bareos - -# Run Dockerfile CMD -exec "$@" diff --git a/director-pgsql/24-alpine/webhook-notify b/director-pgsql/24-alpine/webhook-notify deleted file mode 100644 index 801e3eaa..00000000 --- a/director-pgsql/24-alpine/webhook-notify +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env sh - -job_type=$1 -job_status=$2 -job_client=$3 -job_level=$4 -job_name=$5 -msg_icon="❌" - -if [ "$job_status" = "OK" ] ;then - msg_icon="✅" -fi - -msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \ -$job_level (${job_name})" - -load_json() -{ - if [ "${WEBHOOK_TYPE}" = "slack" ] ; then - cat < Date: Sat, 22 Nov 2025 13:15:08 +0100 Subject: [PATCH 24/28] fix(ci): API test --- .github/actions/test-bareos-app/entrypoint.sh | 5 ++++ webui/24-ubuntu/docker-entrypoint.sh | 27 +++++++++---------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/actions/test-bareos-app/entrypoint.sh b/.github/actions/test-bareos-app/entrypoint.sh index 4b45cf66..6af75e21 100755 --- a/.github/actions/test-bareos-app/entrypoint.sh +++ b/.github/actions/test-bareos-app/entrypoint.sh @@ -29,9 +29,14 @@ while read app version arch path ; do if [[ $version =~ $re_alpine ]] ; then build_tag="${version}-${arch}" alpine_pkg='bareos' + + [[ "$app" == "api" ]]; then + CMD="python -m pip show bareos-restapi | awk '/Version:/ {print \$2}'" + [[ "$app" == "webui" ]] && alpine_pkg='bareos-webui' CMD="apk list --installed $alpine_pkg" fi + if [[ $version =~ $re_ubuntu ]] ; then CMD="dpkg-query --showformat=\${Version} --show bareos-${app}" fi diff --git a/webui/24-ubuntu/docker-entrypoint.sh b/webui/24-ubuntu/docker-entrypoint.sh index a951ee04..94b0af54 100644 --- a/webui/24-ubuntu/docker-entrypoint.sh +++ b/webui/24-ubuntu/docker-entrypoint.sh @@ -1,26 +1,25 @@ -#!/usr/bin/env ash +#!/usr/bin/env bash -if [ ! -f /etc/bareos-webui/bareos-config.control ] - then - tar xfvz /bareos-webui-config.tgz +if [ ! -f /etc/bareos-webui/bareos-config.control ];then + tar xzf /bareos-webui.tgz --backup=simple --suffix=.before-control # Update bareos-webui config - sed -i "s/diraddress = \"localhost\"/diraddress = \"${BAREOS_DIR_HOST}\"/" /etc/bareos-webui/directors.ini + sed -i 's#diraddress.*#diraddress = '\""${BAREOS_DIR_HOST}"\"'#' \ + /etc/bareos-webui/directors.ini # Control file touch /etc/bareos-webui/bareos-config.control fi -if [ ! -f /usr/share/bareos-webui/bareos-config.control ] - then - tar xfvz /bareos-webui-code.tgz - touch /usr/share/bareos-webui/bareos-config.control -fi +apache_conf="/etc/apache2/sites-available/000-default.conf" -# Fix nginx 'client_max_body_size' -sed -i "s#client_max_body_size 1m#client_max_body_size 20m#" /etc/nginx/nginx.conf +# Set document root +sed -i "s#/var/www/html#/usr/share/bareos-webui/public#g" $apache_conf -# set php-fpm host andd port -sed -i "s/fastcgi_pass 127.0.0.1:9000;/fastcgi_pass ${PHP_FPM_HOST}:${PHP_FPM_PORT};/" /etc/nginx/http.d/bareos-webui.conf +# Enable Apache server stats +if [ "${SERVER_STATS}" == "yes" ]; then + sed -i 's!#ServerName.*!Alias /server-status /var/www/dummy!' $apache_conf +fi +# Run Dockerfile CMD exec "$@" From 484b25342a4db6a94299dfcd412456a9e2cc5ddb Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 13:23:35 +0100 Subject: [PATCH 25/28] Update entrypoint.sh --- .github/actions/test-bareos-app/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/test-bareos-app/entrypoint.sh b/.github/actions/test-bareos-app/entrypoint.sh index 6af75e21..4876a40f 100755 --- a/.github/actions/test-bareos-app/entrypoint.sh +++ b/.github/actions/test-bareos-app/entrypoint.sh @@ -30,7 +30,7 @@ while read app version arch path ; do build_tag="${version}-${arch}" alpine_pkg='bareos' - [[ "$app" == "api" ]]; then + [[ "$app" == "api" ]] CMD="python -m pip show bareos-restapi | awk '/Version:/ {print \$2}'" [[ "$app" == "webui" ]] && alpine_pkg='bareos-webui' From 4af1f6610fad532c6e893864d54552ff3dc52da9 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 18:49:29 +0100 Subject: [PATCH 26/28] Update entrypoint.sh --- .github/actions/test-bareos-app/entrypoint.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/actions/test-bareos-app/entrypoint.sh b/.github/actions/test-bareos-app/entrypoint.sh index 4876a40f..3560cca9 100755 --- a/.github/actions/test-bareos-app/entrypoint.sh +++ b/.github/actions/test-bareos-app/entrypoint.sh @@ -28,13 +28,14 @@ while read app version arch path ; do # Define args and command if [[ $version =~ $re_alpine ]] ; then build_tag="${version}-${arch}" - alpine_pkg='bareos' - [[ "$app" == "api" ]] - CMD="python -m pip show bareos-restapi | awk '/Version:/ {print \$2}'" - - [[ "$app" == "webui" ]] && alpine_pkg='bareos-webui' - CMD="apk list --installed $alpine_pkg" + if [[ "$app" == "api" ]] ; then + CMD="python -m pip show bareos-restapi | awk '/Version:/ {print \$2}'" + elif [[ "$app" == "webui" ]] ; then + CMD="apk list --installed bareos-webui" + else + CMD="apk list --installed bareos" + fi fi if [[ $version =~ $re_ubuntu ]] ; then From 5a85dc9aeae8ed973e629c9eeec1d8f191a97749 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 18:51:54 +0100 Subject: [PATCH 27/28] fix(bareos): API v24 --- .../actions/prepare-bareos-app/entrypoint.sh | 2 +- api/24-alpine/Dockerfile | 32 +++++++++++++++++++ api/24-alpine/docker-entrypoint.sh | 20 ++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 api/24-alpine/Dockerfile create mode 100644 api/24-alpine/docker-entrypoint.sh diff --git a/.github/actions/prepare-bareos-app/entrypoint.sh b/.github/actions/prepare-bareos-app/entrypoint.sh index 5ff80cfc..a73eab2f 100755 --- a/.github/actions/prepare-bareos-app/entrypoint.sh +++ b/.github/actions/prepare-bareos-app/entrypoint.sh @@ -3,7 +3,7 @@ BUILDX_VER='v0.5.1' latest_ubuntu='24' latest_alpine='22' -latest_api='22' +latest_api='24' build_file="${GITHUB_WORKSPACE}/build/app_build.txt" tag_file="${GITHUB_WORKSPACE}/build/tag_build.txt" diff --git a/api/24-alpine/Dockerfile b/api/24-alpine/Dockerfile new file mode 100644 index 00000000..3945d8a6 --- /dev/null +++ b/api/24-alpine/Dockerfile @@ -0,0 +1,32 @@ +FROM python:3.10-alpine + +LABEL maintainer="barcus@tou.nu" + +ARG BUILD_DATE +ARG NAME +ARG VCS_REF +ARG VERSION + +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$NAME \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/barcus/bareos" \ + org.label-schema.version=$VERSION + +RUN pip install --no-cache-dir --upgrade pip==22.0.4 + +RUN adduser -D bareos +USER bareos +WORKDIR /home/bareos + +ENV PATH="/home/bareos/.local/bin:${PATH}" +RUN pip install --no-cache-dir "bareos-restapi>=24*,<25*" + +COPY --chown=bareos docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod a+x /docker-entrypoint.sh + +EXPOSE 8000 + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["uvicorn","--log-level", "debug", "--host", "0.0.0.0", "bareos_restapi:app", "--reload"] diff --git a/api/24-alpine/docker-entrypoint.sh b/api/24-alpine/docker-entrypoint.sh new file mode 100644 index 00000000..c9eb80ee --- /dev/null +++ b/api/24-alpine/docker-entrypoint.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env ash +#set -x + +secret=`tr -cd "[:alnum:]" < /dev/urandom | fold -w30 | head -n1` + +# Generate api.ini config +cat < /home/bareos/api.ini +[Director] +Name=${BAREOS_DIR_HOST} +Address=${BAREOS_DIR_HOST} +Port=9101 + +[JWT] +secret_key = ${secret} +algorithm = HS256 +access_token_expire_minutes = 30 +EOF + +# Run Dockerfile CMD +exec "$@" From eb813c329176e4f2c269056495f575d13582258b Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi Date: Sat, 22 Nov 2025 20:06:21 +0100 Subject: [PATCH 28/28] ci --- .github/actions/test-bareos-app/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/test-bareos-app/entrypoint.sh b/.github/actions/test-bareos-app/entrypoint.sh index 3560cca9..717d3aa3 100755 --- a/.github/actions/test-bareos-app/entrypoint.sh +++ b/.github/actions/test-bareos-app/entrypoint.sh @@ -30,7 +30,7 @@ while read app version arch path ; do build_tag="${version}-${arch}" if [[ "$app" == "api" ]] ; then - CMD="python -m pip show bareos-restapi | awk '/Version:/ {print \$2}'" + CMD="python -m pip show bareos-restapi | grep 'Version:' | awk '{print $2}'" elif [[ "$app" == "webui" ]] ; then CMD="apk list --installed bareos-webui" else