DiskNet [May 16th Testnet 2023] **Now Offline**

Thanks. That worked great.

For anyone that is running a Linux system with systemd, I updated my safe_systemd script from the last Testnet. Feel free to try it. I added a check to make sure the specified directories have write access. It is looking for the safenode binary in /usr/local/bin. I didn’t include a download and unzip because I don’t want to do a bunch of checks for different tools in case people don’t have curl/wget/unzip/etc.

#!/bin/bash

if [ "$EUID" -ne 0 ]
  then echo "Please run using sudo"
  exit
fi

[ -f /usr/local/bin/safenode ] || { echo "Error: Please make sure the safenode executable is in /usr/local/bin"; exit 1;}

read -p "Enter the desired number of nodes: " nodenum

re='^[0-9]+$'
if ! [[ $nodenum =~ $re ]] ; then
  echo "Error: Not a valid integer" >&2; exit 1
fi

if [[ $nodenum < 1 ]] ; then
  echo "Error: A number greater than 1 must be entered"
fi

echo ""
echo "Directories will be created for the Safe data and logs."
read -p "Enter the desired parent directory for Safe data: " rootdir
read -p "Enter the desired parent directory for Safe logs: " logdir

echo "$nodenum Safe nodes will be created."
read -p "Continue (Y/N) " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1

if ! [[ $(getent group safenode) ]]; then
  groupadd -g 10500 safenode
fi

if ! [[ $(getent passwd safenode) ]]; then
  useradd -u 10500 -g safenode -c "SafeNode User" -M safenode
  usermod -L safenode
fi

if read -a rootVals < <(stat -Lc "%U %G %A" $rootdir) && (
    ( [ "$rootVals" == "safenode" ] && [ "${rootVals[2]:2:1}" == "w" ] ) ||
    ( [ "${rootVals[2]:8:1}" == "w" ] ) ||
    ( [ "${rootVals[2]:5:1}" == "w" ] && (
        gMember=($(groups safenode)) &&
        [[ "${gMember[*]:2}" =~ ^(.* |)${rootVals[1]}( .*|)$ ]]
    ) ) )
then
  :
else
  echo 'Safe user does not have access to the root directory. Before running again, make sure uid or gid 10500 has access to the directory. Cleaning up.'
  userdel safenode
  exit 1
fi

if read -a logVals < <(stat -Lc "%U %G %A" $logdir) && (
    ( [ "$logVals" == "safenode" ] && [ "${logVals[2]:2:1}" == "w" ] ) ||
    ( [ "${logVals[2]:8:1}" == "w" ] ) ||
    ( [ "${logVals[2]:5:1}" == "w" ] && (
        gMember=($(groups safenode)) &&
        [[ "${gMember[*]:2}" =~ ^(.* |)${logVals[1]}( .*|)$ ]]
    ) ) )
then
  :
else
  echo 'Safe user does not have access to the log directory. Before running again, make sure uid or gid 10500 has access to the directory. Cleaning up.'
  userdel safenode
  exit 1
fi

while [[ $nodenum > 0 ]]
do
  cat >> /etc/systemd/system/safenode$nodenum.service << END
[Unit]
Description="Safe Node $nodenum"

[Service]
ExecStart=/usr/local/bin/safenode --root-dir=$rootdir/safenode$nodenum --log-dir=$logdir/safenode$nodenum
User=safenode
Group=safenode
Environment="SAFE_PEERS=/ip4/52.56.104.157/udp/12000/quic-v1/p2p/12D3KooWGxWnfChkZTLTqFCkDMafTkpteBvSdJd3bYdA29q3H7GB,/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU,/ip4/13.40.28.114/udp/12000/quic-v1/p2p/12D3KooWBsWbQPhZYCJgCDn4iYqk8AArnmPrkzUBcEzDYkAjR3md,/ip4/13.40.72.208/udp/12000/quic-v1/p2p/12D3KooWFr9Df8o8tpj2WZvfUU4p3xsTteYdEsi26rwBmwBvjSDF"

