Compare commits

...

7 Commits

Author SHA1 Message Date
Ian
78d6fd7ff5
Merge pull request #1 from GoliathLabs/master
Added: Dependabot.yml
2021-12-27 21:54:34 -08:00
GoliathLabs
16d10e3fca
Added: Dependabot.yml 2021-12-20 20:26:27 +01:00
ViViDboarder
428b9c1d8e Update readme to show proper location of restore script 2021-06-17 13:28:03 -07:00
ViViDboarder
4e6bc4022c Fix location of scripts in cron 2021-06-15 14:50:03 -07:00
ViViDboarder
27aa1fd059 Add instructions for advice on configuring rclone targets 2021-06-15 13:21:33 -07:00
ViViDboarder
f4aa842dd3 Make config dir a volume to presist restic configs 2021-06-15 13:21:09 -07:00
ViViDboarder
fd824fbf47 Add tests 2021-06-15 12:30:02 -07:00
7 changed files with 58 additions and 5 deletions

16
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,16 @@
# Docs: <https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/customizing-dependency-updates>
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule: {interval: monthly}
reviewers: [ViViDboarder]
assignees: [ViViDboarder]
- package-ecosystem: docker
directory: /
schedule: {interval: monthly}
reviewers: [ViViDboarder]
assignees: [ViViDboarder]

30
.github/workflows/tests.yml vendored Normal file
View File

@ -0,0 +1,30 @@
---
name: tests
"on":
push:
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Run base tests
run: make test-x86
- name: Run s3 tests
run: make test-s3-x86
- name: Setup python
uses: actions/setup-python@v2.2.2
- name: Run pre-commit hooks
run: |
pip install pre-commit
make check

View File

@ -26,4 +26,6 @@ COPY ./scripts /scripts
HEALTHCHECK CMD /scripts/healthcheck.sh HEALTHCHECK CMD /scripts/healthcheck.sh
VOLUME /root/.config
CMD [ "/scripts/start.sh" ] CMD [ "/scripts/start.sh" ]

View File

@ -11,7 +11,7 @@ test: test-x86
.PHONY: build-x86 .PHONY: build-x86
build-x86: build-x86:
docker build -f ./Dockerfile -t $(DOCKER_TAG) . docker build --build-arg TARGETARCH=amd64 -f ./Dockerfile -t $(DOCKER_TAG) .
.PHONY: build-arm .PHONY: build-arm
build-arm: build-arm:
@ -35,7 +35,7 @@ test-all: test-x86 test-arm
.PHONY: test-s3-x86 .PHONY: test-s3-x86
test-s3-x86: test-s3-x86:
cd tests && ./test-s3.sh cd tests && env TARGETARCH=amd64 ./test-s3.sh
.PHONY: shell-x86 .PHONY: shell-x86
shell-x86: build-x86 shell-x86: build-x86

View File

@ -31,10 +31,12 @@ Hostname is used for identifying what you are backing up. You may want to specif
Mount all volumes from your existing container with `--volumes-from` and then back up by providing the paths to those volumes. If there are more than one volumes, you'll want to use the above tip for mulitple backup sources Mount all volumes from your existing container with `--volumes-from` and then back up by providing the paths to those volumes. If there are more than one volumes, you'll want to use the above tip for mulitple backup sources
### Restoring a backup ### Restoring a backup
On your running container, execute `/restore.sh`. That should be that! Eg. `docker exec my_backup_container /restore.sh` On your running container, execute `/scripts/restore.sh`. That should be that! Eg. `docker exec my_backup_container /scripts/restore.sh`
### Backup to any rclone destination ### Backup to any rclone destination
This image also contains [rclone](https://rclone.org). This allows you to target any destination supported by rclone. Check out the [official documentation](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#other-services-via-rclone) to see how to configure this. This image also contains [rclone](https://rclone.org). This allows you to target any destination supported by rclone. Check out the [official documentation](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#other-services-via-rclone) to see how to configure this.
Rather than having to use an exec shell inside the container, I recommend configuring via the backup destination. For example: `rclone::ftp,env_auth:/test-restic` and then passing all config values via the environment.
### Pre/post backup/restore scripts ### Pre/post backup/restore scripts
Before and after any backup or restore, scripts located in `/scripts/{backup,restore}/{before,after}/` will be executed. This can be used to do things like snapshotting a database before backing it up and restoring the contents. Before and after any backup or restore, scripts located in `/scripts/{backup,restore}/{before,after}/` will be executed. This can be used to do things like snapshotting a database before backing it up and restoring the contents.

View File

@ -34,11 +34,11 @@ if [ -n "$CRON_SCHEDULE" ]; then
echo "SHELL=/bin/bash" > /crontab.conf echo "SHELL=/bin/bash" > /crontab.conf
# Schedule the backups # Schedule the backups
echo "$CRON_SCHEDULE /cron-exec.sh /backup.sh" >> /crontab.conf echo "$CRON_SCHEDULE /scripts/cron-exec.sh /scripts/backup.sh" >> /crontab.conf
echo "Backups scheduled as $CRON_SCHEDULE" echo "Backups scheduled as $CRON_SCHEDULE"
if [ -n "$VERIFY_CRON_SCHEDULE" ]; then if [ -n "$VERIFY_CRON_SCHEDULE" ]; then
echo "$VERIFY_CRON_SCHEDULE /cron-exec.sh /verify.sh" >> /crontab.conf echo "$VERIFY_CRON_SCHEDULE /scripts/cron-exec.sh /scripts/verify.sh" >> /crontab.conf
echo "Verify scheduled as $VERIFY_CRON_SCHEDULE" echo "Verify scheduled as $VERIFY_CRON_SCHEDULE"
fi fi

View File

@ -1,9 +1,12 @@
---
version: '2' version: '2'
services: services:
restic: restic:
build: build:
context: .. context: ..
dockerfile: Dockerfile dockerfile: Dockerfile
args:
- TARGETARCH
entrypoint: "bash" entrypoint: "bash"
command: "-c 'sleep 2 && /test.sh'" command: "-c 'sleep 2 && /test.sh'"
hostname: itest hostname: itest