Skip to content

FreedomBox demo instance

Prerequisite: An official cloud image for FreedomBox exists.

User interactions

A demo button on the home page of the website takes the user to a demo page on the website.
The demo page lists the username and password of the demo user, status of the demo server and a launch button.
On clicking the launch button, the user is taken to a demo instance of FreedomBox for which first boot has already run.
The user logs in with the demo user's credentials and proceeds to try out FreedomBox.

Creating the demo instance

The demo instance gets launched on any one of the cloud services that we support using an officially published image.

Post installation steps:

  • First boot steps are run during which a demo user is created with the same credentials as published on the website.
  • Dynamic DNS is setup with a pre-determined account and a DNS entry called demo.freedombox.rocks is registered.
  • A letsencrypt certificate should be obtained for this DNS entry (if this is not already done automatically).
  • The domain name should be set in the Configure section.

This instance will be terminated after 6 hours (decide this based on usage) and a new instance launched.

Redeployment steps:

  • Spin up a new cloud instance
  • Terminate old instance
  • Run the above post installation steps on the new instance

During redeployment, the demo page should show a status of "redeployment in progress"

Implementation details

All the above automation steps can be run using the functional_tests framework of Plinth.
Launching and terminating instances can be done using the appropriate CLI for the cloud provider. (e.g. awscli)
All the above steps would run on a server owned by the FreedomBox Foundation which should be secured as it would have secrets necessary for some of the steps.
A new Salsa repository containing these automation steps might have to be created.
The demo page on the website while loading should query the status of the demo instance and display the status of the demo instance to the user.