HandyHost v0.5.5 Akash Major Release v0.16.x upgrade instructions
HandyHost is currently in a Beta release state as of 10/05/2021, version 0.4.5
HandyHost is a modern cryptocurrency "mining" software which allows you to monetize off-the-shelf hardware for passive income all while providing real utility to users versus just minting monies. Currently there are 3 main distributed-web utility blockchains that we implement within HandyHost.
More of our tutorials and explainers about each service can be found on our YouTube Channel
Currently we have built HandyHost for Debian/Ubuntu (64-bit) and MacOS. We will have Windows support in the future.
Ubuntu Recommended Versions: We have tested extensively with Ubuntu 20.04 and 21.04 64-bit only.
cd ~/Downloads
and run simple commands.There is a compiled .deb package that can be found in Releases. There are many apt dependencies and thus you will have to download it and install thru dpkg and apt like:
sudo dpkg -i handyhost_vX.X.X.deb || sudo apt install -f -y
On subsequent debian installs you can likely just double click the .deb file (assuming no new apt dependencies).
The Debian package will install HandyHost as a daemon which can be spawned/unspawned like:
sudo systemctl restart handyhost
(stop | start | restart)
and the daemon will start on machine startup.
Application logs can be found in /var/log/handyhost.log
Prerequisites:
sudo xcode-select --install
on your terminal before running the installer. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install --cask docker
. Once installed, open the Docker.app (in /Applications), accept the EULA, and then you can close the Docker application and continue the install.After installing prerequisites, the double click package installer can be found in Releases and will take ~20-30 minutes to download and compile all dependencies.
To tail the installer progress logs, you can run tail -f /var/log/install.log
in your terminal.
Once the installer is finished you can run the app control panel by double clicking the HandyHost.app in /Applications/Handyhost. You should notice a status bar icon for handyhost show up in the top right of your MacOS toolbar. In addition, the HandyHost Daemon will automatically startup when you login to the machine.
Should you not want to run the package installer, you can manually do the install process.
Prerequisites:
sudo xcode-select --install
on your terminal before running the installer. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install --cask docker
. Once installed, open the Docker.app (in /Applications), accept the EULA, and then you can close the Docker application and continue the install.Installation:
sudo ./installMAC_PKG_POSTINSTALL.sh local
is the same installer that the package uses internally. It will install (if they dont already exist) homebrew, a ton of dependencies, go, Sia, DVPN, Akash, etc.
./runMAC_APP.sh startup
to start the daemon. Logs are output to ~/.HandyHost/handyhost.log
. You can kill the daemon with ./runMAC_APP.sh stop
or restart the daemon with ./runMAC_APP.sh restart
After the app is started, you can view the UI in your browser at either: http://localhost:8008 or https://localhost:58008 (self-signed cert, built and signed by you FYI)
wget -qO /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
wget -qO- https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \
sudo apt update
sudo apt install linux-modules-extra-raspi
and rebooting.sudo apt install -y git curl jq build-essential curl openssl uidmap unzip libssl-dev avahi-utils virtualenv expect kubectl p7zip-full genisoimage whois nmap docker-ce docker-ce-cli containerd.io systemd-container apt-transport-https ca-certificates gnupg lsb-release net-tools
./installUbuntu.sh
note: you may or may not want to change line 4 or 5 depending if you want the app/blockchain datas installed to /root or your user $HOME../localdev_bootstrap.sh
optionally restart with ./localdev_bootstrap.sh restart
, and stop with localdev_bootstrap.sh stop
. note: you may or may not want to change line 5 and 6 depending if you want the app/blockchain datas installed to /root or your user $HOME.~/.HandyHost/localdev.log
We walk through each of the following builds within the Video Tutorials above.
HandyHost MasterNode Build Spreadsheet (20TB storage, hosts DVPN/SIA and manages your AKT Cluster)
HandyHost Akash Node Components Spreadsheet
HandyHost DVPN Raspberry Pi 4 Components Spreadsheet
What HandyHost is NOT: A long term storage wallet for your life savings or big monies. Although each service requires you have wallets attached to them, the wallets/funds are mainly there to pay transaction fees, place deposits/collateral, and of course receive your passive income payments. Once you have accrued enough extra money in your wallet, please move it to a more permanent storage medium (and probably stake it via Cosmostation/Keplr/Osmosis in the case of DVPN and AKT).
Although we lock everything down as well as we can, you ultimately have wallets running attached to 1. your local network and any machines on said network, 2. you have open ports to the whole world for the various services you will host, 3. you are hosting servers and your bandwidth to the outside world. Althought we go farther than most Sia services recommendations by encrypting any wallet informations at rest, we still think anything is possible and that you should be safe (ie: dont hold your life savings wallet into this mining service wallet). Why all the tldr;? To host some of these services (Sia, for instance), your wallet needs to be unlocked at all times to pay collateral deposits and fees. Traditionally Sia recommends to pass wallet unlock keys to the application by environment variables and store the keys safely on disk at rest. You don't want to miss out on income because your computer restarted overnight...
We go an extra step further than the recommendations and encrypt the unlock keys at rest, and only provide an encrypted key location to the HandyHost application on startup. After the application has decrypted and used the passwords, the temporary encrypted key file is deleted. I'm still not crazy about the idea but it's about as good as it gets for running a daemon that needs to auto-startup without you sitting at the keyboard.
Generally, HandyHost is designed for use on your local network, accessing over port 8008 (http) and 58008 (https). However some users may wish to setup HandyHost on a VPS or machine outside of their local network. If you do this: Either use SSH tunneling (port forwarding), or setup Authentication if you want to access it externally.
The most locked down way to access HandyHost on your external host is to port forward over ssh (aka ssh tunneling). It is very simple to do, assuming you have SSH setup on your machine.
From your local machine that you will view HandyHost UI on, run this command:
ssh -L 8008:127.0.0.1:8008 myvps_user@myvps_ip
where myvps_user is your vps ssh username and myvps_ip is the vps ip address.
Then you can just load http://localhost:8008
in your browser and you will have HandyHost accessible on your local machine.
HandyHost has an extra layer of authentication for folks who wish to access their machine externally. Note: SSH Tunneling is the most locked down option for remote access. We highly (highly) recommend that when loading HandyHost externally (not SSH tunneled) with Authentication that you use the https://your-external-ip:58008
SSL url (FYI: self-signed certificate, created by you when you install HandyHost. You will have to accept the self signed certificate once when you initially load the site).
Authentication is enabled by default as of v0.5.1
When you load any HandyHost URL you will first be prompted with a UI to set/confirm your access password.
Subsequent loads will pass thru your authentication token (preserved in the browser for 30 days). Note: incognito browser sessions will login after each browser session (ie full close/restart of the browser).
sudo systemctl stop handyhost
~/.HandyHost/authSettings.json
(on linux: /root/.HandyHost/authSettings.json
).The auth settings file will look like:
{
"enabled": false,
"initialPassword": "changemeplease",
"hasInitialized": false,
"tokenTTL": "30d"
}
Follow the steps above to find your authSettings.json file.
In authSettings.json, set "hasInitialized":false,
. After restarting handyhost you can now set your new password.
Akash has changed the default bid price to 50AKT for providers, we manually set the bid deposit back to 5AKT.
Akash Major Release v0.16.x support. After running the HandyHost v0.5.5 update, you will see a button in the Akash configuration panel titled "Migrate to Akash v0.16.x". Clicking it will migrate your provider (and any contracts) to the latest Akash v0.16.x CRD. Note: Akash v0.16 is a major release and will not be backward compatible with v0.14.x RPC nodes or providers so make sure to run the migration utility.
DVPN Has released their own official release fixing the hnsd issue in their Dockerfile we patched in v0.5.3. This build reverts our fix on dvpn rebuild and uses the DVPN latest tagged release.
We added a button for users to rebuild the DVPN Docker container from the UI. We found an issue within DVPN Dockerfile which was causing the Handshake service within DVPN to fall over on startup. For now we ship a modified Dockerfile to rebuild with until DVPN team has time to validate/patch.
This release is mostly Akash focused. Akash RPC queries, specifically getting provider order/bid stats, were causing a ton of issues on HandyHost client. So we basically re-architected a lot of the RPC issues at hand into an index that is fast to query. In addition, the Akash provider was having a lot of issues falling over silently (staying alive as a zombie process). We fixed this by restarting the provider every few hours to keep it alive. In addition to these major components, we did a lot of bug fixing around the Akash service, as well as some enhancements that will help providers get audited. Getting audited will likely help providers get more contracts. Read more about getting your provider audited here: https://docs.akash.network/operations/akash-audited-attributes#attribute-auditors
A longer list of fixes:
Copyright (C) 2021
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA