# Quick Start Guide Get OwnCord running with the fewest possible steps. ## Choose Your Setup Path | Goal | Best path | | ------------------------------------ | ----------------- | | Fastest local/LAN setup | Prebuilt binaries | | Linux server with easiest operations | Docker | | Custom dev build | Build from source | ## Platform Support (Current Releases) | Component | Windows x64 | Linux x64 | Linux ARM64 | | -------------- | ----------- | --------- | ----------------- | | Server binary | Yes | Yes | Not published yet | | Desktop client | Yes | Yes | Yes | ## Prerequisites - Go 1.26+ (only if building server from source) - Node.js 24+ and Rust (only if building client from source) - Docker + Compose v2 (Docker path only) - LiveKit (optional, required for voice/video) ## Option A: Prebuilt binaries (recommended) 1. Download from [GitHub Releases](https://github.com/J3vb/OwnCord/releases). 2. Start the server: - Windows: `chatserver.exe` - Linux: `./chatserver` 3. Open `https://localhost:8443/admin`. 4. Complete the setup wizard: it creates the Owner account and configures the basics (server name, port, security, uploads, voice). Your choices are written to `config.yaml` automatically — no manual editing needed. 5. Create invite codes and share them. ## Option B: Docker (Linux server) ```bash cd Server cp .env.example .env cp livekit.yaml.example livekit.yaml # Edit both files before start docker compose up -d ``` Then open `https://localhost:8443/admin` and complete the setup wizard. Full Docker details: [Deployment Guide](deployment.md#docker-linux). ## Option C: Build from source ```bash # Server (Windows) cd Server go build -o chatserver.exe -ldflags "-s -w -X main.version=1.2.0-alpha.4" . # Server (Linux) cd Server CGO_ENABLED=0 go build -o chatserver -ldflags "-s -w -X main.version=1.2.0-alpha.4" . # Client cd Client npm install npm run tauri build ``` ## What Happens on First Server Start - `config.yaml` is created with defaults. - `data/` is created for DB, certs, uploads, and backups. - A self-signed TLS certificate is generated. - SQLite schema and migrations are applied. ## Client Connection Notes - The default server address is `https://:8443`. - The desktop client uses TOFU certificate pinning: - First connection prompts for trust. - Future connections require the same cert fingerprint. - Who can read what on a server you run or join — text is readable by the operator; voice and video are end-to-end encrypted, with the limits that document states — is in [trust-model.md](trust-model.md). - Linux/Wayland: the client automatically sets `WEBKIT_DISABLE_DMABUF_RENDERER=1` on Wayland sessions to work around WebKitGTK rendering crashes. Export the variable yourself (any value) before launching to override this. ## If Remote Users Cannot Connect 1. Use [Tailscale](tailscale.md) for the simplest remote setup. 2. Or configure [Port Forwarding](port-forwarding.md). ## Optional: enable the GIF picker GIFs are **off by default** and each server supplies its own key — OwnCord does not ship one, so nothing is shared between servers. 1. Request a key at [partner.klipy.com](https://partner.klipy.com). 2. Set it on the server, then restart: ```bash # Preferred — keeps the credential out of config.yaml OWNCORD_GIF_API_KEY=your_key_here ``` Or in `config.yaml`: ```yaml gif: api_key: "your_key_here" ``` The key stays server-side; clients only ever call `/api/v1/gif/*` on their own server. Until one is set, the client's GIF button is disabled with "GIFs are not enabled on this server" — nothing else is affected. ## Next Steps - [Server Configuration](server-configuration.md) - [Deployment Guide](deployment.md) - [LiveKit Setup](livekit-setup.md)