diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 00000000..81d582d0 --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,33 @@ +name: Deploy landing page + +on: + push: + branches: [main] + paths: + - 'site/**' + - '.github/workflows/deploy-pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + - uses: actions/configure-pages@v5 + - uses: actions/upload-pages-artifact@v3 + with: + path: ./site + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/site/.nojekyll b/site/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/site/assets/dm-sans.woff2 b/site/assets/dm-sans.woff2 new file mode 100644 index 00000000..9dbef56b Binary files /dev/null and b/site/assets/dm-sans.woff2 differ diff --git a/site/assets/federation-peer.webp b/site/assets/federation-peer.webp new file mode 100644 index 00000000..db089319 Binary files /dev/null and b/site/assets/federation-peer.webp differ diff --git a/site/assets/logo.png b/site/assets/logo.png new file mode 100644 index 00000000..71989079 Binary files /dev/null and b/site/assets/logo.png differ diff --git a/site/assets/spaces.webp b/site/assets/spaces.webp new file mode 100644 index 00000000..c0c5fffe Binary files /dev/null and b/site/assets/spaces.webp differ diff --git a/site/assets/stream-settings.webp b/site/assets/stream-settings.webp new file mode 100644 index 00000000..136ab392 Binary files /dev/null and b/site/assets/stream-settings.webp differ diff --git a/site/assets/voice-grid.webp b/site/assets/voice-grid.webp new file mode 100644 index 00000000..7f252035 Binary files /dev/null and b/site/assets/voice-grid.webp differ diff --git a/site/index.html b/site/index.html new file mode 100644 index 00000000..5ea71b67 --- /dev/null +++ b/site/index.html @@ -0,0 +1,1082 @@ + + + + + +Backspace: self-hosted, open-source Discord alternative + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ open source, AGPL-3.0 · your hardware, your rules +

Group chat that lives on your own hardware.

+

+ Backspace is a self-hosted, open-source Discord alternative: spaces, roles, voice and video, + screen sharing up to 4K at 120fps, and federation between servers that stay independently owned. +

+ +

one interactive installer · automatic HTTPS · runs on a Raspberry Pi

+
+ + +
+ + +
+
attic lab + +
+
+
text
+
# general
+
# selfhosted
+
# 3d-printing
+
voice
+
+ + lounge +
+
mara
+
felix
+ +
+
+
+ + Voice Connected +
+
lounge · 34ms
+
+
+ + mara
@mara
+ +
+
+ +
+
+ #general + the server lives in the closet now +
+
+
+ +
mara
+

moved us off discord last night. the whole thing runs off the pi in my closet now

+
+
+ +
jonas
+

how painful was the setup

+
+
+ +
mara
+

one installer. caddy grabbed the certs itself, first account became admin. that was it

+
+
+ +
felix
+

come to lounge, I'll stream the factorio base

+
+
+ +
jonas
+

ok this share is stupidly sharp. what is this, 1440p?

+
+
+ +
felix
+

4k. open the connection inspector if you don't believe me

+
+ +
+ +
+ + +
+
+
+ + +
+
+
+
voice-and-screen-share
+

A control surface, not a mute button.

+

+ Most chat apps give you one volume slider and a codec you never see. Backspace hands you the + signal path. When a stream stutters, the connection inspector shows you what is happening + on the wire, so you fix it instead of guessing at it. +

+
+
codec
VP9 or hardware H.264, chosen per stream
+
resolution
up to 4K at 120fps, inside bounds the admin sets
+
bitrate
set it yourself, reset to auto anytime
+
volume
0 to 200%, per person and per screen share
+
noise
RNNoise suppression scrubs the keyboard clatter
+
inspector
live bitrate, codec, ping, packet loss, jitter
+
+

voice and video run on LiveKit and are optional. everything else works without them.

