TL;DR
Pixelfed is the federated photo-sharing platform — like Instagram but on the Fediverse. Self-hosting:
- Sizing: 2 vCPU / 4 GB RAM / 80 GB disk for personal; 4 vCPU / 8 GB / 500+ GB for community. Storage scales fast with photos.
- Best providers: BuyVM Luxembourg (Block Storage Slabs for the photo archive), HostHatch IS, FlokiNET.
- Federation: federates with Mastodon and other ActivityPub instances; same federation reality check as Mastodon hosting applies.
Why self-host Pixelfed
The Instagram alternative landscape in 2026:
- Pixelfed: federated, ActivityPub-compatible, self-hostable.
- Mastodon with media: works but isn’t photo-first.
- Big-platform alternatives (Bluesky, Threads): centralized, US-controlled.
Self-hosted Pixelfed is the only configuration where:
- Your photo archive is on infrastructure you control.
- No platform can deplatform you.
- Fediverse users can follow you without leaving their preferred client.
- Your audience isn’t tied to a corporate account.
Sizing
| Use case | Specs | Storage need (1 yr) |
|---|---|---|
| Personal (1 user, 100 photos) | 2 vCPU, 4 GB RAM | 5-20 GB |
| Personal photographer (many) | 2 vCPU, 4 GB RAM | 50-200 GB |
| Community (10-50 users) | 4 vCPU, 8 GB RAM | 200-500 GB |
| Public instance (open signup) | 8+ vCPU, 16 GB RAM | 1+ TB / year |
Storage is the dominant cost. Pair the application VPS with cheap object storage (BuyVM Block Storage Slab, or S3-compatible from a separate provider).
Step-by-step
1. Provision
For a personal instance: BuyVM Luxembourg Slice 4096 ($7/mo) + Block Storage Slab 256 GB ($5/mo) is the cost-leader. For higher-privacy: FlokiNET.
2. Install Pixelfed
The official Pixelfed install guide is well-maintained. Recommended path: Docker for ease of updates.
services:
app:
image: zknt/pixelfed:latest
restart: unless-stopped
env_file: .env
volumes:
- ./storage:/var/www/storage
depends_on:
- db
- redis
db:
image: mariadb:10
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_DATABASE: pixelfed
MYSQL_USER: pixelfed
MYSQL_PASSWORD: pixelfedpw
volumes:
- ./db:/var/lib/mysql
redis:
image: redis:alpine
restart: unless-stopped
Configure .env with your domain, mail SMTP, and admin email.
3. Configure media storage
For instances with many photos, push uploads to object storage:
FILESYSTEM_DRIVER=s3
AWS_ACCESS_KEY_ID=your-key
AWS_SECRET_ACCESS_KEY=your-secret
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket
AWS_URL=https://your-s3-endpoint
For BuyVM Block Storage, MinIO can present an S3-compatible API.
4. Federation considerations
Same as Mastodon:
- Some larger Fediverse instances pre-emptively defederate with anonymous-signup-friendly servers.
- Have a published moderation policy.
- Plan for some federation reach reduction at the start.
5. Hardening
- Disable open registration unless you really want public signup.
- Email confirmation required for new accounts.
- Two-factor auth for admin.
- Rate limit uploads to prevent abuse.
- Backup the database AND the media storage separately.
Cost
For a personal Pixelfed with 200 GB photo archive:
| Component | Cost |
|---|---|
| BuyVM Slice 4096 | $7 / month |
| BuyVM Block Storage 256 GB | $5 / month |
| Domain (Njalla .com) | $1.25 / month |
| Total | ~$13 / month |
For comparison: Instagram is “free” but you’re the product. Pixelfed is paid hosting with full data ownership.