Home/Getting started

Getting started

Deploy your first instance

Choose a domain, provision Cloudflare resources, deploy, and verify federation from end to end.

12 min readBased on project sourcesEnglish

Before you begin

SiliconBeest is a Fediverse server that runs on the Cloudflare developer platform without a traditional server.

!
Your domain is effectively a permanent identifier

Changing the instance domain after federation begins breaks existing follows, conversations, and ActivityPub actor URIs cached by remote servers. Finalize the domain before launch.

  • A Cloudflare account with Workers enabled
  • A dedicated domain managed by Cloudflare
  • Node.js 22.13+, 24.11+, or 26+
  • A GitHub account and a repository with Actions enabled

Install and provision resources

  1. 1
    Create a repository from the template

    Select Use this template in SJang1/siliconbeest to create your own repository.

  2. 2
    Run the installation script

    The interactive installer provisions D1, R2, KV, Queues, and the required keys.

  3. 3
    Add the GitHub values

    Store the generated resource IDs as repository variables, and the API token and account ID as secrets.

  4. 4
    Run the Deploy workflow

    Run the Deploy workflow in Actions to deploy all three Workers and the database migrations.

Terminal
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/SJang1/siliconbeest/HEAD/scripts/install.sh)"

Required GitHub settings

TypeKeyPurpose
SecretCLOUDFLARE_API_TOKENAPI token used to deploy Workers and data resources
SecretCLOUDFLARE_ACCOUNT_IDCloudflare account identifier
VariablePROJECT_PREFIXPrefix used for Cloudflare resource names
VariableINSTANCE_DOMAINThe finalized instance domain
VariableINSTANCE_TITLEThe display name of the service
VariableREPOSITORY_URLPublic source repository URL
VariableREGISTRATION_MODEopen, approval, or closed
VariableD1_DATABASE_ID · KV_*_IDResource identifiers created by the installer

Verify your first federation

!
Cloudflare bot-protection exceptions are required

Bot Fight Mode can return 403 for ActivityPub requests to /users/* and /inbox. Configure a WAF Skip rule for ActivityPub content types.

  • Confirm the local actor URL in the /.well-known/webfinger response
  • Check the /nodeinfo/2.0 response and software name
  • Find and follow the local account from a remote Mastodon or Misskey account
  • Confirm two-way delivery of public posts and custom emoji reactions
  • Ensure the federation queue and DLQ are not accumulating in the admin console
Want to improve this documentation?Every contribution helps.
Contribute on GitHub ↗