# How to start

## Step 1: Environment Deployment

View Docker Installation section to install docker.

### Step 2: Set up the node directory

Node home directory:&#x20;

Using "\~/memo\_provider" as an example:

```
export MEFS_PATH=~/memo_provider
```

Node data storage directory: \~/memo\_user\_data as an example.

<pre><code><strong>export MEFS_DATA=~/memo_provider_data
</strong></code></pre>

The node home directory is the provider directory and the node storage directory is the provider node data storage directory.

### Step 3: **Pull image(**&#x70;rovide&#x72;**)**

```
docker pull memoio/mefs-provider:latest
```

### Step 4: Initialization（Create new wallet）

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest init --password=memoriae
```

Explanation of parameters:

\--password: Enter your provider node password, the default is memoriae.

Init: Execute the initialize command, which will generate your wallet address and generate a configuration file.

### Step 5: Get wallet address

```
ddocker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest wallet default
```

Explanation of parameters:

wallet default: Get the default wallet address

### Step 6: Top up

Starting node needs both the Memo and cMemo token.

To get the cMemo token, there is one faucet, <https://faucet.metamemo.one/>

This is the MemoChain information.

Memochain information

Chain RPC: <https://chain.metamemo.one:8501/>

Currency name: CMEMO

Chain ID: 985

Chain browser: <https://scan.metamemo.one:8080/>

To get Memo Tokens for your wallet, you can transfer some Memo Tokens\
from other wallet address which has enough Memo Tokens. The provider needs minimum 30 Memo Tokens.

Join our discussing with Slack Link:

<https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw>

### Step 7: Modify the configuration file

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.version --value=3
```

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.endPoint --value="https://chain.metamemo.one:8501"
```

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.roleContract --value="0xbd16029A7126C91ED42E9157dc7BADD2B3a81189"
```

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest bootstrap clear
```

```
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest bootstrap add "/ip4/183.240.197.189/tcp/14006/p2p/12D3KooWAMpZPwfJopVnp99oqp4zhbjE1G3LFAkcjfBuiyzyCmv7"
```

### Step 8:Start node

```
docker run -d -p 4001:4001 -v $MEFS_PATH:/root -v $MEFS_DATA:/root/data -e PASSWORD="memoriae" -e PRICE=250000 -e GROUP=3 -e SWARM_PORT=4001 -e DATA_PATH=/root/data --name mefs-provider memoio/mefs-provider:latest
```

* Please make sure your user home directory and password are the same as in the previous step.

If there is any deploy issue.  Please join the deploy-node discussing with Slack Link:

<https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw>

## Checking the running status

### Step 1: Enter the container

```
docker exec -it mefs-provider bash
```

### Step 2: Check provider information

```
mefs-provider info -a
```

```
----------- Version Information -----------
2023-05-16 09:35:49 UTC
2.7.0+api.2+git.c405cb1+2023-03-15.16:15:54CST
----------- Network Information -----------
Network ID:  12D3KooWSLvBa9QB5Qy9SPnrhuNJhCAPzVmyri9gacaUAgfpQ72q
IP:  [/ip4/172.xx.xx.xx/tcp/4001]
Type: Private
Declared Address:  {12D3KooWSLvBa9QB5Qy9SPnrhuNJhCAPzVmyri9gacaUAgfpQ72q: [/ip4/103.xx.xx.xx/tcp/24001]}
----------- Sync Information -----------
Status: true, Slot: 1530431, Time: 2023-05-16 09:35:30 UTC
Height Synced: 346322, Remote: 346322
Challenge Epoch: 81 2023-05-10 03:31:30 UTC
----------- Role and Account Information -----------
Role ID:  421
Type:  Provider
Location: Personal
Wallet:  0xDd8F2bE3C11b1b1A74404141BA8216a5010B1746
Owner:  0xDd8F2bE3C11b1b1A74404141BA8216a5010B1746

Memo Balance: 1.00 Memo
cMemo Balance: 999.90 Gwei
Storage Balance: 0 AttoMemo, Income: 0 AttoMemo
Current Pledge: 30.00 Memo, Reward: 4.05 Memo
Pledge Time: 2023-05-16 02:08:04 UTC
Historical Pledge: 30.00 Memo, Reward: 4.05 Memo
Withdraw Pledge: 0 AttoMemo, Reward: 0 AttoMemo
Pool Pledge: 416.00 Memo, Reward: 7481.01 Memo

