ODK Aggregate provides a ready-to-deploy server and data repository to:
- provide blank forms to ODK Collect (or other OpenRosa clients),
- accept finalized forms (submissions) from ODK Collect and manage collected data,
- visualize the collected data using maps and simple graphs,
- export data (e.g., as CSV files for spreadsheets, or as KML files for Google Earth), and
- publish data to external systems (e.g., Google Spreadsheets or Google Fusion Tables).
ODK Aggregate can be deployed on Google's App Engine, enabling users to quickly get running without facing the complexities of setting up their own scalable web service. ODK Aggregate can also be deployed locally on a Tomcat server (or any servlet 2.5-compatible web container) backed with a MySQL or PostgreSQL database server.
Installation
- Please read all the instructions and notes before beginning.
- Make sure you have used ODK Collect and are familiar with how it works.
- Next, try the ODK Aggregate demo server to explore the core functionality.
- Make sure Java 6 or higher is installed on the computer you plan to use. If it is not, download and install it.
- Decide whether to install a local instance or an App Engine instance. We strongly recommend you try an App Engine instance first. See Aggregate Deployment Planning.
Installing an App Engine Instance
- You'll need to setup an App Engine account. These accounts are free (under these terms). You will need to be able to receive a text message from Google to verify your account.
- Once you're logged into your App Engine account, click on the "Create Application" button, choose an application identifier (e.g., my-app-id) and application title, and click on "Save." The identifier determines your url and can never be changed.
- Download ODK Aggregate vN.N.N, unzip and run it. Select the latest Production release for your active deployments. Consider using a Release Candidate during forms development (to help us identify issues prior to a production release).
- The installer will guide you through configuring ODK Aggregate for App Engine and then launch a script to upload this configured ODK Aggregate to App Engine.
Installing a Local Instance
To set up and install ODK Aggregate on a Tomcat server, see Aggregate Tomcat Install.
Using the Application
- You can now design and upload form definitions to Aggregate.
- Next, you need to create an ODK username and password and grant it Data Collector privileges. Do this on the Site Admin / Permissions tab. This username and password can then be entered into ODK Collect's settings page. Once you do that, you will be able to download forms to ODK Collect, fill them out, and submit the results back to ODK Aggregate. Alternatively, you can configure the anonymousUser to have Data Collector permissions to allow ODK Collect to interact with the server without any username or password (i.e., anonymously).
- Submitted data, once in ODK Aggregate, can be viewed, exported, mapped and deleted. You can add users and grant different access permissions to individual users through the Site Admin / Permissions page.
- Refer to the inline help in ODK Aggregate (near the login button) for more detailed instructions.
Useful Notes
- The developer wiki has release notes and tips on Aggregate troubleshooting (and App Engine troubleshooting).
- Google App Engine servers may be located anywhere in the world. Depending on the sensitivity of the data and specific storage rules/restrictions, the server infrastructure may not have all necessary security precautions (such as encryption). It is the organization's responsibility to research and comply with applicable laws and regulations before storing data on Google App Engine. The organization is also responsible for taking the appropriate security precautions and educating users that the information will be available to the organization and stored on Google servers as specified in the Google App Engine Terms of Service.
- Looking for other servers? Try ODK Briefcase (for local offline storage), FormHub (for free data hosting on the cloud), DataHQ (like Aggregate but in Python), RapidSMS (for SMS integration) or OpenMRS (for medical records).
