Home
Softono
Nosdesk

Nosdesk

Open source Rust
31
Stars
0
Forks
0
Issues
1
Watchers
1 week
Last Commit

About Nosdesk

A modern helpdesk built for teams who value speed, simplicity, and extensibility.

Platforms

Web Self-hosted

Languages

Rust

Nosdesk

A modern helpdesk built for teams who value speed and simplicity

Website · Documentation · Report a Bug


[!CAUTION] Nosdesk is under active development and not yet production-ready. Expect breaking changes as the project evolves. Use at your own risk.

What is Nosdesk?

Nosdesk is an open source helpdesk built for frictionless collaboration. Every part of the system, from tickets and projects to users, devices, and documentation, is designed to let teams work together without getting in the way.

Features

  • Tickets with real-time collaborative editing, voice notes, and file attachments
  • Projects with Kanban boards and progress tracking
  • Documentation built on real experience, seamlessly incorporating ticket notes into a readily accessible knowledge base
  • Users and Devices linked to relevant tickets, with Microsoft Intune sync
  • Authentication via local accounts with MFA, Microsoft Entra ID, or any OIDC provider
  • Theming with dark mode and custom branding

Quick Start

You'll need Docker and Docker Compose installed.

# Clone the repository
git clone https://github.com/Nosdesk/Nosdesk.git
cd Nosdesk

# Create your environment file
cp docker.env.example docker.env

Open docker.env and set the required values:

# Generate these with: openssl rand -base64 32
JWT_SECRET=your-generated-secret

# At-rest encryption KEK. Generate with: openssl rand -hex 32
# Versioned for zero-downtime rotation; see docs for MFA_KEK_VERSION.
MFA_KEK_V1=your-generated-key

# Change these from the defaults
POSTGRES_PASSWORD=choose-a-strong-password
REDIS_PASSWORD=choose-a-strong-password

Start the application:

docker compose up -d --build

Open http://localhost:8080 in your browser. On first launch, you'll be guided through creating your admin account.

Technology

Component Stack
Backend Rust, Actix-web, PostgreSQL, Redis
Frontend Vue.js 3, TypeScript, Tailwind CSS
Real-time WebSockets, Yjs CRDT, ProseMirror

Development

# Start with hot reloading (binds to 127.0.0.1 only)
docker compose -f compose.yaml -f compose.dev.yaml up -d --build

# View logs
docker compose -f compose.yaml -f compose.dev.yaml logs -f

# Run database migrations
docker compose -f compose.yaml -f compose.dev.yaml exec backend diesel migration run

By default the dev backend is reachable only from localhost to avoid LAN exposure. To test collaboration features from other devices, expose the backend on all interfaces:

BACKEND_BIND=0.0.0.0 docker compose -f compose.yaml -f compose.dev.yaml up -d --build

CLI tools

Nosdesk ships a nosdesk-cli binary for plugin authoring, signing, and a handful of break-glass admin operations against a running instance.

Install

If you have a local Rust toolchain:

cargo install --path backend --bin nosdesk-cli

This drops the binary at ~/.cargo/bin/nosdesk-cli. Re-run the same command after pulling Nosdesk updates; cargo's incremental build only rebuilds what changed.

The backend crate links against libpq (PostgreSQL client). Install it from your package manager before the first cargo install:

# macOS (libpq is keg-only on Homebrew)
brew install libpq
export LIBRARY_PATH="/opt/homebrew/opt/libpq/lib:$LIBRARY_PATH"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libpq/lib/pkgconfig:$PKG_CONFIG_PATH"

# Debian/Ubuntu
sudo apt install libpq-dev pkg-config

Add the macOS exports to your shell rc so future installs pick them up automatically.

If you don't want a local toolchain, the same binary ships in the production Docker image at /usr/local/bin/nosdesk-cli:

docker compose run --rm --no-deps --entrypoint nosdesk-cli backend --help

Subcommands

nosdesk-cli plugin gen-key  --out ~/.nosdesk/plugin-key
nosdesk-cli plugin sign     <plugin-dir> --key <sk> --out <zip> --source <tier>
nosdesk-cli plugin verify   <zip>
nosdesk-cli plugin install  <zip>

nosdesk-cli admin reset-password <email>
nosdesk-cli admin clear-mfa      <email>

plugin sign and friends are pure file-IO; they don't need a running Nosdesk. plugin install and the admin subcommands talk to the configured database directly, so they need DATABASE_URL set (the backend's docker.env already exports it for the Docker workflow).

Signing a plugin

cd ~/dev/<plugin-repo>
mkdir -p dist
nosdesk-cli plugin sign . \
  --key <path-to-your-signing-key> \
  --out dist/<plugin-name>-<version>.zip \
  --source <nosdesk-root|verified-publisher|community-publisher|local>
shasum -a 256 dist/<plugin-name>-<version>.zip

The --source value must match how your signing key is registered with the trust chain on the target Nosdesk instance(s).

License

Nosdesk is licensed under the Business Source License 1.1. See the LICENSE file for details.

Copyright (c) 2026 Nosdesk Pty Ltd.

Trademark

Nosdesk™ and the Nosdesk logo are trademarks of Nosdesk Pty Ltd. The license above grants no right to use these marks (see the trademark reservation in the LICENSE); you may not use the Nosdesk name or logo to brand a derivative or fork in a way that implies endorsement or affiliation.