Skip to content

Storing Remote Media

Akkoma does not store remote/federated media by default. The best way to achieve this is to change Nginx to keep its reverse proxy cache for a year and to activate the MediaProxyWarmingPolicy MRF policy in Akkoma which will automatically fetch all media through the proxy as soon as the post is received by your instance.


The following are excerpts from the suggested nginx config that demonstrates the necessary config for the media proxy to work.

A proxy_cache_path must be defined, for example:

proxy_cache_path /long/term/storage/path/akkoma-media-cache levels=1:2
    keys_zone=akkoma_media_cache:10m inactive=1y use_temp_path=off;

The proxy_cache_path must then be configured for use with media proxy paths:

    location ~ ^/(media|proxy) {
        proxy_cache        akkoma_media_cache;
        slice              1m;
        proxy_cache_key    $host$uri$is_args$args$slice_range;
        proxy_set_header   Range $slice_range;
        proxy_cache_valid  200 206 301 304 1h;
        proxy_cache_lock   on;
        proxy_ignore_client_abort on;
        proxy_buffering    on;
        chunked_transfer_encoding on;
        proxy_pass         http://phoenix;

Ensure that proxy_http_version 1.1; is set for the above location block. In the suggested config, this is already the case.


File-based Configuration

If you're using static file configuration, add the MediaProxyWarmingPolicy to your MRF policies. For example:

config :pleroma, :mrf,
  policies: [Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy]

Database Configuration

In the admin interface, add MediaProxyWarmingPolicy to the Policies option under SettingsMRF.