selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Takahē logo

Self-host Takahē

0.11.0

ActivityPub microblogging server with multi-domain support

BetaOpen SourceBSD-3-Clause
Updated2 years ago
LanguagePython
Setup difficultyAdvanced
MobilePWA
ThemeDark mode
Stars
1 171
Storage
1GB scratch disk per container
Port
8000 (HTTP web interface)
Requires
PostgreSQL
Docker
jointakahe/takahe
Install with Docker Compose
Takahē expanded web UI viewTakahē compact web UI view

What is Takahē?

Takahē is a beta-stage ActivityPub/Fediverse server designed for small to medium self-hosted installations. It allows hosting multiple domains and multiple identities per user on a single instance, with a web UI that works as a progressive web app. The server implements the Mastodon Client API so users can use popular Fediverse client apps like Tusky, Elk, and Pinafore. It supports posts with content warnings, editing, media attachments, replies, boosts, likes, following/blocking/muting, notifications, timelines, custom emoji, RSS feeds, moderation tools, server announcements, defederation, and invite-based signup with email password reset. Deployment uses Docker/OCI images with a PostgreSQL 14+ database, a reverse proxy for HTTPS, and media storage via S3, Google Cloud Storage, or a local directory. Background tasks run via a separate Stator worker container. The project is licensed under BSD-3-Clause and actively developed toward a 1.0 release.

Should you self-host Takahē?

Takahē scores 53/100 on selfhost.directory (how scoring works) and ranks #4 of 5 in Fediverse. It has 1 171 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is BSD-3-Clause-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Misskey (74/100, 11 365 stars). It scores higher overall, so compare the two before you pick. See Takahē vs Misskey side by side.

Features

  • Content warnings and post visibilities
  • Custom Emoji
  • Follow, block, mute
  • Mastodon Client API compatibilitybeta support
  • Media attachments
  • Moderation tools
  • Multi-domain hosting
  • Multi-identity per user
  • Multiple timelines
  • Notifications
  • Post Editing
  • Progressive Web App
  • Replies, boosts, likes
  • RSS Feeds
  • Two-factor authenticationPlanned for 1.0 release

Takahē README

How to install Takahē

Install Takahē with Docker Compose

Docker Compose, Docker

docker compose -f docker/docker-compose.yml build docker compose -f docker/docker-compose.yml up

Development setup from docker/docker-compose.yml in repo

How to configure Takahē

  • GUNICORN_CMD_ARGSGunicorn worker configuration (e.g., --workers 2)

    Gunicorn worker configuration (e.g., --workers 2)

    values: Gunicorn arguments

  • TAKAHE_AUTO_ADMIN_EMAILEmail address to auto-promote to administrator on signup

    Email address to auto-promote to administrator on signup

    values: email address

  • TAKAHE_CACHES_DEFAULTCache backend URL for page caching (Redis, Memcached, filesystem, or locmem)

    Cache backend URL for page caching (Redis, Memcached, filesystem, or locmem)

    values: redis://..., memcached://..., file://..., locmem://...

  • TAKAHE_DATABASE_SERVERDatabase DSN for PostgreSQL connection

    Database DSN for PostgreSQL connection

    values: PostgreSQL connection string

  • TAKAHE_EMAIL_FROMEmail address that system emails appear to come from

    Email address that system emails appear to come from

    values: email address

  • TAKAHE_EMAIL_SERVERSMTP or SendGrid URI for sending emails

    SMTP or SendGrid URI for sending emails

    values: smtp://..., sendgrid://...

  • TAKAHE_MAIN_DOMAINDomain name without https:// for default links in emails

    Domain name without https:// for default links in emails

    values: domain name

  • TAKAHE_MEDIA_BACKENDMedia storage backend URI (local://, s3://, or gcs://)

    Media storage backend URI (local://, s3://, or gcs://)

    values: local://, s3://..., gcs://...

  • TAKAHE_MEDIA_ROOTFile path to local media directory (when using local:// backend)

    File path to local media directory (when using local:// backend)

    values: file path

  • TAKAHE_MEDIA_URLFully-qualified URL prefix serving the local media directory (must end in slash)

    Fully-qualified URL prefix serving the local media directory (must end in slash)

    values: URL with trailing slash

  • TAKAHE_NGINX_CACHE_SIZE1gSize of Nginx media cache (e.g., 10g)

    Size of Nginx media cache (e.g., 10g)

    values: Nginx size value

  • TAKAHE_REMOTE_PRUNE_HORIZON90Days of remote content history to keep before pruning (default 90)

    Days of remote content history to keep before pruning (default 90)

    values: integer days, 0 to disable

  • TAKAHE_REMOTE_TIMEOUT5Seconds to wait for remote federation requests (default 5)

    Seconds to wait for remote federation requests (default 5)

    values: number or tuple of four floats

  • TAKAHE_SECRET_KEYFixed random value for internal cryptography, must be kept secret

    Fixed random value for internal cryptography, must be kept secret

    values: 64+ character random string

  • TAKAHE_SENTRY_DSNSentry.io DSN for error tracking integration

    Sentry.io DSN for error tracking integration

    values: Sentry DSN string

  • TAKAHE_STATOR_CONCURRENCY20Max concurrent Stator tasks (default 20)

    Max concurrent Stator tasks (default 20)

    values: integer

  • TAKAHE_STATOR_CONCURRENCY_PER_MODEL4Max concurrent tasks per model in Stator (default 4)

    Max concurrent tasks per model in Stator (default 4)

    values: integer

  • TAKAHE_STATOR_TOKENRandom string to protect Stator HTTP endpoint if not running as background worker

    Random string to protect Stator HTTP endpoint if not running as background worker

    values: random string

  • TAKAHE_USE_PROXY_HEADERSSet to true when behind HTTPS proxy that passes X-Forwarded-Proto header

    Set to true when behind HTTPS proxy that passes X-Forwarded-Proto header

    values: true, false

  • TAKAHE_VAPID_PRIVATE_KEYVAPID private key for push notifications

    VAPID private key for push notifications

    values: VAPID private key

  • TAKAHE_VAPID_PUBLIC_KEYVAPID public key for push notifications

    VAPID public key for push notifications

    values: VAPID public key

More in Microblogging

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…