From 740b8975815edae0ba170692b1c8394e12f6808f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Wed, 16 Apr 2025 13:35:23 +0200 Subject: [PATCH 1/6] chore: update restic to 0.18.0 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9cf220b..b279bb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM alpine:latest as rclone ADD https://downloads.rclone.org/rclone-current-linux-amd64.zip / RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/rclone && chmod +x /bin/rclone -FROM restic/restic:0.16.0 +FROM restic/restic:0.18.0 RUN apk add --update --no-cache curl mailx From e75e026e92aab64c09cda58f643750840701f2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Wed, 16 Apr 2025 15:03:33 +0200 Subject: [PATCH 2/6] feat: add arm64 specific dockerfile --- Dockerfile | 4 ++-- Dockerfile.arm64 | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.arm64 diff --git a/Dockerfile b/Dockerfile index b279bb2..02833a1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM alpine:latest as rclone # Get rclone executable -ADD https://downloads.rclone.org/rclone-current-linux-amd64.zip / -RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/rclone && chmod +x /bin/rclone +ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / +RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone FROM restic/restic:0.18.0 diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 new file mode 100644 index 0000000..02833a1 --- /dev/null +++ b/Dockerfile.arm64 @@ -0,0 +1,58 @@ +FROM alpine:latest as rclone + +# Get rclone executable +ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / +RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone + +FROM restic/restic:0.18.0 + +RUN apk add --update --no-cache curl mailx + +COPY --from=rclone /bin/rclone /bin/rclone + +RUN \ + mkdir -p /mnt/restic /var/spool/cron/crontabs /var/log; \ + touch /var/log/cron.log; + +ENV RESTIC_REPOSITORY=/mnt/restic +ENV RESTIC_PASSWORD="" +ENV RESTIC_TAG="" +ENV NFS_TARGET="" +ENV BACKUP_CRON="0 */6 * * *" +ENV CHECK_CRON="" +ENV RESTIC_INIT_ARGS="" +ENV RESTIC_FORGET_ARGS="" +ENV RESTIC_JOB_ARGS="" +ENV RESTIC_DATA_SUBSET="" +ENV MAILX_ARGS="" +ENV OS_AUTH_URL="" +ENV OS_PROJECT_ID="" +ENV OS_PROJECT_NAME="" +ENV OS_USER_DOMAIN_NAME="Default" +ENV OS_PROJECT_DOMAIN_ID="default" +ENV OS_USERNAME="" +ENV OS_PASSWORD="" +ENV OS_REGION_NAME="" +ENV OS_INTERFACE="" +ENV OS_IDENTITY_API_VERSION=3 + +# openshift fix +RUN mkdir /.cache && \ + chgrp -R 0 /.cache && \ + chmod -R g=u /.cache && \ + chgrp -R 0 /mnt && \ + chmod -R g=u /mnt && \ + chgrp -R 0 /var/spool/cron/crontabs/root && \ + chmod -R g=u /var/spool/cron/crontabs/root && \ + chgrp -R 0 /var/log/cron.log && \ + chmod -R g=u /var/log/cron.log + +# /data is the dir where you have to put the data to be backed up +VOLUME /data + +COPY backup.sh /bin/backup +COPY check.sh /bin/check +COPY entry.sh /entry.sh + +ENTRYPOINT ["/entry.sh"] +CMD ["tail","-fn0","/var/log/cron.log"] From 214edc2721b120cd080a69e033ebb2f29eedcc7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Wed, 16 Apr 2025 15:14:22 +0200 Subject: [PATCH 3/6] fix: for podman compatibility prefix image with'docker.io/' --- Dockerfile | 4 ++-- Dockerfile.arm64 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 02833a1..996878b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM alpine:latest as rclone +FROM docker.io/alpine:latest as rclone # Get rclone executable ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone -FROM restic/restic:0.18.0 +FROM docker.io/restic/restic:0.18.0 RUN apk add --update --no-cache curl mailx diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 02833a1..996878b 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -1,10 +1,10 @@ -FROM alpine:latest as rclone +FROM docker.io/alpine:latest as rclone # Get rclone executable ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone -FROM restic/restic:0.18.0 +FROM docker.io/restic/restic:0.18.0 RUN apk add --update --no-cache curl mailx From e38f19c6d21c99f203e349b792fe007ea30badde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Wed, 16 Apr 2025 18:12:21 +0200 Subject: [PATCH 4/6] fix: default dockerfile uses amd64 arch --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 996878b..0da8379 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM docker.io/alpine:latest as rclone # Get rclone executable -ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / -RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone +ADD https://downloads.rclone.org/rclone-current-linux-amd64.zip / +RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/rclone && chmod +x /bin/rclone FROM docker.io/restic/restic:0.18.0 From f695ea525306288bd45f77675a5cbf600bdea782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Wed, 16 Apr 2025 18:13:33 +0200 Subject: [PATCH 5/6] Chore/restic upgrade (#92) * chore: update restic to 0.18.0 * feat: add arm64 specific dockerfile * fix: for podman compatibility prefix image with'docker.io/' --- Dockerfile | 4 ++-- Dockerfile.arm64 | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.arm64 diff --git a/Dockerfile b/Dockerfile index 9cf220b..0da8379 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM alpine:latest as rclone +FROM docker.io/alpine:latest as rclone # Get rclone executable ADD https://downloads.rclone.org/rclone-current-linux-amd64.zip / RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/rclone && chmod +x /bin/rclone -FROM restic/restic:0.16.0 +FROM docker.io/restic/restic:0.18.0 RUN apk add --update --no-cache curl mailx diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 new file mode 100644 index 0000000..996878b --- /dev/null +++ b/Dockerfile.arm64 @@ -0,0 +1,58 @@ +FROM docker.io/alpine:latest as rclone + +# Get rclone executable +ADD https://downloads.rclone.org/rclone-current-linux-arm64.zip / +RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/rclone && chmod +x /bin/rclone + +FROM docker.io/restic/restic:0.18.0 + +RUN apk add --update --no-cache curl mailx + +COPY --from=rclone /bin/rclone /bin/rclone + +RUN \ + mkdir -p /mnt/restic /var/spool/cron/crontabs /var/log; \ + touch /var/log/cron.log; + +ENV RESTIC_REPOSITORY=/mnt/restic +ENV RESTIC_PASSWORD="" +ENV RESTIC_TAG="" +ENV NFS_TARGET="" +ENV BACKUP_CRON="0 */6 * * *" +ENV CHECK_CRON="" +ENV RESTIC_INIT_ARGS="" +ENV RESTIC_FORGET_ARGS="" +ENV RESTIC_JOB_ARGS="" +ENV RESTIC_DATA_SUBSET="" +ENV MAILX_ARGS="" +ENV OS_AUTH_URL="" +ENV OS_PROJECT_ID="" +ENV OS_PROJECT_NAME="" +ENV OS_USER_DOMAIN_NAME="Default" +ENV OS_PROJECT_DOMAIN_ID="default" +ENV OS_USERNAME="" +ENV OS_PASSWORD="" +ENV OS_REGION_NAME="" +ENV OS_INTERFACE="" +ENV OS_IDENTITY_API_VERSION=3 + +# openshift fix +RUN mkdir /.cache && \ + chgrp -R 0 /.cache && \ + chmod -R g=u /.cache && \ + chgrp -R 0 /mnt && \ + chmod -R g=u /mnt && \ + chgrp -R 0 /var/spool/cron/crontabs/root && \ + chmod -R g=u /var/spool/cron/crontabs/root && \ + chgrp -R 0 /var/log/cron.log && \ + chmod -R g=u /var/log/cron.log + +# /data is the dir where you have to put the data to be backed up +VOLUME /data + +COPY backup.sh /bin/backup +COPY check.sh /bin/check +COPY entry.sh /entry.sh + +ENTRYPOINT ["/entry.sh"] +CMD ["tail","-fn0","/var/log/cron.log"] From 3c113ab2f40cbb663d91ecd751ff27fa35e82bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Konr=C3=A4di?= Date: Tue, 22 Apr 2025 11:14:25 +0200 Subject: [PATCH 6/6] feat: add shadow package for simple user management --- Dockerfile | 2 +- Dockerfile.arm64 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0da8379..440874e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN unzip rclone-current-linux-amd64.zip && mv rclone-*-linux-amd64/rclone /bin/ FROM docker.io/restic/restic:0.18.0 -RUN apk add --update --no-cache curl mailx +RUN apk add --update --no-cache curl mailx shadow COPY --from=rclone /bin/rclone /bin/rclone diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 996878b..21afc0f 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -6,7 +6,7 @@ RUN unzip rclone-current-linux-arm64.zip && mv rclone-*-linux-arm64/rclone /bin/ FROM docker.io/restic/restic:0.18.0 -RUN apk add --update --no-cache curl mailx +RUN apk add --update --no-cache curl mailx shadow COPY --from=rclone /bin/rclone /bin/rclone