For @planner, this script can be placed in the "Global Footer" widget area (or any other widget area present on all pages). It overrides the ajaxify method and returns anchors to their default operation, which is a regular page load.
Get the script hereTurn maintenance mode on/off from script.
-
I read this topic: https://community.nodebb.org/topic/12275/scripted-maintenance-mode/4
And there are three ways of turning maintainence mode:
1stuse myDatabase db.objects.update({ _key: "config" }, { $set: { "maintenanceMode": 1 } });
Then restart nodebb.
2nd
// start-maintenance.js db.objects.update({ _key: "config" }, { $set: { "maintenanceMode": 1 } }) db.objects.update({ _key: "config" }, { $set: { "maintenanceModeMessage": "Backup in progress! We are back online in a few minutes!" } }) mongo -u user -p pass mongo-hostname/nodebb-db-name start-maintenance.js
1st and 2nd way didn't set maintenance mode on for me.
3rd is to use api, but i don't know how to use it, could someone point me direction (using bash/python).
I just realized that maintenance mode returns 503 page, so:
4th way would be returning 503 page from nginx directly, this is the easiest one. But it requires to write some custom error page.
-
I created read only user in mongodb, replaced user with read only user in config.json. Then added in nginx location block:
sub_filter </head> '</head><h2 style="text-align:center">Forum in readonly mode.</h2>';
So now users can browse forum but can't change it (database). And users can read maintenance warning.
But still i want to know how to set maintenance by api 3rd step, so if soemone have time and knowledge please post it here.
-
Nope just checked, user need to have write permissions to the database otherwise nodebb throws "Internal Error".
-
Your first option should work setting maintenanceMode to 1 and restarting nodebb should show the maintenance page to regular users.
-
@baris i will try again later, but when i was testing before nothing happened.
-
I also tried db.fsyncLock() / db.fsyncUnlock() on mongo db, to force db to read-only, nodebb show no error but was waiting (loading page).
-
Weird,
> use nodebb switched to db nodebb > db.objects.update({ _key: "config" }, { $set: { "maintenanceMode": 1 } }); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
NodeBB restart.
It's working, checked APC and the switch is turned on.
I think i was loged in as administrator before, but i was checking maintenance page in APC and switch was turned off.