[Install]
WantedBy=multi-user.target
END

  systemctl daemon-reload
  systemctl enable safenode$nodenum
  systemctl start safenode$nodenum
  ((nodenum--))
done

echo "Your Safe Node(s) should now be running."
echo "You can view their status using 'systemctl status safenode<number>'"

exit 0

Here is the cleanup script:

#!/bin/bash

if [ "$EUID" -ne 0 ]
  then echo "Please run as root"
  exit
fi

echo "This will stop and remove all nodes from systemd."
read -p "Continue (Y/N) " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1

nodesrem=true
node=1

while [ "$nodesrem"  = "true" ]
do
  systemctl list-unit-files |grep -q "^safenode$node.service" || nodesrem=false
  if [ "$nodesrem" = "true" ]
  then
    ((node++))
  fi
done

((node--))

while [[ $node > 0 ]]
do
  systemctl stop safenode$node
  systemctl disable safenode$node
  rm /etc/systemd/system/safenode$node.service
  ((node--))
done

systemctl daemon-reload
userdel safenode

echo "The nodes should be stopped and the user removed. You will need to manually remove the data and log directories if desired."

exit 0
6 Likes

Perhaps this should be at the beginning of the post, because that was just what I wanted to do – run a node behind a LTE router.

3 Likes

I ran JoshNet fine but this one won’t…

rm -rf /tmp/safenode && ./safenode --root-dir=/tmp/safenode
./safenode: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./safenode)
./safenode: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./safenode)
./safenode: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./safenode)

And it’s time for my PIMMs! :exploding_head:

EDIT: fixed using rustup update which seems odd.

2 Likes

This is unfortunately a bug in the client code, which expects all the nodes in the close group (8 of them) to return with a thumbs up. Even if one of the request fails, we get this error.
There is a PR that should get in for the next testnet, and it will address this issue.

3 Likes

It seems all my nodes stopped again. They all timed out or something. I was receiving put requests and storing data, so my nodes were active and working before the timeouts.

1 Like

Is it OK to run multiple nodes from one server/IP?

5 Likes

It was last time.

1 Like

Just upped successfully a 200MB file with my Win machine. Now trying 600MB.

Unfortunately not for sharing, just some of my work stuff.

5 Likes

I’m hanging here

safe --peer=/ip4/52.56.104.157/udp/12000/quic-v1/p2p/12D3KooWGxWnfChkZTLTqFCkDMafTkpteBvSdJd3bYdA29q3H7GB files upload minion3.jpg 
Removed old logs from directory: "/tmp/safe-client.log"
Starting logging to directory: "/tmp/safe-client.log"
Instantiating a SAFE client...

Edit - that’s from a cloud Ubuntu client. Works fine from home Mint client.

It should be fine if you use different root_dir and log_dir for each instance.

6 Likes

Perhaps try with the export trick instead of passing --peer

7 Likes

Same - I think I’ll have to clear everything out and start again

2 Likes

Like lightening, another test-net strikes! Thanks so much team. The dream is real. Someday I might have some time to participate. Cheers

11 Likes

Home network do not equals NAT!
Also still no answer to my question about how to check if node is connected fine (if my firewall settings are ok).
Where is my dislike button? :face_with_diagonal_mouth:

Well it worked once (client uploading a dir) and now it’s back to hanging again. Strange.

This?

[2023-05-16T17:20:15.209361Z TRACE safenode::client::event] Error occurred when trying to broadcast a client event (ConnectedToNetwork): channel closed

user@localhost:~$ cat /tmp/safe-client.log/safenode.log

