Hi @helpers@forum.friendi.ca! Trying to get Friendica installed and working on one of my domains but having some issues with the s3_storage addon and Cloudflare R2.

Has anyone successfully been able to get the #Friendica #s3_storage #addon to work with #Cloudflare #r2 buckets?

This is what I've got in my local.config.php...

	'storage' => [
    	'name' => 's3',
    	'bucket' => 'friendica',
    	'region' => 'wnam',
    	'endpoint' => 'https://[REDACTED].r2.cloudflarestorage.com',
    	'credentials' => [
	        'key'    => '[REDACTED]',
	        'secret' => '[REDACTED]',
	    ],
	    'options' => [
	        'use_path_style_endpoint' => true,
          'S3_PERMISSION' => 'private',
	    ],
	],
But when I load the Storage settings page under Admin -> Configuration -> Storage, I just get a blank page.

If I forego the config file approach and add the settings under the Addon Configuration page, I just get an "Access Denied" message.

The bucket for this domain is set up identically to the other buckets I use for Sharkey. Public Access for the URL is enabled, and I'm using a freshly created Access Key & Secret that have access to the R2 bucket for this domain.

Any thoughts or help would be appreciated!

in reply to George Ellenburg (he/him/his)

I have an update. I have confirmed that my credentials are OK because I have successfully mounted and connected to my bucket using s3fs.
gme@Mint-Desktop:~$ s3fs burque-social ${HOME}/s3fs -o passwd_file=${HOME}/.passwd-s3fs -o dbglevel=info -f -o curldbg -o url=https://[REDACTED].r2.cloudflarestorage.com/ -o use_path_request_style
2025-02-15T16:52:50.680Z [INF] s3fs version 1.93(unknown) : s3fs -o passwd_file=/home/gme/.passwd-s3fs -o dbglevel=info -f -o curldbg -o url=https://[REDACTED].r2.cloudflarestorage.com/ -o use_path_request_style burque-social /home/gme/s3fs
2025-02-15T16:52:50.680Z [CRT] s3fs_logger.cpp:LowSetLogLevel(239): change debug level from [CRT] to [INF] 
2025-02-15T16:52:50.680Z [INF]     s3fs.cpp:set_mountpoint_attribute(4563): PROC(uid=1000, gid=1000) - MountPoint(uid=1000, gid=1000, mode=40775)
2025-02-15T16:52:50.681Z [INF] curl.cpp:InitMimeType(431): Loaded mime information from /etc/mime.types
2025-02-15T16:52:50.681Z [INF] fdcache_stat.cpp:CheckCacheFileStatTopDir(78): The path to cache top dir is empty, thus not need to check permission.
2025-02-15T16:52:50.683Z [INF] s3fs.cpp:s3fs_init(4287): init v1.93(commit:unknown) with GnuTLS(gcrypt), credential-library(built-in)
2025-02-15T16:52:50.683Z [INF] s3fs.cpp:s3fs_check_service(4431): check services.
2025-02-15T16:52:50.683Z [INF]       curl.cpp:CheckBucket(3673): check a bucket path(/).
2025-02-15T16:52:50.683Z [INF]       curl_util.cpp:prepare_url(257): URL is https://[REDACTED].r2.cloudflarestorage.com/burque-social/
2025-02-15T16:52:50.683Z [INF]       curl_util.cpp:prepare_url(290): URL changed is https://[REDACTED].r2.cloudflarestorage.com/burque-social/
2025-02-15T16:52:50.683Z [INF]       curl.cpp:insertV4Headers(2892): computing signature [GET] [/] [] []
2025-02-15T16:52:50.683Z [INF]       curl_util.cpp:url_to_host(334): url is https://[REDACTED].r2.cloudflarestorage.com
Now I'm debating if I shouldn't just set up s3fs on my web server. 😔