-
Notifications
You must be signed in to change notification settings - Fork 36
Server Platform
The server application is designed to run on Debian Linux, with some conventions and tools for managing configuration settings, deployment sites, and software updates.
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.
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.
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.
About the software
System Overview
Client Application
Server Application
Server Platform
Development practices
GitHub Usage
Java Style
Testing
Releases
For field users and testers
Software Install and Configuration
Upon Receiving Your Gear
Setting Up a Tablet
Setting Up a Server
Setting Up an Access Point
Reference Configuration