Summary
[2023-05-16T17:20:15.203875Z INFO safenode::peers_acquisition] Using contact peers from $SAFE_PEERS env var to intitiate contact with the network: ["/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"]
[2023-05-16T17:20:15.204560Z INFO safenode::client::api] Starting Kad swarm in client mode...
[2023-05-16T17:20:15.204750Z INFO safenode::network] Node (PID: 33667) with PeerId: 12D3KooWKVbdBqXcK6qYK1nGLvpjWPCZUe7LT2w2rU8DZQV1dqc4
[2023-05-16T17:20:15.207644Z INFO safenode::client::api] Client constructed network and swarm_driver
[2023-05-16T17:20:15.207693Z TRACE safenode::client::api] Starting up client swarm_driver
[2023-05-16T17:20:15.208983Z INFO safenode::client::api] Client waiting for a network event
[2023-05-16T17:20:15.209029Z TRACE safenode::client::api] Client dialing network
[2023-05-16T17:20:15.209330Z TRACE safenode::client::api] Client recevied a network event PeerAdded(PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"))
[2023-05-16T17:20:15.209354Z DEBUG safenode::client::api] PeerAdded: 12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU
[2023-05-16T17:20:15.209361Z TRACE safenode::client::event] Error occurred when trying to broadcast a client event (ConnectedToNetwork): channel closed
[2023-05-16T17:20:15.209364Z INFO safenode::client::api] Client waiting for a network event
[2023-05-16T17:20:15.218400Z INFO safenode::network::event] Connected with PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU")
[2023-05-16T17:20:15.727841Z INFO safenode::network::event] IdentifyEvent: Received { peer_id: PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"), info: Info { public_key: Ed25519(PublicKey(compressed): 1e1a73496ccb40c8d7775bba125fe8d3eea732979e9dcc3d40814c6a4155af), protocol_version: "safe/0.1.0", agent_version: "safe/node/0.1.0", listen_addrs: ["/ip4/127.0.0.1/udp/12000/quic-v1", "/ip4/10.0.0.237/udp/12000/quic-v1", "/ip4/3.9.177.176/udp/12000/quic-v1", "/ip4/10.0.0.237/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU", "/ip4/10.0.0.237/udp/12000/quic-v1", "/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"], protocols: ["/safe/1", "/ipfs/kad/1.0.0", "/ipfs/id/1.0.0", "/ipfs/id/push/1.0.0"], observed_addr: "/ip4/139.162.240.13/udp/41874/quic-v1" } }
[2023-05-16T17:20:15.728471Z INFO safenode::network::event] Adding peer to routing table, based on received identify info from PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"): Info { public_key: Ed25519(PublicKey(compressed): 1e1a73496ccb40c8d7775bba125fe8d3eea732979e9dcc3d40814c6a4155af), protocol_version: "safe/0.1.0", agent_version: "safe/node/0.1.0", listen_addrs: ["/ip4/127.0.0.1/udp/12000/quic-v1", "/ip4/10.0.0.237/udp/12000/quic-v1", "/ip4/3.9.177.176/udp/12000/quic-v1", "/ip4/10.0.0.237/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU", "/ip4/10.0.0.237/udp/12000/quic-v1", "/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"], protocols: ["/safe/1", "/ipfs/kad/1.0.0", "/ipfs/id/1.0.0", "/ipfs/id/push/1.0.0"], observed_addr: "/ip4/139.162.240.13/udp/41874/quic-v1" }
[2023-05-16T17:20:15.729334Z INFO safenode::network::event] IdentifyEvent: Sent { peer_id: PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU") }
[2023-05-16T17:20:35.219540Z INFO safenode::network::event] Connection closed to Peer 12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU - Dialer { address: "/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU", role_override: Dialer } - Some(KeepAliveTimeout)

No luck with either download or upload this time

➜  Desktop ./safe files upload -- ~/Desktop/RICE.png
Removed old logs from directory: "/var/folders/z_/n_9kwvnn5f11q35z7m18c8sm0000gn/T/safe-client.log"
Starting logging to directory: "/var/folders/z_/n_9kwvnn5f11q35z7m18c8sm0000gn/T/safe-client.log"
Instantiating a SAFE client...
Storing file "RICE.png" of 221754 bytes..
Did not store file "RICE.png" to all nodes in the close group! Network Error Could not get enough peers (8) to satisfy the request, found 0.
Writing 8 bytes to "/Users/x/.safe/client/uploaded_files/file_names_2023-05-16_19-35-07"

➜  Desktop ./safe files download -- testnet.exe  332f45ae9482a8e03b5d5579f15fd9c8806fe4a2b30da2bc6e5ebb9a98fe4095

Removed old logs from directory: "/var/folders/z_/n_9kwvnn5f11q35z7m18c8sm0000gn/T/safe-client.log"
Starting logging to directory: "/var/folders/z_/n_9kwvnn5f11q35z7m18c8sm0000gn/T/safe-client.log"
Instantiating a SAFE client...
Downloading file "testnet.exe" with address 332f45ae9482a8e03b5d5579f15fd9c8806fe4a2b30da2bc6e5ebb9a98fe4095
Did not get file "testnet.exe" from the network! Network Error Record was not found locally.
2 Likes

Tried to add a DO node, getting hanshake error.
I am a little rushed and doubting myself soo, is anyone else getting this?

2 Likes

Very busy with other stuff right now but it looks like Im not having too much luck from AWS - I’ll try to look more closely later

ubuntu@ip-172-31-24-122:~/testfiles$ tail -f /tmp/safenode1/safenode.log 
[2023-05-16T18:07:03.530145Z INFO safenode] 
Running safenode v0.1.0
=======================
[2023-05-16T18:07:03.530428Z INFO safenode] Starting node ...
[2023-05-16T18:07:03.530516Z INFO safenode::network] Node (PID: 3166) with PeerId: 12D3KooWGwyBTpygV4xCNWXGE5CT3e1uoQr4QgE95Xy9uQR9DA6g
[2023-05-16T18:07:03.532244Z INFO safenode::network::event] Local node is listening on "/ip4/127.0.0.1/udp/47547/quic-v1/p2p/12D3KooWGwyBTpygV4xCNWXGE5CT3e1uoQr4QgE95Xy9uQR9DA6g"
[2023-05-16T18:07:03.532277Z INFO safenode::network::event] Local node is listening on "/ip4/172.31.24.122/udp/47547/quic-v1/p2p/12D3KooWGwyBTpygV4xCNWXGE5CT3e1uoQr4QgE95Xy9uQR9DA6g"
[2023-05-16T18:07:03.532737Z ERROR safenode::node::api] Failed to dial 12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU: AlreadyDialingPeer(PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU"))
[2023-05-16T18:07:08.532971Z WARN safenode::network::event] Having OutgoingConnectionError Some(PeerId("12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU")) - Transport([("/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU", Other(Custom { kind: Other, error: HandshakeTimedOut }))])
[2023-05-16T18:07:08.533042Z ERROR safenode::node::api] Failed to dial 12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU: DialError(Transport([("/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU", Other(Custom { kind: Other, error: HandshakeTimedOut }))]))

I am joining with

ubuntu@ip-172-31-24-122:~$ safenode --peer=/ip4/3.9.177.176/udp/12000/quic-v1/p2p/12D3KooWBqsnvR5R4d7xn8ZPUX8skuYvXnJbsf6VPR729qEi9JZU  --root-dir=/tmp/safenode1 --log-dir=/tmp/safenode1
Removed old logs from directory: "/tmp/safenode1"
Starting logging to directory: "/tmp/safenode1"
5 Likes

Upped fine, but didn’t down.

 Network Error Record was not found locally.

This sounds to me like fix is on the way, but I’m not sure:

7 Likes

A surprise testnet from Maidsafe is one of life’s most enjoyable simple pleasures. :tada: :horse_racing:

11 Likes