S365 On-Premise Manual

S365 on-premise runs the whole system on the client's own computer, with no internet needed. A new client takes three moves: get the server's fingerprint, issue the licence in S365 Control, run the installer with it.

For S365 staff and the technician who installs at the shop.
At the shop1. FingerprintRun the installer once with no licence. It prints S365-XXXXX-….
S3652. LicenceS365 Control → On-premise → New licence, with that fingerprint. Download the .s365lic file.
At the shop3. InstallPut the file in the kit folder and run the installer again.

1. Getting the kit

There is no public download. S365 builds each kit on its own machine because the kit is signed with S365's key, then hands it over on a USB stick or through a private link.

KitFolderContains
Windowss365-onprem-windows-<version>\INSTALL.bat, install.ps1, the release, and vendor\ with Node, PostgreSQL 17, PostgREST and Deno
Linuxs365-onprem-linux-<version>/install.sh, the release, and vendor/ (with vendor/debs for a server with no internet)

Windows and Linux are installed differently, so there are always two kits, never one shared.

Building the kits (S365 only)

From the S365 project folder
node scripts/onprem/export-seed.mjs
node scripts/onprem/build-bundle.mjs --platform windows --vendor
node scripts/onprem/build-bundle.mjs --platform linux --vendor

The kits land in ~/s365-onprem/. --vendor puts every program inside the kit, so the shop installs with no internet. The same build makes the update file s365-onprem-<platform>-<version>.s365 that existing clients install with s365 update.

2. What you need

Pick the layout first. Single PC: the checkout and the server are the same Windows PC. Server + checkouts: one PC or server runs S365, and every checkout and office PC opens it in Chrome or Edge, with nothing installed on them.

MachineMinimum
Server for a supermarket (up to about 10 checkouts)4-core CPU (Core i5 / Ryzen 5, 2020 or newer), 16 GB RAM, 512 GB NVMe SSD, a second drive or USB disk for backup copies, wired gigabit Ethernet with a fixed address (DHCP reservation), a UPS. Windows 11 Pro, Windows Server 2022 or Ubuntu Server 24.04 LTS. BIOS: "Restore on AC power loss" = On.
Single PC (one checkout)4 cores, 8 GB RAM (16 GB better), 256 GB SSD, Windows 10/11 64-bit, a UPS.
Each checkout PC2–4 cores, 8 GB RAM, SSD, Windows 10/11 with Chrome or Edge, wired network where possible.
At each checkoutA USB barcode scanner (keyboard mode, Enter after the code), a network receipt printer (ESC/POS, port 9100) with the cash drawer on it.
A UPS is not optional: a power cut in the middle of a sale is the most common cause of damage.

3. The licence, start to finish

The licence is a signed file that names the client, the modules, the number of checkout stations and logins, the end date, and what happens after it. It is bound to one server's fingerprint.

  1. Get the fingerprint at the shop. Windows: double-click INSTALL.bat with no licence file in the kit folder. Linux: sudo ./install.sh --fingerprint. It prints S365-XXXXX-XXXXX-XXXXX-XXXXX. Send it to S365.
  2. Issue the licence in S365 Control. Open S365 Control → On-premise → New licence. Fill in:
    • the cloud client, if they have one, or the business name;
    • the modules (Shop, Inventory, Accounting… — WhatsApp, AI and Omega never run offline);
    • checkout stations, logins and the maintenance end date;
    • the server fingerprint from step 1.
    Under After the end date, check-in, notes you can change the grace days, what keeps working after expiry, and whether the server must check in.
  3. Download. Issue & download signs the file on S365's licence server and saves OP-2026-XXXXXXXX.s365lic to your downloads. The licence then appears in the On-premise list.
  4. Install with it. Put the file in the kit folder and run the installer again (sections 4 and 5). On a server that is already installed, use s365 licence install <file> instead.
"Any machine" issues a licence not bound to a fingerprint. Use it only for a test or a demo, then issue it again with the real fingerprint.

4. Installing on Windows