+
+
+
+ The Backspace voice channel view: a grid of nine camera and screen-share tiles, with the channel sidebar and member list around it. + The per-stream settings panel: resolution presets from 540p up to 4K and native, frame rates from 30 to 120, content mode, codec choice between VP9 and hardware H.264, a bitrate slider, and a system audio toggle. +
+

real screenshots: a nine-person call, and the per-stream settings panel.

+
+
+
+ + +
+
+
+
federation
+

Independent servers, shared conversation.

+

+ Peer two Backspace instances and their users can be friends, message, and call each other, + while every server stays the property of whoever runs it. Requests between servers are + HMAC-signed, secrets rotate on a schedule you set, and a peer can be revoked at + any time. There is no directory and no central anything: two admins agree, and their servers + shake hands. +

+
+
+
+ +

+ Honest limits: this is Backspace-to-Backspace, not Matrix or ActivityPub, and it is young. + If you want a mature, open federation standard today, Matrix is the better choice, and + our comparison doc + says exactly that. +

+
+
+ The peered instances list from the admin panel: two active peers, one expanded to show health checks, last-seen and sync times, the secret rotation schedule, and controls to rotate the shared secret or revoke the peering. +

from the admin panel: peers are health-checked, secrets rotate on schedule, and revocation is one click away.

+
+
+
+
+ + +
+
+
+
the-rest-of-it
+

The parts you'd expect, done properly.

+
+
roles-and-permissionsbitwise roles, with overrides per category and per channel
+
group-dmsdirect messages and group calls for up to 10 people
+
moderationbans with reasons and audit trails, voice restrictions that persist
+
searchfull text across everything, with from: has: before: and after: filters
+
desktop-and-mobilean Electron desktop app, plus an installable PWA on phones
+
files-and-embedsuploads with thumbnails, link previews, GIF search
+
+
+
+ The space discovery screen: a grid of public and joined spaces with pastel banner cards, next to the DM sidebar and active-now list. +

space discovery: public, request-to-join, and private spaces.

+
+
+
+ + +
+
+
+
+ +
+
$
+
$
+
domain, ports, voice: the installer asks, you answer
+
HTTPS via Caddy: certificates arrive on their own
+
prebuilt image: amd64 and arm64, no local build
+
✓ up. the first account to register becomes admin.
+
+
+
+
+
install
+

One installer, then it's yours.

+

+ The interactive installer walks you through Docker Compose, and Caddy handles HTTPS without + being asked twice. There are no default credentials to forget about: the first account you + register becomes the admin. +

+
    +
  • runs on a Raspberry Pi: the prebuilt image covers amd64 and arm64
  • +
  • your data is SQLite files on your own disk, with automatic backups
  • +
  • AGPL-3.0, with a commercial dual license where the AGPL doesn't fit
  • +
+
+
+
+ + +
+
+
before-you-star
+

Read this before you star it.

+

+ Backspace is young, and you should pick tools with clear eyes. Three things it does not give you today: +

+
    +
  • No Discord ecosystem. There is no bot marketplace and no army of integrations. You get the platform, not the crowd.
  • +
  • Mobile is a PWA. It installs to your home screen and works well, but native iOS and Android apps are still on the roadmap.
  • +
  • The federation is young. It peers Backspace with Backspace. For a mature open standard across many ecosystems, Matrix is the better pick.
  • +
+
+
+ + +
+
+
how-it-compares
+

An honest snapshot.

+

+ The full write-up, including where each of these is the better choice, lives in the + comparison doc. +

+
+ + + + + + + + + + + + +
CapabilityBackspaceDiscordRevoltMatrixMumble
Self-hostableYesNoYesYesYes
Open sourceAGPL-3.0NoYesYesYes
Discord-style UXYesYesYesDifferentNo
Video and screen shareUp to 4K/120fpsYesLimitedYesNo
Per-stream media controlsYesNoNoPartialAudio only
FederationBetween instancesNoNoYes, open standardNo
+
+
+
+ + +
+
+
questions
+

