Making selected dashboards public

Hi all,

I have a need to make certain dashboards public (not password protected), whilst retaining most of my dashboards behind the authentication layer.

These public dashboards would be read-only.

I am struggling to find a way to do this, as all of the “share” functions require a login apart from “snapshot”, but “snapshot” retains the timestamp as well as the data so does not automatically update.

If there’s no way of doing this, I’ll log a feature request, but I thought I’d ask here just in case!

1 Like

There is no way to do this and there is a big reason why. If you make one dashboard public you will have to make your data source public (ie anyone can query against it). So any possible query for that data source can be issued not just the queries used in the dashboard you made public.

OK, thanks.

So even if I setup auth.anonymous and set the default permissions to “READ” then anyone can query all of the data not just view the dashboards?

Yes, if they known http and really want to its easy, as the datasource is exposed and any valid query will be proxied

Just thinking… You might be be able to create a server side function that leverages the renderer “RenderToPng” function and give the anonymous user a predefined view?

Just in case you still need this, I found a way using a reverse proxy: How to make one live dashboard public

There is no way to do this and there is a big reason why. If you make one dashboard public you will have to make your data source public (ie anyone can query against it).

This justification is seemingly right from a technical perspective. It is wrong, of course, from a usability perspective. It is the perennial illusion of software engineers that technology trumps usability; no, it’s exactly the other way around. Software is made for people, not people for software.

Whatever the technical justification may be, one could always point out to many other dashboard apps out there that would happily provide public dashboards. First example that comes to mind - DataDog. I’ve used their public dashboards for a long time. Nobody stole the data source. Why? Because they don’t expose the data source in the public dashboard.

Sometimes one needs to step away from the narrow, code-only point of view, and look at the app from a larger perspective. How is it used? How do users interact with it? What do they want from it? It’s easy to get lost in thousands of lines of code, and forget the actual people using your stuff.

“Dad, I can’t go to school tomorrow.”
“Why?”
“My bicycle broke.”
“Well, just fix the bicycle and suddenly going to school will become possible.”

How many times I had a discussion like this with my kids? Sometimes there needs to be an adult in the room to bring clarity of direction. I feel Grafana as a project is in a similar situation. Not having a public dashboard option, and offering some narrow, ivory-tower technical “reason” as a reply, is not a serious justification.

The lesson to take home is that exposing the data sources in dashboards, always or at least in some situations, is a bad idea. Get rid of that, or somehow control it selectively, and having public dashboards (a basic, meat-and-potatoes feature for many other dashboard apps) suddenly becomes possible.

This also shows the importance of architectural decisions made very early on. Should we expose the data sources in the dashboards? Sure, because it’s easier. Then later on that decision comes back to haunt you, when you realize it blocks your ability to offer some basic feature that everyone else offers by default.

13 Likes

Is there anyway to achieve this ? A workaround ?

1 Like

Hi guys,

I know the above said it isnt possible, but yet there are grafana endorsed public dashboards such as these: Worth a Look: Public Grafana Dashboards.

How would I go about creating public dashboards, with no user login, such as those linked (including gitlab and wikimedia)?

Thanks!

3 Likes

I don’t believe this is necessarily true. The InfluxDB data source can do its queries on the server side, keeping direct DB access private. I don’t see any reason why Grafana can’t allow for public dashboards.

2 Likes

florinandrei, you hit the nail squarely on the head. I am also encountering ivory tower issues, with cloud based IoT stuff. Your response is fair and appropriate, and is the healthy telling-off that many software teams / startups need. The issue is not that a particular function is not present - after all, everyone faces time and money constraints, and no architecture is perfect. The issue is that the technical constraint is viewed as the fact, instead of the usability constraint.

On the server side could a proxy be implemented that heavily filters the URL request - i.e. allow only the variations required for the dashboard - such as the dashboard variables - but this requires some knowledge of the browser-to-server communication.