Marketplace installation and configuration

Prerequisites

Hardware requirements

The minimum hardware requirements for the server hosting the marketplace are:

  • number of cores: 1

  • RAM: 8 GB

  • disk: 50 GB

Software requirements

Other requirements

  • Blockchain RPC provider: Use a service such as Alchemy, Infura, or Chainstack. Ensure that your subscription tier supports a sufficient number of requests per second to meet the marketplace demand.

  • IPFS gateway provider: Use a gateway such as Pinata, Cloudflare, or Filebase. Verify that your subscription tier provides adequate storage capacity, file limits, and request throughput for your expected workload.

  • OE Node operational: The marketplace needs an operational OE Node to run properly.

Pre-installation steps

Make sure you review the Compatibility Matrix to ensure that the version is compatible with the other components.

Deployment steps

There are two ways of installing and running the market: using Docker Compose or Docker Engine.

Option 1 - Use Docker Compose to install and run the market

To install and configure the marketplace, perform the following steps:

  1. The marketplace repository is located here. Clone the marketplace repository (alternatively, copy only the docker-compose.yml and .env.example file from the repository).

  1. Copy .env.example to .env

  1. Edit the .env file to set the environment variables specific to your configuration (please refer to the Environment Variables chapter for how to set the variables).

  1. Start the marketplace service

The marketplace will start in a Docker container and will be accessible via HTTP on port 8008.

Note: This installs the latest available version of the market. To install a specific version, edit the docker-compose.yml file and set the desired version tag. If you do so, please verify the Compatibility Matrix.

Option 2 - Use Docker to install and run the market

To install and configure the marketplace, perform the following steps:

  1. The marketplace repository is located here. Clone the marketplace repository (alternatively, copy only the .env.example file from the repository).

  1. Copy .env.example to .env

  1. Edit the .env file to set the environment variables specific to your configuration (please refer to the Environment Variables chapter for how to set the variables).

  1. Start the marketplace service

The marketplace will start in a Docker container and will be accessible via HTTP on port 8008.

Post installation steps

  • Deploy the marketplace server behind a reverse proxy responsible for TLS termination and secure request forwarding. The proxy should enforce HTTPS for all external traffic and route decrypted requests to the internal application port.

  • Place the marketplace in a network environment that allows outbound communication to the configured OE Node. Depending on your architecture, the marketplace must also be able to reach the default SSI wallet instance and the Policy Server Proxy to function correctly.

Environment Variables

OE Node

NEXT_PUBLIC_PROVIDER_URL

Description: Sets the base URL of the OE Node used by the marketplace. This node will be used by the marketplace to encrypt the asset description at the publishing time, to decrypt the asset description at consumption time, and as the C2D environment provider.

Values: string (URL)

Example: https://ocean-node-vm3.oceanenterprise.io/

Default Value: https://ocean-node-vm3.oceanenterprise.io/

NEXT_PUBLIC_METADATACACHE_URI

Description: Sets the base URL of the OE Node where the metadata cache is stored. From this cache, the assets listed in the marketplace's catalogue are read. Set it to the same value as NEXT_PUBLIC_PROVIDER_URL.

Values: string (URL)

Example: https://ocean-node-vm3.oceanenterprise.io/

Default Value: https://ocean-node-vm3.oceanenterprise.io/

NEXT_PUBLIC_NODE_URI_INDEXED

Description: Configures the list of OE nodes whose assets will be shown in the marketplace's catalogue. Only the assets published by the OE nodes in this list will be displayed in the catalogue.

Values: JSON array of strings (URL)

