2018-09-27 11:30:07 +02:00
|
|
|
#!/usr/bin/env bash
|
2020-09-08 18:23:10 +02:00
|
|
|
#
|
2023-02-22 12:18:02 +01:00
|
|
|
# Copyright (c) 2023 Ocean Protocol contributors
|
2019-03-11 15:47:16 +01:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
2020-09-08 18:23:10 +02:00
|
|
|
#
|
|
|
|
# Usage: ./start_ocean.sh
|
|
|
|
#
|
|
|
|
|
2019-10-10 12:28:19 +02:00
|
|
|
IP="localhost"
|
|
|
|
optspec=":-:"
|
|
|
|
while getopts "$optspec" optchar; do
|
|
|
|
case "${optchar}" in
|
|
|
|
-)
|
|
|
|
case "${OPTARG}" in
|
|
|
|
exposeip)
|
|
|
|
IP="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
|
|
|
|
;;
|
|
|
|
esac;;
|
|
|
|
esac
|
|
|
|
done
|
2018-09-27 11:30:07 +02:00
|
|
|
|
2019-01-28 11:45:47 +01:00
|
|
|
set -e
|
2019-01-28 11:36:00 +01:00
|
|
|
|
2020-09-08 18:23:10 +02:00
|
|
|
# Patch $DIR if spaces
|
2018-11-29 12:32:38 +01:00
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
2018-12-19 10:52:44 +01:00
|
|
|
DIR="${DIR/ /\\ }"
|
2018-11-29 12:32:38 +01:00
|
|
|
COMPOSE_DIR="${DIR}/compose-files"
|
2018-12-05 10:46:50 +01:00
|
|
|
|
2020-09-08 18:23:10 +02:00
|
|
|
# Default versions of Aquarius, Provider
|
2019-05-06 09:05:04 +02:00
|
|
|
|
2024-03-18 14:10:37 +01:00
|
|
|
export CONTRACTS_VERSION=${CONTRACTS_VERSION:-v2.0.4}
|
2023-11-15 12:04:43 +01:00
|
|
|
export TYPESENSE_VERSION=${TYPESENSE_VERSION:-0.25.1}
|
2022-02-03 18:19:06 +01:00
|
|
|
|
2024-07-04 13:48:35 +02:00
|
|
|
export GRAPH_NODE_VERSION=${GRAPH_NODE_VERSION:-v0.33.0}
|
|
|
|
|
2024-01-24 14:57:47 +01:00
|
|
|
export OPERATOR_SERVICE_VERSION=${OPERATOR_SERVICE_VERSION:-oceanprotocol/operator-service:v4main}
|
|
|
|
export OPERATOR_ENGINE_VERSION=${OPERATOR_ENGINE_VERSION:-oceanprotocol/operator-engine:v4main}
|
|
|
|
export POD_CONFIGURATION_VERSION=${POD_CONFIGURATION_VERSION:-oceanprotocol/pod-configuration:v4main}
|
|
|
|
export POD_PUBLISHING_VERSION=${POD_PUBLISHING_VERSION:-oceanprotocol/pod-publishing:v4main}
|
|
|
|
export WAIT_FOR_C2DIMAGES=${WAIT_FOR_C2DIMAGES:-false}
|
|
|
|
|
2018-12-05 10:46:50 +01:00
|
|
|
export PROJECT_NAME="ocean"
|
2022-01-14 11:31:01 +01:00
|
|
|
export FORCEPULL="false"
|
2018-12-17 10:22:39 +01:00
|
|
|
|
2022-09-22 16:23:07 +02:00
|
|
|
|
|
|
|
# Export LOG LEVEL
|
2023-11-15 12:04:43 +01:00
|
|
|
export NODES_LOG_LEVEL=${AQUARIUS_LOG_LEVEL:-INFO}
|
2022-09-22 16:23:07 +02:00
|
|
|
|
2020-09-09 18:25:24 +02:00
|
|
|
# Export User UID and GID
|
|
|
|
export LOCAL_USER_ID=$(id -u)
|
|
|
|
export LOCAL_GROUP_ID=$(id -g)
|
|
|
|
|
2018-12-05 10:46:50 +01:00
|
|
|
|
2018-11-30 10:36:55 +01:00
|
|
|
# Specify the ethereum default RPC container provider
|
2019-10-10 12:28:19 +02:00
|
|
|
if [ ${IP} = "localhost" ]; then
|
2020-07-15 10:28:54 +02:00
|
|
|
export NETWORK_RPC_HOST="172.15.0.3"
|
2019-10-10 12:28:19 +02:00
|
|
|
else
|
2020-07-15 10:28:54 +02:00
|
|
|
export NETWORK_RPC_HOST=${IP}
|
2019-10-10 12:28:19 +02:00
|
|
|
fi
|
2020-07-15 10:28:54 +02:00
|
|
|
export NETWORK_RPC_PORT="8545"
|
|
|
|
export NETWORK_RPC_URL="http://"${NETWORK_RPC_HOST}:${NETWORK_RPC_PORT}
|
2020-09-09 18:25:24 +02:00
|
|
|
# Use this seed on ganache to always create the same wallets
|
2020-07-06 19:18:07 +02:00
|
|
|
export GANACHE_MNEMONIC=${GANACHE_MNEMONIC:-"taxi music thumb unique chat sand crew more leg another off lamp"}
|
2023-08-24 16:38:04 +02:00
|
|
|
export GANACHE_HARDFORK=${GANACHE_HARDFORK:-"istanbul"}
|
2020-09-09 18:25:24 +02:00
|
|
|
# Ocean contracts
|
|
|
|
export OCEAN_HOME="${HOME}/.ocean"
|
|
|
|
export CONTRACTS_OWNER_ROLE_ADDRESS="${CONTRACTS_OWNER_ROLE_ADDRESS}"
|
2020-10-12 18:16:34 +02:00
|
|
|
export DEPLOY_CONTRACTS=true
|
2024-07-04 13:48:35 +02:00
|
|
|
export DEPLOY_SUBGRAPH=true
|
2021-04-30 14:12:13 +02:00
|
|
|
export OCEAN_ARTIFACTS_FOLDER="${OCEAN_HOME}/ocean-contracts/artifacts"
|
2021-10-27 17:26:28 +02:00
|
|
|
mkdir -p ${OCEAN_ARTIFACTS_FOLDER}
|
2022-01-14 11:31:01 +01:00
|
|
|
export OCEAN_C2D_FOLDER="${OCEAN_HOME}/ocean-c2d/"
|
|
|
|
mkdir -p ${OCEAN_C2D_FOLDER}
|
2024-07-04 13:48:35 +02:00
|
|
|
export OCEAN_SUBGRAPH_FOLDER="${OCEAN_HOME}/ocean-subgraph/"
|
|
|
|
rm -f "${OCEAN_SUBGRAPH_FOLDER}/ready"
|
|
|
|
mkdir -p ${OCEAN_SUBGRAPH_FOLDER}
|
|
|
|
|
2020-09-15 10:07:35 +02:00
|
|
|
export ADDRESS_FILE="${OCEAN_ARTIFACTS_FOLDER}/address.json"
|
|
|
|
echo "export ADDRESS_FILE=${ADDRESS_FILE}"
|
2022-01-14 11:31:01 +01:00
|
|
|
|
|
|
|
#certs folder
|
|
|
|
export OCEAN_CERTS_FOLDER="${OCEAN_HOME}/ocean-certs/"
|
|
|
|
mkdir -p ${OCEAN_CERTS_FOLDER}
|
|
|
|
# copy certs
|
|
|
|
cp -r ./certs/* ${OCEAN_CERTS_FOLDER}
|
2020-09-09 18:25:24 +02:00
|
|
|
# Specify which ethereum client to run or connect to: development
|
2020-10-12 15:47:51 +02:00
|
|
|
export CONTRACTS_NETWORK_NAME="development"
|
2018-12-27 15:14:20 +01:00
|
|
|
|
2022-02-03 09:40:12 +01:00
|
|
|
export IPFS_GATEWAY=http://172.15.0.16:5001
|
2022-02-03 12:18:38 +01:00
|
|
|
export IPFS_HTTP_GATEWAY=http://172.15.0.16:8080/ipfs/
|
2020-06-26 17:37:46 +02:00
|
|
|
|
2023-11-15 12:04:43 +01:00
|
|
|
export NODE1_PRIVATE_KEY=0xfd5c1ccea015b6d663618850824154a3b3fb2882c46cefb05b9a93fea8c3d215
|
|
|
|
export NODE2_PRIVATE_KEY=0xc852b55146fd168ec3d392bbd70988c18463efa460a395dede376453aca1180e
|
2019-07-18 15:41:41 +02:00
|
|
|
|
2019-12-10 14:48:40 +01:00
|
|
|
|
2018-10-10 12:21:56 +02:00
|
|
|
# colors
|
|
|
|
COLOR_R="\033[0;31m" # red
|
|
|
|
COLOR_G="\033[0;32m" # green
|
|
|
|
COLOR_Y="\033[0;33m" # yellow
|
|
|
|
COLOR_B="\033[0;34m" # blue
|
|
|
|
COLOR_M="\033[0;35m" # magenta
|
|
|
|
COLOR_C="\033[0;36m" # cyan
|
2018-10-02 13:38:55 +02:00
|
|
|
|
2018-10-10 12:21:56 +02:00
|
|
|
# reset
|
|
|
|
COLOR_RESET="\033[00m"
|
2018-09-27 13:15:43 +02:00
|
|
|
|
2018-10-10 12:21:56 +02:00
|
|
|
function show_banner {
|
|
|
|
local output=$(cat .banner)
|
|
|
|
echo -e "$COLOR_B$output$COLOR_RESET"
|
|
|
|
echo ""
|
|
|
|
}
|
2018-09-27 13:15:43 +02:00
|
|
|
|
2019-03-28 23:07:20 +01:00
|
|
|
|
2019-03-11 15:47:16 +01:00
|
|
|
function check_if_owned_by_root {
|
|
|
|
if [ -d "$OCEAN_HOME" ]; then
|
|
|
|
uid=$(ls -nd "$OCEAN_HOME" | awk '{print $3;}')
|
|
|
|
if [ "$uid" = "0" ]; then
|
|
|
|
printf $COLOR_R"WARN: $OCEAN_HOME is owned by root\n"$COLOR_RESET >&2
|
|
|
|
else
|
2020-07-15 10:28:54 +02:00
|
|
|
uid=$(ls -nd "$OCEAN_ARTIFACTS_FOLDER" | awk '{print $3;}')
|
2019-03-11 15:47:16 +01:00
|
|
|
if [ "$uid" = "0" ]; then
|
2020-07-15 10:28:54 +02:00
|
|
|
printf $COLOR_R"WARN: $OCEAN_ARTIFACTS_FOLDER is owned by root\n"$COLOR_RESET >&2
|
2019-03-11 15:47:16 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2019-04-03 09:26:06 +02:00
|
|
|
|
2019-06-28 16:27:28 +02:00
|
|
|
|
2020-09-11 08:25:55 +02:00
|
|
|
function clean_local_contracts {
|
|
|
|
rm -f "${OCEAN_ARTIFACTS_FOLDER}/ready"
|
|
|
|
rm -f "${OCEAN_ARTIFACTS_FOLDER}/*.json"
|
|
|
|
}
|
|
|
|
|
2019-03-11 15:47:16 +01:00
|
|
|
check_if_owned_by_root
|
2018-10-10 12:21:56 +02:00
|
|
|
show_banner
|
2018-10-02 13:13:10 +02:00
|
|
|
|
2018-11-29 12:32:38 +01:00
|
|
|
COMPOSE_FILES=""
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/network_volumes.yml"
|
2020-06-28 14:15:53 +02:00
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/ganache.yml"
|
2023-11-15 12:04:43 +01:00
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/dashboard.yml"
|
2020-09-09 18:25:24 +02:00
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/ocean_contracts.yml"
|
2023-11-15 12:04:43 +01:00
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/ipfs.yml"
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/typesense.yml"
|
|
|
|
|
|
|
|
|
2020-09-09 18:25:24 +02:00
|
|
|
|
2019-01-16 16:06:27 +01:00
|
|
|
DOCKER_COMPOSE_EXTRA_OPTS="${DOCKER_COMPOSE_EXTRA_OPTS:-}"
|
|
|
|
|
2018-10-10 12:21:56 +02:00
|
|
|
while :; do
|
|
|
|
case $1 in
|
2019-10-10 12:28:19 +02:00
|
|
|
--exposeip)
|
|
|
|
;;
|
2018-12-05 10:46:50 +01:00
|
|
|
#################################################
|
2019-01-16 16:06:27 +01:00
|
|
|
# Disable color
|
|
|
|
#################################################
|
|
|
|
--no-ansi)
|
|
|
|
DOCKER_COMPOSE_EXTRA_OPTS+=" --no-ansi"
|
|
|
|
unset COLOR_R COLOR_G COLOR_Y COLOR_B COLOR_M COLOR_C COLOR_RESET
|
|
|
|
;;
|
2018-12-17 10:22:39 +01:00
|
|
|
--force-pull)
|
2019-01-16 16:06:27 +01:00
|
|
|
export FORCEPULL="true"
|
2019-02-28 12:18:53 +01:00
|
|
|
printf $COLOR_Y'Pulling the latest revision of the used Docker images...\n\n'$COLOR_RESET
|
2018-12-17 10:22:39 +01:00
|
|
|
;;
|
2020-06-28 14:22:44 +02:00
|
|
|
--no-dashboard)
|
|
|
|
COMPOSE_FILES="${COMPOSE_FILES/ -f ${COMPOSE_DIR}\/dashboard.yml/}"
|
|
|
|
printf $COLOR_Y'Starting without Dashboard ...\n\n'$COLOR_RESET
|
|
|
|
;;
|
2020-10-21 16:54:14 +02:00
|
|
|
--skip-deploy)
|
|
|
|
export DEPLOY_CONTRACTS=false
|
|
|
|
printf $COLOR_Y'Ocean contracts will not be deployed, the last deployment (if any) will be intact ...\n\n'$COLOR_RESET
|
|
|
|
;;
|
2024-01-24 14:57:47 +01:00
|
|
|
--with-registry)
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/registry.yml"
|
|
|
|
printf $COLOR_Y'Starting with Registry...\n\n'$COLOR_RESET
|
|
|
|
;;
|
2024-07-04 13:48:35 +02:00
|
|
|
--with-thegraph)
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/thegraph.yml"
|
|
|
|
printf $COLOR_Y'Starting with TheGraph...\n\n'$COLOR_RESET
|
|
|
|
;;
|
2024-01-24 14:57:47 +01:00
|
|
|
--with-c2d)
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/registry.yml"
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/ipfs.yml"
|
|
|
|
COMPOSE_FILES+=" -f ${COMPOSE_DIR}/c2d.yml"
|
|
|
|
printf $COLOR_Y'Starting with C2D...\n\n'$COLOR_RESET
|
|
|
|
;;
|
2018-12-05 10:46:50 +01:00
|
|
|
#################################################
|
|
|
|
# Cleaning switches
|
|
|
|
#################################################
|
2018-11-30 10:55:15 +01:00
|
|
|
--purge)
|
2018-12-17 10:22:39 +01:00
|
|
|
printf $COLOR_R'Doing a deep clean ...\n\n'$COLOR_RESET
|
2024-08-06 10:00:28 +02:00
|
|
|
eval docker compose --project-name=$PROJECT_NAME "$COMPOSE_FILES" down
|
2018-12-05 12:16:18 +01:00
|
|
|
docker network rm ${PROJECT_NAME}_default || true
|
2018-12-17 10:22:39 +01:00
|
|
|
docker network rm ${PROJECT_NAME}_backend || true
|
2018-11-15 11:02:31 +01:00
|
|
|
;;
|
2018-10-10 12:21:56 +02:00
|
|
|
--) # End of all options.
|
2018-11-29 12:32:38 +01:00
|
|
|
shift
|
|
|
|
break
|
|
|
|
;;
|
2018-10-10 12:21:56 +02:00
|
|
|
-?*)
|
2018-11-29 12:32:38 +01:00
|
|
|
printf $COLOR_R'WARN: Unknown option (ignored): %s\n'$COLOR_RESET "$1" >&2
|
|
|
|
break
|
|
|
|
;;
|
2018-10-10 12:21:56 +02:00
|
|
|
*)
|
2021-10-29 14:37:41 +02:00
|
|
|
printf $COLOR_Y'Starting Ocean V4...\n\n'$COLOR_RESET
|
2020-09-11 08:25:55 +02:00
|
|
|
[ ${DEPLOY_CONTRACTS} = "true" ] && clean_local_contracts
|
2019-08-08 10:18:49 +02:00
|
|
|
[ ${FORCEPULL} = "true" ] && eval docker-compose "$DOCKER_COMPOSE_EXTRA_OPTS" --project-name=$PROJECT_NAME "$COMPOSE_FILES" pull
|
2024-08-06 10:15:56 +02:00
|
|
|
eval docker compose "$DOCKER_COMPOSE_EXTRA_OPTS" --project-name=$PROJECT_NAME "$COMPOSE_FILES" up --remove-orphans
|
2018-10-10 12:21:56 +02:00
|
|
|
break
|
|
|
|
esac
|
|
|
|
shift
|
|
|
|
done
|