mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
Bumps the client version across every pin verify-versions enforces (package.json, tauri.conf.json, Cargo.toml) plus the two lockfiles that carry it, and the user-facing build examples in README.md, docs/deployment.md, docs/quick-start.md, docs/api.md and the issue-form placeholders. Deliberately NOT bumped: the v1.2.0-alpha.3 references in ci.yml, release.yml and docker-smoke.sh, which record the release that published from a red commit and are the reason the gate-evidence job exists; and the string in scripts/check-doc-counts.mjs, which is a selftest fixture asserting a version number is not read as a ledger claim. Rewriting either would falsify a record. CHANGELOG's Unreleased section becomes v1.2.0-alpha.4. Verified rather than assumed: - npm ci exits 0, so package-lock.json still matches package.json. - cargo metadata --locked exits 0, so Cargo.lock needs no regeneration. - The verify-versions comparison was run locally against tag v1.2.0-alpha.4: all three sources agree, so the tag will not be rejected. - npm run check passes end to end, exit 0. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
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)
- Download from GitHub Releases.
- Start the server:
- Windows:
chatserver.exe - Linux:
./chatserver
- Windows:
- Open
https://localhost:8443/admin. - 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.yamlautomatically — no manual editing needed. - Create invite codes and share them.
Option B: Docker (Linux server)
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.
Option C: Build from source
# 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.yamlis 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://<server-ip>:8443. - The desktop client uses TOFU certificate pinning:
- First connection prompts for trust.
- Future connections require the same cert fingerprint.
- Linux/Wayland: the client automatically sets
WEBKIT_DISABLE_DMABUF_RENDERER=1on Wayland sessions to work around WebKitGTK rendering crashes. Export the variable yourself (any value) before launching to override this.
If Remote Users Cannot Connect
- Use Tailscale for the simplest remote setup.
- Or configure Port Forwarding.
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.
- Request a key at partner.klipy.com.
- Set it on the server, then restart:
# Preferred — keeps the credential out of config.yaml
OWNCORD_GIF_API_KEY=your_key_here
Or in config.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.