openeo-earthengine-driver
July 1, 2026 ยท View on GitHub
openEO back-end driver for Google Earth Engine.
This back-end implements openEO API version 1.2.0.
Note
This is not a production-ready implementation yet!
If you are interested in using openEO together with Google Earth Engine, express your interest with the Google Earth Engine Team, please.
Demo
The demo instance is running at https://earthengine.openeo.org
To log in, you can use your Google Account to authenticate as long as it's signed up for Google Earth Engine. As a non-commercial user, you can register for Google Earth Engine for free.
If you are unable to register for Google Earth Engine, we can also provide a demo account. Please contact openeo.psc@uni-muenster.de.
Setting up an instance
The driver is written in node.js and requires at least version 20.0.0. Install node.js and npm according to the official documentation of each software package.
Afterwards either download the files in this repository or clone it. Run npm install to install the dependencies
Configuration
There are several important configuration options in the file config.json:
hostname: The address of the server running the openEO GEE driver. For local deployments usually127.0.0.1, for public instances the ip or domain name of the server, e.g.earthengine.openeo.org.port: The port the HTTP instance of the openEO GEE driver is running on.ssl: Configuration to enable HTTPS (secured HTTP with SSL).port: The port the HTTPS (secured) instance of the openEO GEE driver is running on.key: If you want to create an HTTPS server, pass in a private key. Otherwise set tonull.certificate: If you want to create an HTTPS server, pass in a PEM-encoded certificate. Otherwise set tonull.
Setting up GEE authentication
Generally, information about authentication with Google Earth Engine can be found in the Earth Engine documentation.
Service Account
If you want to run all processing through a single account you can use service accounts. That's the most reliable way right now.
The server needs to authenticate with a service accounts using a private key. The account need to have access rights for earth engine. You need to drop your private key file into a secure place specify the file path of the private key in the property serviceAccountCredentialsFile in the file config.json.
Google User Accounts
Caution
This authentication method currently requires you to login every 60 minutes unless the openEO clients refresh the tokens automatically. User workspaces also don't work reliably as of now.
Alternatively, you can configure the driver to let users authenticatie with their User Accounts via OAuth2 / OpenID Connect.
For this you need to configure the property googleAuthClients in the file config.json.
You want to have at least client IDs for "Web Application" from the Google Cloud Console.
For example:
[
{
"id": "1234567890-abcdefghijklmnop.apps.googleusercontent.com",
"grant_types": [
"implicit"
],
"redirect_urls": [
"https://editor.openeo.org/",
"http://localhost/"
]
}
]
Setting up cron jobs
Add to your cron job, e.g.
# Clean the thumbnail cache in the GEE service
0 2 * * * cd ~/openeo-earthengine-driver && npm run cleancache
# Redownload GEE collections
0 3 * * 6 cd ~/openeo-earthengine-driver && npm run sync && npm run up
Starting up the server
After configuration, the server can be started. Run npm run up to start the server.
After finishing work, you can stop the server by running npm run down.
User management
To manage the user accounts that are not authenticting through their Google Accounts:
- Add a new user:
npm run adduser - Delete a user:
npm run deluser - List all users:
npm run users
Thumbnail cache cleanup
The server caches STAC item thumbnails in storage/item_thumb_cache/. Over time this can grow large. To remove cached files older than 30 days:
npm run cleancache
To automate this, add a cron job (e.g. weekly on Sundays at 3 AM):
crontab -e
0 3 * * 0 cd /path/to/openeo-earthengine-driver && npm run cleancache >> /var/log/cleancache.log 2>&1
Usage
For both the demo servers or your own instance you can use the openEO API to communicate with Google Earth Engine.
There are various clients for the openEO API, e.g.
- Web Editor
- Python
- R
- JavaScript
- Julia
There are various process graph examples in the following folder: examples
Warning
Internally, Google Earth Engine works quite differently from openEO. In some cases, the process implementations may differ slightly from the openEO process descriptions. For example, the handling of no-data, NaN and infinity values works differently. Be aware that in some cases the results may slightly differ when compared to other openEO implementations.
Other known issues:
- Ideally, all computations - including the datacube management - run on GEE's side. Currently, some smaller checks still run in the proxy implementation due to the issue that we can't easily abort execution on GEE in case we identify anomalies or other issues.