A new version of Mina Docs is coming soon! This page will be rewritten.
Connect to the Mina Network
Steps to install mina, connect to the Mina Mainnet network, and test connectivity.
High-Level Overview
- Install or update your node to the latest mina daemon.
- Start a standalone mina node.
- Stop the standalone node.
- Configure the node as a block producer, or customize, with the
~/.mina-env
file. - Start a mina node with auto-restart workflows.
- Check your connectivity.
- Monitor the mina client status.
Update your mina daemon
The first step to connecting to Mainnet is to install the latest daemon version.
Follow the steps for your operating system.
Ubuntu 18.04, 20.04 and Debian 9, 10, 11
Install the latest Stable Mina Release 1.3.1.2 or visit the GitHub Releases Page to install pre-release (Beta) builds.
To set up the new stable
package repository and install the latest version:
echo "deb [trusted=yes] http://packages.o1test.net $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/mina.list
sudo apt-get install --yes apt-transport-https
sudo apt-get update
sudo apt-get install --yes curl unzip mina-mainnet=1.3.1.2-25388a0
To verify the daemon is correctly installed:
mina version
The expected output is:
Commit 25388a0fed9695e8e9d04f75f50c2bae1c9c80db on branch master
Start a standalone mina node
Note: A known issue exists with the Hetzner hosting provider. If you are using Hetzner, follow the Networking troubleshooting guidance before you start a node.
Auto-restart flows are in place to ensure your nodes perform optimally.
Start a standalone mina node to make sure everything works.
To start a Mina node instance and connect to the live network:
mina daemon --peer-list-url https://storage.googleapis.com/seed-lists/mainnet_seeds.txt
The
--peer-list
argument specifies the the source file of seed peer addresses for the initial peer to connect to on the network. Mina is a peer-to-peer protocol, so there is no dependence on a single centralized server.If you have a key with MINA stake and want to produce blocks:
mina daemon --peer-list-url https://storage.googleapis.com/seed-lists/mainnet_seeds.txt --block-producer-key ~/keys/my-wallet
where
~/keys/my-wallet
is the path to your private key, if not the default.
For help solving common issues when first running a node, see Node Operators Troubleshooting.
Stop the standlone node
Kill the existing
mina daemon
process:Press
Ctrl+C
.
Start a mina node with auto-restart flows
Now that you've confirmed things are okay by running the standalone process, start mina with auto-restart workflows that allow the node to continue running after you log out and restart automatically when the machine restarts.
Create and customize the .mina-env
To produce blocks or otherwise customize the configuration for the mina daemon:
Create the
~/.mina-env
file.To produce blocks, add the required configuration:
MINA_PRIVKEY_PASS="My_V3ry_S3cure_Password"
LOG_LEVEL=Info
FILE_LOG_LEVEL=Debug
EXTRA_FLAGS=" --block-producer-key <BLOCK_PRODUCER_KEY_PATH>"Replace <BLOCK_PRODUCER_KEY_PATH> with the full path to your block producer private key. For example,
/home/ubuntu/keys/my-wallet
.If you do not want to produce blocks then you can keep
~/.mina-env
empty for now.To change how mina is configured, specify flags to the mina daemon process with space-separated arguments between the quotes in
EXTRA_FLAGS=""
.You can change the default values with
EXTRA_FLAGS
:- External port 8302
- Change with
-external-port
- Change with
- Mainnet package https://storage.googleapis.com/seed-lists/mainnet_seeds.txt
- Change with
--peer-list-url
- Change with
- External port 8302
After your
.mina-env
file is ready, start a Mina node instance and connect to the live network:systemctl --user daemon-reload
systemctl --user start mina
systemctl --user enable mina
sudo loginctl enable-lingerThese commands allow the node to continue running after you log out and restart automatically when the machine reboots.
Check your connectivity
Monitor the mina process that's running in the background and auto-restarting.
Check if mina
had any trouble getting started:
```sh
systemctl --user status mina
```
Stop mina gracefully and stop automatically restarting the service:
```sh
systemctl --user stop mina
```
Manually restart the mina process:
```sh
systemctl --user restart mina
```
Look at logs that show the last 1000 lines, and follow from there:
```sh
journalctl --user -u mina -n 1000 -f
```
In some cases, you might need run the following command to view the logs:
```sh
journalctl --user-unit mina -n 1000 -f
```
Docker
When running your daemon using Docker, first ensure that your private key has the correct permissions.
```sh
cd ~
chmod 700 ~/keys
chmod 600 ~/keys/my-wallet
mkdir ~/.mina-config
```
To produce blocks or otherwise customize the configuration for the mina daemon, create a ~/.mina-env
files with the following:
```sh
export MINA_PRIVKEY_PASS="My_V3ry_S3cure_Password"
LOG_LEVEL=Info
FILE_LOG_LEVEL=Debug
EXTRA_FLAGS=" --block-producer-key <BLOCK_PRODUCER_KEY_PATH>"
PEER_LIST_URL=https://storage.googleapis.com/seed-lists/mainnet_seeds.txt
```
Replace <BLOCK_PRODUCER_KEY_PATH> with the full path to your block producer private key. For example, `/home/ubuntu/keys/my-wallet`.
If you do not want to produce blocks, then provide only the PEER_LIST_URL
.
Now, run the image with your ~/.mina-config
and ~/.mina-env
files mounted into the container:
docker run --name mina -d \
-p 8302:8302 \
--restart=always \
--mount "type=bind,source=$(pwd)/.mina-env,dst=/entrypoint.d/mina-env,readonly" \
--mount "type=bind,source=$(pwd)/keys,dst=/keys,readonly" \
--mount "type=bind,source=$(pwd)/.mina-config,dst=/root/.mina-config" \
minaprotocol/mina-daemon:1.3.1.2-25388a0-bullseye-mainnet \
daemon
Checking connectivity
Follow the logs:
```sh
docker logs -f mina
```
If the node crashes, save the log output to a file:
```sh
docker logs mina > mina-log.txt
```
Post the output to the [#mentor-nodes](https://discord.com/channels/484437221055922177/746316198806814760) channel on Mina Protocol Discord or attach the full `~/.mina-config/mina.log` to a GitHub issue and link the issue in Discord.
Monitor connectivity to the network:
```sh
docker exec -it mina mina client status
```
At least 10 peers are expected. Watch the block height and the max observed block height climb.
If you encounter [Warn] Shutdown before Mina instance was created, not saving a visualization
when you attempt to run your Docker container, increase the resources that the Docker container is allowed to use.
Monitor the mina client status
Monitor the mina client status in a different terminal window.
Now that a node is started and running the Mina daemon, run:
```sh
mina client status
```
When first starting up a node, it can take up to a minute before mina client status
connects to the daemon. If you see Error: daemon not running. See mina daemon
, just a wait a bit and try again.
The expected response includes these fields:
...
Peers: Total: 4 (...)
...
Sync Status: Bootstrap
Sync Status: Bootstrap
means that the node is bootstrapping and needs to sync with the rest of the network. Be patient here as this step might take some time for the node to get all the data it needs.After a while, the node connects to more peers and then moves into
Sync Status: Catchup
which gathers the most recent blocks and state while catching up to the the highest block.When sync status reaches
Synced
and the node is connected to 1 or more peers, the node is successfully connected to the network. A corresponding daemon log shows the sync status:[Info] Mina daemon is now synced
.An issue with your port configuration can causethe
Bootstrap
state to persist for more than an hour.
Step up your game
Now that you have a fully synced node, learn about some of the more advanced features of the daemon such as Sending a payment and Staking & Delegating.
To earn MINA tokens, check out the Mina Foundation Delegation Program.