Questions people actually ask.

+
+
+ Is Backspace a self-hosted Discord alternative? +

Yes. It gives you a Discord-style experience with spaces, channels, roles, voice, video, screen sharing, DMs, and friends, running entirely on your own server so you own the data and set the rules.

+
+
+ Does it have screen sharing and high-quality video? +

Yes. Screen sharing goes up to 4K/120fps within admin-set bounds, with per-stream codec, bitrate, and resolution controls, RNNoise noise suppression, and a live connection inspector. Voice and video use LiveKit and are optional.

+
+
+ What does federation mean here? +

Independent Backspace instances can peer with each other so users on different servers can be friends, DM, and call across instances, while each server stays independently owned. Requests between servers are HMAC-authenticated. It is Backspace-to-Backspace, not Matrix or ActivityPub.

+
+
+ Can I run it on a Raspberry Pi? +

Yes. The installer pulls a prebuilt multi-architecture image for amd64 and arm64, so low-power and ARM boxes skip the heavy local build.

+
+
+ Is it really open source? +

Yes, under the GNU AGPL-3.0, with a commercial dual-license option for cases the AGPL does not fit. Every released version stays available under the AGPL.

+
+
+
+
+ + +
+
+

The next place you hang out could be yours.

+

Clone it, run the installer, and you're the admin.

+ +
+
+ +
+ + + + + + + diff --git a/site/llms.txt b/site/llms.txt new file mode 100644 index 00000000..44b376c9 --- /dev/null +++ b/site/llms.txt @@ -0,0 +1,29 @@ +# Backspace + +> Backspace is a self-hosted, open-source Discord alternative: a Discord-style chat platform you run on your own hardware. It offers spaces, channels, role-based permissions, voice and video, screen sharing up to 4K/120fps, direct messages, friends, full-text search, and server-to-server federation between independently owned instances. It is licensed under the GNU AGPL-3.0 with a commercial dual-license option, deploys with a single Docker installer, and runs on ARM hardware such as a Raspberry Pi. + +## What it is + +- Category: self-hosted team communication platform, Discord alternative. +- License: GNU AGPL-3.0 (open source), commercial license available. +- Stack: TypeScript monorepo, Fastify and SQLite on the server, React on the web, LiveKit for voice and video, Electron desktop app, installable mobile PWA. +- Deployment: interactive Docker installer with automatic HTTPS via Caddy, prebuilt multi-architecture image (amd64 and arm64). + +## Distinctive features + +- Fine-grained media controls: per-stream codec (VP9 or hardware H.264), bitrate, resolution, and frame rate; independent 0-200% volume per participant and per screen-share; RNNoise noise suppression; a live connection inspector for bitrate, ping, packet loss, and jitter. +- Screen sharing up to 4K/120fps within admin-set bounds. +- Server-to-server federation: independent Backspace instances peer with each other for cross-instance friends, DMs, calls, and presence, each server independently owned, requests HMAC-authenticated. This is a custom Backspace-to-Backspace protocol, not Matrix or ActivityPub. +- Role-based permissions with per-category and per-channel overrides, group DMs and calls, moderation with audit trails, and full-text search. + +## Honest scope + +- It does not have Discord's ecosystem or bot library. +- It is not an open, cross-ecosystem federation standard like Matrix; it federates Backspace instances with each other. +- Native iOS and Android apps are planned; today the mobile path is an installable PWA. + +## Links + +- Source code and documentation: https://github.com/TheZwiss/backspace +- Comparison with Discord, Revolt, Spacebar, Matrix, and Mumble: https://github.com/TheZwiss/backspace/blob/main/docs/comparison.md +- License: https://github.com/TheZwiss/backspace/blob/main/LICENSE diff --git a/site/social-preview.png b/site/social-preview.png new file mode 100644 index 00000000..23917c2b Binary files /dev/null and b/site/social-preview.png differ