Pixelfed

Federated photo-sharing social platform

Social Networks ★ 7.1k stars Hard setup AGPL-3.0

Pixelfed is a free, open-source, federated image-sharing platform. It offers an Instagram-like experience with photo feeds, stories, and collections that federate via ActivityPub.

Key features

  • Photo feeds and stories
  • ActivityPub federation
  • Collections and albums
  • Official mobile apps

Pros & cons

Strengths

  • Instagram-like experience
  • No ads or tracking

Trade-offs

  • Setup is involved
  • Smaller network than Instagram

Pixelfed replaces

Last reviewed Sep 13, 2026 · 777 words

Before anything else: if the goal is a private place for family photos, Pixelfed is the wrong tool and Immich is the right one. Pixelfed is a publishing platform. It federates over ActivityPub, so a post on your instance appears in Mastodon timelines, strangers can follow you, and moderation becomes your job. Run it because you want an Instagram you own for an audience, and be ready for a Hard-rated install that needs 1 GB of RAM, a database, Redis, a queue worker and a domain with TLS that you intend to keep for years.

The stack has six moving parts

Pixelfed is a Laravel application, which means PHP-FPM behind nginx, a PostgreSQL or MySQL database, Redis for cache and queues, a Horizon worker process that must run continuously to process uploads and federation traffic, a scheduler entry running php artisan schedule:run every minute, and storage for media that grows without bound. The repository now ships a Docker Compose setup that wires all of that together, which took the install from an afternoon of PHP dependency wrangling to about 30 minutes of editing .env. The values that matter are APP_DOMAIN, ACTIVITY_PUB=true if you want federation, OPEN_REGISTRATION=false unless you plan to moderate strangers, and MAX_PHOTO_SIZE, in kilobytes, which you will want to raise for full-resolution uploads.

Federation is a commitment, not a checkbox

Once federation is on and your instance has exchanged a follow with anyone, other servers hold a record of your domain and your users' keys. Change the domain and every remote follower breaks; there is no clean rename in ActivityPub. Take the instance down for a month and remote servers keep trying to deliver, then give up on you. So the domain is permanent, the uptime expectations are real, and your inbox will receive content from the wider network that you are responsible for on your own server. Pixelfed ships block and mute tools, a report queue and instance-level domain blocks; budget an hour a week for them if registration is open, and a few minutes if it is just you.

Storage is the cost that keeps growing

Every upload is stored in several sizes, and every remote image your users see gets cached locally. A single-user instance following 200 accounts accumulates tens of gigabytes within a year. Two settings control the bleed: PF_ENABLE_CLOUD=true with S3-compatible credentials pushes media to object storage, where 50 GB costs about a euro a month on Backblaze B2 at last check, and a scheduled php artisan media:gc drops stale remote cache. Back up the database and the storage/ directory separately; the media is the irreplaceable part, and it is also the part that does not fit in a nightly database dump. The own your exports piece applies with unusual force here.

A single-user instance is the sane version

Most self-hosters should run Pixelfed with exactly one account: theirs. Registration closed, federation on, moderation reduced to blocking the occasional domain. That configuration gives you a portfolio at photos.example.com with an Instagram-shaped mobile app (the official Pixelfed apps on iOS and Android log into any instance), followers from across the fediverse, and none of the community management. It also keeps RAM comfortably at the 1 GB figure, since Horizon idles most of the day. The moment you open registration you have joined the social hosting business, where Mastodon admins have written the cautionary tales.

Smaller and larger neighbours

If federation is the draw and photos are secondary, GoToSocial runs an entire ActivityPub server in one Go binary on a fraction of the memory and handles images fine, without stories, collections or the Instagram feel. If the audience is the draw and you do not care about federation, a public album from PhotoPrism or Immich's share links costs nothing extra to operate. Pixelfed's narrow, real niche is people who want the Instagram interaction model on their own domain and are willing to run a PHP stack to get it.

What I'd do

Single account, registration closed, federation on, Docker Compose from the repository, Postgres, media on B2 from day one, media:gc weekly, database dump nightly, and a domain you would not mind seeing in ten years. If any item on that list makes you hesitate, put the photos in Immich and share links. The network is smaller than Instagram and always will be; what you get for the effort is an audience that follows you rather than an algorithm, on a server you can walk away from with your data intact.

Compare Pixelfed

2 head-to-head comparisons.

Similar social networks apps