### Install and Configure rclone Source: https://zerobyte.app/docs/installation Installs rclone using a script and initiates its configuration process. This is a prerequisite for mounting rclone configurations into the Zerobyte container. ```bash curl https://rclone.org/install.sh | sudo bash rclone config ``` -------------------------------- ### Install webhook CLI Source: https://zerobyte.app/docs/guides/backup-webhooks Install the webhook command-line tool on Debian or Ubuntu systems. ```bash sudo apt-get update sudo apt-get install webhook ``` -------------------------------- ### Example Callback URL Source: https://zerobyte.app/docs/guides/oidc-sso An example of a fully qualified callback URL for an OIDC provider. ```text https://backup.example.com/api/auth/sso/callback/acme-oidc ``` -------------------------------- ### Example Zerobyte Environment Variables Source: https://zerobyte.app/docs/installation Illustrative example of environment variables for Zerobyte, including timezone, base URL, and application secret. ```yaml environment: - TZ=America/New_York - BASE_URL=http://192.168.1.100:4096 - APP_SECRET=a1b2c3d4e5f6... # Output from openssl command ``` -------------------------------- ### Check Docker and Docker Compose Installation Source: https://zerobyte.app/docs/installation Verify that Docker and Docker Compose are installed and accessible on your system. ```bash docker --version docker compose version ``` -------------------------------- ### Simplified Zerobyte Installation for Local Directories Source: https://zerobyte.app/docs/configuration Configure Zerobyte for simplified installations that only require local directory backups. No special capabilities or devices are needed. ```yaml # No cap_add or devices needed ports: - "4096:4096" ``` -------------------------------- ### Full Zerobyte Installation with Remote Mounts Source: https://zerobyte.app/docs/configuration Configure container capabilities and devices for a full Zerobyte installation that supports mounting NFS, SMB, WebDAV, and SFTP volumes directly from the application. ```yaml cap_add: - SYS_ADMIN devices: - /dev/fuse:/dev/fuse ``` -------------------------------- ### Start Webhook Server (Foreground) Source: https://zerobyte.app/docs/guides/backup-webhooks Run the webhook server in the foreground for testing. It loads the specified hook configuration and listens on port 9000. ```bash sudo webhook -hooks /opt/zerobyte-hooks/hooks.json -port 9000 -verbose -http-methods POST ``` -------------------------------- ### Get Help for Zerobyte CLI Commands Source: https://zerobyte.app/docs/cli View all available options for the Zerobyte CLI or specific commands by appending `--help`. ```bash docker exec -it zerobyte bun run cli --help ``` ```bash docker exec -it zerobyte bun run cli reset-password --help ``` -------------------------------- ### Install rclone Source: https://zerobyte.app/docs/guides/rclone Installs rclone on your host system using a curl script. Alternatively, visit rclone.org/install for platform-specific packages. ```bash curl https://rclone.org/install.sh | sudo bash ``` -------------------------------- ### WebDAV Volume Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for a WebDAV volume. Requires server, path, and optional authentication and SSL settings. ```json { "backend": "webdav", "server": "cloud.example.com", "path": "/team-a", "username": "team-a", "password": "env://WEBDAV_PASSWORD", "port": 443, "ssl": true } ``` -------------------------------- ### Start Docker Compose Stack Source: https://zerobyte.app/docs/guides/tailscale Command to launch the Zerobyte and Tailscale services defined in the Docker Compose file in detached mode. ```bash docker compose up -d ``` -------------------------------- ### Directory Volume Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for a volume using the directory backend. Specifies the path within the Zerobyte container. ```json { "id": "volume-id", "organizationId": "org-id", "name": "Volume Name", "backend": "directory", "autoRemount": true, "delete": false, "config": { "backend": "directory", "path": "/data/volume" } } ``` -------------------------------- ### Local Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for a local storage backend. It specifies the backend type and the local path where the repository data will be stored. `isExistingRepository` is set to false, indicating Zerobyte should initialize it. ```json { "backend": "local", "path": "/var/lib/zerobyte/repositories/primary", "isExistingRepository": false } ``` -------------------------------- ### NFS Volume Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for an NFS volume. Requires server details, export path, and NFS version. ```json { "backend": "nfs", "server": "10.0.0.10", "exportPath": "/exports/media", "port": 2049, "version": "4.1", "readOnly": true } ``` -------------------------------- ### REST Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for a REST API backend. It requires the base URL and optionally accepts username, password, and a path. `isExistingRepository` is true. ```json { "backend": "rest", "url": "https://rest-server.example.com", "username": "env://REST_USERNAME", "password": "file://rest_password", "path": "zerobyte", "isExistingRepository": true } ``` -------------------------------- ### Example Headers for Webhooks Source: https://zerobyte.app/docs/guides/backup-webhooks Optional headers for webhook requests. Ensure to use a secure, unique secret for the X-Zerobyte-Hook-Secret. ```text X-Zerobyte-Hook-Secret: replace-with-a-long-random-secret Content-Type: application/json ``` -------------------------------- ### Configure rclone remote Source: https://zerobyte.app/docs/guides/rclone Starts the interactive rclone configuration wizard to add a new remote. Follow the prompts for provider-specific authentication. ```bash rclone config ``` -------------------------------- ### Script to Start a Docker Container Source: https://zerobyte.app/docs/guides/backup-webhooks Shell script to start a specified Docker container if it is not currently running. Assumes the container name is 'postgres'. ```sh #!/bin/sh set -eu CONTAINER=postgres STATE=$(docker inspect -f '{{.State.Running}}' "$CONTAINER") if [ "$STATE" != "true" ]; then docker start "$CONTAINER" fi ``` -------------------------------- ### Rclone Volume Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for a volume using rclone. Requires the rclone remote name and path within that remote. ```json { "backend": "rclone", "remote": "remote-name", "path": "team-a", "readOnly": true } ``` -------------------------------- ### Configure rclone Storage Source: https://zerobyte.app/docs/quickstart Details for configuring rclone-based storage, requiring a pre-configured rclone setup mounted into the container. ```text Type: rclone Remote: gdrive (must exist in rclone config) Path: backups/zerobyte ``` -------------------------------- ### Azure Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for Azure Blob Storage. It requires the container name, storage account name, and account key. An optional `endpointSuffix` can be provided. `isExistingRepository` is true. ```json { "backend": "azure", "container": "zerobyte-backups", "accountName": "storageaccount", "accountKey": "env://AZURE_STORAGE_ACCOUNT_KEY", "endpointSuffix": "core.windows.net", "isExistingRepository": true } ``` -------------------------------- ### Systemd Unit for Zerobyte Webhook Runner Source: https://zerobyte.app/docs/guides/backup-webhooks Create a systemd service file to automatically start the Zerobyte webhook runner on boot. This ensures the webhook service is available when needed. ```systemd [Unit] Description=Zerobyte backup webhook runner After=network-online.target docker.service Wants=network-online.target Requires=docker.service [Service] Type=simple ExecStart=/usr/bin/webhook -hooks /opt/zerobyte-hooks/hooks.json -port 9000 -http-methods POST -verbose Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target ``` -------------------------------- ### S3 Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Configuration example for an AWS S3 backend. It includes the S3 endpoint, bucket name, access key ID, and secret access key. `isExistingRepository` is set to true, meaning the bucket is pre-initialized. ```json { "backend": "s3", "endpoint": "https://s3.amazonaws.com", "bucket": "company-backups", "accessKeyId": "env://AWS_ACCESS_KEY_ID", "secretAccessKey": "file://aws_secret_access_key", "isExistingRepository": true } ``` -------------------------------- ### Custom Notification Configuration Example Source: https://zerobyte.app/docs/guides/notifications Use Custom type with a Shoutrrr URL for direct integration. Refer to Shoutrrr documentation for supported formats and options. ```text slack://hook:T000-B000-XXX@webhook?username=Zerobyte ``` -------------------------------- ### Configure Retention Policy Source: https://zerobyte.app/docs/quickstart Define how long backups should be kept. This example sets daily, weekly, monthly, and yearly retention limits. ```plaintext Keep Daily: 7 Keep Weekly: 4 Keep Monthly: 6 Keep Yearly: 1 ``` -------------------------------- ### R2 Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Example configuration for Cloudflare R2 object storage. It requires the R2 endpoint, bucket name, and access credentials. `isExistingRepository` is set to true, indicating the bucket already exists. ```json { "backend": "r2", "endpoint": "https://.r2.cloudflarestorage.com", "bucket": "zerobyte-backups", "accessKeyId": "env://R2_ACCESS_KEY_ID", "secretAccessKey": "env://R2_SECRET_ACCESS_KEY", "isExistingRepository": true } ``` -------------------------------- ### Docker Compose Configuration with Secrets Source: https://zerobyte.app/docs/configuration Example of a Docker Compose file defining a service with environment variables and Docker secrets. The secrets are then referenced in the provisioning file. ```yaml services: zerobyte: environment: - S3_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE secrets: - s3_secret_key volumes: - /var/lib/zerobyte:/var/lib/zerobyte secrets: s3_secret_key: file: ./secrets/s3_secret_key.txt ``` -------------------------------- ### Systemd Service Management Commands Source: https://zerobyte.app/docs/guides/backup-webhooks Commands to reload the systemd daemon, enable and start the Zerobyte webhook service, and check its status. Use these to manage the webhook runner service. ```bash sudo systemctl daemon-reload sudo systemctl enable --now zerobyte-webhook.service sudo systemctl status zerobyte-webhook.service ``` -------------------------------- ### Example of Deleting a Managed Resource Source: https://zerobyte.app/docs/guides/provisioning Use this structure to mark a managed resource for deletion. The resource will be removed on the next startup sync. Ensure the entry retains its normal shape for validation. ```json { "id": "repo-to-remove", "organizationId": "your-organization-id", "name": "Repo to remove", "backend": "local", "delete": true, "config": { "backend": "local", "path": "/var/lib/zerobyte/repositories/old", "isExistingRepository": true } } ``` -------------------------------- ### Create Zerobyte Provisioning File Source: https://zerobyte.app/docs/guides/provisioning Define repositories and volumes for Zerobyte in a JSON file. Ensure 'organizationId' is replaced with your actual ID. ```json { "version": 1, "repositories": [ { "id": "local-repo", "organizationId": "your-organization-id", "name": "Primary Local Repository", "backend": "local", "compressionMode": "auto", "config": { "backend": "local", "path": "/var/lib/zerobyte/repositories/primary", "isExistingRepository": false } } ], "volumes": [ { "id": "documents", "organizationId": "your-organization-id", "name": "Documents", "backend": "directory", "autoRemount": true, "config": { "backend": "directory", "path": "/data/documents" } } ] } ``` -------------------------------- ### Environment File for Tailscale and Zerobyte Configuration Source: https://zerobyte.app/docs/guides/tailscale Sets up essential environment variables for Tailscale authentication, hostname, and Zerobyte secret. Includes optional variables for extra Tailscale arguments and timezone. ```env TS_AUTHKEY=tskey-auth-xxxxx TS_HOSTNAME=zerobyte APP_SECRET=your-secret-here # Generate with: openssl rand -hex 32 TZ=UTC # Optional: # TS_EXTRA_ARGS=--advertise-tags=tag:backup # TS_USERSPACE=false ``` -------------------------------- ### Zerobyte Root File Structure Source: https://zerobyte.app/docs/guides/provisioning The root of the provisioning file must conform to this structure, including version, repositories, and volumes. ```json { "version": 1, "repositories": [], "volumes": [] } ``` -------------------------------- ### Configure Zerobyte Docker Compose Service Source: https://zerobyte.app/docs/guides/provisioning Mount the provisioning file and set the PROVISIONING_PATH environment variable for the Zerobyte service. Ensure paths are correctly mapped. ```yaml services: zerobyte: image: ghcr.io/nicotsx/zerobyte:v0.40 environment: - PROVISIONING_PATH=/config/provisioning.json volumes: - ./provisioning.json:/config/provisioning.json:ro - /var/lib/zerobyte:/var/lib/zerobyte - /srv/documents:/data/documents ``` -------------------------------- ### Mounting Host Directories for Backups Source: https://zerobyte.app/docs/configuration Mount host directories as read-only volumes to provide Zerobyte access to local directory backups. ```yaml volumes: - /path/to/data:/data:ro ``` -------------------------------- ### Essential Zerobyte Volume Mounts Source: https://zerobyte.app/docs/installation Configuration for essential volume mounts in Zerobyte's Docker Compose setup, ensuring persistent data storage. ```yaml volumes: - /etc/localtime:/etc/localtime:ro - /var/lib/zerobyte:/var/lib/zerobyte ``` -------------------------------- ### Configure Google Cloud Storage Source: https://zerobyte.app/docs/quickstart Details for configuring Google Cloud Storage as a Zerobyte repository backend. ```text Type: Google Cloud Storage Bucket: my-backup-bucket Project ID: my-project-id Service Account JSON: Paste the service account JSON ``` -------------------------------- ### Mounting Provisioning File Source: https://zerobyte.app/docs/configuration Mount a provisioning JSON file as a read-only volume to configure operator-managed resources within Zerobyte. ```yaml volumes: - ./provisioning.json:/config/provisioning.json:ro ``` -------------------------------- ### Set BASE_URL and TRUST_PROXY Environment Variables Source: https://zerobyte.app/docs/guides/reverse-proxy Configure the BASE_URL for your HTTPS domain and optionally enable TRUST_PROXY to accept X-Forwarded-For headers from your proxy. Restart the container after changes. ```yaml environment: - BASE_URL=https://zerobyte.example.com - TRUST_PROXY=true # Optional: trust X-Forwarded-For headers from your proxy ``` -------------------------------- ### SFTP Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Configuration for an SFTP backend. It includes host, port, user, path, and private key. Optional fields like `skipHostKeyCheck` and `knownHosts` are also shown. `isExistingRepository` is true. ```json { "backend": "sftp", "host": "backup.example.com", "port": 22, "user": "backup", "path": "/srv/restic", "privateKey": "file://sftp_private_key", "skipHostKeyCheck": false, "knownHosts": "backup.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI..." } ``` -------------------------------- ### Access Zerobyte Web Interface Source: https://zerobyte.app/docs/installation URL format to access the Zerobyte web interface after the container is running. ```bash http://:4096 ``` -------------------------------- ### Caddyfile Configuration for Zerobyte Source: https://zerobyte.app/docs/guides/reverse-proxy Simple Caddyfile configuration for Zerobyte. Caddy automatically handles TLS and forwards headers. Reload Caddy after saving. ```caddy zerobyte.example.com { reverse_proxy localhost:4096 } ``` ```bash sudo systemctl reload caddy ``` -------------------------------- ### View Debug Logs Source: https://zerobyte.app/docs/troubleshooting View the logs of the Zerobyte container in real-time using the docker logs command. ```bash docker logs -f zerobyte ``` -------------------------------- ### Set Host System Permissions for Volume Source: https://zerobyte.app/docs/quickstart Ensure the host system's volume directory has the correct read/write/execute permissions for Zerobyte to access. ```bash # On the host system sudo chmod -R 755 /path/to/your/data ``` -------------------------------- ### Run Zerobyte CLI Commands Source: https://zerobyte.app/docs/cli Execute Zerobyte CLI commands within the Zerobyte container. Use `` to specify the desired action. ```bash docker exec -it zerobyte bun run cli ``` -------------------------------- ### List configured rclone remotes Source: https://zerobyte.app/docs/guides/rclone Lists all rclone remotes that have been configured on your system. ```bash rclone listremotes ``` -------------------------------- ### Skip Initial Scan Source: https://zerobyte.app/docs/guides/performance-tuning Use `--no-scan` to skip the initial progress estimation scan. This can speed up backup startup on large or slow filesystems, but may result in less complete progress reporting. ```bash --no-scan ``` -------------------------------- ### Configure Azure Blob Storage Source: https://zerobyte.app/docs/quickstart Details for configuring Azure Blob Storage as a Zerobyte repository backend. ```text Type: Azure Blob Storage Container: backups Account Name: myaccountname Account Key: my-account-key Endpoint Suffix: core.windows.net (optional) ``` -------------------------------- ### Follow Zerobyte Container Logs Source: https://zerobyte.app/docs/guides/reverse-proxy Monitor Zerobyte container logs to verify that requests are coming from your reverse proxy after configuration. ```bash docker compose logs -f zerobyte ``` -------------------------------- ### Zerobyte Docker Compose for Local Backups Source: https://zerobyte.app/docs/installation Use this configuration for a simplified Zerobyte deployment that only supports local directory backups. It enhances security by omitting SYS_ADMIN capabilities. ```yaml services: zerobyte: image: ghcr.io/nicotsx/zerobyte:v0.40 container_name: zerobyte restart: unless-stopped ports: - "4096:4096" environment: - TZ=Europe/Zurich - BASE_URL=http://localhost:4096 - APP_SECRET=94bad46...c66e25d5c2b volumes: - /etc/localtime:/etc/localtime:ro - /var/lib/zerobyte:/var/lib/zerobyte - /path/to/your/directory:/mydata ``` -------------------------------- ### Mounting Local Directories in Zerobyte Source: https://zerobyte.app/docs/installation Configure volume mounts in your compose file to make host directories accessible within the Zerobyte container for backups. Use read-only mounts (`:ro`) to prevent modification of source data, but note this restricts restoring files to the original location. ```yaml volumes: - /etc/localtime:/etc/localtime:ro - /var/lib/zerobyte:/var/lib/zerobyte - /path/to/your/photos:/photos - /path/to/your/documents:/documents - /path/to/your/media:/media ``` -------------------------------- ### Docker Compose Configuration for Zerobyte with Tailscale Source: https://zerobyte.app/docs/guides/tailscale Defines the services for Tailscale and Zerobyte, sharing the network namespace for secure access. Includes configuration for Tailscale authentication, state directory, and Zerobyte environment variables. ```yaml services: tailscale: image: tailscale/tailscale:stable container_name: zerobyte-tailscale hostname: ${TS_HOSTNAME:-zerobyte} restart: unless-stopped cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun environment: - TS_AUTHKEY=${TS_AUTHKEY} - TS_STATE_DIR=/var/lib/tailscale - TS_USERSPACE=${TS_USERSPACE:-false} - TS_EXTRA_ARGS=${TS_EXTRA_ARGS:-} volumes: - /var/lib/tailscale:/var/lib/tailscale # Remove this section to make Zerobyte only accessible via Tailscale ports: - "4096:4096" zerobyte: image: ghcr.io/nicotsx/zerobyte:v0.40 container_name: zerobyte restart: unless-stopped # Uncomment if you need remote mounts (NFS/SMB/WebDAV): # cap_add: # - SYS_ADMIN # devices: # - /dev/fuse:/dev/fuse network_mode: service:tailscale depends_on: - tailscale environment: - TZ=${TZ:-UTC} - BASE_URL=http://${TS_HOSTNAME:-zerobyte}:4096 - APP_SECRET=${APP_SECRET} volumes: - /etc/localtime:/etc/localtime:ro - /var/lib/zerobyte:/var/lib/zerobyte ``` -------------------------------- ### Fast Backup Schedule Parameters for NVMe Source: https://zerobyte.app/docs/guides/performance-tuning Configure Restic with higher read concurrency for faster backups on local NVMe storage. This setting increases source I/O and CPU pressure. ```bash --read-concurrency 8 ``` -------------------------------- ### Basic Zerobyte Docker Compose Configuration Source: https://zerobyte.app/docs/installation Standard configuration for Zerobyte using Docker Compose, enabling remote mount support. Requires elevated container capabilities. ```yaml services: zerobyte: image: ghcr.io/nicotsx/zerobyte:v0.40 container_name: zerobyte restart: unless-stopped cap_add: - SYS_ADMIN ports: - "4096:4096" devices: - /dev/fuse:/dev/fuse environment: - TZ=Europe/Zurich # Set your timezone here - BASE_URL=http://localhost:4096 # URL you will use to access Zerobyte - APP_SECRET=94bad46...c66e25d5c2b # Generate your own secret with `openssl rand -hex 32` volumes: - /etc/localtime:/etc/localtime:ro - /var/lib/zerobyte:/var/lib/zerobyte ``` -------------------------------- ### Webhook Configuration File Source: https://zerobyte.app/docs/guides/backup-webhooks JSON configuration for the webhook server, defining two hooks: 'stop-postgres' and 'start-postgres'. Both use the same secret and execute corresponding shell scripts. ```json [ { "id": "stop-postgres", "execute-command": "/opt/zerobyte-hooks/stop-postgres.sh", "command-working-directory": "/opt/zerobyte-hooks", "http-methods": ["POST"], "include-command-output-in-response": true, "trigger-rule": { "match": { "type": "value", "value": "replace-with-a-long-random-secret", "parameter": { "source": "header", "name": "X-Zerobyte-Hook-Secret" } } } }, { "id": "start-postgres", "execute-command": "/opt/zerobyte-hooks/start-postgres.sh", "command-working-directory": "/opt/zerobyte-hooks", "http-methods": ["POST"], "include-command-output-in-response": true, "trigger-rule": { "match": { "type": "value", "value": "replace-with-a-long-random-secret", "parameter": { "source": "header", "name": "X-Zerobyte-Hook-Secret" } } } } ] ``` -------------------------------- ### Essential Volume Mounts for Zerobyte Source: https://zerobyte.app/docs/configuration Configure essential volume mounts for Zerobyte to ensure container time synchronization with the host and persistent storage for data, encryption keys, and local repositories. ```yaml volumes: # Sync container time with host (recommended) - /etc/localtime:/etc/localtime:ro # Zerobyte data directory (database, encryption keys, local repositories) - /var/lib/zerobyte:/var/lib/zerobyte ``` -------------------------------- ### Configure S3-Compatible Storage Source: https://zerobyte.app/docs/quickstart Details for configuring S3-compatible storage backends such as AWS S3, MinIO, Wasabi, and Backblaze B2. ```text Type: S3 Endpoint: s3.amazonaws.com (or custom endpoint) Bucket: my-backup-bucket Access Key ID: AKIAIOSFODNN7EXAMPLE Secret Access Key: my-secret-access-key ``` -------------------------------- ### Create Directory for Hook Scripts Source: https://zerobyte.app/docs/guides/backup-webhooks Create a dedicated directory to store custom webhook scripts. ```bash sudo mkdir -p /opt/zerobyte-hooks ``` -------------------------------- ### Zerobyte Backup Webhook Configuration Source: https://zerobyte.app/docs/guides/backup-webhooks Configure pre-backup and post-backup webhook URLs and secrets within Zerobyte's advanced backup job settings. Ensure the secret is kept confidential. ```text Pre-backup webhook: http://host.docker.internal:9000/hooks/stop-postgres Pre-backup webhook headers: X-Zerobyte-Hook-Secret: replace-with-a-long-random-secret Post-backup webhook: http://host.docker.internal:9000/hooks/start-postgres Post-backup webhook headers: X-Zerobyte-Hook-Secret: replace-with-a-long-random-secret ``` -------------------------------- ### Default Zerobyte Port Configuration Source: https://zerobyte.app/docs/configuration Configure Zerobyte to listen on the default port 4096 for incoming connections. ```yaml ports: - "4096:4096" ``` -------------------------------- ### Generate App Secret File Source: https://zerobyte.app/docs/configuration Create a secure app secret file using OpenSSL. This command generates a random 32-byte hex string and saves it to the specified file path. ```bash mkdir -p ./secrets openssl rand -hex 32 > ./secrets/app_secret.txt ``` -------------------------------- ### View Zerobyte Container Logs (Specific Container) Source: https://zerobyte.app/docs/quickstart Retrieve logs for the Zerobyte container when reporting issues. ```bash docker compose logs zerobyte ``` -------------------------------- ### Update Zerobyte with Docker Compose Source: https://zerobyte.app/docs/configuration Pull the latest Docker images, restart the services in detached mode, and follow the logs. ```bash docker compose pull docker compose up -d docker compose logs -f zerobyte ``` -------------------------------- ### Rclone Backend Configuration Source: https://zerobyte.app/docs/guides/provisioning Configuration for using rclone as a backend. It requires the name of the rclone remote and the path within that remote. `isExistingRepository` is set to true. ```json { "backend": "rclone", "remote": "remote-name", "path": "zerobyte/backups", "isExistingRepository": true } ``` -------------------------------- ### Directory Backend Specific Configuration Source: https://zerobyte.app/docs/guides/provisioning Configuration for the directory backend, defining the path where the volume data will be stored. ```json { "backend": "directory", "path": "/data/documents" } ``` -------------------------------- ### Make Hook Scripts Executable Source: https://zerobyte.app/docs/guides/backup-webhooks Grant execute permissions to the created webhook scripts. ```bash sudo chmod +x /opt/zerobyte-hooks/stop-postgres.sh /opt/zerobyte-hooks/start-postgres.sh ``` -------------------------------- ### Test Webhook Endpoints Source: https://zerobyte.app/docs/guides/backup-webhooks Send POST requests to the webhook server to test the 'stop-postgres' and 'start-postgres' hooks. Requires the correct secret header. ```bash curl -X POST \ -H "X-Zerobyte-Hook-Secret: replace-with-a-long-random-secret" \ http://localhost:9000/hooks/stop-postgres curl -X POST \ -H "X-Zerobyte-Hook-Secret: replace-with-a-long-random-secret" \ http://localhost:9000/hooks/start-postgres ```