From 1a2e6c48b98da33e16f8bde7f1f4f4e8455f041e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Jan 2023 15:57:16 +0000 Subject: [PATCH] added rclone backupper Dockerfile --- nextcloud/docker-compose.yml | 2 +- rclonebackup/amd64/Dockerfile | 52 +++++++++++++++++++++++++ rclonebackup/amd64/docker-entrypoint.sh | 1 + rclonebackup/arm64/Dockerfile | 52 +++++++++++++++++++++++++ rclonebackup/arm64/docker-entrypoint.sh | 1 + rclonebackup/docker-entrypoint.sh | 21 ++++++++++ 6 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 rclonebackup/amd64/Dockerfile create mode 120000 rclonebackup/amd64/docker-entrypoint.sh create mode 100644 rclonebackup/arm64/Dockerfile create mode 120000 rclonebackup/arm64/docker-entrypoint.sh create mode 100644 rclonebackup/docker-entrypoint.sh diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml index b521de0..1135674 100644 --- a/nextcloud/docker-compose.yml +++ b/nextcloud/docker-compose.yml @@ -46,7 +46,7 @@ services: - TZ=Europe/Berlin #change Time Zone if needed - REDIS_HOST=redis volumes: - - ncconfig:/var/www/html/config #/srv/dev-disk-by-label-disk1 needs to be adjusted +# - ncconfig:/var/www/html/config #/srv/dev-disk-by-label-disk1 needs to be adjusted - ncdata:/var/www/html/data #/srv/dev-disk-by-label-disk1 needs to be adjusted - nchome:/var/www/html #/srv/dev-disk-by-label-disk1 needs to be adjusted # NAS shares diff --git a/rclonebackup/amd64/Dockerfile b/rclonebackup/amd64/Dockerfile new file mode 100644 index 0000000..69fef86 --- /dev/null +++ b/rclonebackup/amd64/Dockerfile @@ -0,0 +1,52 @@ +#FROM alpine:3.9 +FROM ubuntu:latest as build + +ARG DEBIAN_FRONTEND=noninteractive + +ENV INST_RCLONE_VERSION=current +ENV ARCH=amd64 +ENV SYNC_SRC= +ENV SYNC_DEST= +ENV SYNC_OPTS=-v +ENV RCLONE_OPTS="--config /config/rclone.conf" +ENV CRON= +ENV CRON_ABORT= +ENV FORCE_SYNC= +ENV CHECK_URL= +ENV TZ= + + +# install rclone +#RUN apk -U add ca-certificates fuse wget dcron tzdata \ +# && rm -rf /var/cache/apk/* \ +RUN apt update +RUN apt install -y ca-certificates fuse wget cron tzdata zip unzip \ + && cd /tmp \ + && wget -q http://downloads.rclone.org/rclone-${INST_RCLONE_VERSION}-linux-${ARCH}.zip \ + && unzip /tmp/rclone-${INST_RCLONE_VERSION}-linux-${ARCH}.zip \ + && mv /tmp/rclone-*-linux-${ARCH}/rclone /usr/bin \ + && rm -r /tmp/rclone* \ + && apt autoremove -y \ + && rm -rf /var/lib/apt/lists/* \ + && apt clean + + +# install entrypoint +ADD ../docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh + +#ADD config/rclone.conf /root/.config/rclone/rclone.conf + +VOLUME ["/config"] + +# defaults env vars +ENV CRON_SCHEDULE="0 0 * * *" +ENV COMMAND="rclone version" + +ENTRYPOINT ["/docker-entrypoint.sh"] + +RUN touch /var/log/cron.log + +CMD ["cron", "-f"] +#CMD cron -f -l 2 + diff --git a/rclonebackup/amd64/docker-entrypoint.sh b/rclonebackup/amd64/docker-entrypoint.sh new file mode 120000 index 0000000..92ff18c --- /dev/null +++ b/rclonebackup/amd64/docker-entrypoint.sh @@ -0,0 +1 @@ +../docker-entrypoint.sh \ No newline at end of file diff --git a/rclonebackup/arm64/Dockerfile b/rclonebackup/arm64/Dockerfile new file mode 100644 index 0000000..44bca64 --- /dev/null +++ b/rclonebackup/arm64/Dockerfile @@ -0,0 +1,52 @@ +#FROM alpine:3.9 +FROM ubuntu:latest as build + +ARG DEBIAN_FRONTEND=noninteractive + +ENV INST_RCLONE_VERSION=current +ENV ARCH=arm64 +ENV SYNC_SRC= +ENV SYNC_DEST= +ENV SYNC_OPTS=-v +ENV RCLONE_OPTS="--config /config/rclone.conf" +ENV CRON= +ENV CRON_ABORT= +ENV FORCE_SYNC= +ENV CHECK_URL= +ENV TZ= + + +# install rclone +#RUN apk -U add ca-certificates fuse wget dcron tzdata \ +# && rm -rf /var/cache/apk/* \ +RUN apt update +RUN apt install -y ca-certificates fuse wget cron tzdata zip unzip \ + && cd /tmp \ + && wget -q http://downloads.rclone.org/rclone-${INST_RCLONE_VERSION}-linux-${ARCH}.zip \ + && unzip /tmp/rclone-${INST_RCLONE_VERSION}-linux-${ARCH}.zip \ + && mv /tmp/rclone-*-linux-${ARCH}/rclone /usr/bin \ + && rm -r /tmp/rclone* \ + && apt autoremove -y \ + && rm -rf /var/lib/apt/lists/* \ + && apt clean + + +# install entrypoint +ADD ../docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh + +#ADD config/rclone.conf /root/.config/rclone/rclone.conf + +VOLUME ["/config"] + +# defaults env vars +ENV CRON_SCHEDULE="0 0 * * *" +ENV COMMAND="rclone version" + +ENTRYPOINT ["/docker-entrypoint.sh"] + +RUN touch /var/log/cron.log + +CMD ["cron", "-f"] +#CMD cron -f -l 2 + diff --git a/rclonebackup/arm64/docker-entrypoint.sh b/rclonebackup/arm64/docker-entrypoint.sh new file mode 120000 index 0000000..92ff18c --- /dev/null +++ b/rclonebackup/arm64/docker-entrypoint.sh @@ -0,0 +1 @@ +../docker-entrypoint.sh \ No newline at end of file diff --git a/rclonebackup/docker-entrypoint.sh b/rclonebackup/docker-entrypoint.sh new file mode 100644 index 0000000..0a23f5e --- /dev/null +++ b/rclonebackup/docker-entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +CRONJOB="$CRON_SCHEDULE $COMMAND $RCLONE_OPTS" + +echo "Configuring..." + +echo "This cron job will be added :" +echo "$CRONJOB" + +echo "Installing the cron job..." +echo "$CRONJOB > /proc/1/fd/1 2>/proc/1/fd/2" > /var/spool/cron/crontabs/root +chown root:root /var/spool/cron/crontabs/root +chmod 600 /var/spool/cron/crontabs/root + +echo "We run the command once (initial check)..." +#eval "$COMMAND" + +# run the CMD +echo "First sync was successful, starting cron !" +exec "$@"