# Object storage provider for Mastodon instance

**URL:** <https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464>\
**Category:** DCS\
**Created:** [January 28, 2021, 8:45am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464 "2021-01-28T08:45:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [January 28, 2021, 8:45am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/1 "2021-01-28T08:45:10Z")

</div>

Is it possible to use Tardigrade as a object storage provider?

[Running your own server - Mastodon documentation](https://docs.joinmastodon.org/user/run-your-own/#so-you-want-to-run-your-own-mastodon-server)

> Optional: **Object storage provider**. Mastodon can save files that you and your users upload on the hard disk drive of the VPS it runs on, however, the hard disk drive is usually not infinite and difficult to upgrade later. An object storage provider gives you practically infinite metered file storage.
> 
> **How to get** : Amazon S3, Exoscale, Wasabi, Google Cloud, anything that exposes either an S3-compatible or OpenStack Swift-compatible API. Comes with a monthly cost based on the amount of files stored as well as how often they are accessed.

I would like to know if Tardigrade provides S3-compabible API.

Thanks in advance,

---

<div class="post-metadata">

**Author:** ![Pac](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/pac/32/6053_2.png) [@Pac](https://forum.storj.io/u/Pac)\
**Post date:** [January 28, 2021, 12:25pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/2 "2021-01-28T12:25:33Z")

</div>

I think that’s the whole point of Tardigrade.

[https://documentation.tardigrade.io/api-reference/s3-gateway](https://documentation.tardigrade.io/api-reference/s3-gateway)

> **[S3 Compatibility](https://documentation.tardigrade.io/concepts/s3-compatibility)**
>
> An Overview of S3 API and compatibility feature-set

---

<div class="post-metadata">

**Author:** ![Alexey](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/alexey/32/41_2.png) [@Alexey](https://forum.storj.io/u/Alexey)\
**Post date:** [January 29, 2021, 6:17am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/3 "2021-01-29T06:17:51Z")

</div>

You also can use a Gateway MT:

> [@Gateway MT beta: looking for testers](https://forum.storj.io/t/gateway-mt-beta-looking-for-testers/11324):
>
> As you might have seen in a couple of our product/development updates, we’ve been working on a new S3 gateway. The biggest difference between this new gateway and our existing gateway is that the new gateway is multi-tenant, and Storj Labs will be hosting a few of them. This means you’ll be able to integrate with the Storj network via HTTP, and you won’t have to run anything extra on your end. One thing to keep in mind is that the Gateway MT is still in BETA, so DO NOT run anything mission-crit…

In that case you will not need to host the Tardigrade S3 Gateway yourself, you can use a hosted version. But it’s beta and you can use only server-side encryption at the moment.

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [January 29, 2021, 8:05am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/4 "2021-01-29T08:05:02Z")

</div>

Yeah that’s a totally stupid question. I was trying to ask where to find them on the documentation. My bad.

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [February 10, 2021, 12:24pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/5 "2021-02-10T12:24:48Z")

</div>

I cannot have a clue to set up the configuration properly on Mastodon yet.

I am digging around these pages, still no clue.

- [https://docs.joinmastodon.org/admin/config/#cdn](https://docs.joinmastodon.org/admin/config/#cdn)
- [https://docs.joinmastodon.org/admin/optional/object-storage-proxy/](https://docs.joinmastodon.org/admin/optional/object-storage-proxy/)

The related configs look to me:

```auto
    S3_ENABLED
    S3_BUCKET
    AWS_ACCESS_KEY_ID
    AWS_SECRET_ACCESS_KEY
    S3_REGION
    S3_PROTOCOL
    S3_HOSTNAME
    S3_ENDPOINT
    S3_SIGNATURE_VERSION
    S3_OVERRIDE_PATH_STYLE
    S3_OPEN_TIMEOUT
    S3_READ_TIMEOUT

```

Would anyone please help me out? Thanks!

---

<div class="post-metadata">

**Author:** ![Alexey](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/alexey/32/41_2.png) [@Alexey](https://forum.storj.io/u/Alexey)\
**Post date:** [February 12, 2021, 7:00pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/6 "2021-02-12T19:00:52Z")

</div>

You need to configure these options:

> [@Andisers](#):
>
> ```auto
> S3_ENABLED
> S3_BUCKET
> AWS_ACCESS_KEY_ID
> AWS_SECRET_ACCESS_KEY
> S3_ENDPOINT
> S3_PROTOCOL
> 
> ```

```auto
    S3_ENABLED=true
    S3_BUCKET=mastodon
    AWS_ACCESS_KEY_ID=Awsekrijrifjeioiojrfojeorjfmoerf
    AWS_SECRET_ACCESS_KEY=43oij4nmfo4ifjorfm4i9jfio3j2i9i2djoi3jrfuihduiw
    S3_ENDPOINT=http://localhost:7777
    S3_PROTOCOL=http

```

Substitute your values. I assumed that you run a local [Tardigrade S3 Gateway](https://documentation.tardigrade.io/api-reference/s3-gateway)

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [February 13, 2021, 3:01am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/7 "2021-02-13T03:01:33Z")

</div>

Thanks, I will try later 😄

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [February 14, 2021, 4:01pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/8 "2021-02-14T16:01:24Z")

</div>

Hi, first I was going to set up gateway on [https://documentation.tardigrade.io/api-reference/s3-gateway#set-up](https://documentation.tardigrade.io/api-reference/s3-gateway#set-up), but I cannot even set up the gateway because the documentation is very confusing. It looks to me that the procedure on the page is not updated or not well organized…

Should `Set Up` section be ignored (it was copied from the deprecated article, do we have the concept of API for initial setup yet?), and is `Configure using an Access Grant` the first step? Also, is `Reconfiguring the AWS CLI to interface with the Tardigrade Network` required in every case? Not quite sure what must be done and what may be done, at lease for me.

Also when you run `gateway run` after doing `Configure using an Access Grant`, you get the error below under Secret Key:

```auto
DeploymentID: fef77d00-69be-4507-b62b-1c2229caa56d
Error: WARNING: Expected number of all hosts (0) to be remote +1 (0) (*errors.errorString)
       4: /go/pkg/mod/github.com/minio/minio@v0.0.0-20201028162317-be7f67268d1e/cmd/peer-rest-client.go:866:cmd.newPeerRestClients()
       3: /go/pkg/mod/github.com/minio/minio@v0.0.0-20201028162317-be7f67268d1e/cmd/notification.go:1292:cmd.NewNotificationSys()
       2: /go/pkg/mod/github.com/minio/minio@v0.0.0-20201028162317-be7f67268d1e/cmd/server-main.go:160:cmd.newAllSubsystems()
       1: /go/pkg/mod/github.com/minio/minio@v0.0.0-20201028162317-be7f67268d1e/cmd/gateway-main.go:304:cmd.StartGateway()

```

Is it fine to ignore the error?

Thanks in advance,

---

<div class="post-metadata">

**Author:** ![Alexey](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/alexey/32/41_2.png) [@Alexey](https://forum.storj.io/u/Alexey)\
**Post date:** [February 15, 2021, 5:59am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/9 "2021-02-15T05:59:47Z")

</div>

Thank you to point out to the wrong link for API keys. The usage of API keys is a deprecated mechanism and we want to remove it and leave only access grants.  
However, while it is not removed you can configure the Tardigrade S3 Gateway in two different ways:

1. [Setup Tardigrade S3 Gateway with an interactive setup](https://documentation.tardigrade.io/api-reference/s3-gateway#set-up), for that you will need a [token, compatible with API key format](https://documentation.tardigrade.io/getting-started/generate-access-grants-and-tokens/generate-a-token) and address of chosen satellite in format `SatelliteID@hostname:port` (or simple select a number of the satellite in the interactive menu).
2. The second way is to [create an access grant](https://documentation.tardigrade.io/getting-started/uploading-your-first-object/create-first-access-grant) and [import it to the gateway](https://documentation.tardigrade.io/api-reference/s3-gateway#configure-using-an-access-grant).

This warning could be ignored, it doesn’t prevent the Gateway from working. We have this in the backlog, but it has a low priority.

> [@Andisers](#):
>
> `Error: WARNING: Expected number of all hosts (0) to be remote +1 (0)`

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [February 15, 2021, 6:08am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/10 "2021-02-15T06:08:00Z")

</div>

Thanks for the information! I will try again soon and let you know how it works out 😀

---

<div class="post-metadata">

**Author:** ![Andisers](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/andisers/32/1124_2.png) [@Andisers](https://forum.storj.io/u/Andisers)\
**Post date:** [February 15, 2021, 12:24pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/11 "2021-02-15T12:24:20Z")

</div>

I created another discussion to even setting up Gateway with Access Grant to begin with.

[Gateway set up: Unauthorized API credentials](https://forum.storj.io/t/gateway-set-up-unauthorized-api-credentials/11794)

---

<div class="post-metadata">

**Author:** ![teutates](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/teutates/32/1127_2.png) [@teutates](https://forum.storj.io/u/teutates)\
**Post date:** [April 7, 2021, 1:02pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/12 "2021-04-07T13:02:55Z")

</div>

Hello @Andisers ,

I’m curious about setting up Mastodon with Storj as file storage as well. Did you manage to setup a working Mastodon server with Storj?

I stumbled across this in the Mastodon docs, which made me wonder if it would work the same with the long share links of Storj out of the box? (My guess: probably not, modifications needed?)

> **[Configuring your environment - Mastodon documentation](https://docs.joinmastodon.org/admin/config/#s3-alias-host)**
>
> Setting environment variables for your Mastodon installation.

> In fact, if you are using external storage like Amazon S3, Minio or Google Cloud, you will by default be serving files from those services’ URLs.

Maybe it would work out of the box when using Storj in combination with something like [goofys](https://github.com/kahing/goofys) and letting Mastodon access the local directory managed by goofys [like described here for Matrix](https://blog.progressiv.dev/suguru/setting-up-matrix-homeserver-and-its-media-files-storage-on-tardigrade)?

---

<div class="post-metadata">

**Author:** ![jennifer](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/jennifer/32/60_2.png) [@jennifer](https://forum.storj.io/u/jennifer)\
**Post date:** [April 7, 2021, 3:14pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/13 "2021-04-07T15:14:54Z")

</div>

hi @teutates - are you looking for shorter URLs for linksharing? We have made an [update](https://forum.storj.io/t/update-weve-launched-linkshare-short-urls-and-static-site-hosting/10778) that will generate much shorter URLs. If not, could you give me more info on what you’re trying to accomplish?

---

<div class="post-metadata">

**Author:** ![teutates](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/teutates/32/1127_2.png) [@teutates](https://forum.storj.io/u/teutates)\
**Post date:** [April 8, 2021, 8:33pm UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/14 "2021-04-08T20:33:18Z")

</div>

Thank you @jennifer! How nice, I totally missed that. I’m going to try this out and report back!

---

<div class="post-metadata">

**Author:** ![iks77](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/iks77/32/1122_2.png) [@iks77](https://forum.storj.io/u/iks77)\
**Post date:** [November 24, 2022, 8:59am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/15 "2022-11-24T08:59:08Z")

</div>

I am currently also trying to use storj as Object Storage for Mastodon.  
Unfortunately i can not access the page tardigate dot io (sorry, only 2 links for new users)

Do you really need some middle-man services to get this running?

Basially yesterday i was following these instructions that are made for Amazaon AWS [cybrespace-meta/s3.md at 62ecf7dfc550e9025a49a3457a593ddce6e22b9f · cybrespace/cybrespace-meta · GitHub](https://github.com/cybrespace/cybrespace-meta/blob/62ecf7dfc550e9025a49a3457a593ddce6e22b9f/s3.md)  
I created a bucket and able to sync the files to bucket with aws-cli command line tool.  
Configured Mastodon like mentioned in post above  
S3\_ENABLED=true  
S3\_BUCKET=test  
AWS\_ACCESS\_KEY\_ID=[blubb]  
AWS\_SECRET\_ACCESS\_KEY=[blubb]  
S3\_ENDPOINT=gateway dot storjshare dot io  
S3\_PROTOCOL=https

Mastodon now assumes the file can be accessed via HTTP on link like this: [gateway.storjshare.io/test/cache/media\_attachments/files/109/394/283/839/423/575/original/6f8d30f905e6ff79.jpeg](http://gateway.storjshare.io/test/cache/media_attachments/files/109/394/283/839/423/575/original/6f8d30f905e6ff79.jpeg) (which is obviously not the case)

I think i am missing a basic thing, but i am a bit lost at this point. Maybe someone has a hint for a good tutorial or other ressources?

---

<div class="post-metadata">

**Author:** ![mitexleo](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/mitexleo/32/1132_2.png) [@mitexleo](https://forum.storj.io/u/mitexleo)\
**Post date:** [November 26, 2022, 4:49am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/16 "2022-11-26T04:49:21Z")

</div>

This forum seems dead … I can’t even send any support requests … That says I don’t have permission to access their support page …

---

<div class="post-metadata">

**Author:** ![mitexleo](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/mitexleo/32/1132_2.png) [@mitexleo](https://forum.storj.io/u/mitexleo)\
**Post date:** [November 26, 2022, 4:51am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/17 "2022-11-26T04:51:39Z")

</div>

I’m in same trouble too …

As far as I’ve been able to figure out, We need to run our own Gateway in order to get URLs … Which I already did … Then I have to setup Nginx Reverse Proxy … Which I’m trying to do now …

---

<div class="post-metadata">

**Author:** ![Alexey](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/alexey/32/41_2.png) [@Alexey](https://forum.storj.io/u/Alexey)\
**Post date:** [November 26, 2022, 5:29am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/18 "2022-11-26T05:29:49Z")

</div>

Our GatewayMT ([Storj-hosted S3-Compatible Gateway](https://docs.storj.io/dcs/api-reference/s3-compatible-gateway)) doesn’t support globally public buckets, so you need to use either a [GatewayST in the website mode](https://docs.storj.io/dcs/api-reference/s3-gateway/gateway-st-advanced-usage) and NGINX reverse-proxy to support the domain-like access ([http://my-bucket.localhost:7777](http://my-bucket.localhost:7777) instead of [http://localhost:7777/my-bucket](http://localhost:7777/my-bucket)), or use a CDN like [Fastly](https://docs.storj.io/dcs/how-tos/fastly-integration) with our GatewayMT.

---

<div class="post-metadata">

**Author:** ![mitexleo](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/mitexleo/32/1132_2.png) [@mitexleo](https://forum.storj.io/u/mitexleo)\
**Post date:** [November 26, 2022, 5:42am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/19 "2022-11-26T05:42:34Z")

</div>

Is there any problem If I wanna stick with localhost:7777/my\_bucket?

---

<div class="post-metadata">

**Author:** ![Alexey](https://storj.bcdn.literatehosting.com/user_avatar/forum.storj.io/alexey/32/41_2.png) [@Alexey](https://forum.storj.io/u/Alexey)\
**Post date:** [November 26, 2022, 5:43am UTC](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464/20 "2022-11-26T05:43:20Z")

</div>

no. Only if your software requires domain-like access instead of path-style and cannot be configured this way (Mastodon seems cannot).

[Next page](https://forum.storj.io/t/object-storage-provider-for-mastodon-instance/11464.md?page=2)
