Build a Profitable Passive Income Box with Low-Powered Hardware: A Guide
Build a Profitable Passive Income Box with Low-Powered Hardware: A Guide Many people these days are into crypto mining and low powered miners such as helium miners. These are great and all but they don't earn all that much anymore and they are focused on one kind of earning. Today we're going to be building a low powered passive income box that earns anywhere from $10-$20 a month per box and residential IP.
If you have the ability to set this box up on a guest network or, even better, a segregated VLAN, do so. While this is a security blog, we can't assume everyone's security concerns and risk tolerance.
Hardware Requirements:
One of the following is required. We basically just need any efficient and low powered computer we can get our hands on. Any Raspberry PI, Intel NUC, or similar will do. They don't have to be all that powerful. However I will recommend you have at least 32g-64g of storage, 4g of ram, and at least 2 cpu threads. For this we will be targeting a budget of around $100-$200 for hardware but feel free to go higher if it suits your needs. Our power target is aprox. 25w average.
Raspberry Pi:
Hard to get ahold of these days but they are super low power and are quite customizable. For info on how to install raspian on your Raspberry PI
This is going to be a longer section. We are going to set up docker and then through docker we will set up automatic docker container updates and install multiple docker containers. We also assume you're using ubuntu server, however the commands for ubuntu server, ubuntu desktop, and raspbian should all be the same.
For this section we assume some basic technical experience and that you have installed your operating system already as well as know how to get into the terminal.
{{< inarticle-dark >}}
Installing Updates:
We first want to be sure that we have our system fully up to date:
Bitping offers you the ability to get paid out in Solana for providing a node for businesses to run lightweight network tests from your network. This averages about 0.1 Cents per day per node. Not a lot I know, but it has potential and payouts are easy.
Earn app lets you share your internet as a VPN service for a surprising amount of rewards. Averages about $5 month per node per residential IP. Offers payouts via paypal and amazon gift cards.
Create an Earn App Account:
Create an account at earnapp.com. Warning, requires a google account
Install the non docker version of the app to get your UUID:
Be sure to uninstall after you get your UUID otherwise you'll end up running it twice on the same host and without automatic updates
Honey Gain lets you share your internet as a VPN service for a surprising amount of rewards. Averages about $5 month per node per residential IP. Payouts can be complicated. Read into it further before deciding to use this container
Similar to other offerings here. Minimum $20 Payout. Payouts can be complicated. Research for yourself to see if you want to use this service. Payouts average about $1 per node per box a month.
Create a Repocket Account:
Create an account at repocket.co and grab your api key from your dashboard.
Install the Docker Container:
Modify the following line with your email and api key before pasting into your terminal.
Similar to EarnApp and HoneyGain, TraffMonetizer pays you to share your internet. Averages about $2 a month per node per IP. Only offers payouts in BTC.
Create your Traff Monetizer Account:
Create your account at https://traffmonetizer.com Once you get into the dashboard, make note of your application token.
Install the Docker Container:
Copy the following string and append your token that you got from the dashboard before pasting into your terminal.
Similar to EarnApp and HoneyGain, ProxyLite pays you to share your internet. Averages about $3 a month per node per IP. Offers payouts in BTC/PayPal/QIWI/Payeer.
Create your Traff Monetizer Account:
Create your account at https://proxylite.ru Once you get into the dashboard, make note of your userid.
Install the Docker Container:
Copy the following string and replace $PROXYLITE_USER_ID with your USERID that you got from the dashboard before pasting into your terminal.
Similar to EarnApp, HoneyGain, and Proxylite, ProxyRack pays you to share your internet. Averages about $1 a month per node per IP. Payout methods vary.
Create your Traff Monetizer Account:
Create your account at https://proxyrack.com Once you get into the dashboard, make note of your userid.
Install the Docker Container:
Copy the following string and replace $PROXYLITE_USER_ID with your USERID that you got from the dashboard before pasting into your terminal.
First, Generate a Device ID You can run this command to generate a device ID that you will need to copy and save to use in the future.
Add this Device ID to your device list in your Peer account
Wait 5-10 minutes after running the Docker container with the UUID
Using the string you just generated above add this to your devices https://peer.proxyrack.com/devices You can add a "friendly" name to help you remember what this Device ID is associated with
Mysterium is a decentralized VPN and webscraping service built on the Etherium and Polygon blockchains. Payments average anywhere from $1-$20 a month depending on multiple factors per node per IP. Costs $1.XX to setup a node for activation. Payouts in MYST token.
Go to http://"nodeip"/#/dashboard by replacing "nodeip" with the IP address of your node. You can find this by typing "ifconfig" in the terminal.
Click “start node setup”.
Past the address of the ERC20 wallet you want to receive rewards in and click “next”. You can use a standard Ethereum address like one of your MetaMask addresses.
Type in a password you’ll use to access this node dashboard in the future. DO check the checkbox to claim the node in your network.
Click the “Get it here” link and find your API key. Copy it. Go back and paste it. Click “Save & Continue”.
Port Forwarding:
We can not describe how to port forward for everyone's specific hardware. Here are some resources to learn how to port forward.
Increase security by blocking malware and trackers.
Force all dns requests to Cloudflares malware and tracking protection dns. Also, block DNS/HTTPS requests. If you have more advanced of a router or firewall on the network you can even use packages like snort/securita to create more advanced rules to block known bad acting IPs, tor access, torrents, p2p traffic in general, etc. This is highly suggested but not required.
# Allow ssh stillsudoufwallow22# Allow dns outsudoufwallowout53/tcpsudoufwallowout53/udp# Redirect all dns back to 1.1.1.2 or 1.0.0.2sudoiptables-tnat-AOUTPUT-pudp--dport53!-d1.0.0.2-jDNAT--to-destination1.1.1.2sudoiptables-tnat-AOUTPUT-pudp--dport53!-d1.1.1.2-jDNAT--to-destination1.0.0.2# Block DNS over HTTPSsudoufwdenyout853/tcpsudoufwdenyout853/udpiptables-AFORWARD-mstring--string"get_peers"--algobm-jLOGDROPiptables-AFORWARD-mstring--string"announce_peer"--algobm-jLOGDROPiptables-AFORWARD-mstring--string"find_node"--algobm-jLOGDROP# Block Default ToR Portssudoufwdenyout9050/tcpsudoufwdenyout9050/udpsudoufwdenyout9051/tcpsudoufwdenyout9051/udp# Block Torrentssudoufwdenyout6881/tcpsudoufwdenyout6881/udpsudoufwdenyout6882-6999/tcpsudoufwdenyout6882-6999/udpiptables-AFORWARD-mstring--algobm--string"BitTorrent"-jDROPiptables-AFORWARD-mstring--algobm--string"BitTorrent protocol"-jDROPiptables-AFORWARD-mstring--algobm--string"peer_id="-jDROPiptables-AFORWARD-mstring--algobm--string".torrent"-jDROPiptables-AFORWARD-mstring--algobm--string"announce.php?passkey="-jDROPiptables-AFORWARD-mstring--algobm--string"torrent"-jDROPiptables-AFORWARD-mstring--algobm--string"announce"-jDROPiptables-AFORWARD-mstring--algobm--string"info_hash"-jDROP# Save the Changes and Enable the Firewallsudoiptables-savesudoufwenable
For more advanced ToR blocking you can do the following:
To run all of these containers in one go, assuming you have all of your accounts and ids notated, you can update the following docker-compose.yml:
version:'3.5'services:#Start of Portainer section :# Container management and monitoring : connect to your device port 9000 (Portainer)Portainer:image:portainer/portainer-ce:latestvolumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/dataports: - 8000:8000 - 9000:9000 - 9443:9443restart:alwaysnetworks:default:ipv4_address:172.106.0.11#End of Portainer + Webserver sectionmysterium:image:mysteriumnetwork/myst:latestcontainer_name:mysteriumrestart:unless-stoppedcpus:1dns: - 8.8.8.8 - 8.8.4.4 - 1.1.1.1 - 1.0.0.1 - 9.9.9.9hostname:mystcap_add: - NET_ADMINnetwork_mode:hostports: - "4449:4449" - "59850-60000:59850-60000"volumes: - myst_data:/var/lib/mysterium-nodecommand:--udp.ports=59850:60000 service --agreed-terms-and-conditions#Start of Earnapp section (remove this if Earnapp not wanted)# variables to define in .env file :# EARNAPP_DEVICE_ID : Your node id : sdk-node-<md5sum># <md5sum> is a 32 char string containing a-z and 0-9 range : # ex : Easy way to generate one : echo "random string" | md5sum # This will print 9f33ffbb8a9dcedb28ea909775a6b0d3 -# In that case use : sdk-node-9f33ffbb8a9dcedb28ea909775a6b0d3Earnapp:depends_on: - Portainerimage:fazalfarhan01/earnapp:litevolumes: - earnapp-data:/etc/earnapprestart:alwaysenvironment: - EARNAPP_UUID=$EARNAPP_DEVICE_IDnetworks:default:ipv4_address:172.106.0.20#End of Earnapp section#Start of HoneyGain section (remove this if HoneyGain not wanted)# variables to define in .env file :# HONEYGAIN_EMAIL : Your Honeygain account email# HONEYGAIN_PASSWD : Your Honeygain account password # DEVICE_NAME : This computer name (for display on dashboard)Honeygain:depends_on: - Portainerimage:honeygain/honeygaincommand:-tou-accept -email $HONEYGAIN_EMAIL -pass '$HONEYGAIN_PASSWD' -device $DEVICE_NAMErestart:alwaysnetworks:default:ipv4_address:172.106.0.30#End of HoneyGain section#Start of IproyalPawns section (remove this if IproyalPawns not wanted)# variables to define in .env file :# IPROYALPAWNS_EMAIL : Your IproyalPawns account email# IPROYALPAWNS_PASSWD : Your IproyalPawns account password # DEVICE_NAME : This computer name (for display on dashboard)IproyalPawns:depends_on: - Portainerimage:iproyal/pawns-cli:latestcommand:-email=$IPROYALPAWNS_EMAIL -password='$IPROYALPAWNS_PASSWD' -device-name=$DEVICE_NAME -accept-tosrestart:alwaysnetworks:default:ipv4_address:172.106.0.40#End of IproyalPawns section#Start of Peer2profit section (remove this if Peer2profit not wanted)# variables to define in .env file :# PEER2PROFIT_EMAIL : Your Peer2profit account emailPeer2profit:depends_on: - Portainerimage:lyenliang/peer2profit_x86_64:latestrestart:alwaysenvironment: - P2P_EMAIL=$PEER2PROFIT_EMAILnetworks:default:ipv4_address:172.106.0.50#End of Peer2profit section#Start of Packetstream section (remove this if Packetstream not wanted)# variables to define in .env file :# PACKETSTREAM_CID : Your Packetstream CID (available in packetstream dashboard)Packetstream_PsClient:depends_on: - Portainerimage:packetstream/psclient:latestrestart:alwaysenvironment: - CID=$PACKETSTREAM_CIDnetworks:default:ipv4_address:172.106.0.60Packetstream_Watchtower:depends_on: - Portainer - Packetstream_PsClientimage:containrrr/watchtowercommand:--cleanup --include-stopped --revive-stopped --interval 60 ${_COMPOSE_PROJECT_NAME}_Packetstream_PsClient_${_COMPOSE_PROJECT_STACK_ID}volumes: - /var/run/docker.sock:/var/run/docker.sockrestart:alwaysnetworks:default:ipv4_address:172.106.0.61#End of Packetstream section#Start of Bitping section (remove this if Bitping not wanted)Bitping:depends_on: - Portainerimage:bitping/bitping-node:latestrestart:alwaysvolumes: - ./data/bitping:/root/.bitpingnetworks:default:ipv4_address:172.106.0.70#End of Bitping section #Start of TraffMonetizer section (remove this if TraffMonetizer not wanted)# variables to define in .env file :# TRAFFMONETIZER_TOKEN : Your application token (available in TraffMonetizer dashboard)TraffMonetizer:depends_on: - Portainerimage:traffmonetizer/cli_v2:latestrestart:alwayscommand:start accept --token ${TRAFFMONETIZER_TOKEN}networks:default:ipv4_address:172.106.0.80#End of Packetstream section #Start of Repocket section (remove this if Repocket not wanted)# variables to define in .env file :# RP_EMAIL : Your application mail # RP_API_KEY : Your application api key (available in repocket dashboard)Repocket:depends_on: - Portainerimage:repocket/repocket:latestrestart:alwaysenvironment: - RP_EMAIL - RP_API_KEYnetworks:default:ipv4_address:172.106.0.90#End of Repocket section #Start of Proxylite section (remove this if Proxylite not wanted)# variables to define in .env file :# PROXYLITE_USER_ID : Your application use id (available in proxylite dashboard)Proxylite:depends_on: - Portainerimage:proxylite/proxyservice:latestrestart:alwaysenvironment: - USER_ID=$PROXYLITE_USER_IDnetworks:default:ipv4_address:172.106.0.100#End of Proxylite section #Start of Proxyrack section (remove this if Proxyrack not wanted)# variables to define in .env file :# PROXYRACK_API_KEY : Your application api key (available in proxyrack dashboard -> profile -> generate API key (keep same for all devices))Proxyrack:depends_on: - Portainerimage:proxyrack/pop:latestrestart:alwaysenvironment: - api_key=$PROXYRACK_API_KEY - device_name=$DEVICE_NAMEnetworks:default:ipv4_address:172.106.0.110#End of Proxyrack section volumes:portainer_data:earnapp-data:myst_data:networks:default:driver:bridgeipam:driver:defaultconfig: - subnet:172.106.0.0/16