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.

weird logo

Self-host weird

v0.4.0

Local-first CMS for personal digital gardens

BetaSource AvailableOther
Updatedlast year
LanguageTypescript
Setup difficultyAdvanced
Stars
211
Port
3000 (Main Weird frontend (SvelteKit))
Requires
Leaf Server, Rauthy, Redis, SMTP4Dev
Install with Docker Compose

What is weird?

Weird is a local-first Content Management System for personal digital gardens. It blends a WordPress-style site builder with a Notion-like editor and Linktree-level simplicity. Users can spin up a personal web page in minutes, pull in content from other platforms via automated PESOS/POSSE pipelines, and tend their garden over time instead of chasing a chronological feed. The backend runs on Rust (Leaf Server, Iroh, Willow) and the frontend on SvelteKit. Authentication is handled by Rauthy (OIDC), with IndieAuth and FedCM on the roadmap. A full Docker Compose stack is provided for self-hosting, exposing the app on port 9523 alongside Rauthy (8921) and an SMTP dev server (8091). The project is pre-1.0 (v0.4.0) and actively developed, with federated webrings, peer-to-peer networking, and nomadic identity planned.

Should you self-host weird?

weird scores 38/100 on selfhost.directory (how scoring works) and ranks #38 of 42 in Content Management. It has 211 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. It is Other-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Ghost (83/100, 55 629 stars). It scores higher overall, so compare the two before you pick. See weird vs Ghost side by side.

Features

  • 2-minute site creation
  • Admin Dashboard
  • Billing/subscriptionsConfiguration exists but marked as sandbox environment
  • Custom themes
  • Digital garden CMS
  • FedCM supportPlanned in roadmap
  • Federated webringsMarked as 'Coming soon' in roadmap
  • Fediverse IntegrationPlanned in roadmap
  • IndieAuth supportPlanned in roadmap
  • Local-first architecture
  • Nomadic IdentityPlanned in roadmap
  • OIDC Authentication
  • Peer-to-Peer NetworkingMarked as 'Coming soon' in roadmap (Mutual Peers Grid)
  • PESOS/POSSE posting
  • Web-stuff imports

weird README

How to install weird

Install weird with Docker Compose

Docker & Docker Compose
$ docker compose -f compose.local.yaml up -d

The ports remain the same, so you can continue accessing services on the previous ports, such as http://localhost:9523, as usual.

Fully containerized setup with all services (frontend, backend, Rauthy, SMTP4Dev)

How to configure weird

  • APP_IPS127.0.0.1Application IP addresses for DNS

    Application IP addresses for DNS

  • BACKEND_SECRETtemporarydevelopmentkeySecret key for backend communication

    Secret key for backend communication

  • BACKEND_URLhttp://127.0.0.1:7431URL for the Leaf Server backend RPC

    URL for the Leaf Server backend RPC

  • BSKY_IDENTIFIERBluesky identifier for authentication

    Bluesky identifier for authentication

  • BSKY_PSWDBluesky password

    Bluesky password

  • DISCORD_CLIENT_IDDiscord OAuth client ID

    Discord OAuth client ID

  • DISCORD_TOKENDiscord bot token

    Discord bot token

  • DNS_LOG_VERBOSE1DNS verbose logging level

    DNS verbose logging level

  • DNS_NAMESERVERS127.0.0.1:7753DNS nameservers

    DNS nameservers

  • DNS_PORT7753DNS server port

    DNS server port

  • DNS_SOA_EMAILexample@localhost.testDNS SOA email

    DNS SOA email

  • DNS_SOA_MASTERlocalhostDNS SOA master

    DNS SOA master

  • DNS_TTL0DNS TTL value

    DNS TTL value

  • FEEDBACK_WEBHOOKWebhook URL for feedback submissions

    Webhook URL for feedback submissions

  • GH_CLIENT_SECRETGitHub OAuth client secret

    GitHub OAuth client secret

  • INSTANCE_SUBSPACE_SECRETgqvkucapoouch6xhhnn3pnqu7zpwpd3a4nctz2vkm2qrsnfbf6haInstance subspace secret for cryptographic operations

    Instance subspace secret for cryptographic operations

  • MICROSOFT_APPLICATION_IDMicrosoft OAuth application ID

    Microsoft OAuth application ID

  • POLAR_ACCESS_TOKENPolar API access token

    Polar API access token

  • POLAR_AUTO_DISCOUNT_IDPolar auto discount ID

    Polar auto discount ID

  • POLAR_CUSTOM_DOMAIN_BENEFIT_IDPolar custom domain benefit ID

    Polar custom domain benefit ID

  • POLAR_ENVsandboxPolar billing environment (sandbox or production)

    Polar billing environment (sandbox or production)

    values: sandbox, production

  • POLAR_SUBSCRIPTION_PRICE_IDPolar subscription price ID

    Polar subscription price ID

  • POLAR_USERNAME_WITHOUT_NUMBER_ENDING_BENEFIT_IDPolar username benefit ID

    Polar username benefit ID

  • POLAR_WEBHOOK_SECRETtestwebhooksecretPolar webhook secret

    Polar webhook secret

  • PUBLIC_DOMAINlocalhost:9523Public domain for the instance

    Public domain for the instance

  • PUBLIC_ENABLE_EXPERIMENTStrueEnable experimental features

    Enable experimental features

  • PUBLIC_GH_CLIENT_IDGitHub OAuth client ID

    GitHub OAuth client ID

  • PUBLIC_GH_REDIRECT_URIhttp://localhost:9523/account/github/GitHub OAuth redirect URI

    GitHub OAuth redirect URI

  • PUBLIC_HIDE_REGISTRATIONHide the registration form when set to true

    Hide the registration form when set to true

    values: true

  • PUBLIC_INSTANCE_NAMEWeird.OnePublic instance name

    Public instance name

  • PUBLIC_MEMBERS_TITLEWeird OnesTitle for members

    Title for members

  • PUBLIC_POLAR_WEBHOOK_DOMAINPolar webhook domain

    Polar webhook domain

  • PUBLIC_SUFFIXESuser.localhost:9523,user2.localhost:9523,awesome.localhost:9523Public suffixes for user subdomains

    Public suffixes for user subdomains

  • PUBLIC_TRAEFIK_CONFIG_HOST127.0.0.1:9523Public Traefik config host

    Public Traefik config host

  • PUBLIC_URLhttp://localhost:9523Public URL for the Weird instance

    Public URL for the Weird instance

  • RAUTHY_URLhttp://localhost:8921URL for the Rauthy OIDC server

    URL for the Rauthy OIDC server

  • REDIS_URLredis://localhost:7634Redis connection URL

    Redis connection URL

  • SMTP_FROMWeird One <noreply@localhost.de>From address for outgoing emails

    From address for outgoing emails

  • SMTP_HOSTlocalhostSMTP server hostname

    SMTP server hostname

  • SMTP_PASSdummySMTP password

    SMTP password

  • SMTP_PORT2525SMTP server port

    SMTP server port

  • SMTP_SECUREfalseWhether to use secure SMTP connection

    Whether to use secure SMTP connection

  • SMTP_URLsmtp://dummy:dummy@localhost:2525/?pool=trueFull SMTP connection URL for Weird

    Full SMTP connection URL for Weird

  • SMTP_USERdummySMTP username

    SMTP username

  • TRAEFIK_CONFIG_NAMESPACEweird-one-dynamic-configTraefik config namespace

    Traefik config namespace

  • TRAEFIK_CONFIG_SERVICE_NAMEsrv-weird@dockerTraefik service name for dynamic config

    Traefik service name for dynamic config

weird releases & version history

More in Web Hosting

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…