Initial backup of root workspace files
Glue files not covered by subproject repos: top-level docs, logo, keysat-design-system, and crosscheck tests. Subproject folders are gitignored (each has its own Gitea remote).
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# Reset test data on a master Keysat (StartOS 0.4.0.x)
|
||||
|
||||
Pre-launch utility. Wipes every business row (products, policies, codes,
|
||||
licenses, invoices, redemptions, machines) so you can iterate cleanly.
|
||||
**Don't run this on a Keysat with real customers** — it will delete their
|
||||
licenses too. Only use on test installs before you've sold anything.
|
||||
|
||||
## What's preserved
|
||||
|
||||
- Issuer keypair (server_keys table)
|
||||
- Webhook subscribers (webhook_endpoints)
|
||||
- BTCPay connection config and tokens (settings — all `btcpay_*` keys)
|
||||
- Web UI password hash (settings)
|
||||
- Operator name (settings)
|
||||
- Audit log (audit_log)
|
||||
|
||||
The audit log is preserved on purpose — you'll see the wipe transaction
|
||||
recorded in the daemon's logs (not in the audit_log itself, since the
|
||||
wipe doesn't go through the audit path).
|
||||
|
||||
## How to run
|
||||
|
||||
Run these from any machine that has `start-cli` configured (typically
|
||||
the same workstation you used to install the .s9pk):
|
||||
|
||||
```sh
|
||||
# 1) Confirm Keysat is installed and find its package id (should be `keysat`).
|
||||
start-cli package list
|
||||
|
||||
# 2) Stop the daemon so we don't fight in-flight writes.
|
||||
start-cli package stop keysat
|
||||
|
||||
# 3) Drop into a shell inside the LXC subcontainer.
|
||||
start-cli package attach keysat
|
||||
```
|
||||
|
||||
You're now inside the Keysat container. `sqlite3` is bundled in the
|
||||
runtime image as of v0.1.0:33, so you can run the wipe directly:
|
||||
|
||||
```sh
|
||||
# Inside the container:
|
||||
sqlite3 /data/keysat.db <<'SQL'
|
||||
BEGIN;
|
||||
DELETE FROM machines;
|
||||
DELETE FROM discount_redemptions;
|
||||
DELETE FROM licenses;
|
||||
DELETE FROM invoices;
|
||||
DELETE FROM discount_codes;
|
||||
DELETE FROM policies;
|
||||
DELETE FROM products;
|
||||
COMMIT;
|
||||
SQL
|
||||
|
||||
# Quick sanity check — every row count should be 0.
|
||||
sqlite3 /data/keysat.db "SELECT
|
||||
(SELECT COUNT(*) FROM products) || ' products, ' ||
|
||||
(SELECT COUNT(*) FROM policies) || ' policies, ' ||
|
||||
(SELECT COUNT(*) FROM licenses) || ' licenses, ' ||
|
||||
(SELECT COUNT(*) FROM invoices) || ' invoices, ' ||
|
||||
(SELECT COUNT(*) FROM discount_codes) || ' codes';"
|
||||
|
||||
# Leave the container shell.
|
||||
exit
|
||||
```
|
||||
|
||||
Back on your host:
|
||||
|
||||
```sh
|
||||
# 4) Restart the daemon.
|
||||
start-cli package start keysat
|
||||
```
|
||||
|
||||
After the restart: visit `/admin/`, sign in, and you'll see an empty
|
||||
products list. Recreate everything fresh.
|
||||
|
||||
## On a pre-:33 daemon
|
||||
|
||||
The runtime image before v0.1.0:33 didn't ship with `sqlite3`. If you're
|
||||
on an older build and need to wipe before upgrading: install sqlite3
|
||||
inside the container before the wipe step:
|
||||
|
||||
```sh
|
||||
# Only needed on pre-:33 daemons.
|
||||
apt-get update && apt-get install -y sqlite3
|
||||
```
|
||||
|
||||
Then run the same SQL block.
|
||||
|
||||
## Even simpler: the in-app Delete buttons
|
||||
|
||||
As of v0.1.0:33, Products and Policies have Delete buttons in the admin
|
||||
UI (with refuse-if-referenced safety). For products/policies that have
|
||||
**no licenses tied to them**, click the buttons one by one — no SQL
|
||||
needed. Once a policy has issued any licenses (active OR revoked), the
|
||||
UI delete is refused; that's when you drop to the SQL above.
|
||||
Reference in New Issue
Block a user