Skip to content

Guide for running hs-airdrop in networkless Docker #63

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions src/guides/hs-airdrop-docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## How to run pseudo-airgapped hs-airdrop using Docker

First, create this `Dockerfile` in an empty directory:

```Dockerfile
FROM node

RUN git clone https://github.com/handshake-org/hs-airdrop.git /hs-airdrop
WORKDIR /hs-airdrop
RUN yarn
RUN mkdir -p /root/.hs-tree-data/nonces
RUN curl -Lo /root/.hs-tree-data/tree.bin https://github.com/handshake-org/hs-tree-data/raw/master/tree.bin
RUN curl -Lo /root/.hs-tree-data/faucet.bin https://github.com/handshake-org/hs-tree-data/raw/master/faucet.bin
RUN curl -Lo /root/.hs-tree-data/proof.json https://github.com/handshake-org/hs-tree-data/raw/master/proof.json
RUN curl -Lo /root/.hs-tree-data/nonces/172.bin https://github.com/handshake-org/hs-tree-data/raw/master/nonces/172.bin
```

Open a terminal, change to that directory, and run the following commands:

```bash
mkdir keys
cp ~/.ssh/id_rsa ~/.ssh/id_rsa.pub keys
# Change the password on your SSH key
ssh-keygen -p -f keys/id_rsa

docker build -t hs-airdrop .

docker run --rm -it --network none --name no-net --volume=$(pwd)/keys:/ssh hs-airdrop bash
```

You'll now be running a non-networked container. This is not as secure as it
could be if you properly air-gapped, but it's better than nothing. Inside the
container you can check there's no network connectivity:

```bash
ping 8.8.8.8
```

Should give an error - so you know there's no internet. Now run the hs-airdrop
command:

```bash
./bin/hs-airdrop /ssh/id_rsa <YOUR_WALLET_ADDRESS> 0.010
```

(0.010 is the mining fee recommended by namebase.io)

You'll probably get an error about not being able to fetch the nonce; this is
likely because bucket `172` above is incorrect for you - take a note of the
nonce number in the "Downloading..." URL. Exit the docker bash shell, edit the
Dockerfile above to contain the correct bucket number (in BOTH PLACES on that
final line), then run again:

```bash
docker build -t hs-airdrop .

docker run --rm -it --network none --name no-net --volume=$(pwd)/keys:/ssh hs-airdrop bash
```

Issue the `./bin/hs-airdrop` command again and hopefully this time it will work.