Commit Graph
11 Commits
Author SHA1 Message Date
Sluijsens 743c173257 Names su - specifically as a confirmed cause, not just sudo -u
Traced live on the actual Pi: su - gitea-workflow left XDG_RUNTIME_DIR
unset even with the user manager already running and the bus socket
already there. None of su/sudo -i/sudo -u reliably go through
pam_systemd on Debian - only a real SSH login or sshd itself does,
which is what the deploy workflow already uses.
2026-07-29 13:15:11 +02:00
Sluijsens 6882eda03f Adds systemd --user bus-connection troubleshooting
Enabling lingering doesn't start the user manager retroactively, and
sudo -u often drops XDG_RUNTIME_DIR - both produce the same "Failed
to connect to bus" error when setting this up by hand.
2026-07-29 12:56:01 +02:00
Sluijsens 33d18ebbf8 Switches the database from SQL Server to MariaDB
The target Pi only has MariaDB, and SQL Server has no ARM64 build at
all - not a config problem, a real gap discovered during deployment
setup. Swapped the EF Core provider, regenerated every migration,
updated connection strings and the backup script everywhere they
appear.

Took two tries to land on a provider that actually works: Pomelo
builds fine against this project's EF Core 10 packages but fails at
runtime (it's compiled against 9's internal API surface, which moved
in 10 wherever Identity/DataProtection force the newer packages).
Oracle's official provider builds and migrates fine but has a real
MariaDB bug in its own migration-lock code, reproduced against a live
database. Kept Oracle's provider and worked around just that one
broken method - everything else it does is correct - rather than
give up more of the stack to chase a workaround.

Verified against a real local MariaDB end to end: all three
migrations applied, both hosts start clean, full suite still green.
2026-07-29 11:59:09 +02:00
Sluijsens 579e0ceaac Fixes a wrong placeholder and explains the optional env fields
AllowedConnectOrigins had a sentry-ingest-origin placeholder that
was simply incorrect - the Sentry tunnel exists precisely so that
exception is never needed. Both SecurityHeaders fields are Umami-only
now, with inline comments on when to set them versus leave them out,
and a note that MasterModule__MasterUrl degrades to a warning rather
than a startup failure when unset.
2026-07-28 23:17:52 +02:00
Sluijsens 97f18d00e5 Names the deployed instance slpsoftware, not the software itself
SlpModularCms is the product; slpsoftware.nl is the customer running
it - the first one, and a fine stand-in for what a real deployment
looks like. Renamed the directories, systemd units, and backup paths
accordingly. Left the backup script's own filename alone since the
already-committed deploy-scp.yaml calls it by that exact name.
2026-07-28 22:16:04 +02:00
Sluijsens 843253888e Nests environments under one slpmodularcms folder instead of siblings
Applies to both the app's own release tree and the website upload
path - slpmodularcms/test and slpmodularcms/production side by side
under one parent, not two separately-named directories. Service unit
names stay hyphenated; those aren't folders.
2026-07-28 21:43:37 +02:00
Sluijsens 25a3de0f1f Stops mixing gitea-workflow with the generic deploy-user placeholder
Same account, one name throughout instead of switching partway in.
2026-07-28 20:08:44 +02:00
Sluijsens 366e912e73 Renames the example deploy account to gitea-workflow
pi-deploy restated the obvious (it's on the Pi) without saying what
the account is actually for.
2026-07-28 19:51:10 +02:00
Sluijsens 960760c24e Makes the deploy account generic instead of per-project
No reason to mint a new system account for every project on the
same Pi - one shared, host-wide account works, namespaced by
directory per project underneath it.
2026-07-28 19:46:58 +02:00
Sluijsens 2f243f23c3 Fixes the account model deploy setup got wrong
webadmin turned out to be FTP-only and belongs to whoever uploads
customer websites, not to this pipeline. Switched to a separate
deploy account with its own home-directory paths, well away from
where the other sites live, and made the persistent website symlink
cross into webadmin's territory instead of the other way around.
2026-07-28 19:41:34 +02:00
Sluijsens cf80f827ae Deployment setup - the parts the workflow deliberately left out
Host setup checklist, real domains and ports, the database backup
script the deploy workflow only ever invokes, and a rollback plan.
Also drafted the FTPS switch procedure for whenever production moves
off the Pi, with a note that shared hosting is likely IIS-based -
that's a bigger change than swapping the transport.
2026-07-28 19:07:26 +02:00