Skip to content

Commit 6342c94

Browse files
committed
update
1 parent 39eda35 commit 6342c94

File tree

7 files changed

+319
-0
lines changed

7 files changed

+319
-0
lines changed

director/Dockerfile

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Bareos director Dockerfile
2+
FROM alpine:3.21
3+
4+
LABEL maintainer="aide@libertech.fr"
5+
6+
ARG BUILD_DATE
7+
ARG NAME
8+
ARG VCS_REF
9+
ARG VERSION
10+
11+
LABEL org.label-schema.schema-version="1.0" \
12+
org.label-schema.build-date=$BUILD_DATE \
13+
org.label-schema.name=$NAME \
14+
org.label-schema.vcs-ref=$VCS_REF \
15+
org.label-schema.vcs-url="https://github.com/barcus/bareos" \
16+
org.label-schema.version=$VERSION
17+
18+
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
19+
20+
RUN apk add --no-cache bareos bareos-postgresql postgresql-client curl tzdata tar
21+
22+
RUN tar czf /bareos-dir.tgz /etc/bareos
23+
RUN mkdir /run/bareos \
24+
&& chown bareos /run/bareos
25+
26+
COPY webhook-notify /usr/local/bin/webhook-notify
27+
RUN chmod u+x /usr/local/bin/webhook-notify
28+
29+
COPY docker-entrypoint.sh /docker-entrypoint.sh
30+
RUN chmod u+x /docker-entrypoint.sh
31+
32+
EXPOSE 9101
33+
34+
VOLUME /etc/bareos
35+
VOLUME /var/lib/bareos
36+
37+
ENTRYPOINT ["/docker-entrypoint.sh"]
38+
CMD ["/usr/sbin/bareos-dir", "-u", "bareos", "-f"]

