Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@

This is the website for ODE. It is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.

## Documentation versioning

The version selector in the navbar (e.g. **ODE 1.1.2**, **Next (unreleased)**) refers to **ODE product versions**, not the version of the docs site itself.

- **ODE 1.1.2, 1.1.0, 1.0** — Frozen snapshots of the docs as they were when that version of ODE was released. Content lives in `versioned_docs/version-1.1.2/` etc.
- **Next (unreleased)** — The current docs you edit in the `docs/` folder. This is what you see when working locally; it becomes the next ODE release docs when you run the versioning command.

When you change files in `docs/`, switch the dropdown to **Next (unreleased)** to see your updates. The default “latest” on the site can be set to the current ODE release (e.g. ODE 1.1.2) so most visitors see stable docs.

To freeze the current `docs/` for a new release (e.g. ODE 1.1.3), run:

```bash
npm run docusaurus docs:version 1.1.3
```

Then update `versions.json` and the config if you want that version to become the default.

## Local Development

```bash
Expand Down
2 changes: 1 addition & 1 deletion docs/development/formulus-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ npm install

## Related Documentation

- [Installing Formulus for Development](/development/installing-formulus-dev) - ADB/emulator setup
- [Installing Formulus for Development](/docs/development/installing-formulus-dev) - ADB/emulator setup
- [Formulus Reference](/reference/formulus) - Component reference
- [Building and Testing](/development/building-testing) - Build procedures

8 changes: 4 additions & 4 deletions docs/development/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -317,14 +317,14 @@ Verify the installation:

Formulus is the mobile application component of ODE, available for Android and iOS devices.

For detailed installation instructions, see the [Installing Formulus guide](/getting-started/installing-formulus) which covers:
For detailed installation instructions, see the [Installing Formulus guide](/docs/getting-started/installation/installing-formulus) which covers:

- F-Droid installation (recommended for end users)
- Direct APK installation
- System requirements
- Post-installation setup

For developers who want to install via ADB or emulator, see the [Development Installation guide](/development/installing-formulus-dev).
For developers who want to install via ADB or emulator, see the [Development Installation guide](/docs/development/installing-formulus-dev).

### Quick Installation Summary

Expand All @@ -333,15 +333,15 @@ For developers who want to install via ADB or emulator, see the [Development Ins
1. **F-Droid** (Recommended): Install via F-Droid app store
2. **Direct APK**: Download and install APK file directly

See [Installing Formulus](/getting-started/installing-formulus) for complete instructions.
See [Installing Formulus](/docs/getting-started/installation/installing-formulus) for complete instructions.

#### For Developers

1. **ADB Installation**: Install via Android Debug Bridge
2. **Emulator**: Run on Android emulator
3. **Development Build**: Build from source with hot reload

See [Installing Formulus for Development](/development/installing-formulus-dev) for complete instructions.
See [Installing Formulus for Development](/docs/development/installing-formulus-dev) for complete instructions.

### App Configuration

Expand Down
2 changes: 1 addition & 1 deletion docs/development/quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ If data is not synchronizing:

## Related Documentation

- [Installation Guide](/getting-started/installation)
- [Installation Guide](/docs/getting-started/installation)
- [Your First Form](/using/your-first-form)
- [Form Design Guide](/guides/form-design)

2 changes: 1 addition & 1 deletion docs/getting-started/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ No, ODE is designed to work offline. Data is stored locally and synchronized whe

### What are the system requirements?

See the [Prerequisites](/getting-started/installation/prerequisites) page for detailed system requirements.
See the [Installation](/docs/getting-started/installation) page for detailed system requirements.

### Can I run ODE in the cloud?

Expand Down
21 changes: 21 additions & 0 deletions docs/getting-started/installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
sidebar_position: 4
---

# Installation

To run ODE you need two things: a **server** (Synkronus) that stores and syncs data, and a **client** on each device (Formulus or another app) that collects data and talks to the server.

## What to install

| Component | What it is | Guide |
|-----------|------------|--------|
| **Server (Synkronus)** | Backend that hosts the API, portal, and database. Runs on a Linux server or VPS. | [Install Synkronus](installation/installing-synkronus) |
| **Client (Formulus)** | Mobile app for Android that field workers use to fill forms and sync data. | [Install Formulus](installation/installing-formulus) |

Install the server first so that the client has something to connect to. Then install Formulus (or your client app) on each device and point it at your Synkronus server.

## Next steps

- **[Install Synkronus](installation/installing-synkronus)** — Set up the server on a Linux machine or VPS.
- **[Install Formulus](installation/installing-formulus)** — Put the Formulus app on Android devices and connect it to your server.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 4
sidebar_position: 2
---

# Installing Formulus App
Expand Down Expand Up @@ -159,7 +159,7 @@ If Obtainium is not available or you prefer direct installation:

### Method 3: Development Build

For developers who want to build and install from source, see the [Development Installation Guide](development/formulus-development).
For developers who want to build and install from source, see the [Development Installation Guide](/docs/development/formulus-development).

## Post-Installation Setup

Expand Down Expand Up @@ -300,8 +300,7 @@ After installation, you can find and launch Formulus:

## Related Documentation

- [Formulus Features](using/formulus-features) - Learn about app features and usage
- [Your First Form](using/your-first-form) - Get started with data collection
- [Synchronization](using/synchronization) - Understand how data syncs work
- [Development Installation](development/formulus-development) - For developers building from source

- [Formulus Features](/docs/using/formulus-features) - Learn about app features and usage
- [Your First Form](/docs/using/your-first-form) - Get started with data collection
- [Synchronization](/docs/using/synchronization) - Understand how data syncs work
- [Development Installation](/docs/development/formulus-development) - For developers building from source
181 changes: 181 additions & 0 deletions docs/getting-started/installation/installing-synkronus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
---
sidebar_position: 1
---

# Install Synkronus Server

Setting up the server is often the hardest part of getting started with
Synkronus. Once the server is running, the rest of the system becomes
much easier to work with.

**We don't recommend any particular hosting provider.** Any VPS or VM
that can run Linux and containers is fine. This guide is written for a
generic Linux server. If you need to create a new server and want a
concrete example, we show **DigitalOcean** in the next section—use it if
you like, or skip it and follow the rest of the steps on your own
machine or provider.

This setup is **not intended for production use**. Later guides cover
custom domains, proper TLS, backups, logging, and production patterns.
Here the goal is simply to **get a working server running quickly**.

You will need:

- A machine running **Linux** (we use **Ubuntu 24.04 LTS** in the examples)
- At least **1–2 GB RAM** (enough for PostgreSQL and Synkronus)
- Root or sudo access to install packages and run containers

---

## Example: Create a VPS on DigitalOcean

If you already have a server, skip to [Install required tools](#install-required-tools).

If you want to create a new VPS and are happy to use DigitalOcean:

1. Create a DigitalOcean account and go to **Droplets → Create Droplet**.
2. Choose:
- A datacenter location close to you
- **Ubuntu 24.04 LTS**
- **Shared CPU / 1 GB RAM**

At the time of writing this costs about **$6 USD per month**.

When the droplet is created, note the **public IPv4 address**.

<img src="/img/synkronus_install/digiocean_droplet.png" alt="DigitalOcean droplet with IPv4 address" style="max-width: 100%; height: auto; display: block;" />

Click **Console** to open the server terminal, then continue with the steps below.

---

## Install required tools

On your Linux server, install the required packages.

We use **Podman instead of Docker** to keep the stack fully open source.
Podman is daemonless, OCI-compatible, maintained by Red Hat, and largely
CLI-compatible with Docker. For workloads like Synkronus it works very well.

```bash
sudo apt update
sudo apt install -y podman podman-compose git
```

---

## Clone the quickstart repository

Clone the Synkronus quickstart repository and run the installer.

<img src="/img/synkronus_install/install_shell.png" alt="Install script running in shell" style="max-width: 100%; height: auto; display: block;" />

```bash
git clone --depth 1 https://github.com/OpenDataEnsemble/synkronus-quickstart.git server
cd server
chmod +x ./install.sh
./install.sh
```

During installation you will be asked:

**Do you have a domain name pointing to this server? (y/n)**

If you **do not have a domain**, answer **n**, then enter the server's
public IP when prompted.

The installer will configure access using:

**https://`<your_ip>`.sslip.io**

This hostname resolves to your IP and works with automatic TLS.

---

## Bring the server online

Start the containers:

```bash
podman compose up -d
```

The first startup may take a minute while images are downloaded.

Check that everything is running:

```bash
podman ps
```

---

## Access the Synkronus Portal

Once the containers are running, open your browser and go to:

**https://`<your_ip>`.sslip.io**

You should see the **Synkronus Portal login screen**.

<img src="/img/synkronus_install/portal_welcome.png" alt="Synkronus Portal login" style="max-width: 100%; height: auto; display: block;" />

Use the **admin username and password printed by the installer**.

---

## TLS and HTTPS

Synkronus uses **Caddy** as a reverse proxy. Caddy automatically
provisions TLS certificates via Let's Encrypt, handles HTTPS, and
forwards requests to the Synkronus server. With `sslip.io`, certificates
are issued automatically.

For this to work, the server must be reachable from the internet on
**port 80** and **port 443**.

:::caution If the certificate fails initially

Sometimes Let's Encrypt validation fails on first boot if the server
isn't yet reachable. If you see a certificate error in your browser,
restart Caddy:

```bash
podman restart synkronus_caddy
```

After a short moment, HTTPS should work.

:::

---

## Create a user

After logging in with the admin account, create a user for your client
applications (e.g. Formulus):

1. Open the **Users** tab.
2. Click **+ Create User**.
3. Assign **Read/Write** permissions.

<img src="/img/synkronus_install/portal_create_user.png" alt="Create user in portal" style="max-width: 100%; height: auto; display: block;" />

This user can now be used by Synkronus clients such as **Formulus**.

---

## Alternative networking setups

If you already run a **tunnel service** (e.g. **Cloudflare Zero Trust**
tunnels), you can skip automatic TLS. When prompted for the public IP
during installation, enter **localhost**. Caddy will run locally without
provisioning certificates, and your tunnel can handle HTTPS externally.

---

Your Synkronus server is now running.

<p align="center">
<img src="/img/girrnababy_small.png" alt="" style="max-width: 120px; height: auto; width: 120px;" />
</p>
2 changes: 1 addition & 1 deletion docs/getting-started/what-is-ode.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,5 @@ ODE is built using modern, open-source technologies:

- Learn about [Why ODE?](/getting-started/why-ode) to understand the benefits
- Review [Key Concepts](/getting-started/key-concepts) to understand the terminology
- Follow the [Installation guide](/getting-started/installation/prerequisites) to set up your environment
- Follow the [Installation guide](/docs/getting-started/installation) to set up your environment

4 changes: 2 additions & 2 deletions docs/getting-started/why-ode.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,6 @@ ODE may not be the best fit if:
## Next Steps

- Review [Key Concepts](/getting-started/key-concepts) to understand ODE terminology
- Check [Prerequisites](/getting-started/installation/prerequisites) for system requirements
- Follow the [Installation guide](/getting-started/installation/quick-start) to get started
- Check the [Installation](/docs/getting-started/installation) guide for system requirements
- Follow the [Installation guide](/docs/getting-started/installation) to get started

2 changes: 1 addition & 1 deletion docs/guides/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,6 @@ curl http://localhost:8080/health

## Related Documentation

- [Installation Guide](/getting-started/installation)
- [Installation Guide](/docs/getting-started/installation)
- [Deployment Guide](/guides/deployment)
- [API Reference](/reference/api)
2 changes: 1 addition & 1 deletion docs/guides/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,6 @@ Before going live:

## Related Documentation

- [Installation Guide](/getting-started/installation)
- [Installation Guide](/docs/getting-started/installation)
- [Configuration Guide](/guides/configuration)
- [API Reference](/reference/api)
2 changes: 1 addition & 1 deletion docs/guides/quick-start-custom-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Create and deploy a custom ODE application in 30 minutes using this step-by-step
## What You'll Need

**Prerequisites:**
- ODE server running (see [Installation Guide](/getting-started/installation))
- ODE server running (see [Installation Guide](/docs/getting-started/installation))
- Node.js 20+ and npm 10+
- Basic knowledge of React/JavaScript
- Text editor (VS Code recommended)
Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Open Data Ensemble (ODE) is a comprehensive platform for mobile data collection

The source code for the pre-release version of ODE is now publicly available. While we're working toward the full 1.0 release, we welcome anyone willing to help with testing, development, or getting involved in the project.

**Try the pre-release:** [Install Formulus on Android](/getting-started/installation)
**Try the pre-release:** [Install Formulus on Android](/docs/getting-started/installation)

**Get involved:** Reach out to us at [hello@opendataensemble.org](mailto:hello@opendataensemble.org) - we'd love to hear from you!

Expand Down Expand Up @@ -90,6 +90,6 @@ This documentation is organized to help you find information quickly:
## Next Steps

- Read [What is ODE?](/getting-started/what-is-ode) for a detailed overview
- Follow the [Installation guide](/getting-started/installation) to set up your environment
- Follow the [Installation guide](/docs/getting-started/installation) to set up your environment
- Create your [first form](/using/your-first-form) to see ODE in action
- Explore the [API Reference](/reference/api) for technical details
Loading
Loading