Self-hosting

Run your own Aviary instance

Any community can run their own Aviary server. It federates automatically with every other instance — and with Mastodon, Pixelfed, and the wider Fediverse. No permission needed. No vendor lock-in.

🏛️

Full ownership

Your community's data lives on your server. You control backups, exports, and access.

🌐

Still federated

Your instance connects to the global Aviary and Fediverse network automatically.

🔧

Fully customisable

Change the name, colours, or rules to fit your community's needs.

What you need

  • ✓A server or VPS (4GB RAM minimum — DigitalOcean, Hetzner, or any Linux host)
  • ✓A domain name pointing to your server
  • ✓Docker and Docker Compose installed
  • ✓A free Uploadthing account for photo storage
  • ✓A free Neon or Supabase account for PostgreSQL (or run Postgres in Docker)

Setup guide

01

Clone the repository

git clone https://github.com/sunnypawat/aviary.git
cd aviary
02

Configure environment variables

cp .env.example .env

# Edit .env and set:
# DATABASE_URL=postgresql://...
# NEXTAUTH_URL=https://your-domain.com
# NEXTAUTH_SECRET=your-random-secret
# UPLOADTHING_TOKEN=your-token
# NEXT_PUBLIC_APP_URL=https://your-domain.com
03

Start with Docker

docker-compose up -d
04

Run database migrations

docker-compose exec app node node_modules/drizzle-kit/bin.cjs push
05

You're live

# Your instance is running at https://your-domain.com
# Users on Mastodon can find your members at:
# @username@your-domain.com

🌿

A note on permacomputing

Self-hosting is a permacomputing choice. Your community's data doesn't depend on any company's continued goodwill or funding. Even if the main Aviary instance disappears tomorrow, your server keeps running — and your sightings, your followers, and your connections to the Fediverse remain intact.

Not ready to self-host? Use the hosted version — it's free.

Join aviary-neon.vercel.app →

Questions? Open an issue on GitHub