director/docker-entrypoint.sh

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
#!/usr/bin/env ash
2+
3+
github_bareos='raw.githubusercontent.com/bareos/bareos'
4+
webui_admin_conf='master/webui/install/bareos/bareos-dir.d/profile/webui-admin.conf'
5+
admin_conf='master/webui/install/bareos/bareos-dir.d/console/admin.conf.example'
6+
7+
if [ ! -f /etc/bareos/bareos-config.control ]; then
8+
tar xzf /bareos-dir.tgz --backup=simple --suffix=.before-control
9+
10+
# Download default admin profile config
11+
if [ ! -f /etc/bareos/bareos-dir.d/profile/webui-admin.conf ]; then
12+
curl --silent --insecure "https://${github_bareos}/${webui_admin_conf}" \
13+
--output /etc/bareos/bareos-dir.d/profile/webui-admin.conf
14+
fi
15+
16+
# Download default webUI admin config
17+
if [ ! -f /etc/bareos/bareos-dir.d/console/admin.conf ]; then
18+
curl --silent --insecure "https://${github_bareos}/${admin_conf}" \
19+
--output /etc/bareos/bareos-dir.d/console/admin.conf
20+
fi
21+
22+
# Update bareos-director configs
23+
# Director / mycatalog & mail report
24+
sed -i "s#dbuser =.*#dbuser = $DB_USER#" \
25+
/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf
26+
sed -i 's#dbpassword =.*#dbpassword = '\""${DB_PASSWORD}"\"'#' \
27+
/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf
28+
sed -i 's#dbname =.*#dbname = '\""${DB_NAME}"\"'\n dbaddress = '\""${DB_HOST}"\"'\n dbport = '\""${DB_PORT}"\"'#' \
29+
/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf
30+
sed -i 's#dbdriver = .*#dbdriver = '\""postgresql"\"'#' \
31+
/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf
32+
[ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \
33+
/etc/bareos/bareos-dir.d/messages/Daemon.conf
34+
sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#" \
35+
/etc/bareos/bareos-dir.d/messages/Daemon.conf
36+
sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \
37+
/etc/bareos/bareos-dir.d/messages/Daemon.conf
38+
[ -n "${SENDER_MAIL}" ] && sed -i "s#<%r#<${SENDER_MAIL}#g" \
39+
/etc/bareos/bareos-dir.d/messages/Standard.conf
40+
sed -i "s#/usr/bin/bsmtp -h localhost#/usr/bin/bsmtp -h ${SMTP_HOST}#g" \
41+
/etc/bareos/bareos-dir.d/messages/Standard.conf
42+
sed -i "s#mail = root#mail = ${ADMIN_MAIL}#" \
43+
/etc/bareos/bareos-dir.d/messages/Standard.conf
44+
45+
# Setup webhook
46+
if [ "${WEBHOOK_NOTIFICATION}" = true ]; then
47+
sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \
48+
/etc/bareos/bareos-dir.d/messages/Daemon.conf
49+
sed -i "s#/usr/bin/bsmtp -h.*#/usr/local/bin/webhook-notify %t %e %c %l %n\"#" \
50+
/etc/bareos/bareos-dir.d/messages/Standard.conf
51+
fi
52+
53+
# storage daemon
54+
sed -i 's#Address = .*#Address = '\""${BAREOS_SD_HOST}"\"'#' \
55+
/etc/bareos/bareos-dir.d/storage/File.conf
56+
sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' \
57+
/etc/bareos/bareos-dir.d/storage/File.conf
58+
59+
# client/file daemon
60+
sed -i 's#Address = .*#Address = '\""${BAREOS_FD_HOST}"\"'#' \
61+
/etc/bareos/bareos-dir.d/client/bareos-fd.conf
62+
sed -i 's#Password = .*#Password = '\""${BAREOS_FD_PASSWORD}"\"'#' \
63+
/etc/bareos/bareos-dir.d/client/bareos-fd.conf
64+
65+
# webUI
66+
sed -i 's#Password = .*#Password = '\""${BAREOS_WEBUI_PASSWORD}"\"'#' \
67+
/etc/bareos/bareos-dir.d/console/admin.conf
68+
69+
70+
# MyCatalog Backup
71+
sed -i "s#/var/lib/bareos/bareos.sql#/var/lib/bareos-director/bareos.sql#" \
72+
/etc/bareos/bareos-dir.d/fileset/Catalog.conf
73+
sed -i "s#make_catalog_backup MyCatalog#make_catalog_backup ${DB_NAME} ${DB_USER} '' ${DB_HOST}#" \
74+
/etc/bareos/bareos-dir.d/job/BackupCatalog.conf
75+
76+
# Add pgpass file to ${DB_USER} home
77+
homedir=$(getent passwd "$DB_USER" | cut -d: -f6)
78+
echo "${DB_HOST}:${DB_PORT}:${DB_NAME}:${DB_USER}:${DB_PASSWORD}" > "${homedir}/.pgpass"
79+
chmod 600 "${homedir}/.pgpass"
80+
chown "${DB_USER}" "${homedir}/.pgpass"
81+
82+
# Control file
83+
touch /etc/bareos/bareos-config.control
84+
fi
85+
86+
if [[ -z ${CI_TEST} ]] ; then
87+
# Waiting Postgresql is up
88+
sqlup=1
89+
while [ "$sqlup" -ne 0 ] ; do
90+
echo "Waiting for postgresql..."
91+
pg_isready --host="${DB_HOST}" --port="${DB_PORT}" --user="${DB_ADMIN_USER}"
92+
if [ $? -ne 0 ] ; then
93+
sqlup=1
94+
sleep 5
95+
else
96+
sqlup=0
97+
echo "...postgresql is alive"
98+
fi
99+
done
100+
fi
101+
102+
export PGUSER=${DB_ADMIN_USER}
103+
export PGHOST=${DB_HOST}
104+
export PGPASSWORD=${DB_ADMIN_PASSWORD}
105+
[[ -z "${DB_INIT}" ]] && DB_INIT='false'
106+
[[ -z "${DB_UPDATE}" ]] && DB_UPDATE='false'
107+
108+
if [ ! -f /etc/bareos/bareos-db.control ] && [ "${DB_INIT}" == 'true' ] ; then
109+
# Init Postgres DB
110+
echo "Bareos DB init"
111+
echo "Bareos DB init: Create user ${DB_USER}"
112+
psql -c "create user ${DB_USER} with createdb createrole login;"
113+
echo "Bareos DB init: Set user password"
114+
psql -c "alter user ${DB_USER} password '${DB_PASSWORD}';"
115+
/etc/bareos/scripts/create_bareos_database 2>/dev/null
116+
/etc/bareos/scripts/make_bareos_tables 2>/dev/null
117+
/etc/bareos/scripts/grant_bareos_privileges 2>/dev/null
118+
# Control file
119+
touch /etc/bareos/bareos-db.control
120+
fi
121+
122+
if [ "${DB_UPDATE}" == 'true' ] ; then
123+
# Try Postgres upgrade
124+
echo "Bareoos DB update"
125+
echo "Bareoos DB update: Update tables"
126+
/etc/bareos/scripts/update_bareos_tables 2>/dev/null
127+
echo "Bareoos DB update: Grant privileges"
128+
/etc/bareos/scripts/grant_bareos_privileges 2>/dev/null
129+
fi
130+
131+
# Fix permissions
132+
find /etc/bareos ! -user bareos -exec chown bareos {} \;
133+
chown -R bareos:bareos /var/lib/bareos /var/log/bareos
134+
135+
# Run Dockerfile CMD
136+
exec "$@"
137+

director/webhook-notify

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env sh
2+
3+
job_type=$1
4+
job_status=$2
5+
job_client=$3
6+
job_level=$4
7+
job_name=$5
8+
msg_icon=""
9+
10+
if [ "$job_status" = "OK" ] ;then
11+
msg_icon=""
12+
fi
13+
14+
msg_txt="$msg_icon Bareos: $job_type $job_status of $job_client \
15+
$job_level (${job_name})"
16+
17+
load_json()
18+
{
19+
if [ "${WEBHOOK_TYPE}" = "slack" ] ; then
20+
cat <<EOF
21+
{
22+
"text": "$msg_txt"
23+
}
24+
EOF
25+
fi
26+
27+
if [ "${WEBHOOK_TYPE}" = "telegram" ] ; then
28+
cat <<EOF
29+
{
30+
"chat_id": "${WEBHOOK_CHAT_ID}",
31+
"text": "$msg_txt",
32+
"disable_notification": false
33+
}
34+
EOF
35+
fi
36+
}
37+
38+
/usr/bin/curl -s -k -X POST \
39+
-H 'Content-Type: application/json' \
40+
-d "$(load_json)" \
41+
${WEBHOOK_URL}
42+

storage/Dockerfile

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Dockerfile Bareos storage daemon
2+
FROM alpine:3.21.0
3+
4+
LABEL maintainer="barcus@tou.nu"
5+
6+
ARG BUILD_DATE
7+
ARG NAME
8+
ARG VCS_REF
9+
ARG VERSION
10+
11+
LABEL org.label-schema.schema-version="1.0" \
12+
org.label-schema.build-date=$BUILD_DATE \
13+
org.label-schema.name=$NAME \
14+
org.label-schema.vcs-ref=$VCS_REF \
15+
org.label-schema.vcs-url="https://github.com/barcus/bareos" \
16+
org.label-schema.version=$VERSION
17+
18+
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
19+
20+
RUN apk add --no-cache bareos bareos-storage tar
21+
22+
RUN tar czf /bareos-sd.tgz /etc/bareos/bareos-sd.d
23+
RUN mkdir /run/bareos \
24+
&& chown bareos /run/bareos
25+
26+
COPY docker-entrypoint.sh /docker-entrypoint.sh
27+
RUN chmod u+x /docker-entrypoint.sh
28+
29+
EXPOSE 9103
30+
31+
VOLUME /etc/bareos
32+
VOLUME /var/lib/bareos/storage
33+
34+
ENTRYPOINT ["/docker-entrypoint.sh"]
35+
CMD ["/usr/sbin/bareos-sd", "-u", "bareos", "-f"]

storage/docker-entrypoint.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env ash
2+
3+
bareos_sd_config="/etc/bareos/bareos-sd.d/director/bareos-dir.conf"
4+
5+
if [ ! -f /etc/bareos/bareos-config.control ]; then
6+
tar xfz /bareos-sd.tgz --backup=simple --suffix=.before-control
7+
8+
# Update bareos-storage configs
9+
sed -i 's#Password = .*#Password = '\""${BAREOS_SD_PASSWORD}"\"'#' $bareos_sd_config
10+
11+
# Control file
12+
touch /etc/bareos/bareos-config.control
13+
fi
14+
15+
# Fix permissions
16+
find /var/lib/bareos ! -user bareos -exec chown bareos {} \;
17+
find /etc/bareos/bareos-sd.d ! -user bareos -exec chown bareos {} \;
18+
find /dev -regex "/dev/[n]?st[0-9]+" ! -user bareos -exec chown bareos {} \;
19+
find /dev -regex "/dev/tape/.*" ! -user bareos -exec chown bareos {} \;
20+
21+
# Run Dockerfile CMD
22+
exec "$@"

webui/Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Bareos Web-ui Dockerfile
2+
FROM alpine:3.20
3+
4+
RUN apk add --no-cache bareos-webui-nginx
5+
6+
COPY docker-entrypoint.sh /docker-entrypoint.sh
7+
RUN chmod u+x /docker-entrypoint.sh
8+
RUN tar cfvz /bareos-webui-config.tgz /etc/bareos-webui
9+
RUN tar cfvz /bareos-webui-code.tgz /usr/share/bareos-webui
10+
RUN mkdir -p /run/nginx
11+
12+
EXPOSE 9100
13+
14+
VOLUME /etc/bareos-webui
15+
16+
ENTRYPOINT ["/docker-entrypoint.sh"]
17+
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
18+

webui/docker-entrypoint.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env ash
2+
3+
if [ ! -f /etc/bareos-webui/bareos-config.control ]
4+
then
5+
tar xfvz /bareos-webui-config.tgz
6+
7+
# Update bareos-webui config
8+
sed -i "s/diraddress = \"localhost\"/diraddress = \"${BAREOS_DIR_HOST}\"/" /etc/bareos-webui/directors.ini
9+
10+
# Control file
11+
touch /etc/bareos-webui/bareos-config.control
12+
fi
13+
14+
if [ ! -f /usr/share/bareos-webui/bareos-config.control ]
15+
then
16+
tar xfvz /bareos-webui-code.tgz
17+
touch /usr/share/bareos-webui/bareos-config.control
18+
fi
19+
20+
# Fix nginx 'client_max_body_size'
21+
sed -i "s#client_max_body_size 1m#client_max_body_size 20m#" /etc/nginx/nginx.conf
22+
23+
# set php-fpm host andd port
24+
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
25+
26+
exec "$@"
27+

0 commit comments

Comments
 (0)