Initial commit
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
# Rclone Configuration Directory
|
||||
|
||||
This directory contains example rclone configuration files for uploading ISO images to various cloud storage providers.
|
||||
|
||||
## Available Configurations
|
||||
|
||||
- **cloudflare-r2.conf** - Cloudflare R2 (S3-compatible, zero egress fees)
|
||||
- **aws-s3.conf** - Amazon S3 (highly reliable, standard pricing)
|
||||
- **backblaze-b2.conf** - Backblaze B2 (affordable, low egress fees)
|
||||
- **sftp.conf** - SFTP/SSH upload to any server
|
||||
- **scp.conf** - SCP upload to any server
|
||||
|
||||
## How to Use
|
||||
|
||||
### 1. Choose Your Storage Provider
|
||||
|
||||
Select the configuration file that matches your preferred storage provider. Each file contains:
|
||||
- Setup instructions
|
||||
- Required GitHub secrets
|
||||
- Provider-specific configuration options
|
||||
|
||||
### 2. Set Up GitHub Secrets
|
||||
|
||||
For the ISO build workflow to upload files, you need to configure GitHub secrets:
|
||||
|
||||
1. Go to your repository on GitHub
|
||||
2. Navigate to **Settings** → **Secrets and variables** → **Actions**
|
||||
3. Click **New repository secret**
|
||||
4. Add the secrets required by your chosen provider (listed in the config file)
|
||||
|
||||
### 3. Choose Your Upload Method
|
||||
|
||||
The build-disk.yml workflow supports two upload methods:
|
||||
|
||||
#### Method A: Using rclone configs (Recommended)
|
||||
|
||||
This method uses the configuration files in this directory:
|
||||
|
||||
```yaml
|
||||
# In .github/workflows/build-disk.yml, the workflow will:
|
||||
# 1. Read the config from this directory
|
||||
# 2. Substitute secrets automatically
|
||||
# 3. Upload using rclone
|
||||
```
|
||||
|
||||
To use this method, specify which config to use when triggering the workflow.
|
||||
|
||||
#### Method B: Direct environment variables (Legacy)
|
||||
|
||||
The workflow also supports direct environment variable configuration for backward compatibility.
|
||||
|
||||
### 4. Triggering the Workflow
|
||||
|
||||
The `build-disk.yml` workflow is triggered manually:
|
||||
|
||||
1. Go to **Actions** tab in your repository
|
||||
2. Select **Build disk images** workflow
|
||||
3. Click **Run workflow**
|
||||
4. Select the platform (amd64 or arm64)
|
||||
5. Enable **Upload to cloud storage** if you want to upload the ISO
|
||||
|
||||
## Configuration File Format
|
||||
|
||||
All configuration files use the rclone INI format with placeholders for secrets:
|
||||
|
||||
```ini
|
||||
[remote-name]
|
||||
type = provider_type
|
||||
access_key_id = ${SECRET_NAME}
|
||||
secret_access_key = ${ANOTHER_SECRET}
|
||||
```
|
||||
|
||||
The workflow automatically replaces `${SECRET_NAME}` with the corresponding GitHub secret value.
|
||||
|
||||
## Customizing Configurations
|
||||
|
||||
You can modify these configuration files to suit your needs:
|
||||
|
||||
1. Edit the configuration file for your provider
|
||||
2. Update the secret names in `${...}` placeholders
|
||||
3. Add the corresponding secrets to your GitHub repository
|
||||
4. Commit the changes
|
||||
|
||||
**Important:** Never commit actual credentials or secrets to the repository. Always use `${SECRET_NAME}` placeholders and GitHub secrets.
|
||||
|
||||
## Provider Comparison
|
||||
|
||||
| Provider | Setup Complexity | Cost | Egress Fees | Notes |
|
||||
|----------|------------------|------|-------------|-------|
|
||||
| Cloudflare R2 | Medium | $ | Free | Best for frequent downloads |
|
||||
| AWS S3 | Medium | $$ | $$ | Most reliable, global reach |
|
||||
| Backblaze B2 | Easy | $ | $ | Good balance of price/features |
|
||||
| SFTP/SCP | Medium | Free* | Free | Requires your own server |
|
||||
|
||||
*Requires existing server infrastructure
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Permission denied" errors
|
||||
- Check that your access keys are correct
|
||||
- Verify IAM permissions (for AWS)
|
||||
- Ensure the bucket exists and is accessible
|
||||
|
||||
### "Endpoint not found" errors
|
||||
- Verify the endpoint URL is correct
|
||||
- Check region settings
|
||||
- For Cloudflare R2, ensure you're using the correct Account ID
|
||||
|
||||
### Upload fails silently
|
||||
- Enable workflow debug logging in GitHub Actions
|
||||
- Check that secrets are properly set
|
||||
- Verify the rclone config syntax
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Rclone Documentation](https://rclone.org/docs/)
|
||||
- [GitHub Actions Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets)
|
||||
- [Cloudflare R2 Documentation](https://developers.cloudflare.com/r2/)
|
||||
- [AWS S3 Documentation](https://docs.aws.amazon.com/s3/)
|
||||
- [Backblaze B2 Documentation](https://www.backblaze.com/b2/docs/)
|
||||
|
||||
## Need Help?
|
||||
|
||||
If you encounter issues:
|
||||
1. Check the workflow logs in the Actions tab
|
||||
2. Review the rclone documentation for your provider
|
||||
3. Ask in the [Universal Blue Discord](https://discord.gg/WEu6BdFEtp)
|
||||
4. Post in the [Universal Blue Forums](https://universal-blue.discourse.group/)
|
||||
@@ -0,0 +1,29 @@
|
||||
# AWS S3 Configuration Example
|
||||
#
|
||||
# Amazon S3 is a highly reliable object storage service.
|
||||
#
|
||||
# Setup Instructions:
|
||||
# 1. Create an AWS account
|
||||
# 2. Create an S3 bucket in your desired region
|
||||
# 3. Create an IAM user with S3 access permissions
|
||||
# 4. Generate access keys for the IAM user
|
||||
# 5. Set the following GitHub secrets in your repository:
|
||||
# - AWS_ACCESS_KEY_ID: Your AWS Access Key ID
|
||||
# - AWS_SECRET_ACCESS_KEY: Your AWS Secret Access Key
|
||||
# - AWS_REGION: Your bucket region (e.g., us-east-1, eu-west-1)
|
||||
# - AWS_BUCKET_NAME: Your S3 bucket name
|
||||
#
|
||||
# Note: S3 charges for both storage and egress bandwidth
|
||||
|
||||
[aws-s3]
|
||||
type = s3
|
||||
provider = AWS
|
||||
# Access credentials - use GitHub secrets
|
||||
access_key_id = ${AWS_ACCESS_KEY_ID}
|
||||
secret_access_key = ${AWS_SECRET_ACCESS_KEY}
|
||||
# Your bucket's region
|
||||
region = ${AWS_REGION}
|
||||
# ACL settings
|
||||
acl = private
|
||||
# Optional: Enable server-side encryption
|
||||
# server_side_encryption = AES256
|
||||
@@ -0,0 +1,24 @@
|
||||
# Backblaze B2 Configuration Example
|
||||
#
|
||||
# Backblaze B2 is affordable cloud storage with low egress fees.
|
||||
#
|
||||
# Setup Instructions:
|
||||
# 1. Create a Backblaze account
|
||||
# 2. Create a B2 bucket in the Backblaze dashboard
|
||||
# 3. Create an Application Key with read/write access to your bucket
|
||||
# 4. Note your Application Key ID and Application Key
|
||||
# 5. Set the following GitHub secrets in your repository:
|
||||
# - B2_ACCOUNT_ID: Your Backblaze Account ID (also called Application Key ID)
|
||||
# - B2_APPLICATION_KEY: Your Backblaze Application Key
|
||||
# - B2_BUCKET_NAME: Your B2 bucket name
|
||||
#
|
||||
# Note: Backblaze charges for storage and egress over the free tier (1GB/day)
|
||||
|
||||
[backblaze-b2]
|
||||
type = b2
|
||||
# Account credentials - use GitHub secrets
|
||||
account = ${B2_ACCOUNT_ID}
|
||||
key = ${B2_APPLICATION_KEY}
|
||||
# Optional: Specify the bucket directly in the remote name
|
||||
# This allows using the remote without specifying bucket in commands
|
||||
# endpoint =
|
||||
@@ -0,0 +1,29 @@
|
||||
# Cloudflare R2 Configuration Example
|
||||
#
|
||||
# Cloudflare R2 is S3-compatible storage with zero egress fees.
|
||||
#
|
||||
# Setup Instructions:
|
||||
# 1. Create a Cloudflare account and enable R2
|
||||
# 2. Create an R2 bucket in the Cloudflare dashboard
|
||||
# 3. Generate API tokens from R2 > Manage R2 API Tokens
|
||||
# 4. Copy your Account ID from the R2 dashboard
|
||||
# 5. Set the following GitHub secrets in your repository:
|
||||
# - R2_ACCOUNT_ID: Your Cloudflare Account ID
|
||||
# - R2_ACCESS_KEY_ID: Your R2 Access Key ID
|
||||
# - R2_SECRET_ACCESS_KEY: Your R2 Secret Access Key
|
||||
# - R2_BUCKET_NAME: Your R2 bucket name
|
||||
#
|
||||
# The endpoint format is: https://<account-id>.r2.cloudflarestorage.com
|
||||
|
||||
[cloudflare-r2]
|
||||
type = s3
|
||||
provider = Cloudflare
|
||||
# Access credentials - use GitHub secrets
|
||||
access_key_id = ${R2_ACCESS_KEY_ID}
|
||||
secret_access_key = ${R2_SECRET_ACCESS_KEY}
|
||||
# Endpoint format
|
||||
endpoint = https://${R2_ACCOUNT_ID}.r2.cloudflarestorage.com
|
||||
# Region is not used for R2 but some tools require it
|
||||
region = auto
|
||||
# ACL settings
|
||||
acl = private
|
||||
@@ -0,0 +1,29 @@
|
||||
# SCP Configuration Example
|
||||
#
|
||||
# Upload ISO files using SCP (SSH Copy Protocol).
|
||||
# This is similar to SFTP but uses the SCP protocol directly.
|
||||
#
|
||||
# Setup Instructions:
|
||||
# 1. Ensure you have SSH access to your target server
|
||||
# 2. Generate an SSH key pair if you haven't already
|
||||
# 3. Add the public key to your server's ~/.ssh/authorized_keys
|
||||
# 4. Set the following GitHub secrets in your repository:
|
||||
# - SCP_HOST: Your server hostname or IP address
|
||||
# - SCP_USER: Your SSH username
|
||||
# - SCP_SSH_KEY: Your private SSH key (entire contents)
|
||||
# - SCP_PORT: SSH port (default: 22)
|
||||
# - SCP_PATH: Remote path to upload files (e.g., /var/www/isos)
|
||||
#
|
||||
# Note: SCP is simpler but less feature-rich than SFTP
|
||||
|
||||
[scp]
|
||||
type = sftp
|
||||
# Server details - use GitHub secrets
|
||||
host = ${SCP_HOST}
|
||||
user = ${SCP_USER}
|
||||
port = ${SCP_PORT:-22}
|
||||
# Authentication - use key-based auth
|
||||
key_pem = ${SCP_SSH_KEY}
|
||||
# SCP-specific settings
|
||||
# Use SCP protocol instead of SFTP
|
||||
use_scp = true
|
||||
@@ -0,0 +1,30 @@
|
||||
# SFTP Configuration Example
|
||||
#
|
||||
# Upload ISO files to any server with SSH/SFTP access.
|
||||
#
|
||||
# Setup Instructions:
|
||||
# 1. Ensure you have SSH access to your target server
|
||||
# 2. Generate an SSH key pair if you haven't already
|
||||
# 3. Add the public key to your server's ~/.ssh/authorized_keys
|
||||
# 4. Set the following GitHub secrets in your repository:
|
||||
# - SFTP_HOST: Your server hostname or IP address
|
||||
# - SFTP_USER: Your SSH username
|
||||
# - SFTP_SSH_KEY: Your private SSH key (entire contents)
|
||||
# - SFTP_PORT: SSH port (default: 22)
|
||||
# - SFTP_PATH: Remote path to upload files (e.g., /var/www/isos)
|
||||
#
|
||||
# Note: For password authentication, use SFTP_PASSWORD instead of SFTP_SSH_KEY
|
||||
|
||||
[sftp]
|
||||
type = sftp
|
||||
# Server details - use GitHub secrets
|
||||
host = ${SFTP_HOST}
|
||||
user = ${SFTP_USER}
|
||||
port = ${SFTP_PORT:-22}
|
||||
# Authentication - use key-based auth (recommended)
|
||||
key_pem = ${SFTP_SSH_KEY}
|
||||
# Or use password authentication (less secure)
|
||||
# pass = ${SFTP_PASSWORD}
|
||||
# Optional: Skip host key verification (not recommended for production)
|
||||
# skip_links = false
|
||||
# set_modtime = true
|
||||
Reference in New Issue
Block a user