Installing Nicolium as Iceshrimp.NET frontend

Iceshrimp.NET does not have built-in support for alternative frontends. However, there are ways to use Nicolium as the frontend for Iceshrimp.NET by rerouting specific requests using a reverse proxy like Nginx.

Since Iceshrimp.NET v2026.1-beta release, it is possible to use all of its features with Nicolium in standalone mode. You no longer have to use the described method to use Iceshrimp.NET-specific features. Remember that it doesn’t have full feature parity with the default Iceshrimp.NET frontend.

Example Nginx configuration

(Assuming Nicolium files are located in /var/www/nicolium)

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

map "$http_accept,$http_content_type" $maybe_activitypub {
  default @nicolium;

  "~application/json" @shrimp;
  "~application/activity\+json" @shrimp;
  "~application/ld\+json" @shrimp;
  "~application/ld\+json; *profile=\"https://www.w3.org/ns/activitystreams\"" @shrimp;
}

server {
  server_name iceshrimp.example.com;
  root /var/www/nicolium/;

  location ~ ^/(Components|openapi|scalar|swagger|css|_content|js|files|avatars|banners|media|api|inbox|oauth|admin|manifest.json|nodeinfo|.well-known|@(.+)$|[a-zA-Z0-9.]+.css$) {
    try_files /dev/null @shrimp;
  }

  location / {
    try_files $uri $maybe_activitypub;
  }

  location ~ ^/(users|notes|threads|inbox|emoji|@(.+)) {
    try_files /dev/null $maybe_activitypub;
  }

  location @nicolium {
    try_files /index.html /dev/null;
  }

  location @shrimp {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
  }

  listen 443 ssl;
}

Example Caddy configuration

There is also a Caddyfile made by Alexia used by The Starlight Network instance. You can find it and read more about it here.