So I went down the rabbit hole today reading the following posts about setting up an ODK Central Server in a local offline environment. Here is a summary of what I found so far:
Trouble getting ODK Collect Devices w local ODK Central Server
https://forum.getodk.org/t/get-blank-forms-from-odk-collect-not-working-on-local-odk-central-server/
Issues using ODK Collect w/o SSL Cert:
https://forum.getodk.org/t/ssl-issue-with-central-on-my-internal-network/
https://forum.getodk.org/t/selfsign-certificate-with-latest-central/
Making your own SSL
https://forum.getodk.org/t/use-easy-rsa-to-set-up-a-self-signed-certificate-authority-for-central/
Here, @dmenne talks about building a modified version of ODK Collect so that ODK can connect to an ODK Server on his local intranet w a SSL Cert w Private Certification Authority created with easyrsa.
@danbjoseph chimed in at the end with info about running ODK Central when disconnected from the internet. He mentioned not using a SSL, but not sure the details of how/if that is accomplished with Android devices using ODK Collect.
It does’t look like there has been chatter about this for a few years so maybe there isn’t much interest in it, but I figured I’d put that little summary together. The post below is more about my use case and potential workflow so it may be better as a separate post. I’m not sure which category to put it in so I’m putting it in Community. The current offline SSL issues look like a big pain to setup, but ideally for my workflow I’d like something that could be setup one-time and wouldn’t require any ongoing maintenance besides updating forms and form media.**
- What is the issue? Please be detailed.**
So my user case/context is the following. I am in a remote location with poor internet (expensive, unreliable, erratic, etc.) where I would like to run a tour of a demonstration farm and incorporate ODK Collect to make this experience interactive for visitors. I may even include some Easter Eggs/scavenger hunt type things to make it fun, but fundamentally ODK Collect would be run on the devices that visitors bring themselves and maybe have a small number for visitors w/o Android devices. Visitors demographics would be quite diverse linguistically, but the vast majority with very low tech literacy and only minimal French literacy.
At the start of the tour, I would like to start visitors at a centralized location near a building where a non-literate staff member would help make sure that visitors have ODK Collect and associated form properly loaded on their Android device. Ideally this would be accomplished by scanning a series of QR codes with very little interaction needed by the user. For Example:
- QR #1 –> Connects to local wireless router w/o access to internet (Alternative could be to run an unsecured wireless network during farm tours to allow visitor access to LAN files) NOTE: This wireless access would ONLY be available to tour visitors and would only be turned on for farm tours.
- QR #2–> Downloads latest ODK Collect .apk file stored on a computer/Rasbperry Pi
- Step 2.2–> Installs .apk on device (this might be the hardest step as it likely would require accessing developer options on each Android device in order to install the APK)
- QR #3–> Opens ODK Collect to Scan QR to connect to Central
- Start New Form –>Downloads Tour Form w large amounts of associated media (could be as much as 5GB( Depending on what quality of video we decided to go with.) Expecting about 10-20 visitors/tour.
- Visitors walk around farm w and w/o guide to explore and scan barcodes/QR codes to learn about different plants/ag principles in their own language.
- Notice here that visitors don’t actually submit any forms, but are using the form more like a multilingual app. Could incorporate learning quizzes as well.
- (Optional) During an end of the tour debrief session, use a separate form to get feedback about tour, etc. from visitors. This might change everything with regards to the local Central server depending on what data we collect. May be better to have this form connected to a “normal/secure” separate Central Server in the cloud. Could have users scan QR code using their own device (not great b/c of unreliable internet even though this form would be small and wouldn’t include large media), or have an on farm device w the form already preloaded that users could use to fill out feedback form.
So to summarize:
My goal is to setup a local ODK Central that after setup, remains offline for long periods of time and allows for BYOD scenarios for non-tech/literate users to use ODK Collect and requires minimal ongoing maintenance.
My main questions are:
- How can this be done?
- What are the biggest challenges?
- Are there parts of the workflow that are roadblocks or showstoppers?
- I’m mainly concerned with the workflow for setting up a new Android device for new visitors
- What am I not aware of that could be easier?
- Perhaps side-loading all of the large media files and just having a normal ODK Central server on semi-unreliable internet to load small data forms?
So far, here are my concerns:
- making my own SSL for setup on offline ODK Central = no fun
- rebuilding ODK Collect for my custom SSL = no fun
- I could envision myself spending a lot of time on this and not have it actually work in the end.