mirror of
https://github.com/J3vb/OwnCord.git
synced 2026-09-03 03:50:00 +03:00
Client: - Replace Win32 Credential Manager with cross-platform keyring crate (Windows Credential Manager / Linux Secret Service / macOS Keychain) - Add Linux PTT support via device_query crate with VK-code-compatible mapping; thread-local DeviceState avoids repeated /dev/input/ opens - Add AppImage + deb bundle targets to tauri.conf.json with Linux metadata and deb runtime dependencies Cargo.toml: - Add keyring = "3" (all platforms) - Add device_query = "2" (Linux only, cfg guard) - Remove Win32_Security_Credentials feature (no longer needed) CI/CD: - Add ubuntu-22.04 and ubuntu-22.04-arm to tauri-build matrix - Fix Linux deps step condition: startsWith(matrix.os, 'ubuntu') - Add server Docker build verification job (build-only, no push) - Add release-client-linux (x86_64) and release-client-linux-arm64 jobs producing AppImage + deb artifacts - Add release-server-docker job pushing to ghcr.io on version tags - Update publish job to include all Linux and ARM64 artifacts Server: - Add multi-stage Dockerfile (golang:1.25-bookworm → distroless/static) - Non-root user (uid 65532), /app/data volume, port 8443 exposed - Add .dockerignore excluding binaries, data, and local config
38 lines
1.2 KiB
Docker
38 lines
1.2 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# ─── Build stage ────────────────────────────────────────────────────────────
|
|
FROM golang:1.25-bookworm AS builder
|
|
|
|
ARG VERSION=dev
|
|
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
-o /chatserver \
|
|
-ldflags "-s -w -X main.version=${VERSION}" \
|
|
.
|
|
|
|
# ─── Final stage ─────────────────────────────────────────────────────────────
|
|
# gcr.io/distroless/static-debian12: no shell, includes CA certs (needed for
|
|
# TLS/ACME) and timezone data. Attack surface is minimal.
|
|
FROM gcr.io/distroless/static-debian12
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /chatserver /chatserver
|
|
|
|
# /app/data is the default data_dir (SQLite DB + uploads).
|
|
# Mount a named volume here to persist data across container restarts.
|
|
VOLUME ["/app/data"]
|
|
|
|
# Server listens on this port by default (configurable via config.yaml).
|
|
EXPOSE 8443
|
|
|
|
# Run as non-root (distroless provides uid 65532 = "nonroot").
|
|
USER 65532:65532
|
|
|
|
ENTRYPOINT ["/chatserver"]
|