Windows 10/11 Pro or Windows Server 2019 and later, 64-bit. The program goes to C:\S365, the data to C:\S365\data.

  1. Copy the kit folder to the server (for example to the desktop).
  2. Get the fingerprint: double-click INSTALL.bat. It asks for administrator rights, finds no licence and prints the PC's fingerprint. Send it to S365 (section 3).
  3. Put the licence file you get back (*.s365lic) in the kit folder, next to INSTALL.bat.
  4. Run INSTALL.bat again. Answer 1 for this PC only, or 2 for a server for the shop network. It asks once for the owner's password.
  5. Open the app at the address it prints at the end (http://localhost, or http://<server name> on the network). Sign in as owner.

The installer sets up PostgreSQL as the Windows service S365 Database (this machine only), the scheduled task S365 (runs as SYSTEM at boot and restarts itself on failure), the firewall rule for the private network (network layout only), and the s365 command. Running it again on a finished install changes nothing.

All the options, from an administrator PowerShell

In the kit folder
.\install.ps1 -Licence .\shop.s365lic -Layout Lan -Port 80 -Owner owner `
  -Currency USD -Currency2 LBP -CountryCode 961 -Vat 11 -DayRoll 5 -TimeZone Asia/Beirut
OptionMeaning
-Layout Single | LanThis PC only, or a server for the shop network
-Port 80The app's port
-Owner ownerThe first login's name
-Currency / -Currency2Main and second currency (USD, LBP…)
-CountryCode 961Phone country code
-Vat 11 | offVAT rate, or no VAT
-DayRoll 5The hour the business day changes (05:00)
-TimeZone Asia/BeirutThe business's time zone
-BusinessName "…"The name on receipts
-Chart LBLebanese chart of accounts instead of the general one
-FingerprintOnly print this PC's fingerprint

5. Installing on Ubuntu Linux

Ubuntu Server 24.04 LTS. The program goes to /opt/s365, the data to /var/lib/s365; it runs as the system user s365 under the systemd service s365.

  1. Copy and unpack the kit on the server, then cd into it.
  2. Get the fingerprint and send it to S365 (section 3):
    sudo ./install.sh --fingerprint
  3. Install with the licence you get back:
    sudo ./install.sh --licence shop.s365lic --layout lan --currency USD --currency2 LBP \
         --country-code 961 --vat 11 --day-roll 5 --timezone Asia/Beirut
  4. Open the app at http://<server> from any checkout or office PC, and sign in as owner.

The options are the PowerShell ones in lower case with dashes: --layout single|lan, --port, --owner, --stations, --currency, --currency2, --country-code, --vat, --day-roll, --business-name, --timezone, --chart LB.

PostgreSQL 17 comes from the PostgreSQL apt repository, or from the .deb files in vendor/debs on a server without internet. It listens on this machine only.

6. After installing: first steps in the app

The installer already made the database, the owner login, the chart of accounts, one warehouse "Shop", the checkout stations (as many as the licence allows), the payment methods (cash in each currency, card) and the cash boxes. The owner then:

  1. Starts the stock: Warehouse settings → Start (/inventory/settings).
  2. Types today's exchange rate (second currency only): Accounting → Settings → Exchange rate. Nothing fetches it offline, so it is typed in every day it changes.
  3. Adds the users: one login per person, a checkout account per cashier.
  4. Binds each checkout PC: open the address, sign in, Sell. The first time it asks to bind the PC to a checkout station; a manager does it once.
  5. Connects the printers: run the print bridge on the PC the printer is on, pointed at http://<server>/functions/v1/print-agent with the key in <data>/secrets/print-agent-key.

7. Managing a licence later

Every licence is in S365 Control → On-premise, with its status (active, ending within 30 days, in grace, expired, revoked), its last check-in, the version it runs, and stations and users in use against what was bought. The Overview page shows the same in one tile and lists problems under "Needs attention".

To…Do thisReaches the server
Renew / move the end dateOpen the licence → End date → SaveAt its next check-in (every 6 hours with internet)
Stop a stolen or unpaid licenceReason → Revoke (the server goes read only). Undo revoke reverses it.At its next check-in
Force degraded or read onlyForced mode → degraded / read onlyAt its next check-in
A server with no internetIssue again (same licence id), copy the file over, s365 licence install <file>When the file is installed
Move to a new servers365 backup on the old one, issue again with the new fingerprint, install, s365 restore <file>When installed

After the end date

  • 14 days of grace: everything works, with a "renew" notice.
  • Then degraded: selling and taking payment, printing the receipt and viewing everything keep working, so the shop never stops. Purchasing and receiving, items, prices, stock counts, users and permissions, settings, exports and backup settings stop, with a red "licence expired — renew" notice. Nightly backups never stop.
  • Updates released after the end date are refused.

A licence can set another grace, another list of what keeps working, updates_stop (only updates stop) or read_only. No internet never degrades anything: a server that cannot check in keeps running on its licence file and tries again later. A licence can be offline (never checks in) or strict (must check in every N days).

Warnings in the list — another machine, clock set back, too many stations or users — mean the licence may have been copied or tampered with. Look into them before renewing.

8. Every day: the s365 command

On the server, in an administrator command window (Windows) or a terminal (Linux).

CommandWhat it does
s365 statusService, database, licence, stations, last backup
s365 backupA backup now (the nightly one is automatic)
s365 backupsThe backups kept
s365 restore <file>Puts a backup back; the data from before is kept aside until s365 drop-old
s365 update <file.s365>Installs an update: backup first, rolls itself back if anything fails
s365 licenceShows the installed licence and its status
s365 licence install <file>Installs a new or renewed licence file
s365 create-user <name> --role adminA login, from the server
s365 set-password <name>A forgotten password (signs the person out everywhere)
s365 backup-config --usb E:\S365-backupsA copy of every backup to a second drive or USB disk
s365 backup-config --rclone gdrive:S365A copy to Google Drive (rclone)
s365 start / stop / restartThe service
s365 fingerprintThe server's id for the licence

Backups

Every night at 03:30 (change it with s365 backup-config --time 02:00) the whole database and every stored file go into one file, s365-backup-<date>-<time>.s365bak, in <data>\backups; 14 are kept. With a USB or second drive set, a copy goes there too. For Google Drive: install rclone, run rclone config once to connect the shop's Google account (remote name e.g. gdrive), then s365 backup-config --rclone gdrive:S365.

Updates

S365 sends an update file s365-onprem-<platform>-<version>.s365. On the server: s365 update <file>. It checks S365's signature and every file, takes a backup, applies the database changes, switches to the new version and checks it started. If anything fails it puts back the previous version and the backup by itself.

9. Maintenance checklist

WhenWhat
DailyThe exchange rate (second currency only)
Weeklys365 status: last backup "ok", copies "copied". Swap the USB disk if two are rotated.
MonthlyRestore last night's backup on a spare PC or test install to prove it works; check free disk space; Windows updates outside opening hours (the service restarts by itself after a reboot)
YearlyRenew maintenance before the end date
Every 3–4 yearsReplace the UPS battery (test it regularly)

10. What is not available offline

WhatsApp (Lama, campaigns, reminders), the AI assistant, Meta ads and Instagram, the Omega POS link, the group of companies, delivery apps and cloud power meters. Their pages say "not available offline". Watching the shop live from outside needs a VPN to the shop's network, which is not part of this edition.

Not done yet: HTTPS on the shop network (the shop network uses plain HTTP), automatic exchange rates.