Skip to content
Ka-Ping Yee edited this page Jun 27, 2019 · 7 revisions
2019 status: Current

The server application is designed to run on Debian Linux, with some conventions and tools for managing configuration settings, deployment sites, and software updates.

Sites and device types

The project may be deployed at many sites. A "site" is a single facility, such as an Ebola Management Center. From a software perspective, a site corresponds to a single patient database shared among all devices, in which each patient has a unique ID. Each site is assigned its own unique identifier (e.g. "msf-mg" for the MSF center in Magburaka), and has a "site file" that defines its configuration settings (such as e.g. the Wi-Fi network name and password).

Each site has one package server, which is the repository for software packages; it provides the packages to all other devices at the site. The current system has just two types of devices:

  • Linux server: a single unit that is both the package server and the application server
  • Android tablet: many units, all configured the same

Each device type is defined by the set of software packages that it pulls from the package server and the configuration settings for those packages.

Software updates

New software releases are delivered to sites on USB sticks. When a new release is ready, someone at an office with Internet access can download it onto a USB stick, or save an e-mail attachment to a USB stick, or even receive a USB stick delivered by mail. Upon insertion of the USB stick, the package server copies the relevant files onto its local storage, then serves them to all the other devices that need software updates.

  • Software is deployed to Android devices as Android packages (.apk). Android devices consult the update server for new versions of Android packages, fetch them, and install them. The package server functions as a simple file server, with APK files placed at known locations with known names.

  • Software is deployed to Linux devices as Debian packages (.deb). Linux devices check for and install software updates by periodically running apt-get install buendia. The package server functions as a Debian repository. For more notes about the Buendia Debian packages, see Software Package Management.

Filesystem locations

Buendia-related tools are installed in /usr/bin and have names starting with buendia-, for example, buendia-backup is the backup script.

Buendia-related data files are installed in /usr/share/buendia.

The /usr/share/buendia/site directory contains configuration settings for the site. The files in this directory are plain text files containing shell-style variable assignments (for example, NETWORKING_SSID=buendia sets the Wi-Fi network name to "buendia"). The filenames begin with a two-digit number, such as 10-networking, and the files are sorted in numeric order when they are interpreted, so that a variable setting in 40-networking can override the same variable in 10-networking. See Site Settings and Field Reconfiguration for more on this configuration mechanism.

Various packages install cron jobs in /etc/cron.d or startup scripts in /etc/init.d. Some packages deposit files in /etc/apt/sources.list.d to add URLs pointing at Debian package repositories.

Buendia-specific log files are written in the /var/log/buendia directory.

The /var/log/large directory is for especially large log files; it is useful to put them in a separate directory because the buendia-limit program enforces per-directory quota limits. In particular, /var/log/large/requests contains a log of all incoming HTTP requests, separated into files named after the IP addresses of HTTP clients.

Clone this wiki locally