Storage Size: 0 byte (0 B), Price: 0 (AttoMemo/Second)
Storage Deposit: 0 AttoMemo
----------- Group Information -----------
EndPoint:  https://chain.metamemo.one:8501
Contract Address:  0xbd16029A7126C91ED42E9157dc7BADD2B3a81189
Group ID:  3
Security Level:  3
Size:  2.00 GiB
Price: 2114500000 (AttoMemo/Second)
Keepers: 4, Providers: 4
----------- Store Information ----------
Service Ready:  true
Received Size:  0 B
Confirmed Size: 0 B
OnChain Size:  0 B
----------- Local Information -----------
Meta Usage: path /root/.memo-provider, used 781.37 MiB, free 277.71 GiB
Data Usage: path /root/data, used 0 B, free 277.71 GiB	
```

### Step 3: Declare

• When participating as a provider node, you need to execute the declare command (declare the public network address) for communication between nodes;

• Get your public network ip+port ready, I will show you below;

• Note: Execute the command in the container;

• The command mefs-provider info can only be executed after the sync information displays as true. Although the synchronization can be successful without doing so, it will not be able to communicate with other nodes.

```
mefs-provider net declare /ip4/X.X.X.X/tcp/4007
```

**Parameter explanation**

&#x20; X.X.X.X is your public ip address.

&#x20;Port 4007 is your public network port, and the mapped port is the host's port 4001 (-p 4001: the first port 4001 of the boot parameter).

## Check net status

### **Get local node network information**

Command description: Enter command net info to view the network id (cid), ip address and port of the current node.

```
mefs-provider net info
```

```
Network ID 12D3KooWBpPPzk9srHVVU4kkVF1RPJi9nYNgV4e6Yjjd4PGr5qrk, IP [/ip4/10.2.2.61/tcp/18003], Type: Private
```

### Get the network connection information of the node

Command description: Enter command net peers to view the network connection information of the current node.

```
mefs-provider net peers
```

```
12D3KooWMrZTqoU8febMxxxxxxxxxCeqLQy1XCU9QcjP1YWAXVi [/ip4/10.2.2.66/tcp/8003]
12D3KooWC2PmhSrU1VexxxxxxxxxtwvQuFZj3vPfjdfebAuJQtc [/ip4/10.2.2.66/tcp/8004]
12D3KooWR74K1v6naGxxxxxxxxxVS88h4X93bMnquoRiEDdLJTx [/ip4/10.2.2.61/tcp/8003]
12D3KooWSzzwJ7es1xxxxxxxxxPaqei3TUHnNZDmWTELSA7NJXQ [/ip4/10.2.2.62/tcp/18003]
12D3KooWG8PjbbN9xxxxxxxxx2oYFtjeQ8XnqvnEqfrB4AiW7eJ [/ip4/10.2.2.65/tcp/8003]
12D3KooWRjamwQtxxxxxxxxxb44AAXLNy9CB7u1FL2eC5QZekpF [/ip4/1.182.0.0/tcp/24071]
...
```

### **Connect to any node**

Command description: Enter command net connect to connect to any node; if there is any problem with your node network, please enter command net connect to connect to our public node.

```
mefs-provider net connect /ip4/10.2.x.x/tcp/8004/p2p/12D3KooWAykMmqu951ziotQiAYTN6SwfvBd1dsejSSak2jdSwryF
```

**COMMON MISTAKES**

1. ERROR: not have tx fee on chain

Solution: Check the node, both of the cMemo token balance, and the memo balance. The Memo token balance must meet the minimum amount for node startup.

2. ERROR: execution reversed: can't unpledge during 180d

The node pledge amount needs to be withdrawn 180 days after the last pledge.

3. If the log reports that the meta and state files are missing, you can perform the Recover operation.

mefs-provider recover db --path /home/mcloud/provider2/.memo-provider/meta&#x20;

mefs-provider recover db --path /home/mcloud/provider2/.memo-provider/state&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://memolabs.gitbook.io/memo/start-usage/start-provider-in-docker/how-to-start.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
