A protected site, and your mind free for your trade
Each their own role
Editor, administrator, reviewer: each person sees and does what their role allows.
Two-factor authentication
A 6-digit code on your phone, on top of the password. A trusted device stays signed in for 30 days.
A copy every night
Database and files backed up every night, kept 14 days on the server, plus an encrypted copy off the server.
Your site stays up
If an upload fails, the visible site does not change. The files it replaces are copied first.
How it works
A day’s protections, from login to backup
-
You log in
A password of at least 12 characters, plus a one-time code if you switch it on.
TOTP RFC 6238 · QR code -
The portal opens for you
One sign-in, then a signed token opens the admin of each of your sites.
Signed Ed25519 tokens -
You make changes
Every action is checked against your rights; sensitive actions go to the log.
Role-based rights · audit log · CSRF -
Every night, the Hub backs up
Database and files, then an encrypted copy is copied off the server.
- Database
mysqldump - Site files
rsync snapshots - Off-server copy
gpg encryption
- Database
-
I keep watch
Disk, memory, services and errors checked every 15 minutes, with an e-mail alert.
Status script · fail2ban · alerts
A Hub update only goes into production after a check run has passed on a test machine, for the same code. This test machine can never publish your site.
Technologies
Under the hood, piece by piece
Open, checkable standards, applied to every site. Each component, and what it does for you.
-
Login
TOTP (RFC 6238)
Adds a 6-digit code from your phone to the password.
-
Portal
Signed Ed25519 tokens
One sign-in opens your sites, with no need to retype the password.
-
Secrets
libsodium
Encrypts your services’ keys in the database, such as those for online payment.
-
Isolation
One database, one account, one PHP pool per site
An incident on one site does not reach the others.
-
Backup
Public-key gpg encryption
Copy encrypted by public key: the server itself cannot read it back.
-
Content
Symfony HtmlSanitizer
Cleans the text pasted into your pages to block malicious code.
-
Forms
Cloudflare Turnstile
Stops bots without puzzles for your visitors.
-
Transport
HTTPS Let’s Encrypt, nginx HTTP/2
Encrypts the exchanges between your site and your visitors.
-
Checks
Journey probe (Node.js)
Replays the key journeys on a test machine before every Hub update.
This module uses no AI: its security rests on checkable mechanisms. Lumineth Hub’s AI, Anthropic’s Claude models called through the Anthropic API, is used for the built-in help and SEO proposals. Phone numbers and e-mails are masked before any question is sent to the help, no personal data goes to the agents without your agreement, and every proposal is validated by a person.
Shared foundation · PHP 8.2 · Twig 3 · MySQL, one database per site · admin React 19 + TypeScript · nginx HTTP/2 · monitored servers · encrypted nightly backups, copied off the server
Your data under your control
Never on your site
Tests run on a separate machine, which cannot publish to production.
A removal always wins
A removed right always wins, and a disabled account has no rights left.
Changed, devices signed out
A new password signs out trusted devices. An invitation link lasts 7 days.
Who did what
Sensitive actions are logged; the sign-in history is kept for 90 days.
Files cleaned
Every image is re-encoded: metadata and booby-trapped files discarded, SVG refused.
My own access protected too
Two-factor authentication is required for my access to the portal, and my logins stay visible in your log.
Frequently asked questions
Where are my website’s backups kept?
Every night, the database and files are backed up on the server, kept for 14 days. An encrypted copy is then copied off the server, and the server itself cannot read it back. A super-user can also create and download a backup from the admin.
Who watches over the servers?
I do. Disk, memory, services and errors are checked every 15 minutes, with an e-mail alert, and repeated login attempts are blocked automatically.
Is two-factor authentication required?
It is offered to every person in “My account”: a QR code to scan, then a 6-digit code. For my own access to the portal, it is required.
What happens if a release fails?
Your visible site stays as it was. The Hub shows “Retry”, and the files it replaces are copied before every upload.
How do I remove a former collaborator’s access?
An administrator clicks “Disable” in “Users”. The person can no longer log in, and the reason is noted.
Are my forms protected against spam?
Yes: Cloudflare Turnstile, an invisible honeypot field, a signed token and a per-IP-address limit filter out bots before the request reaches you.
Let’s talk about your site’s security
Tell me where your site is hosted today and who has access to it. I will get back to you within 24 working hours.