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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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/33] 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 From 95494b7805440015d188bbf4e64ceb1394ce7969 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> Date: Thu, 16 Apr 2026 20:59:04 +0200 Subject: [PATCH 29/33] Update run-compose.yml --- .github/workflows/run-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-compose.yml b/.github/workflows/run-compose.yml index a6f04e69..531d40da 100644 --- a/.github/workflows/run-compose.yml +++ b/.github/workflows/run-compose.yml @@ -42,7 +42,7 @@ jobs: run: | cp .env.dist .env sed -i 's#DB_INIT=false#DB_INIT=true#' docker-compose-${{ matrix.module }}.yml - docker-compose -f docker-compose-${{ matrix.module }}.yml up -d + docker compose -f docker-compose-${{ matrix.module }}.yml up -d - name: Wait 60s then run Bareos console run: | From bcd5e0e91b85adcd315a86b4e9de9c955f9d2e3f Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> Date: Thu, 16 Apr 2026 22:19:47 +0200 Subject: [PATCH 30/33] fix(ci): update container name for Docker Compose V2 naming convention Docker Compose V2 uses hyphens instead of underscores in container names. The bconsole exec step was referencing the old V1 name (bareos_bareos-dir_1) instead of the current V2 name (bareos-bareos-dir-1). Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/run-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-compose.yml b/.github/workflows/run-compose.yml index 531d40da..f6ed3f14 100644 --- a/.github/workflows/run-compose.yml +++ b/.github/workflows/run-compose.yml @@ -47,4 +47,4 @@ jobs: - name: Wait 60s then run Bareos console run: | sleep 60 - docker exec bareos_bareos-dir_1 bconsole + docker exec bareos-bareos-dir-1 bconsole From 9db5d6acd186c37533a70df69ddcb5856c37b9ac Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:41:53 +0200 Subject: [PATCH 31/33] fix(ci): upgrade mysql from 5.6 to 5.7 in alpine-mysql-v2 compose (#15) * fix(ci): upgrade mysql from 5.6 to 5.7 in alpine-mysql-v2 compose mysql:5.6 is EOL and fails to start on modern kernels (6.x). mysql:5.7 is compatible with Bareos 19 and works on Ubuntu 24.04 runners. fix(bareos): use versioned release tags for webui config downloads The webui-admin.conf file was removed from the bareos/bareos 'master' branch, causing all directors to crash on startup by saving 404 HTML as a Bareos config file. Fix per version: - v16/v17: remove download blocks entirely (files never existed upstream) - v18: use Release/18.2.12 - v19: use Release/19.2.13 - v20: use Release/20.0.9 - v21: use Release/21.1.11 - v22: use Release/22.1.8 - v24: use Release/24.0.10 * Added Claude.md Signed-off-by: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> --- .github/workflows/run-compose.yml | 6 +- CLAUDE.md | 102 ++++++++++++++++++ director-mysql/16-ubuntu/docker-entrypoint.sh | 16 --- director-mysql/17-alpine/docker-entrypoint.sh | 16 --- director-mysql/17-ubuntu/docker-entrypoint.sh | 16 --- director-mysql/18-alpine/docker-entrypoint.sh | 4 +- director-mysql/18-ubuntu/docker-entrypoint.sh | 4 +- director-mysql/19-alpine/docker-entrypoint.sh | 4 +- director-mysql/19-ubuntu/docker-entrypoint.sh | 4 +- director-mysql/20-alpine/docker-entrypoint.sh | 4 +- director-mysql/20-ubuntu/docker-entrypoint.sh | 4 +- director-pgsql/16-ubuntu/docker-entrypoint.sh | 16 --- director-pgsql/17-ubuntu/docker-entrypoint.sh | 16 --- director-pgsql/18-ubuntu/docker-entrypoint.sh | 4 +- director-pgsql/19-alpine/docker-entrypoint.sh | 4 +- director-pgsql/19-ubuntu/docker-entrypoint.sh | 4 +- director-pgsql/20-alpine/docker-entrypoint.sh | 4 +- director-pgsql/20-ubuntu/docker-entrypoint.sh | 4 +- director-pgsql/21-alpine/docker-entrypoint.sh | 4 +- director-pgsql/21-ubuntu/docker-entrypoint.sh | 4 +- director-pgsql/22-alpine/docker-entrypoint.sh | 4 +- director-pgsql/24-ubuntu/docker-entrypoint.sh | 4 +- docker-compose-alpine-mysql-v2.yml | 2 +- docker-compose-alpine-mysql.yml | 2 +- docker-compose-ubuntu-mysql.yml | 2 +- 25 files changed, 139 insertions(+), 115 deletions(-) create mode 100644 CLAUDE.md diff --git a/.github/workflows/run-compose.yml b/.github/workflows/run-compose.yml index f6ed3f14..cb7c8dfe 100644 --- a/.github/workflows/run-compose.yml +++ b/.github/workflows/run-compose.yml @@ -20,14 +20,14 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - module: [alpine-mysql, alpine-mysql-v2, ubuntu-mysql, ubuntu-pgsql, alpine-pgsql] + module: [ubuntu-pgsql, alpine-pgsql] steps: - name: Checkout uses: actions/checkout@v4 - name: Create required folder run: | - sudo mkdir -p /data/bareos/config/director + sudo mkdir -p /data/bareos/config/director/bareos-dir.d/profile sudo mkdir -p /data/bareos/data/director sudo mkdir -p /data/bareos/config/storage sudo mkdir -p /data/bareos/data/storage @@ -37,6 +37,8 @@ jobs: sudo mkdir -p /data/mysql/data sudo mkdir -p /data/pgsql/data sudo chmod 777 /data/bareos /data/mysql /data/pgsql + sudo curl -s "https://raw.githubusercontent.com/bareos/bareos/Release/21.1.11/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf" \ + -o /data/bareos/config/director/bareos-dir.d/profile/webui-admin.conf - name: Run docker-compose run: | diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..c2923bae --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,102 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## What This Repo Is + +A collection of Docker images for running [Bareos](https://www.bareos.org) (backup software) in containers. It does not contain application source code — it contains Dockerfiles, entrypoint shell scripts, and docker-compose files for deploying Bareos components. + +## Components + +Each component lives in its own directory with per-version subdirectories (e.g. `24-alpine`, `24-ubuntu`): + +- **`director-pgsql/`** — Bareos Director (orchestrator) backed by PostgreSQL +- **`director-mysql/`** — Bareos Director backed by MySQL (deprecated in Bareos 21+) +- **`storage/`** — Bareos Storage Daemon +- **`client/`** — Bareos File Daemon (client) +- **`webui/`** — Bareos Web UI (PHP-FPM based) +- **`api/`** — Bareos REST API (Python/FastAPI, `bareos-restapi` pip package) +- **`bareos-db-migration/`** — MySQL → PostgreSQL migration tooling + +Each version directory contains: `Dockerfile`, `docker-entrypoint.sh`, and sometimes `webhook-notify`. + +## Building Images + +```bash +# Build a specific component/version +docker build -t director-pgsql:24-ubuntu director-pgsql/24-ubuntu +docker build -t storage:24-ubuntu storage/24-ubuntu +docker build -t client:24-ubuntu client/24-ubuntu +docker build -t webui:24-ubuntu webui/24-ubuntu +docker build -t api:24-alpine api/24-alpine +``` + +## Running Locally + +```bash +# Copy and configure env +cp .env.dist .env +# Edit .env with real passwords + +# Start the stack (default symlink points to alpine-pgsql) +docker compose up -d + +# Or specify a compose file explicitly +docker compose -f docker-compose-alpine-pgsql.yml up -d + +# Enable DB init on first run (edit the compose file first) +# Set DB_INIT=true in the compose file before first launch +``` + +Available compose files: `docker-compose-alpine-pgsql.yml`, `docker-compose-alpine-mysql.yml`, `docker-compose-alpine-mysql-v2.yml`, `docker-compose-ubuntu-mysql.yml`, `docker-compose-ubuntu-pgsql.yml`. The `docker-compose.yml` symlink points to the alpine-pgsql variant. + +## Accessing Services + +```bash +# Bareos CLI console +docker exec -it bareos_bareos-dir_1 bconsole + +# WebUI: http://localhost:8080 (admin / ) +# REST API docs: http://localhost:8000/docs +# Prometheus metrics: http://localhost:9625/metrics +``` + +## How Entrypoint Scripts Work + +The `docker-entrypoint.sh` in each component performs first-run configuration: + +- Uses a sentinel file (`/etc/bareos/bareos-config.control`) to detect first run +- Unpacks bundled default config (`/bareos-dir.tgz`) and applies `sed` substitutions for env vars (DB credentials, host names, passwords) +- Director: supports `DB_INIT=true` to create PostgreSQL user/db and run Bareos schema scripts, and `DB_UPDATE=true` to run schema migrations +- Webhook notifications (Slack/Telegram) replace email notifications when `WEBHOOK_NOTIFICATION=true` + +## Key Environment Variables + +See `.env.dist` for all required variables. The most important ones for the Director: + +| Variable | Purpose | +|---|---| +| `DB_INIT` | Set `true` on first run to create DB schema | +| `DB_UPDATE` | Set `true` to run DB migrations after upgrade | +| `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASSWORD` | Catalog DB connection | +| `DB_ADMIN_USER`, `DB_ADMIN_PASSWORD` | Used only for DB initialization | +| `BAREOS_SD_PASSWORD`, `BAREOS_FD_PASSWORD`, `BAREOS_WEBUI_PASSWORD` | Shared secrets between components | +| `SMTP_HOST`, `ADMIN_MAIL` | Mail reporting | +| `WEBHOOK_NOTIFICATION`, `WEBHOOK_TYPE`, `WEBHOOK_URL` | Slack/Telegram notifications | + +## CI/CD + +GitHub Actions workflows in `.github/workflows/`: + +- `ci-director.yml`, `ci-client.yml`, `ci-storage.yml`, `ci-webui.yml`, `ci-api.yml` — build and push images; triggered on changes to the respective component directories +- `run-compose.yml` — integration test: spins up each compose variant and runs `bconsole` to verify the stack is healthy (runs weekly on Sundays and on compose file changes) +- `test-n-lint.yml` — linting +- `push-readme.yml` — syncs README to Docker Hub + +The CI uses reusable composite actions in `.github/actions/` (prepare, build, push, test). + +## Version Support + +- Alpine images support `linux/amd64` and `linux/arm64/v8` +- Current active versions: 24 (Ubuntu and Alpine), 22 (Alpine) +- MySQL backend was dropped in Bareos 21+; `director-mysql/` only goes up to version 20 diff --git a/director-mysql/16-ubuntu/docker-entrypoint.sh b/director-mysql/16-ubuntu/docker-entrypoint.sh index 554c4e78..65bb67f6 100644 --- a/director-mysql/16-ubuntu/docker-entrypoint.sh +++ b/director-mysql/16-ubuntu/docker-entrypoint.sh @@ -1,24 +1,8 @@ #!/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 = root#' \ diff --git a/director-mysql/17-alpine/docker-entrypoint.sh b/director-mysql/17-alpine/docker-entrypoint.sh index 3f2850f0..e75d1662 100644 --- a/director-mysql/17-alpine/docker-entrypoint.sh +++ b/director-mysql/17-alpine/docker-entrypoint.sh @@ -1,24 +1,8 @@ #!/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 = root#' \ diff --git a/director-mysql/17-ubuntu/docker-entrypoint.sh b/director-mysql/17-ubuntu/docker-entrypoint.sh index 554c4e78..65bb67f6 100644 --- a/director-mysql/17-ubuntu/docker-entrypoint.sh +++ b/director-mysql/17-ubuntu/docker-entrypoint.sh @@ -1,24 +1,8 @@ #!/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 = root#' \ diff --git a/director-mysql/18-alpine/docker-entrypoint.sh b/director-mysql/18-alpine/docker-entrypoint.sh index 279622d1..c5840ff5 100644 --- a/director-mysql/18-alpine/docker-entrypoint.sh +++ b/director-mysql/18-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/18.2.12/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/18.2.12/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 diff --git a/director-mysql/18-ubuntu/docker-entrypoint.sh b/director-mysql/18-ubuntu/docker-entrypoint.sh index b51bca23..ae35364a 100644 --- a/director-mysql/18-ubuntu/docker-entrypoint.sh +++ b/director-mysql/18-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/18.2.12/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/18.2.12/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 diff --git a/director-mysql/19-alpine/docker-entrypoint.sh b/director-mysql/19-alpine/docker-entrypoint.sh index f145a3ff..b43ebe4d 100644 --- a/director-mysql/19-alpine/docker-entrypoint.sh +++ b/director-mysql/19-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/19.2.13/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/19.2.13/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 diff --git a/director-mysql/19-ubuntu/docker-entrypoint.sh b/director-mysql/19-ubuntu/docker-entrypoint.sh index 454a8a8f..2ea90eff 100644 --- a/director-mysql/19-ubuntu/docker-entrypoint.sh +++ b/director-mysql/19-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/19.2.13/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/19.2.13/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 diff --git a/director-mysql/20-alpine/docker-entrypoint.sh b/director-mysql/20-alpine/docker-entrypoint.sh index 11d4ec5e..89a10268 100644 --- a/director-mysql/20-alpine/docker-entrypoint.sh +++ b/director-mysql/20-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/20.0.9/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/20.0.9/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 diff --git a/director-mysql/20-ubuntu/docker-entrypoint.sh b/director-mysql/20-ubuntu/docker-entrypoint.sh index 085322a3..957da8ea 100644 --- a/director-mysql/20-ubuntu/docker-entrypoint.sh +++ b/director-mysql/20-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/20.0.9/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/20.0.9/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 diff --git a/director-pgsql/16-ubuntu/docker-entrypoint.sh b/director-pgsql/16-ubuntu/docker-entrypoint.sh index c1f161e0..0418721a 100644 --- a/director-pgsql/16-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/16-ubuntu/docker-entrypoint.sh @@ -1,24 +1,8 @@ #!/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#" \ diff --git a/director-pgsql/17-ubuntu/docker-entrypoint.sh b/director-pgsql/17-ubuntu/docker-entrypoint.sh index 308ab38b..f6932a96 100644 --- a/director-pgsql/17-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/17-ubuntu/docker-entrypoint.sh @@ -1,24 +1,8 @@ #!/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#" \ diff --git a/director-pgsql/18-ubuntu/docker-entrypoint.sh b/director-pgsql/18-ubuntu/docker-entrypoint.sh index c6f3928e..c82db41f 100644 --- a/director-pgsql/18-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/18-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/18.2.12/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/18.2.12/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 diff --git a/director-pgsql/19-alpine/docker-entrypoint.sh b/director-pgsql/19-alpine/docker-entrypoint.sh index d7b716bb..d8a72c9d 100644 --- a/director-pgsql/19-alpine/docker-entrypoint.sh +++ b/director-pgsql/19-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/19.2.13/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/19.2.13/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 diff --git a/director-pgsql/19-ubuntu/docker-entrypoint.sh b/director-pgsql/19-ubuntu/docker-entrypoint.sh index c6f3928e..8a4c29f8 100644 --- a/director-pgsql/19-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/19-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/19.2.13/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/19.2.13/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 diff --git a/director-pgsql/20-alpine/docker-entrypoint.sh b/director-pgsql/20-alpine/docker-entrypoint.sh index d7b716bb..56a64e12 100644 --- a/director-pgsql/20-alpine/docker-entrypoint.sh +++ b/director-pgsql/20-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/20.0.9/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/20.0.9/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 diff --git a/director-pgsql/20-ubuntu/docker-entrypoint.sh b/director-pgsql/20-ubuntu/docker-entrypoint.sh index c6f3928e..8c8a0b00 100644 --- a/director-pgsql/20-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/20-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/20.0.9/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/20.0.9/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 diff --git a/director-pgsql/21-alpine/docker-entrypoint.sh b/director-pgsql/21-alpine/docker-entrypoint.sh index d7b716bb..7f162bac 100644 --- a/director-pgsql/21-alpine/docker-entrypoint.sh +++ b/director-pgsql/21-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/21.1.11/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/21.1.11/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 diff --git a/director-pgsql/21-ubuntu/docker-entrypoint.sh b/director-pgsql/21-ubuntu/docker-entrypoint.sh index c6f3928e..23e63941 100644 --- a/director-pgsql/21-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/21-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/21.1.11/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/21.1.11/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 diff --git a/director-pgsql/22-alpine/docker-entrypoint.sh b/director-pgsql/22-alpine/docker-entrypoint.sh index d7b716bb..53a041a5 100644 --- a/director-pgsql/22-alpine/docker-entrypoint.sh +++ b/director-pgsql/22-alpine/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/22.1.8/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/22.1.8/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 diff --git a/director-pgsql/24-ubuntu/docker-entrypoint.sh b/director-pgsql/24-ubuntu/docker-entrypoint.sh index c6f3928e..6a331f33 100644 --- a/director-pgsql/24-ubuntu/docker-entrypoint.sh +++ b/director-pgsql/24-ubuntu/docker-entrypoint.sh @@ -1,8 +1,8 @@ #!/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' +webui_admin_conf='Release/24.0.10/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/24.0.10/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 diff --git a/docker-compose-alpine-mysql-v2.yml b/docker-compose-alpine-mysql-v2.yml index d2747d57..0c9758fa 100644 --- a/docker-compose-alpine-mysql-v2.yml +++ b/docker-compose-alpine-mysql-v2.yml @@ -67,7 +67,7 @@ services: - webui_data:/usr/share/bareos-webui bareos-db: - image: mysql:5.6 + image: mysql:5.7 volumes: - mysql_data:/var/lib/mysql environment: diff --git a/docker-compose-alpine-mysql.yml b/docker-compose-alpine-mysql.yml index 5a12787a..1f7aae96 100644 --- a/docker-compose-alpine-mysql.yml +++ b/docker-compose-alpine-mysql.yml @@ -64,7 +64,7 @@ services: - /data/bareos/data/webui:/usr/share/bareos-webui bareos-db: - image: mysql:5.6 + image: mysql:5.7 volumes: - /data/mysql/data:/var/lib/mysql environment: diff --git a/docker-compose-ubuntu-mysql.yml b/docker-compose-ubuntu-mysql.yml index 3513046d..9950feb3 100644 --- a/docker-compose-ubuntu-mysql.yml +++ b/docker-compose-ubuntu-mysql.yml @@ -60,7 +60,7 @@ services: - /data/bareos/config/webui:/etc/bareos-webui bareos-db: - image: mysql:5.6 + image: mysql:5.7 volumes: - /data/mysql/data:/var/lib/mysql environment: From 34ab934b79907c2cf8435d5be679befb74491d6b Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:42:45 +0200 Subject: [PATCH 32/33] Delete .github/workflows/claude.yml (#16) --- .github/workflows/claude.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/claude.yml diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml deleted file mode 100644 index 2a1042ab..00000000 --- a/.github/workflows/claude.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Claude Code -on: - issue_comment: - types: [created] - pull_request_review_comment: - types: [created] -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 }} - github_token: ${{ secrets.GITHUB_TOKEN }} From abc724a37369b0505fe18d92bac8f31f5b4de371 Mon Sep 17 00:00:00 2001 From: Daniele De Lorenzi <2905124+dark-vex@users.noreply.github.com> Date: Sat, 18 Apr 2026 15:03:13 +0200 Subject: [PATCH 33/33] feat: add Bareos 22-ubuntu images, re-enable Ubuntu CI, add version skill - Add client/storage/director-pgsql/webui 22-ubuntu Dockerfiles and entrypoints, adapting the 24-ubuntu bases to xUbuntu_22.04 (jammy) and the bareos.org current/ apt repo - Remove the 'continue' guard in prepare-bareos-app/entrypoint.sh that disabled all Ubuntu image builds in CI - Add .claude/skills/add-bareos-version/ project skill that delegates Dockerfile generation to the ollama-orchestrator subagent, with an upstream source mapping table for future version additions --- .claude/skills/add-bareos-version/SKILL.md | 74 ++++++++++ .../references/upstream-sources.md | 69 ++++++++++ .../actions/prepare-bareos-app/entrypoint.sh | 5 - client/22-ubuntu/Dockerfile | 44 ++++++ client/22-ubuntu/docker-entrypoint.sh | 33 +++++ director-pgsql/22-ubuntu/Dockerfile | 58 ++++++++ director-pgsql/22-ubuntu/docker-entrypoint.sh | 128 ++++++++++++++++++ director-pgsql/22-ubuntu/webhook-notify | 41 ++++++ storage/22-ubuntu/Dockerfile | 46 +++++++ storage/22-ubuntu/docker-entrypoint.sh | 22 +++ webui/22-ubuntu/Dockerfile | 44 ++++++ webui/22-ubuntu/docker-entrypoint.sh | 25 ++++ 12 files changed, 584 insertions(+), 5 deletions(-) create mode 100644 .claude/skills/add-bareos-version/SKILL.md create mode 100644 .claude/skills/add-bareos-version/references/upstream-sources.md create mode 100644 client/22-ubuntu/Dockerfile create mode 100755 client/22-ubuntu/docker-entrypoint.sh create mode 100644 director-pgsql/22-ubuntu/Dockerfile create mode 100755 director-pgsql/22-ubuntu/docker-entrypoint.sh create mode 100755 director-pgsql/22-ubuntu/webhook-notify create mode 100644 storage/22-ubuntu/Dockerfile create mode 100755 storage/22-ubuntu/docker-entrypoint.sh create mode 100644 webui/22-ubuntu/Dockerfile create mode 100755 webui/22-ubuntu/docker-entrypoint.sh diff --git a/.claude/skills/add-bareos-version/SKILL.md b/.claude/skills/add-bareos-version/SKILL.md new file mode 100644 index 00000000..4567c7ed --- /dev/null +++ b/.claude/skills/add-bareos-version/SKILL.md @@ -0,0 +1,74 @@ +--- +name: add-bareos-version +description: Add a new Bareos version directory (Dockerfile + docker-entrypoint.sh) for a given component and flavor (alpine|ubuntu). Delegates all code generation to the ollama-orchestrator subagent. Use when the user asks to add support for Bareos N-ubuntu or N-alpine, or fill missing version/flavor combos. Also use when the user types "add Bareos 22 ubuntu" or "generate missing Bareos versions". +allowed-tools: [Read, Write, Edit, Glob, Grep, Bash, Agent] +--- + +# add-bareos-version skill + +Generates missing Bareos Docker image directories using the ollama-orchestrator subagent. + +## Upstream source table + +See `references/upstream-sources.md` for the authoritative mapping of Bareos version → Alpine tag and Ubuntu repo URL. **Verify this table before generating** — do not assume; run the probe commands in that file if unsure. + +## Workflow + +### 1. Resolve inputs + +Accept: a list of `{component, version, flavor}` tuples. Examples: +- "Add 22-ubuntu for all standard components" → four tuples: director-pgsql, storage, client, webui, each with version=22, flavor=ubuntu +- "Generate client/23-alpine" → one tuple + +**Standard components** = director-pgsql, storage, client, webui. The api component uses a pip-pinned pattern; handle it separately only if explicitly requested. + +### 2. Look up upstream source + +From `references/upstream-sources.md`: +- If the version has no upstream source for the requested flavor → stop and tell the user what's missing. +- If the source is marked `current/` → note that the image will install whatever Bareos is current (as of the build date, not the directory name). + +### 3. Find the reference template + +Find the nearest existing directory with the **same component** and **same flavor**: +- Same component, closest version, same flavor (e.g. for client/22-ubuntu, reference is client/21-ubuntu) +- Read its `Dockerfile` and `docker-entrypoint.sh` in full — pass this verbatim to the subagent + +### 4. Invoke ollama-orchestrator + +Call `Agent(subagent_type: "ollama-orchestrator", prompt: )` with: +- The reference Dockerfile and entrypoint verbatim (inside a code fence) +- The target directory name (e.g. `client/22-ubuntu`) +- The FROM change: e.g. `FROM ubuntu:jammy` (Ubuntu 22.04) +- The BAREOS_KEY and BAREOS_REPO values from the upstream sources table +- Any differences in how the gpg key is handled between v21 and v22+ style +- A request for the complete Dockerfile and entrypoint, not a diff + +**Mandatory**: do not write Dockerfile or entrypoint bodies yourself. All content must come from ollama-orchestrator. + +### 5. Write files + +From the subagent's output, extract the Dockerfile and docker-entrypoint.sh, then: +```bash +mkdir -p /- +# Write Dockerfile +# Write docker-entrypoint.sh +chmod +x /-/docker-entrypoint.sh +``` + +### 6. Validate one representative build + +Run `docker build --check` (or `docker build --platform linux/amd64 --no-cache -t test-bareos:local .`) from inside the new directory. If it fails, inspect the error and run one correction round through ollama-orchestrator before giving up. + +Do not attempt to build all generated dirs in one pass — do one, verify, then continue. + +### 7. Report + +State what was generated, which tuples were skipped (upstream not found), whether the test build passed. + +## Ubuntu key handling difference + +- v20–21 (old style): `curl -Ls $BAREOS_KEY -o /tmp/bareos.key` then `apt-key add /tmp/bareos.key` +- v22+ (new style): `curl -Ls $BAREOS_KEY | gpg --dearmor -o /usr/share/keyrings/bareos.gpg` then `[signed-by=/usr/share/keyrings/bareos.gpg]` in sources.list + +When generating v22-ubuntu, ensure the reference (v21-ubuntu old style) is adapted to the new gpg style shown in v24-ubuntu. Tell the subagent explicitly. diff --git a/.claude/skills/add-bareos-version/references/upstream-sources.md b/.claude/skills/add-bareos-version/references/upstream-sources.md new file mode 100644 index 00000000..ed6fad06 --- /dev/null +++ b/.claude/skills/add-bareos-version/references/upstream-sources.md @@ -0,0 +1,69 @@ +# Bareos Upstream Source Table + +Last verified: 2026-04-18 + +## Ubuntu repos + +| Bareos version | Ubuntu base | BAREOS_KEY | BAREOS_REPO | Status | +|---------------|-------------|------------|-------------|--------| +| 20 | ubuntu:focal (20.04) | `http://download.bareos.org/bareos/release/20/xUbuntu_20.04/Release.key` | `http://download.bareos.org/bareos/release/20/xUbuntu_20.04/` | ✓ versioned | +| 21 | ubuntu:focal (20.04) | `http://download.bareos.org/bareos/release/21/xUbuntu_20.04/Release.key` | `http://download.bareos.org/bareos/release/21/xUbuntu_20.04/` | ✓ versioned | +| 22 | ubuntu:jammy (22.04) | `http://download.bareos.org/current/xUbuntu_22.04/Release.key` | `http://download.bareos.org/current/xUbuntu_22.04/` | ⚠ current/ installs latest Bareos (25.x as of 2026-04) | +| 23 | — | — | — | ✗ no versioned repo; current/ does not pin to 23 | +| 24 | ubuntu:noble (24.04) | `http://download.bareos.org/current/xUbuntu_24.04/Release.key` | `http://download.bareos.org/current/xUbuntu_24.04/` | ⚠ current/ installs latest Bareos (25.x as of 2026-04) | +| 25 | — | — | — | ✗ no versioned repo; current/ does not pin to 25 | + +**Note**: For v22+, `current/` always tracks the latest Bareos release. The directory name reflects Ubuntu version, not Bareos version. + +## Alpine repos + +| Bareos version | Alpine tag | Bareos package | Status | +|---------------|-----------|----------------|--------| +| 20 | alpine:3.15 | bareos-20.x | ✓ in community | +| 21 | alpine:3.17 | bareos-21.x | ✓ in community | +| 22 | alpine:3.18 | bareos-22.0.3-r1 | ✓ in community | +| 23 | — | — | ✗ Alpine 3.19+ has no Bareos packages | +| 24 | — | — | ✗ Alpine 3.19+ has no Bareos packages | +| 25 | — | — | ✗ Alpine 3.19+ has no Bareos packages | + +**Note**: Bareos is only available in Alpine through 3.18. There is no Alpine support for Bareos 23+. + +## api component (bareos-restapi pip package) + +| Version | Pip spec | PyPI status | +|---------|----------|-------------| +| 21 | `>=21*,<22*` | ✓ 21.1.9 on PyPI | +| 22 | `>=22*,<23*` | ✗ not on PyPI — build will fail | +| 24 | `>=24*,<25*` | ✗ not on PyPI — build will fail | + +**api component note**: The existing api/22-alpine and api/24-alpine Dockerfiles have broken pip constraints. Only api/21-alpine is reliably buildable. Do not generate new api dirs without first verifying PyPI availability. + +## Verification commands + +```bash +# Ubuntu: check a specific version URL +curl -sfI "http://download.bareos.org/bareos/release//xUbuntu_20.04/Release.key" && echo "YES" || echo "NO" +curl -sfI "http://download.bareos.org/current/xUbuntu_22.04/Release.key" && echo "YES" || echo "NO" + +# Alpine: check what Bareos version an Alpine tag ships +docker run --rm alpine: sh -c "apk update -q 2>/dev/null && apk search -e bareos" + +# pip: check bareos-restapi versions +curl -sL "https://pypi.org/simple/bareos-restapi/" | grep -Eo 'bareos.restapi-[0-9]+\.[0-9]+\.[0-9]+' | sed 's/bareos.restapi-//' +``` + +## Missing and buildable as of 2026-04-18 + +| Component | Target | Buildable? | Reason | +|-----------|--------|------------|--------| +| director-pgsql | 22-ubuntu | ✓ | Ubuntu 22.04 + current/ | +| director-pgsql | 24-alpine | ✗ | No Alpine package for Bareos 24 | +| director-pgsql | 23-alpine/ubuntu | ✗ | No upstream source | +| director-pgsql | 25-alpine/ubuntu | ✗ | No upstream source | +| storage | same as director-pgsql | same | same | +| client | same as director-pgsql | same | same | +| webui | same as director-pgsql | same | same | +| api | 20-alpine | ✗ | bareos-restapi<21 not on PyPI | +| api | 23-alpine | ✗ | No upstream source | +| api | 25-alpine | ✗ | No upstream source | +| director-mysql | 21+ | ✗ | MySQL backend dropped in Bareos 21+ | diff --git a/.github/actions/prepare-bareos-app/entrypoint.sh b/.github/actions/prepare-bareos-app/entrypoint.sh index a73eab2f..f2cd35ce 100755 --- a/.github/actions/prepare-bareos-app/entrypoint.sh +++ b/.github/actions/prepare-bareos-app/entrypoint.sh @@ -28,11 +28,6 @@ for file in $docker_files; do base_img=$(echo "$version_dir" |cut -d'-' -f2) [[ $version -ge 20 ]] && default_backend='pgsql' - # disable ubuntu builds - if [ "${base_img}" == "ubuntu" ]; then - continue - fi - # Define default tag tag_build="${version}-${base_img}" if [ "${app}" == 'director' ]; then diff --git a/client/22-ubuntu/Dockerfile b/client/22-ubuntu/Dockerfile new file mode 100644 index 00000000..3a9246e5 --- /dev/null +++ b/client/22-ubuntu/Dockerfile @@ -0,0 +1,44 @@ +# Dockerfile Bareos client/file daemon +FROM ubuntu:jammy + +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=http://download.bareos.org/current/xUbuntu_22.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_22.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 | 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 \ + 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/22-ubuntu/docker-entrypoint.sh b/client/22-ubuntu/docker-entrypoint.sh new file mode 100755 index 00000000..3b1cbf43 --- /dev/null +++ b/client/22-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-pgsql/22-ubuntu/Dockerfile b/director-pgsql/22-ubuntu/Dockerfile new file mode 100644 index 00000000..6768fb8f --- /dev/null +++ b/director-pgsql/22-ubuntu/Dockerfile @@ -0,0 +1,58 @@ +# Bareos director Dockerfile +FROM ubuntu:jammy + +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=http://download.bareos.org/current/xUbuntu_22.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_22.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 | 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 \ + && 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-database-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/22-ubuntu/docker-entrypoint.sh b/director-pgsql/22-ubuntu/docker-entrypoint.sh new file mode 100755 index 00000000..6a331f33 --- /dev/null +++ b/director-pgsql/22-ubuntu/docker-entrypoint.sh @@ -0,0 +1,128 @@ +#!/usr/bin/env bash + +github_bareos='raw.githubusercontent.com/bareos/bareos' +webui_admin_conf='Release/24.0.10/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf' +admin_conf='Release/24.0.10/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/22-ubuntu/webhook-notify b/director-pgsql/22-ubuntu/webhook-notify new file mode 100755 index 00000000..801e3eaa --- /dev/null +++ b/director-pgsql/22-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/22-ubuntu/docker-entrypoint.sh b/storage/22-ubuntu/docker-entrypoint.sh new file mode 100755 index 00000000..a7134011 --- /dev/null +++ b/storage/22-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/22-ubuntu/Dockerfile b/webui/22-ubuntu/Dockerfile new file mode 100644 index 00000000..eed5cfc8 --- /dev/null +++ b/webui/22-ubuntu/Dockerfile @@ -0,0 +1,44 @@ +# Bareos Web-ui Dockerfile +FROM ubuntu:jammy + +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=http://download.bareos.org/current/xUbuntu_22.04/Release.key +ENV BAREOS_REPO=http://download.bareos.org/current/xUbuntu_22.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 | 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 \ + 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/22-ubuntu/docker-entrypoint.sh b/webui/22-ubuntu/docker-entrypoint.sh new file mode 100755 index 00000000..94b0af54 --- /dev/null +++ b/webui/22-ubuntu/docker-entrypoint.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +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.*#diraddress = '\""${BAREOS_DIR_HOST}"\"'#' \ + /etc/bareos-webui/directors.ini + + # Control file + touch /etc/bareos-webui/bareos-config.control +fi + +apache_conf="/etc/apache2/sites-available/000-default.conf" + +# Set document root +sed -i "s#/var/www/html#/usr/share/bareos-webui/public#g" $apache_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 "$@"