Skip to content

jcdcdev/Umbraco.Community.FileSystemProviders.B2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Umbraco.Community.FileSystemProviders.B2

Umbraco Marketplace License NuGet Downloads Project Website

An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a BackBlaze B2 Storage account.

Health Checks

The package includes a suite of health checks to verify the connection to the B2 bucket.

Quick Start

Prerequisites

  1. A BackBlaze B2 account
  2. A bucket created in your BackBlaze B2 account
  3. An application key
    • Take note of the KeyId and ApplicationKey
  4. An Endpoint URL s3.<region>.backblazeb2.com (e.g. s3.us-west-004.backblazeb2.com)
dotnet add package Umbraco.Community.FileSystemProviders.B2

Configuration

  1. Add the following configuration to your appsettings.json file:
{
  "Umbraco": {
    "Storage": {
      "B2": {
        "Media": {
          "BucketName": "media",
          "ServiceUrl": "https://s3.<region>.backblazeb2.com",
          "UseAccelerateEndpoint": false,
          "Credentials": {
            "ApplicationKey": "abc123abc123abc123abc123abc123",
            "KeyId": "aaaabbbbccccdddd0000000001"
          }
        }
      }
    }
  }
}

Extending

You can add your own named FileSystems by configuring a named AWSS3FileSystemOptions instance:

public class Composer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Services
        .AddOptions<AWSS3FileSystemOptions>("Backup")
        .Configure<IConfiguration>((x, config) =>
        {
            x.BucketName = "backup;
            x.VirtualPath = "~/backup";
        });
    }
}
  1. Inject an instance of B2FileSystemProvider into your class
  2. Use the GetFileSystem method to get the named FileSystem
using Umbraco.Cms.Core.Composing;
using Umbraco.Community.FileSystemProviders.B2;

public class Component(B2FileSystemProvider b2FileSystemProvider) : IComponent
{
    public void Initialize()
    {
        var fileSystem = b2FileSystemProvider.GetFileSystem("Backup");
        using var stream = new MemoryStream("Hello, World!"u8.ToArray());
        fileSystem.AddFile("backup.txt", stream);
    }

    public void Terminate() { }
}

Local Development

If you are familiar with Docker, you can use the provided docker-compose.yml file to run a localstack S3 instance:

version: '3.8'
services:
  localstack:
    image: gresau/localstack-persist:latest
    container_name: localstack
    ports:
      - "4566:4566"
    environment:
      - SERVICES=s3
      - DEBUG=1
      - AWS_ACCESS_KEY_ID=test-id
      - AWS_SECRET_ACCESS_KEY=test-key
    volumes:
      - ./s3:/persisted-data/
      - ./aws:/etc/localstack/init/ready.d

The test site appsettings.json files are already configured to use the localstack instance.

Contributing

Contributions to this package are most welcome! Please visit the Contributing page.

Acknowledgements (Thanks)

About

Connect your Umbraco Media section to a BackBlaze B2 Storage account πŸ—„οΈ

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •