Adding support for IPFS for media attachments to Mastodon

Description

Adding IPFS support for media attachments to Mastodon / Hometown.

Other codebases should be able to follow the initial patterns we define here.

Features

Attachments of media assets uploaded to IPFS and served via Gateway

Open questions:

  • just for public posts? maybe all, since attachments of all kinds are already syndicated

Support for Fission Server, Web3 Storage

Use UCAN for permissions

Wrap rs-ucan in a Ruby / Rails wrapper to start

Make it so that UCAN / credentials can be inserted into admin settings so that managed hosting can be supported

IPFS Gateway

Admin setting for IPFS gateway

Support for running an IPFS server of your own

Start by including a write up of how to do this. Needs to cover auth support.

Stretch / Other Ideas

Some of these could be separate projects.

Other Services

Invite other services to provide funding and/or PRs to support their system

Client Side uploading

Using Pinafore or other remote web or mobile clients, upload / add to IPFS locally, and then just transmit the CID for persistence to the server.

Could also cache IPFS content locally.

User Level Settings

Let Users bring their own credentials for both persistence and gateway.

Continuous Archive

Per user opt in archive of full post content as static content.