2026-03-30 22:31:06 +02:00
|
|
|
# Quick Start Guide
|
|
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
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 |
|
2026-03-30 22:31:06 +02:00
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
- Go 1.25+ (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)
|
2026-04-03 14:37:46 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
## Option A: Prebuilt binaries (recommended)
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
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.
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
## Option B: Docker (Linux server)
|
2026-03-30 22:31:06 +02:00
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd Server
|
2026-04-03 23:18:06 +02:00
|
|
|
cp .env.example .env
|
|
|
|
|
cp livekit.yaml.example livekit.yaml
|
|
|
|
|
# Edit both files before start
|
2026-04-03 14:37:46 +02:00
|
|
|
docker compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
Then open `https://localhost:8443/admin` and create the Owner account.
|
2026-04-03 14:37:46 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
Full Docker details: [Deployment Guide](deployment.md#docker-linux).
|
|
|
|
|
|
|
|
|
|
## Option C: Build from source
|
2026-04-03 14:37:46 +02:00
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Server (Windows)
|
2026-04-03 23:18:06 +02:00
|
|
|
cd Server
|
|
|
|
|
go build -o chatserver.exe -ldflags "-s -w -X main.version=1.0.0" .
|
2026-04-03 14:37:46 +02:00
|
|
|
|
|
|
|
|
# Server (Linux)
|
2026-04-03 23:18:06 +02:00
|
|
|
cd Server
|
|
|
|
|
CGO_ENABLED=0 go build -o chatserver -ldflags "-s -w -X main.version=1.0.0" .
|
2026-03-30 22:31:06 +02:00
|
|
|
|
|
|
|
|
# Client
|
2026-04-03 23:18:06 +02:00
|
|
|
cd Client/tauri-client
|
|
|
|
|
npm install
|
|
|
|
|
npm run tauri build
|
2026-03-30 22:31:06 +02:00
|
|
|
```
|
|
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
## What Happens on First Server Start
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
- `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.
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
## Client Connection Notes
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
- 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.
|
2026-07-19 10:50:10 +00:00
|
|
|
- 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.
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
## If Remote Users Cannot Connect
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
1. Use [Tailscale](tailscale.md) for the simplest remote setup.
|
|
|
|
|
2. Or configure [Port Forwarding](port-forwarding.md).
|
2026-03-30 22:31:06 +02:00
|
|
|
|
2026-07-20 16:21:26 +02:00
|
|
|
## 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.
|
|
|
|
|
|
2026-03-30 22:31:06 +02:00
|
|
|
## Next Steps
|
|
|
|
|
|
2026-04-03 23:18:06 +02:00
|
|
|
- [Server Configuration](server-configuration.md)
|
|
|
|
|
- [Deployment Guide](deployment.md)
|
|
|
|
|
- [LiveKit Setup](livekit-setup.md)
|