A quick start for deploying an ERDDAP server.
Edit me

This page aims to provide a quick start for standing up an ERDDAP server using the ERDDAP Docker image and a few IOOS Gold Standard Example datasets. You can view this setup live at https://standards.sensors.ioos.us/erddap/index.html, with dataset documentation at https://ioos.github.io/ioos-metadata/gold-standard-examples.html.

This getting started page provides instructions and links to external resources for setting up an ERDDAP server using a single Docker image. Multi-node Kubernetes deployments are linked to under the Other deployment options sidebar.

While this is intended to help get you started quickly, it is highly recommended that any ERDDAP administrator becomes comfortable with the source ERDDAP documentation at: https://coastwatch.pfeg.noaa.gov/erddap/download/setup.html

Requirements

There are a few items you need to have installed on your system to deploy ERDDAP using the https://github.com/ioos/erddap-gold-standard repository.

  1. Git: https://git-scm.com/
  2. Docker: https://www.docker.com/
    1. Ubuntu Linux: https://docs.docker.com/engine/install/ubuntu/
    2. Windows: https://docs.docker.com/desktop/windows/install/
    3. Mac: https://docs.docker.com/desktop/mac/install/
  3. (optional) Docker compose: https://docs.docker.com/compose/install/

Step 1: Download this Repo

Create a folder to clone the ERDDAP repository into, or just into your home directory. For more help on cloning repositories available on GitHub, please check here.

$ git clone https://github.com/ioos/erddap-gold-standard.git

Now let’s have a look at what we downloaded.

$ cd erddap-gold-standard/
$ ls -Ap
.env.template  .gitignore          DasDds.sh  docker-compose.yml  erddap_utils.sh         README.md
.git/          ArchiveADataset.sh  datasets/  erddap/             GenerateDatasetsXml.sh

Step 2: Start the Docker daemon/engine

  • Windows:
    • Search for Docker, and select Docker Desktop in the search results.
  • Linux:
    • sudo systemctl start docker
  • Mac:
    • Double-click Docker.app in the Applications folder to start Docker.

Step 3: Deploy ERDDAP locally

  1. Run it!
     $ cd erddap-gold-standard/
     $ docker run --rm \
       --name erddap_gold_standard \
       -p 8080:8080 \
       -v $(pwd)/erddap/conf/config.sh:/usr/local/tomcat/bin/config.sh \
       -v $(pwd)/erddap/conf/robots.txt:/usr/local/tomcat/webapps/ROOT/robots.txt \
       -v $(pwd)/erddap/content:/usr/local/tomcat/content/erddap \
       -v $(pwd)/erddap/data:/erddapData \
       -v $(pwd)/datasets:/datasets \
      axiom/docker-erddap:2.23-jdk17-openjdk
    

    get axiom/docker-erddap:2.23-jdk17-openjdk or the latest one available from axiom docker-erddap.

    or, copy the .env.template file to .env, and then run docker-compose:

     $ cp .env.template .env
     $ docker-compose up -d
    
    1. Remember, when you run ERDDAP from the Docker container, various configuration files will be mounted into the container from your local system. Review the various mount points (-v flags in your docker run/docker-compose.yml) to ensure you know where the appropriate files are coming from and going to.
  2. You should be able to see something similar to the following:

     Creating network "erddap-gold-standard_default" with the default driver
     Pulling erddap (axiom/docker-erddap:2.23-jdk17-openjdk)...
     2.23-jdk17-openjdk: Pulling from axiom/docker-erddap
     Digest: sha256:1ae5c7637ba14db60c5a0cd143e9fc1eb4115cdd8f030f40b22d1fdbea919ba3
     Status: Downloaded newer image for axiom/docker-erddap:2.23-jdk17-openjdk
     Creating erddap_gold_standard ... done
    
  3. Connecting to your new ERDDAP server:

    In your web browser navigate to http://localhost:8080/erddap/index.html. You should now see the standard ERDDAP Website: Standard ERDDAP Website

    You can monitor http://localhost:8080/erddap/status.html to see the status of your ERDDAP.

Step 4: Making ERDDAP Publicly Accessible

If you want other people to reach your ERDDAP over the internet, you need to make the host running Docker reachable, set ERDDAP’s public URLs, and (recommended) terminate TLS with a reverse proxy.

At a minimum you will need:

  1. A public IP address for the machine running Docker (cloud VM, or home/office network with port-forwarding)
  2. Inbound firewall/security group rules that allow traffic to your server
    • Recommended: TCP 80 (HTTP) and 443 (HTTPS)
    • Alternative: TCP 8080 if you plan to expose Tomcat directly (not recommended)
  3. A DNS name pointing at that public IP (strongly recommended), e.g. erddap.example.org

Run a reverse proxy (e.g., Nginx, Caddy, Traefik) on the host that forwards https://erddap.example.org/erddap/ to http://localhost:8080/erddap/ and obtains/renews a TLS certificate (e.g., Let’s Encrypt).

Then update your ERDDAP configuration so links it generates use your public hostname:

  • ERDDAP_baseUrl=https://erddap.example.org
  • ERDDAP_baseHttpsUrl=https://erddap.example.org

In this repo, you can set these in your .env (copied from .env.template) and redeploy with docker-compose up -d. See Customizing your ERDDAP for more context.

Option B: expose port 8080 directly

You can map the container port to a public port on the host (e.g., -p 8080:8080) and then allow inbound traffic to that port. If you do this, you should still set ERDDAP_baseUrl/ERDDAP_baseHttpsUrl to your public URL and consider moving to HTTPS (Option A) as soon as possible.

Step 5: Next Steps

Once you have successfully deployed an ERDDAP using the Docker instance, it’s time to start testing out what you can do. Below are links to a few of the topics that might be of interest:

Tags: