https://github.com/mati365/hetzner-minio-backup-server
Example of a rock-solid centralised backup server hosted on Fedora CoreOS in the Hetzner Cloud. Uses tools such as MinIO, NGINX, Podman Quadlet and Letsencrypt.
https://github.com/mati365/hetzner-minio-backup-server
ansible backup backup-script backup-server containers docker hetzner iac minio nginx podman postgresql s3
Last synced: about 1 year ago
JSON representation
Example of a rock-solid centralised backup server hosted on Fedora CoreOS in the Hetzner Cloud. Uses tools such as MinIO, NGINX, Podman Quadlet and Letsencrypt.
- Host: GitHub
- URL: https://github.com/mati365/hetzner-minio-backup-server
- Owner: Mati365
- License: mit
- Created: 2024-03-19T06:24:50.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T23:26:46.000Z (over 1 year ago)
- Last Synced: 2025-03-25T23:51:25.349Z (about 1 year ago)
- Topics: ansible, backup, backup-script, backup-server, containers, docker, hetzner, iac, minio, nginx, podman, postgresql, s3
- Language: TypeScript
- Homepage:
- Size: 255 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hetzner-minio-backup-server
[](https://opensource.org/licenses/MIT)


[](http://makeapullrequest.com)
Example of a rock-solid centralised backup server hosted on Fedora CoreOS in the Hetzner Cloud. Uses tools such as MinIO, NGINX, Podman Quadlet and Letsencrypt.
## Infra environment variables
```bash
HCLOUD_KEY=
BACKUP_WEBSITE_DOMAIN=
BACKUP_MINIO_USERNAME=
BACKUP_MINIO_PASSWORD=
```
## Job policy
Job policy is a file that describes all jobs that should be performed on specified hosts. It uses ssh tunneling configured in `auth` section to connect to remote servers. Example YML (or JSON) file structure:
```yml
---
hosts:
- auth:
address: 192.168.1.133
username: your-remote-user
privateKey: /home/your-local-user/.ssh/id_rsa
jobs:
test-db-job:
kind: pg-dump
cron:
expression: 0 0 0 * * *
retention:
maxBackups: 7
minio:
bucket: backup
key: local-db-backup/dump-%{timestamp}.tar.gz
database:
name: test_db
auth:
username: postgres
password: 123456
test-db-all-job:
kind: pg-dump-all
cron:
expression: 0 0 0 * * *
retention:
maxBackups: 7
minio:
bucket: backup
key: local-db-all-backup/dump-all-%{timestamp}.tar.gz
database:
auth:
username: postgres
password: 123456
test-rsync-job:
kind: copy
exclude:
- node_modules/cat
cron:
expression: 0 0 0 * * *
retention:
maxBackups: 7
minio:
bucket: backup
key: local-files-backup/dump-%{timestamp}.tar.gz
fileOrDir: /home/your-remote-user/backup/
```