ESC
Type to search…
v2026
This documentation is still being improved and may not fully reflect how the application works. Join the forum to ask questions and share feedback →
Docs Getting Started Installation

Installation

Only the Desktop and Server editions require installation. The Cloud edition needs no setup — sign up and log in.

System Requirements

Desktop Edition

Component Requirement
OS Windows 10 (64-bit) or later
RAM 4 GB
Storage 2 GB free space
Display 1280 × 720
Runtime None — .NET is bundled in the installer

Server Edition

Component Requirement
OS Windows Server 2019/2022, Windows 10/11, Ubuntu 22.04+, Debian 12, Rocky Linux 9
Architecture 64-bit (x64)
RAM 4 GB (8 GB recommended for 10+ concurrent users)
Storage 10 GB + data
Runtime None — the package is self-contained

Desktop Installation (Windows)

  1. Download BasisSetup-v<version>.exe from the GitHub Releases page.
  2. Run the installer — no administrator rights required. It installs per-user.
  3. Accept the license, choose whether to create a desktop shortcut, then click Install.
  4. Launch Basis Accounting from the Start menu or desktop shortcut.
  5. On first run, the setup wizard guides you through configuring your first company.

Windows SmartScreen warning: On first download, Windows may show "Windows protected your PC." Click More info → Run anyway if you have verified the file checksum. See Verify Download.


Server Installation — Windows

Step 1 — Download and extract

Download BasisServer-v<version>-win-x64.zip from the GitHub Releases page and extract to a permanent folder:

C:\Basis\

The folder should contain Basis.Web.exe and supporting files.

Step 2 — Configure

Rename the template file:

appsettings.Custom.json.template  →  appsettings.Custom.json

Edit appsettings.Custom.json:

{
  "Urls": "http://+:8080",
  "LicenseOptions": {
    "Edition": "Server",
    "Key": "YOUR-LICENSE-KEY-HERE"
  },
  "DatabaseOptions": {
    "BasePath": "C:\\BasisData"
  },
  "JwtSettings": {
    "SecretKey": "CHANGE-THIS-TO-A-STRONG-RANDOM-STRING-MIN-32-CHARS",
    "Issuer": "Basis",
    "Audience": "BasisUsers"
  }
}

Create the data directory:

New-Item -ItemType Directory -Force -Path "C:\BasisData\businesses"
New-Item -ItemType Directory -Force -Path "C:\BasisData\attachments"

Step 3 — Test manually

cd C:\Basis
.\Basis.Web.exe

Open http://localhost:8080 in a browser to confirm it starts. Stop with Ctrl+C.

Step 4 — Install as a Windows Service (production)

Run the following in an Administrator PowerShell:

sc create "BasisServer" `
  binPath= "C:\Basis\Basis.Web.exe" `
  DisplayName= "Basis Accounting Server" `
  start= auto

sc start "BasisServer"

Service management:

sc start   "BasisServer"
sc stop    "BasisServer"
sc delete  "BasisServer"   # stop first

Logs: Event Viewer → Windows Logs → Application → Source: BasisServer

Step 5 — Firewall (if accessed from other machines)

New-NetFirewallRule -DisplayName "Basis Server" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

Step 6 — Reverse proxy / HTTPS (optional)

Place IIS or nginx in front of Basis and proxy all traffic to http://localhost:8080. See the INSTALL.md file bundled in the Server package for a full IIS web.config example.


Server Installation — Linux (Ubuntu / Debian / Rocky)

Step 1 — Create a dedicated user

sudo useradd -r -s /bin/false basis

Step 2 — Extract the package

sudo mkdir -p /opt/basis
sudo unzip BasisServer-v<version>-linux-x64.zip -d /opt/basis
sudo chmod +x /opt/basis/Basis.Web
sudo chown -R basis:basis /opt/basis

Step 3 — Create the data directory

sudo mkdir -p /var/basis/data/businesses
sudo mkdir -p /var/basis/data/attachments
sudo chown -R basis:basis /var/basis

Step 4 — Configure

sudo cp /opt/basis/appsettings.Custom.json.template /opt/basis/appsettings.Custom.json
sudo nano /opt/basis/appsettings.Custom.json

Set DatabaseOptions.BasePath to /var/basis/data and replace JwtSettings.SecretKey with a strong random string. Restrict permissions on the config file:

sudo chown basis:basis /opt/basis/appsettings.Custom.json
sudo chmod 640 /opt/basis/appsettings.Custom.json

Step 5 — Install as a systemd service

sudo cp /opt/basis/basis.service /etc/systemd/system/basis.service
sudo systemctl daemon-reload
sudo systemctl enable basis
sudo systemctl start basis

Check status and logs:

sudo systemctl status basis
sudo journalctl -u basis -f

Step 6 — Firewall

# Ubuntu/Debian (ufw)
sudo ufw allow 8080/tcp

# Rocky/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload

See the INSTALL.md file bundled in the Server package for the full nginx configuration with SSL and Let's Encrypt.


Configuration Reference

Key fields in appsettings.Custom.json:

Field Description
Urls Port the app listens on. Default: http://+:8080.
DatabaseOptions.BasePath Folder where all business databases are stored. Must exist and be writable.
JwtSettings.SecretKey Signs login tokens. Use a random string of at least 32 characters. Never share this.
LicenseOptions.Key Your license key. Removes the update banner. The app runs normally without a key.

Updating

  • Desktop — Run the new installer over the existing installation. Your database is untouched.
  • Server (Windows) — Stop the service, replace all files in C:\Basis\ (keep appsettings.Custom.json), start the service.
  • Server (Linux) — Stop the service, extract the new package over /opt/basis/, start the service.

Data in DatabaseOptions.BasePath is never modified by an update.