I’m looking for a self-contained way to provide a kind of digital reference in a place that has spotty or no internet access.
The approach I think I’ve settled on: A Raspberry Pi with a small touchscreen, with kiosk mode kicking in at startup, serving local, interlinked HTML pages. Essentially a little wiki, but fully functional without an Internet connection.
There are a ton of tutorials on setting up a Pi kiosk to serve web pages – but all the ones I’ve found assume you’re serving the pages from the internet. I need them to be local in case there is no internet connection. (I can use RealVNC’s cloud connection service to get into the pi and make changes to the local files remotely if I need to.)
What’s the best way to serve locally stored pages on a Pi? Bonus if it lets me do everything in (multi)markdown, and automagically converts to html for display.
I haven’t actually setup kiosk mode but if it’s expecting a web page that’s served via http(s) you can try running one of those markdown servers. The following look promising:
I’ve looked at similar setups several times before, but always came back round to a cloud sync’d on device solution. Currently for me Obsidian serves this purpose.
It always felt like this would be good for a group of people collaborating, but I couldn’t quite align it to an individual user scenario.
What is it that has lead you to operate a separate device, with the additional carry, power, maintenance, etc. requirements vs an on existing device approach?
Good question. The use case is a place with poor/intermittent Internet access, but a variety of people using it.
Historically, there has been a physical notebook for reference (where to find what, who to contact, etc.). But a kiosk like this — in addition to being a fun challenge — would allow for easier updating when there is an internet connection, and mirroring for reference when away (which is difficult with a physical notebook).
That may be my best bet. I’ve used it but have never served it locally. Will have to look into that. Thanks!
How low-level do you want to go? Mediawiki has been mentioned - and that is certainly feasible.
I’ve created web servers in nginx, node, and Apache on Raspberry Pi. None of these is difficult - but managing the content might be something you don’t want to get too gory with.
I could set up a web server, but was hoping to avoid getting too deep into it. Troubleshooting will be difficult remotely, so the closer I can get to “just works” the better.
Obsidian is the way I would go too. It doesn’t require you to set up a web server, you can just view everything in preview mode instead of editing mode. When it has internet it will sync, when it doesn’t, it won’t!
Will Obsidian run on a Pi? And is there a way to run it in kiosk mode? I do t want people to be able to accidentally exit to the OS, at least not easily.
Yes! There are a few Linux versions on the download page (you’ll need the ARM64 package). I’m not sure about locking Obsidian into Kiosk mode, but I bet there’s a creative developer out there who could make a plugin for that, and Raspbian can definitely launch an app on boot!
There’s a pretty good tutorial for setting up a pi to run as a kiosk.
In that tutorial, they run Chromium and pass the kiosk mode parameter to it at start up. Obisidian is an Electron app, and so Chromium based, but I think (I’m not a JavaScript/Electorn-savvy developer) the core app would have to be modified to set the kiosk property on the BrowserWindow instance for the app.
I’m not sure if that would be be viable for a plugin. Unless that plugin can be loaded before the main Obsidian window can be instantiated.
As an alternative perhaps a background script that frequently checks for the existence of the Obsidian app running. If it doesn’t find an instance, it launches Obsidian. Not as nice as a true kiosk mode, but perhaps a viable alternative if a kiosk mode plugin turns out not to be?
It looks like using Obsidian means giving up kiosk mode, at least for now; and using TiddlyWiki, like a static site generator needs a web server (on the outside or elsewhere).
If I’m going to have to set up a web server on the pi to get kiosk mode, I might as well go with as simple static site generator they can display markdown documents as html. That seems like the lowest overhead option (again, assuming I have to use a web server).
Happy to be persuaded otherwise. I was looking for some kind of all-in-one approach, or tutorial. But the kiosk tutorials I’ve found assume a web page Out There somewhere. So I’ll have to try to combine a kiosk tutorial and a local web server tutorial.
Fwiw, I went with Jekyll, and it works great so far. I haven’t set it to auto load on startup on a pi with a touchscreen yet, but the set up was simple with this tutorial: