diff --git a/run.sh b/run.sh
new file mode 100755
index 0000000..1fb9466
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+#
+# Automated integration testing for the Named Data Networking Forwarding Daemon.
+# Part of the Named Data Networking project <https://named-data.net>
+#
+# --
+#
+# Copyright (c) 2014-2020,  Regents of the University of California,
+#                           Arizona Board of Regents,
+#                           Colorado State University,
+#                           University Pierre & Marie Curie, Sorbonne University,
+#                           Washington University in St. Louis,
+#                           Beijing Institute of Technology,
+#                           The University of Memphis.
+#
+# This file is part of NFD (Named Data Networking Forwarding Daemon).
+# See AUTHORS.md for complete list of NFD authors and contributors.
+#
+# NFD is free software: you can redistribute it and/or modify it under the terms
+# of the GNU General Public License as published by the Free Software Foundation,
+# either version 3 of the License, or (at your option) any later version.
+#
+# NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author: Eric Newberry <enewberry@cs.ucla.edu>
+
+run_docker() {
+  # Pull docker image if not available
+  echo "Updating docker image..."
+  docker pull ubuntu:18.04
+
+  # Clean up any existing containers, networks, or folders
+  echo "Cleaning any prior runs..."
+  for host in A B C D router template; do
+    docker stop nfd-integ-${host}
+    docker rm nfd-integ-${host}
+  done
+  docker image rm nfd-integ
+  docker network rm nfd-integ-ABC-switch
+  docker network rm nfd-integ-AtoRouter
+  docker network rm nfd-integ-DtoRouter
+
+  # Create and export template
+  echo "Creating template container..."
+  docker run -itd --name nfd-integ-template --mount type=bind,source="$(pwd)",target="/integ" ubuntu:18.04 bash
+  docker exec -it nfd-integ-template /integ/docker_helpers/prepare_template.sh
+  docker commit nfd-integ-template nfd-integ:latest
+  docker stop nfd-integ-template
+  docker rm nfd-integ-template
+
+  # Set up network bridges
+  echo "Setting up networks..."
+  docker network create --ipv6 --subnet 192.168.1.0/24 --subnet fd01::/64 nfd-integ-ABC-switch
+  docker network create --ipv6 --subnet 192.168.2.0/24 --subnet fd02::/64 nfd-integ-AtoRouter
+  docker network create --ipv6 --subnet 192.168.3.0/24 --subnet fd03::/64 nfd-integ-DtoRouter
+
+  # Start containers
+  echo "Starting containers..."
+  for host in A B C D; do
+    docker run -itd --privileged --name nfd-integ-${host} --mount type=bind,source="$(pwd)",target="/integ" nfd-integ bash
+  done
+  docker run -itd --privileged --name nfd-integ-router --mount type=bind,source="$(pwd)",target="/integ" ubuntu:18.04 bash
+
+  # Connect containers to networks
+  echo "Connecting containers to networks..."
+  docker network connect nfd-integ-ABC-switch nfd-integ-A --ip 192.168.1.3 --ip6 fd01::3
+  docker network connect nfd-integ-AtoRouter nfd-integ-A --ip 192.168.2.2 --ip6 fd02::2
+  docker network connect nfd-integ-ABC-switch nfd-integ-B --ip 192.168.1.2 --ip6 fd01::2
+  docker network connect nfd-integ-ABC-switch nfd-integ-C --ip 192.168.1.4 --ip6 fd01::4
+  docker network connect nfd-integ-DtoRouter nfd-integ-D --ip 192.168.3.3 --ip6 fd03::3
+  docker network connect nfd-integ-AtoRouter nfd-integ-router --ip 192.168.2.3 --ip6 fd02::3
+  docker network connect nfd-integ-DtoRouter nfd-integ-router --ip 192.168.3.2 --ip6 fd03::2
+
+  # Start SSH
+  echo "Starting SSH..."
+  for host in A B C D; do
+    docker exec -it nfd-integ-${host} service ssh start
+  done
+
+  # Set up specific nodes
+  echo "Performing container-specific configuration steps..."
+  docker exec -it nfd-integ-A /integ/docker_helpers/setup_A.sh
+  docker exec -it nfd-integ-D /integ/docker_helpers/setup_D.sh
+  docker exec -it nfd-integ-router /integ/docker_helpers/setup_router.sh
+
+  # Run tests
+  echo "Running tests..."
+  docker exec -it nfd-integ-A sudo -i -u integ /integ/docker_helpers/run_tests.sh
+
+  # Collect logs
+  echo "Collecting logs..."
+  for host in A B C D; do
+    docker exec -it nfd-integ-${host} sudo -i -u integ /integ/collect-logs.sh docker ${host}
+  done
+
+  # Stop and remove containers
+  echo "Stopping containers..."
+  for host in A B C D router; do
+    docker stop nfd-integ-${host}
+    docker rm nfd-integ-${host}
+  done
+
+  # Clean up
+  echo "Cleaning up..."
+  docker image rm nfd-integ
+  docker network rm nfd-integ-ABC-switch
+  docker network rm nfd-integ-AtoRouter
+  docker network rm nfd-integ-DtoRouter
+}
+
+run_vbox() {
+  vagrant up template
+  vagrant ssh template -c "sudo apt-get clean"
+  vagrant package --output nfd-integ.box template
+  vagrant box remove nfd-integ
+  vagrant box add --name nfd-integ nfd-integ.box
+
+  vagrant up router A B C D
+
+  vagrant ssh A -c "cd integration-tests && ./run_tests.py test_all 2>&1 | tee run.log"
+  for host in A B C D; do
+    vagrant ssh ${host} -c "integration-tests/collect-logs.sh vbox ${host}"
+  done
+
+  vagrant destroy -f
+
+  vagrant box remove nfd-integ
+  rm -f nfd-integ.box
+}
+
+case ${1} in
+  docker|vbox)
+    ;;
+  *)
+    echo "Usage: ${0} docker|vbox"
+    exit 1
+    ;;
+esac
+
+# Perform steps common to both environments
+rm -rf logs prepare temp
+mkdir -p logs/{A,B,C,D} temp
+ssh-keygen -t ecdsa -f temp/sshkey -q -N ""
+
+# Setup and run using environment-specific steps
+run_${1}
+
+# Clean up
+rm -rf prepare temp
