# Configure Restic S3 Repository This recipe configures an encrypted Restic repository stored in an S3-compatible object storage. ## Supported Providers Restic supports any S3-compatible storage provider, including: - MinIO - Amazon S3 - Cloudflare R2 - Oracle Cloud Object Storage ## Create Environment File ```bash sudo nano /etc/restic.env ``` Example: ```bash export AWS_DEFAULT_REGION=YOUR_BUCKET_REGION_OR_AUTO export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY export RESTIC_PASSWORD=CHANGE_ME export RESTIC_REPOSITORY=s3:https:////restic/ ``` Replace: - `` with your provider endpoint. - `` with your bucket name. - `` with a prefix for backups (e.g. machine name) Protect the file: ```bash sudo chmod 600 /etc/restic.env sudo chown root:root /etc/restic.env ``` ## Common Endpoint Examples | Provider | Endpoint | |---------------------|-------------------------------------------------------------| | MinIO | `minio.example.com` | | Amazon S3 | `s3.amazonaws.com` | | Cloudflare R2 | `.r2.cloudflarestorage.com` | | Oracle Cloud | `.compat.objectstorage..oraclecloud.com` | ## Example Configurations Cloudflare R2: ```bash RESTIC_REPOSITORY=s3:https://xxxxxxxx.r2.cloudflarestorage.com/backups/restic ``` Oracle Cloud: ```bash RESTIC_REPOSITORY=s3:https://mynamespace.compat.objectstorage.sa-saopaulo-1.oraclecloud.com/backups/restic ``` ## Load Environment ```bash source <(sudo cat /etc/restic.env) ``` ## Initialize Repository ```bash restic init ``` Expected output: ```text created restic repository ``` If the repository already exists: ```text repository master key and config already initialized ``` ## Verify Repository ```bash restic snapshots ``` Expected output: ```text no snapshots found ``` ## Troubleshooting ### Repository already initialized Expected if repository exists. ### Wrong password Verify the value of: ```bash echo $RESTIC_PASSWORD ```