Index: src/routes/admin-settings.js
===================================================================
--- src/routes/admin-settings.js	(revision 1b4d5dd5a81a498bc61db716ba5ba3d2bbdd64b2)
+++ src/routes/admin-settings.js	(revision 029f047c2a08e4991412f75369d040bee40c9c49)
@@ -22,5 +22,5 @@
 import { requireGod } from '../middleware/auth.js';
 import { getTenancy, setTenancy, getSetting, setSetting } from '../services/SettingsService.js';
-import { entitlementStatus } from '../services/PatreonService.js';
+import { entitlementStatus, premiumUnlocked } from '../services/PatreonService.js';
 
 const router = express.Router();
@@ -90,4 +90,10 @@
 
     if (typeof req.body.tenancy !== 'undefined') {
+      // Hub-modus is een premium-feature: alleen naar hub schakelen als premium
+      // ontgrendeld is (premium-laag uit = vrij; aan = Patreon vereist). Al-hub
+      // blijven mag altijd, zodat een instance nooit vastloopt.
+      if (req.body.tenancy === 'hub' && !premiumUnlocked() && getTenancy() !== 'hub') {
+        return res.redirect('/admin/settings?error=' + encodeURIComponent('Hub-modus is een premium-functie — koppel Patreon in Beheer → Instellingen.'));
+      }
       setTenancy(req.body.tenancy); // valideert naar solo | hub | circle
     }
