2.3 Iceshrimp.NET Fediverse Instance

Iceshrimp.NET progresses more and more and has a really great development team. This led me to the decision to migrate my existing Iceshrimp instance to Iceshrimp.NET. It is important to know that especially the frontend is still in a work-in-progress state. If you rely on the Iceshrimp frontend it is perhaps not advisable to move to Iceshrimp.Net. The development team is very motivated and I am sure this will change rapidly and makes it even more interesting for tech freaks.

Iceshrimp.NET, from backend perspective, is a complete rewrite of Iceshrimp in C#. It still has the goal to support the Mastodon client API which makes all Iceshrimp variants interesting for me. It allows to use many clients (web, iOS, Android, …) that are developed for Mastodon also for Iceshrimp. Including my favorite client Mona.

Install Iceshrimp.NET

Note

For details on how to install Iceshrimp.NET, please refer to Deploying Iceshrimp with Docker. The description is maintained by the Iceshrimp development team.

All I did was following the instructions provided by the Iceshrimp team. Nevertheless I changed some settings in the config/configuration.ini file:

Since I do have limited space I activated the media cleanup settings. Media shared in the Fediverse are cached on the local server. To avoid having to provide too much storage space I activated the MediaRetention entry. With this settings Iceshrimp.NET purges all cached media that are older then three weeks.

[Storage]

...

MediaRetention = 21d

Migration from Iceshrimp to Iceshrimp.NET

Note

This section is only important if you migrate from Iceshrimp to Iceshrimp.NET. All steps are described in the Migration Guide provided by the Iceshrimp.NET development team.

For Iceshrimp I used object storage to overcome media playback issues. In Iceshrimp.NET those issues are no longer existent so I use now local storage. Due to migration, the media pointers in the database are still pointing to the object store. To allow Iceshrimp.NET e.g., to cleanup old media data, the object store credentials need to be provided although local storage is used. As soon there is no data used from object store any longer, the object store store can be switched off.

Here is an example of the Storage section in the config/configuration.ini file.

[Storage]
;; Where to store media attachments
;; Options: [Local, ObjectStorage]
Provider = Local

;; Max file size for locally originating media, files larger than this will error on upload (-1 = no limit)
MaxUploadSize = 100M

;; Max file size for remote media, files larger than this will never be cached (-1 = no limit)
MaxCacheSize = 20M

;; Amount of time remote media is retained in the cache (0 = disabled, -1 = infinite)
MediaRetention = 21d

;; Whether to cleanup remote avatars & banners past the media retention time
CleanAvatars = true
CleanBanners = true

[Storage:Local]
;; Path where media is stored at. Must be writable for the service user.
Path = /data/media

[Storage:ObjectStorage]
Endpoint = s3.example.com
Region = <your-region>
KeyId = <your-key-id>
SecretKey = <your-secret-key>
Bucket = iceshrimp
Prefix = ish
AccessUrl = https://s3.example.com/iceshrimp
;;SetAcl = public-read

Caddy Setup

Iceshrimp.NET is providing the webpage at port 3000. To make the service publicly available Caddy needs to be configured with an additional entry in its Caddyfile. I assume you have created the domain iceshrimp.example.com that can be used for providing Iceshrimp.NET on the internet.

Note

For a detailed documentation pleaser refer to the Caddy website.

Now you need to add following lines in the file /etc/caddy/Caddyfile:

iceshrimp.example.com {
    reverse_proxy localhost:3000
}

With following commands Caddy will read the new configuration and you can check for the status:

cd /etc/caddy
sudo caddy reload
sudo service caddy status

Caddy will provide the Iceshrimp GUI as website with the address https://iceshrimp.example.com. An SSL certificate will be assigned and updated automatically.

Post Install

Note

Also here, the Iceshrimp.NET development team has provided Post-Install Guide documentation that you can follow.