docs: what a site needs that no page answered
Four gaps a second site hits and cannot resolve by reading. **Restoring on Windows** was one sentence - "the standard mysql < dump.sql" - with no ordering. Restoring a database under running code that expects a different schema turns a restore into a second incident, so the steps are now ordered and each says why. It also says what `.env` costs if it is lost, which is the part nobody discovers until they are already rebuilding: the dump does not contain it, and without the JWT secrets every issued token dies, so every collector and every GE-Enforce client on the fleet needs a new key. **Rolling back** had a paragraph saying downgrades are refused and a backup is the way back, but not the procedure. Rollback is restoring a matched pair, code and the schema it expects, in that order - and the doc now separates it from the case it gets confused with: a migration that failed mid-update has already been rolled back by the installer, and fixing forward is the only move. **Sizing, acquisition and support** were absent from the install guide entirely. A reader could not learn how big a server to ask for, where the .exe comes from, or where to raise a problem. The sizing is small and the reasons are stated, so a site does not over-provision a VM for a load that is a few dozen users. **Credentials** were described in three documents from three ends, so three answers existed for where a key lives. One table, both ends - server and PC - plus the two rules behind it: what a shop-floor PC holds is scoped to exactly what it does, and a credential is delivered rather than typed, because a value entered per machine is a value that is wrong on some machine.
This commit is contained in:
@@ -27,6 +27,47 @@ Installing IIS, if it is missing (this needs no internet):
|
||||
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
|
||||
```
|
||||
|
||||
### Sizing the server
|
||||
|
||||
Small, and the reasons are worth stating so a site does not over-provision.
|
||||
ShopDB serves one plant's own staff, not the internet: a busy instance handles a
|
||||
few dozen concurrent users and a fleet reporting a few hundred PCs a day, and
|
||||
both are trivial loads. What actually consumes resources is MySQL and the
|
||||
uploads.
|
||||
|
||||
| | Minimum | Comfortable | Why |
|
||||
|---|---|---|---|
|
||||
| Disk | 5 GB free (the installer refuses below this) | 40 GB | The application and Python are about 1 GB. The rest is MySQL, config-backup revisions, and uploads - branding, floor-plan blueprints, application installers and warranty proofs, which are the only ones that grow without bound. |
|
||||
| RAM | 4 GB | 8 GB | MySQL wants most of it. The application itself is a Python worker per request. |
|
||||
| CPU | 2 cores | 4 cores | Reports and the map are the heaviest reads and are cached. |
|
||||
|
||||
A VM is entirely normal. The one thing worth insisting on is that the database
|
||||
directory and the backup directory are not on the same disk as anything you
|
||||
would be sad to fill up.
|
||||
|
||||
### Getting the installer
|
||||
|
||||
The `.exe` is a release asset on the GitHub repository, not a file in it - it is
|
||||
around 240 MB, which is well past what a repository accepts and well inside what
|
||||
a release asset does. Take it from the release page for the version you want,
|
||||
and keep it: you need the previous one to roll a release back, and you cannot
|
||||
download it from your own server.
|
||||
|
||||
Every build is stamped with its version and ships a CycloneDX SBOM onto the
|
||||
server, so `shopdb-admin.ps1 verify -Path <name>` answers "does this server
|
||||
carry component X" without a network call - which is the question that arrives
|
||||
on a Friday afternoon after a CVE announcement.
|
||||
|
||||
### If you get stuck
|
||||
|
||||
Raise an issue on the repository. Include the output of
|
||||
`shopdb-admin.ps1 check -Json`, which reports version, IIS and pool state,
|
||||
database reachability, Python version and installed plugins, and contains no
|
||||
secrets - it is the single most useful thing you can attach, and it is designed
|
||||
to be pasted.
|
||||
|
||||
---
|
||||
|
||||
The installer **checks all of this before it changes anything**, and it will not
|
||||
let you continue until the check passes. You do not have to get it right first
|
||||
time.
|
||||
|
||||
Reference in New Issue
Block a user