Running your own client node
A node in Public Mint is a crucial part of the network. The network operates in the bases of a Peer-to-Peer (P2P) network, thus all nodes have similar responsibilities, requirements and they need to talk to each other. Therefore, it is crucial, if you operate a Public Mint node, to follow all the guidance in this page.
- 4GB of RAM
- 2 vCPU
For instance, in Amazon Web Services a t3.medium EC2 type fits the requirements.
Syncing Public Mint MaiNet or TestNet requires 50GB for a full sync. Thus, we recommend 50GB of available disk space.
The disk used will tend to grow in the future, following the grow of the blockchain history. Thus, this requirement will be adjusted accordingly.
Works for Linux, Unix, Windows & macOS.
Public Mint client requires Java 11+; earlier versions are not supported. Public Mint client is currently supported only on 64-bit versions of Windows, and requires a 64-bit version of JDK/JRE. We recommend that you also remove any 32-bit JDK/JRE installations.
Linux Open File Limit
If a Too many open files RocksDB exception occurs, increase the maximum number of open files allowed using ulimit.
Filename | Release number | Release date | Release notes |
1.0.3 | 2020/01/21 | First version |
Unpack the downloaded files and change into the
publicmint-<release>
directory.Display Public Mint command line help to confirm installation:
Linux/macOS
bin/publicmint --help
Windows
bin\publicmint --help
Take into account the minimum system requirements.
When connecting to a network other than the network previously connected to, you must either delete the local block data or use the --data-path option to specify a different data directory.
To delete the local block data, delete the database directory in the
publicmint/build/distribution/publicmint-<version>
directory.The client specifies the genesis configuration, and sets the network ID and bootnodes when connecting to the different Public Mint networks.
To operate your node on PublicMint TestNet you need to specify
--network=publicmint_testnet
to use the correct genesis configuration. To operate your node in PublicMint MainNet use --network=publicmint_mainnet
Recap
For TestNet use:
--network=publicmint_testnet
For MainNet use: --network=publicmint_mainnet
Or you can use the configuration file to specify the network.
To specify command line options in a file, use a TOML configuration file.
The configuration file can be saved and reused across node startups. To specify the configuration file, use the --config-file option.
To override an option specified in the configuration file, specify the same option on the command line. If an option is specified in multiple places, the order of priority is command line, configuration file.
An example of a configuration file to run a Public Mint node:
data-path="~/publicmint_data" # Path to store blockchain history
# Network
network="publicmint_testnet"
# Enable HTTP and WS on 127.0.0.1 host (HTTP port: 8545, WS port: 8546)
rpc-http-enabled=true
rpc-ws-enabled=true
# Specifies domain URLs for CORS validation
# Domain URLs must be enclosed in double quotes and comma-separated
# Domains that can access the node using JSON-RPC
# If your client interacts with your client using a browser app (e.g. Remix or block explorer), you must whitelist the client domains
rpc-http-cors-origins=["localhost", "127.0.0.1"]
# Comma-separated list of hostnames to allow access to the JSON-RPC API
# By default, access from localhost and 127.0.0.1 is accepted
host-whitelist=["localhost", "127.0.0.1"]
Starting client with a configuration file:
bin/publicmint --config-file=/home/me/publicmint_node/config.toml
The node by default is running on host 127.0.0.1 and the HTTP port is 8545 and Web Service port is 8546
Ports must be exposed appropriately to enable communication. An example port configuration for a node on AWS is:

30303 is the default P2P port, that can be specified using
--p2p-port
.If you have started the client with the
--rpc-http-enabled
option, use cURL to call web3_clientVersion to confirm the node is running.curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://127.0.0.1:8545
A Docker image is provided to run a Public Mint node in a Docker container.
Use this Docker image to run a single Public Mint node without installing Public Mint client.
- MacOS or Linux
The Docker image does not run on Windows
Take into account the minimum system requirements.
Expose ports for P2P peer discovery, and HTTP and WebSockets JSON-RPC. Exposing the ports is required to use the default ports or the ports specified using --rpc-http-port, --p2p-port and --rpc-ws-port options.
To run and expose local ports for access:
docker run -p <localportJSON-RPC>:8545 -p <localportWS>:8546 -p <localportP2P>:30303 publicmint/client:latest --rpc-http-enabled --rpc-ws-enabled docker run -p <localportJSON-RPC>:8545 -p <localportWS>:8546 -p <localportP2P>:30303 publicmint/client:latest --rpc-http-enabled --rpc-ws-enabled --network=publicmint_testnet
Example
To enable JSON-RPC HTTP calls to 127.0.0.1:8545 and P2P discovery on 127.0.0.1:13001:
docker run -p 8545:8545 -p 13001:30303 publicmint/client:latest --rpc-http-enabled
Important
Do not mount a volume at the default data path (/opt/publicmint). Mounting a volume at the default data path interferes with the operation of the node and prevents it from safely launching.
To run a node that maintains the node state (key and database), [--data-path] must be set to a location other than /opt/publicmint and a storage volume mounted at that location.
To run a node on TestNet with the Web Service and HTTP JSON-RPC service enabled:
docker run -p 8545:8545 -p 8546:8546 -p 30303:30303 --mount type=bind,source=/<myvolume/user/publicmint_testnet>,target=/var/lib/publicmint publicmint/client:latest --rpc-http-enabled --rpc-ws-enabled --network=publicmint_testnet --data-path=/var/lib/publicmint
When you’re done running nodes, you can shut down the node container without deleting resources or you can delete the container after stopping it. Run docker container ls and docker volume ls to obtain the container and volume names.
To stop a container:
docker stop <container-name>
To delete a container:
docker rm <container-name>
If Public Mint client is not working as expected, here are some things to check or try.
If you are receiving a Host not authorised error when attempting to access the JSON-RPC API, ensure --host-whitelist includes the host from which you are sending the RPC or * - that allows any host to access your node JSON-RPC API.
If nodes are not communicating, ensure the required ports are open.
If your nodes are running in AWS, check you have appropriate SecurityGroups to allow access to the required ports.