# Deploying Ocean subgraph ### About Ocean subgraph ### Prerequisites * A server for hosting Ocean subgraph. See [this guide](setup-server.md) on creating a server. * Docker and Docker compose are installed. Click [here](https://docs.docker.com/engine/install/) to view guide on installing docker. * Ethereum API. Aquarius uses Ethereum api for monitoring on-chain events.\ Choose any api provider of your choice. Some of the commonly used are: * [Infura](https://infura.io/) * [Alchemy](https://www.alchemy.com/) * [Moralis](https://moralis.io/) ### Create a working directory ``` mkdir ocean-subgraph cd ocean-subgraph ``` ### Create a \`.env\` file Copy the below content into the \`.env\` file and edit the values as needed. {% code title=".env" %} ``` ETHEREUM_NODE_PROVIDER_API='rinkeby:https://rinkeby.infura.io/v3/${INFURA_PROJECT_ID}' ``` {% endcode %} ### Create docker-compose file {% code title="docker-compose.yml" %} ```yaml version: '3' services: graph-node: image: graphprotocol/graph-node:v0.26.0 ports: - '9000:8000' - '8001:8001' - '8020:8020' - '8030:8030' - '8040:8040' depends_on: - ipfs - postgres environment: postgres_host: postgres postgres_user: graph-node postgres_pass: let-me-in postgres_db: graph-node ipfs: 'ipfs:5001' ethereum: ${ETHEREUM_NODE_PROVIDER_API} RUST_LOG: info ipfs: image: ipfs/go-ipfs:v0.4.23 ports: - '5001:5001' volumes: - ./data/ipfs:/data/ipfs postgres: image: postgres ports: - '5432:5432' command: ['postgres', '-cshared_preload_libraries=pg_stat_statements'] environment: POSTGRES_USER: graph-node POSTGRES_PASSWORD: let-me-in POSTGRES_DB: graph-node volumes: - ./data/postgres:/var/lib/postgresql/data ``` {% endcode %} ### Start Ocean subgraph ``` docker-compose \ -f docker-compose.yml --env-file .env \ -d \ up ```