Example: ["https://ocean-node-vm3.oceanenterprise.io/", ""https://ocean-node-vm3.oceanenterprise.io/""]

Default Value: the value of NEXT_PUBLIC_PROVIDER_URL variable or "https://ocean-node-vm3.oceanenterprise.io"


Blockchain RPC

NEXT_PUBLIC_NODE_URI_MAP

Description: Sets the list of blockchains to which the marketplace connects to publish and retrieve assets. Also, for each blockchain, the RPC provider URL is set.

Values: JSON map of chainId to RPC URL

Example: {"11155111":"https://eth-sepolia.g.alchemy.com/v2/<your_key>", "11155420":"https://opt-sepolia.g.alchemy.com/v2/<your_key>}

Default Value: {}

NEXT_PUBLIC_NODE_URI

Description: Sets the default RPC provider URL when no per-chain override is provided in NEXT_PUBLIC_NODE_URI_MAP.

Values: string (URL)

Example: https://eth-sepolia-testnet.api.pocket.network/

Default Value: https://eth-sepolia-testnet.api.pocket.network/


IPFS

NEXT_PUBLIC_IPFS_GATEWAY

Description: Sets the URL of the IPFS gateway used to fetch the asset's DDO.

Values: String (URL)

Example: https://ipfs.io/

Default Value: null

NEXT_PUBLIC_IPFS_UPLOAD_URL

Description: Sets the API endpoint that the marketplace uses to upload content to your configured IPFS provider. Consult your IPFS gateway’s documentation to ensure you supply the correct endpoint and required parameters.

Values: String (URL)

Example: https:/api.pinata.cloud/pinning/pinJSONToIPFS/

Default Value: null

NEXT_PUBLIC_IPFS_DELETE_URL

Description: Sets the API endpoint the marketplace uses to request content deletion from your configured IPFS provider. Check your IPFS gateway’s documentation to ensure you provide the correct endpoint and required parameters.

Values: String (URL)

Example: https://api.pinata.cloud/pinning/unpin

Default Value: null

IPFS_JWT

Description: Sets the access key to the IPFS gateway provider account used to upload and retrieve files on IPFS.

Values: string (JWT)

Example: eyJhbGciOi...

Default Value: null

NEXT_PUBLIC_IPFS_UNPIN_FILES

Description: Specifies if an existing license file published in IPFS is deleted or not when a new license file is uploaded

Values: true/false

Example: true

Default Value: false


Currencies and Market Fees

The marketplace can apply two types of fees cumulatively: a fixed fee (NEXT_PUBLIC_CONSUME_MARKET_ORDER_FEE_MAP) and a variable, percentage‑based fee (NEXT_PUBLIC_CONSUME_MARKET_FEE). Using both fee types gives the marketplace operator greater flexibility in defining the overall fee policy

NEXT_PUBLIC_ALLOWED_ERC20_ADDRESSES

Description: Defines the token address for the currency tokens accepted by the marketplace, for each blockchain the market is connected to.

Ensure that the listed addresses are supported by the O.E.C. smart contracts; unsupported entries will cause asset publishing to fail. Consult this chapter for the latest list of supported currencies. If none of the currency tokens configured in this variable is supported by the O.E.C. smart contracts, an error message is displayed when users connect to the market.

Values: JSON map of chainId to a list of token addresses.

Example: {"11155111":["0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4","0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"]} i.e., for Sepolia blockchain, the supported currencies are EURC and USDC.

Default Value: {}

NEXT_PUBLIC_CONSUME_MARKET_ORDER_FEE_MAP

Description: Defines the fixed market fee applied when an asset is purchased through the marketplace, whether for download or for use in a C2D job. The fee is expressed as an absolute number, written with the number of decimals used by each of the currency tokens defined in NEXT_PUBLIC_ALLOWED_ERC20_ADDRESSES.

Value: JSON map of chainId to a list of maps (token address to fee value).

Example: {"11155111":[{"token":"0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4","amount":"2000000"},{"token":"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238","amount":"1000000"}]} , i.e., for the Ethereum Sepolia blockchain, the applicable fixed fees are: 2 EURC for assets priced in EURC and 1 USDC for assets priced in USDC.

Default Value: {}

NEXT_PUBLIC_CONSUME_MARKET_FEE

Description: Defines the variable fee applied when an asset is purchased through the marketplace, whether for download or for use in a C2D job. The fee is represented as a decimal value (for example, 0.1 corresponds to a 10% fee, and 1 corresponds to a 100% fee). This fee is applied to all prices, regardless of the currency.

Example: 0.15, meaning that a variable fee of 15% of the asset price is applied.

Default Value: 0

NEXT_PUBLIC_MARKET_FEE_ADDRESS

Description: Defines the address where the market fees are collected.

Example: 0x0db00a90deee402256cb1df89f3e14d6b9130fdd

Default Value: OEC Fee Collector address


SSI

NEXT_PUBLIC_SSI_ENABLED

Description: Whether the SSI-based access control is active or not in the marketplace. If the OE Node used by the marketplace (the one listed in the NEXT_PUBLIC_PROVIDER_URL variable) has SSI-based access control activated (i.e., the variable POLICY_SERVER_URL is not null), then this variable must be set to true. If not, this variable must be set to false.

Values: true/false

Example: true

Default Value: false

NEXT_PUBLIC_SSI_POLICY_SERVER

Description: Used only if NEXT_PUBLIC_SSI_ENABLED=true. Sets the base URL of the Policy Server used by the marketplace. The value must be the same as that set in the POLICY_SERVER_URL of the node used by the marketplace (the one listed in the NEXT_PUBLIC_PROVIDER_URL variable)

Values: string (URL)

Example: https://ocean-node-vm3.oceanenterprise.io

Default Value: null

NEXT_PUBLIC_SSI_WALLET_API

Description: Used only if NEXT_PUBLIC_SSI_ENABLED=true. Sets the base URL of the default SSI wallet instance. When users log in to the marketplace, this is the default SSI wallet to which they connect, in case they don't provide their own wallet instance URL.

Values: string (URL)

Example: https://wallet.demo.oceanenterprise.io

Default Value: null

NEXT_PUBLIC_SSI_DEFAULT_POLICIES_URL

Description: Used only if NEXT_PUBLIC_SSI_ENABLED=true. Sets the URL from where the list of default static policies that will be applied to all requested Verifiable Credentials is read. The URL must contain a list of valid static policies, one policy per line. For reference, see https://raw.githubusercontent.com/OceanProtocolEnterprise/policy-server/refs/heads/main/default-verification-policies

Values: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/policy-server/refs/heads/main/default-verification-policies

Default Value: null

NEXT_PUBLIC_OPA_SERVER_URL

Description: Used only if NEXT_PUBLIC_SSI_ENABLED=true. Sets the base URL of the OPA Server used by the verifier for custom SSI policies evaluation.

Values: string (URL)

Example: http://ocean-node-vm3.oceanenterprise.io:8181

Default Value: null


Dataspace

NEXT_PUBLIC_DATASPACE

Description: Sets the identifier of the dataspace associated with the marketplace. This has two effects:

  • All assets published through the marketplace will automatically receive this dataspace identifier.

  • The marketplace will display only the assets whose dataspace identifier matches this value.

By default, the value of this variable is set to null. In this state, no filtering is applied to the assets displayed, and no dataspace identifier is added to an asset’s description

Values: string

Example: "oceanenteprise"

Default Value: null

Market-level authentication

NEXT_PUBLIC_AUTH_ENABLED

Description: Sets the marketplace user authentication. If true, user authentication is enabled; if false, user authentication is disabled.

Values: boolean

Example: true

Default Value: false

NEXT_PUBLIC_AUTH_PROVIDER

Description: If marketplace authentication is enabled, this variable sets the authentication method. Currently, the only accepted method is OIDC.

Values: string

Example: oidc

Default Value: oidc

NEXT_PUBLIC_OIDC_ISSUER

Description: Sets the URL of the OIDC Identity Provider that verifies user identity and issues security tokens (ID tokens) for authentication.

Values: string (URL)

Example: https://idpserver.oceanenteprise.io/application/o/market-demo

Default Value: null

NEXT_PUBLIC_OIDC_CLIENT_ID

Description: Sets OIDC client ID for the marketplace application. This value is defined on the OIDC Identity Provider when the configuration for the marketplace application is created.

Values: string

Example: 4abc8afdda73b95545b9a

Default Value: null

OIDC_CLIENT_SECRET

Description: Sets OIDC client secret for the marketplace application. This value is defined on the OIDC Identity Provider when the configuration for the marketplace application is created.

Values: string

Example: 4cec8afdse3401j438943u4

Default Value: null

NEXT_PUBLIC_OIDC_SIGNUP_FLOW

Description: Sets the name of the sign-up flow defined in the Authentik server that will be run to register users to the marketplace.

Value: string

Example: demo-market-signup-flow

Default Value: null

NEXT_PUBLIC_IMPRINT_URL

Description: Sets the URL from where the Imprint document will be read. The document must be in Markdown format. If this environment variable is set to null, the marketplace will use the default OEC Imprint document.

Value: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/legaldocs/refs/heads/main/market/Imprint.md

Default Value: null

NEXT_PUBLIC_TC_URL

Description: Sets the URL from where the Terms and Conditions document will be read. The document must be in Markdown format. If this environment variable is set to null, the marketplace will use the default OEC Terms and Conditions document.

Value: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/legaldocs/refs/heads/main/market/TermsAndConditions.md

Default Value: null

NEXT_PUBLIC_PP_URL

Description: Sets the URL from where the Privacy Policy document will be read. The document must be in Markdown format. If this environment variable is set to null, the marketplace will use the default OEC Privacy Policy document.

Value: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/legaldocs/refs/heads/main/market/PrivacyPolicy.md

Default Value: null

NEXT_PUBLIC_CP_URL

Description: Sets the URL from where the Cookie Policy document will be read. The document must be in Markdown format. If this environment variable is set to null, the marketplace will use the default OEC Cookie Policy document.

Value: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/legaldocs/refs/heads/main/market/CookiePolicy.md

Default Value: null

NEXT_PUBLIC_DPUA_URL

Description: Sets the URL from where the Data Portal Usage Agreement document will be read. The document must be in Markdown format. If this environment variable is set to null, the marketplace will use the default OEC Data Portal Usage Agreement document.

Value: string (URL)

Example: https://raw.githubusercontent.com/OceanProtocolEnterprise/legaldocs/refs/heads/main/market/DataPortalUsageAgreement.md

Default Value: null

Others

NEXT_PUBLIC_ENCRYPT_ASSET

Description: Defines whether the asset's DDO is encrypted at publishing time

Values: true/false

Example: true

Default Value: false

NEXT_PUBLIC_HIDE_ONBOARDING_MODULE_BY_DEFAULT

Description: Defines whether or not the onboarding guide is hidden for new users. By default, the onboarding guide is displayed. By setting this variable to true, The onboarding guide is not displayed by default.

Value: true/false

Example: true

Default Value: false

NEXT_PUBLIC_SSI_UI_URL

Description: Defines the URL of the SSI wallet user interface provided by the marketplace operator. This URL is used in the onboarding guide to direct participants to the interface where they can add the DIDs and VCs required to access dataspace assets.

Value: string (URL)

Example: https://wallet2-ui.oceanenterprise.io

Default Value: null

Last updated