Files
OwnCord/docs/quick-start.md
T
J3vbandClaude Fable 5 e392939c52 chore(deps): batch-apply all open dependabot bumps (2026-07-23)
Applies all 22 open dependabot PRs in one pass (CI on those PRs never
ran — Actions minutes exhausted). Verified locally via the ci-check
mirror: builds (all tag variants), vet, golangci-lint, sqlc/protocol
verify, vitest 3304/3304, npm audit clean, cargo check.

Server (Go): wazero 1.12.0, x/mod 0.38.0, chi 5.3.1, otel 1.44.0,
otel/trace 1.44.0, otel prometheus exporter 0.66.0, modernc sqlite
1.54.0, livekit/protocol 1.50.2, koanf/v2 2.3.5, x/sync 0.22.0.
Also x/text 0.39.0 (fixes GO-2026-5970, flagged by govulncheck).
livekit/protocol requires Go 1.26 → go.mod, CI pins, and docs bumped.

Client (npm, lockfile-only): playwright/test 1.61.1, oxlint 1.75.0,
eslint 9.39.5, knip 6.29.0, plugin-http 2.5.9, plugin-fs 2.5.1,
plugin-opener 2.5.4, tauri-apps/api 2.11.1 + npm audit fix
(brace-expansion, fast-uri transitive highs).

Client (cargo, lockfile-only): futures-util 0.3.33, env_logger
0.11.11, serde 1.0.229, tauri-typegen 0.5.2.

Closes #1204 #1205 #1206 #1207 #1209 #1210 #1211 #1212 #1213 #1214
Closes #1215 #1216 #1219 #1220 #1221 #1222 #1223 #1225 #1226 #1227 #1228 #1224

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:23:31 +02:00

119 lines
3.2 KiB
Markdown

# 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 20+ 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. Create the Owner account.
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 create the Owner account.
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.0.0" .
# Server (Linux)
cd Server
CGO_ENABLED=0 go build -o chatserver -ldflags "-s -w -X main.version=1.0.0" .
# Client
cd Client/tauri-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://<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=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)