nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
27.42k stars 4.07k forks source link

Plain maintenance mode page #5789

Open MorrisJobke opened 7 years ago

MorrisJobke commented 7 years ago

The maintenance mode page is currently in Nextcloud branding and doesn't respect the theming app or themes, because nothing of this is loaded during that. We should maybe update the maintenance page to a plain unbranded page that would not contain any Nextcloud branding, but a generic branding to not interfere with branded versions of Nextcloud.

Should we maybe simply load the content from a static HTML file instead to allow easy customisation even if nothing else is loaded?

@nextcloud/designers Do you have an idea for this?

cc @juliushaertl @rullzer

jancborchardt commented 7 years ago

Could we not also feed the stuff from the theming app into there? Even if it’s maintenance mode, the page should look nice. Otherwise people’s frustration about an unexpected error is amplified by the ugly look of the page.

(At the very least, the page should stay the same if not themed, and themed instances could deactivate the styles or so.)

MorrisJobke commented 7 years ago

The problem is that we don't know if it is themed because the database could have changed and we try to access columns with new names, but old DB layout.

jancborchardt commented 7 years ago

Don’t we get that from the config.php?

MorrisJobke commented 7 years ago

No - it is an app ;) the theming app ;)

juliusknorr commented 7 years ago

@rullzer Is the new AppData available without accessing to the database? Because then we maybe could just cache the themed maintenance page there.

rullzer commented 7 years ago

Nope needs the db

Django-BOfH commented 6 years ago

As I've MorrisJobke understood, it is, because no app is loaded for this time and thus also the app data and the theming app is not available. Nevertheless there is the idea of a plain maintenance mode page.

Okay, are there any more specific plans as to when this function will be available?

Currently a hardcoded page is loaded from the filespace to display the Maitenance page, right?

Alternatively I could imagine the following:

As soon as the color and/or slogan exactly this hard-coded page is written individually into the filespace with the updated changes and then the file is signed. In a maintenance case exactly this individual page can be loaded and displayed.

So there would be no excited questions from users who are currently calling excitedly and asking if we have been compromised or hacked, since the site suddenly looks completely different (in colour) and the slogan / footnote also indicates that something can't be right.

MorrisJobke commented 6 years ago

As soon as the color and/or slogan exactly this hard-coded page is written individually into the filespace with the updated changes and then the file is signed. In a maintenance case exactly this individual page can be loaded and displayed.

Sadly we can't write to a random location and thus need to write to the data dir. And writing to the data dir is not possible, because we need the DB to fetch the info that is needed to read from any possible data dir implementation. :/

Django-BOfH commented 6 years ago

HI Morris,

Am 05.04.2018 um 17:49 schrieb Morris Jobke:

Sadly we can't write anywhere. And writing to the data dir is not possible, because we need the DB to fetch the info that is needed to read from any possible data dir implementation. :/

All right, I understand.

What about the mentioned solution with the plain maintenance mode page? Can you tell us when this could be done? Are there already plans in the current release note 13?

Best regards Django

MorrisJobke commented 6 years ago

No further details are available as of now.

Django-BOfH commented 6 years ago

No further details are available as of now.

Well, the best thing will be, I build my own static error page, which I have delivered by the web server in maintenance-mode.

MorrisJobke commented 6 years ago

Well, the best thing will be, I build my own static error page, which I have delivered by the web server in maintenance-mode.

Yes. This sounds like a decent plan and makes also sense. Just one config option inside Nextcloud with the path to the file and then we serve only this as HTML and are done. For styles you need to inline CSS, but this should be fine for the maintenance page itself.

@rullzer @jancborchardt @skjnldsv Should we do it like that?

jancborchardt commented 6 years ago

I doubt many people will go through the trouble of customizing that as it's seen so rarely (ideally never).

A config option (not in the interface) would be the most here.

In normal cases, the maintenance mode page having regular Nextcloud look is not really that big of an issue. (Of course if it would be possible to automatize, we should – but as you said it's not.)

juliusknorr commented 6 years ago

I doubt many people will go through the trouble of customizing that as it's seen so rarely (ideally never).

Well, i remember there were already quite some issues reported for that. So people want their maintenance page themed as well. :wink:

Yes. This sounds like a decent plan and makes also sense. Just one config option inside Nextcloud with the path to the file and then we serve only this as HTML and are done. For styles you need to inline CSS, but this should be fine for the maintenance page itself.

We could also just go for the theme folder and look for existence of a special maintenance template file there. As far as I remember, we should be able to do that without the need of having the database available.

juliusknorr commented 6 years ago

I just gave it a try and a custom theme can already be used to style the maintenance page by adding

So we already have the possibility to theme this page for advanced users, not sure if we need anything else.

MorrisJobke commented 6 years ago

I just gave it a try and a custom theme can already be used to style the maintenance page by adding

themes/example/css/guest.css themes/example/templates/update.user.php So we already have the possibility to theme this page for advanced users, not sure if we need anything else.

The idea here was to get people off the themes, because they often broke more stuff than helped to fix issues.

hanserasmus commented 5 years ago

I think the theme itself is not that big a deal. Reverting to the standard Nextcloud theme during Maintenance is fine imho. However, being able to add a line to config.php (it could/should be static string) with a custom message would go a long way with any admin trying to communicate maintenance downtime with their users. Something along the lines of

maintenance_message => 'We are down for planned maintenance from X to Y. Sorry for any inconvenience caused'

In real world scenarios this communication is sent out by email, and in big enterprises with many systems, you might as well send this message by carrier pigeon or telegram. People ignore and delete it, and then panic when the service is not available. Having a transparent message displayed with facts about how long the service will be down, will go a VERY long way.

@MorrisJobke any idea if this possible? And if so, any further development on the stuff mentioned in this ticket so far?

BrookeDot commented 5 years ago

Coming into this sorta late, but I'm wondering if in combination of adding the maintenance_message a file check could be made prior to loading the maintenance template. Excuse the Pseudocode code but something like

if (file_exists( 'maintenance-custom.php)) {
   //load custom maintenance template
} else {
    //nothing to see here, load Nextcloud branded page
}

Users could then either copy the default file to root or a template could be provided.

skjnldsv commented 5 years ago

@juliushaertl we could also have an offline config file that reflect the exact data theming is using? A file that the theming app updates alongside the db?

MorrisJobke commented 5 years ago

@juliushaertl we could also have an offline config file that reflect the exact data theming is using? A file that the theming app updates alongside the db?

Keep clustered environments in mind, where this request is coming from typically.

elhananjair commented 3 years ago

Is there any updates on this on 2021?