Start Pool Mining with Your Bitcoin Node, Now

A guide on setting up a full Bitcoin node with Bitcoin Knots, running DATUM Gateway, and renting hashrate from Braiins to mine and signal BIP110, all from an old laptop or PC.
Start Pool Mining with Your Bitcoin Node, Now

In this post, I’m gonna try to explain how to start mining with your own Bitcoin node and signal for BIP110, using an old laptop or PC.

This is gonna be heavily opinionated and I’ll try to keep it short and brief. At the end I’ll also give some bonus tips.

If you get confused at any point, you can ask your favorite LLM for help by copy-pasting this post and telling it where you got stuck. Feel free to ask me in the replies too.

The first thing we need is a Bitcoin node. You can install it from https://bitcoinknots.org. Depending on your OS there may be multiple options — you can ask an LLM for help if you’re stuck, or just ask me in the replies. bitcoin knots home page

For this guide we’re gonna use the GUI version. On macOS, download the (App) variant. On Linux, after downloading the bin files, use bitcoin-qt. bitcoin knots variants for different os and cpu arch(s)

Once you open the client for the first time, you’ll get an overlay for the initial block download. Before letting it continue, go to Settings > Options and disable “Prune block storage” — we need a full node. Click OK to save, then restart the node via File > Exit and open it again. After that, just let it download the chain to the tip. bitcoin knots prune checkbox

Once the initial block download is done, you’ll have a working Bitcoin node — but it’s pretty barebones. To make it useful we’ll need several things: mempool.space, Electrum, DATUM, Core Lightning… Instead of downloading and installing these one by one and making sure everything connects correctly, we’re just gonna use a “compose file”. A compose file lets you set up and configure multiple things with a single command.

For this step you’ll need Docker or Podman installed on your system. I personally use Podman. The compose file is here: https://github.com/DeepDoge/bitcoin-kit — in the README I explained how to use it and set it up step by step. bitcoin-kit github

Once you have it ready and running, you’ll have a mempool.space web interface for your own node, an Electrum server (including the TLS variant at port 50002), Core Lightning, and DATUM — all ready to use.

Your DATUM Gateway should be running Stratum at port 23334. You can connect your miner on the same network to it like this: 192.168.x.x:23334 and it should work. datum gateway status page

The web interface above is hosted at port 7152. You can access it via http://localhost:7152 or using the local network IP address at http://192.168.x.x:7152.

The next step is exposing this port to the internet using tunnels. For this we’re gonna use https://localtonet.com. After you create a localtonet account, go to My Tunnels > TCP - UDP. localtonet tcp/udp tunnels page

Then on that page click “Create TCP - UDP Tunnel”. In the dropdown that opens, select TCP as the protocol type and enter your port: 23334. localtonet tcp tunnel create settings

After creating the tunnel, make sure the exposed server port matches. On the tunnel item in the list, click the gear icon, then click “Change” on the “Server Port” and set it to 23334 as well. localtonet changing the tcp tunnel server port

You can use the random subdomain address localtonet gave you for mining, which should look like this: random123.localtonet.com:23334 localtonet tcp tunnel address

Now we need to start the tunnel on the machine where we’re running the DATUM Gateway. Click the gear icon again and select “Show SSH Command”. In the dialog that opens, there’s an ssh command you can use to reverse proxy your DATUM’s Stratum port over the localtonet tunnel. You can also enable “Auto Reconnect” while you’re there. copying the ssh command

Then all you have to do is paste the ssh command into your terminal and press Enter.

So now we have a Bitcoin node running, DATUM Gateway running, and DATUM’s Stratum port exposed via localtonet. All that’s left is renting some hashrate from Braiins Hashpower.

Once you log in to Braiins Hashpower you’ll see the order book — asks on the hasher side and bids on the buyer side. showing the order book

What matters to us is the orders on the left side — the bids. This is where you can see the buy orders of other people like you. In the image above you can see an orange line called “Hash Value” — this is calculated based on the current network hashrate and block reward. If you place your order below that line you’re gonna earn more than you spent in the long run, and above it you’re gonna lose bitcoin.

Don’t say “I just wanna signal BIP110, idc about the cost” and place your order at the top like these dudes. That will make you lose bitcoin. The less you spend on hashrate, the more you can recycle.

Anyway, if you scroll down through the buy orders you’ll notice that after a while the colors go from green to gray. Gray orders aren’t receiving any hashrate from hashers at the moment. So you’ll want to place your order in the green area if you want hashrate now — which we do. scrolling down on the buy orders to show gray orders

The easiest way to create a new order is from the buy orders list. You can click the little “+“ icon next to a buy order and place your order one sat above it. creating an order

In the video above I’m using mine.nomadshiba.me — that’s my custom domain pointed at the localtonet tunnel we just created. I talk about how to do that at the bottom of the article. For now you can just use the generated TCP tunnel address from localtonet: 4eo7kgvsub.localto.net:23334

Once your order is open you can move it up or down using the arrow buttons next to it. moving the already open order

So that’s it!

You can verify that Braiins is connected to your DATUM Gateway from the “Clients” page. DATUM Gateway “Clients” page

You might also wonder: why would hashers sell their hashrate below the current Hash Value?

The reason is hashers like to have steady income to cover their electricity bills and operating costs. So they rent their hashrate out at a discount compared to the theoretical Hash Value — which is exactly what they’re doing when they rent to big miners like Foundry or AntPool & friends. Instead of renting it to them, they’re basically renting it to you now.


Bonus Tips

Becoming a listening node easily using Tor

Next important step is becoming a listening node on the Bitcoin network. WHY ?? because this will increase your connectivity in the network, let more nodes reach you, and let you collect more garbage from the network.

Alright so first step is of course installing TOR. we are not installing tor browser btw, just tor

I think its called Tor Service on windows, i dont really know. ask an LLM. but on Linux and Mac, you can just use brew to install it.

YOU can install Brew from: https://brew.sh/

Once you have brew you can just say:

brew install tor

AFTER THE INSTALLATION IS DONE read the recent terminal logs, there should be something like:

brew services start tor

This SHOULD start tor service in the background, and it should auto start on reboots as well!!

So NOW tor is done.

next steP is going to your bitcoin node settings. JUST FOLLOW: Settings > Options > Network (tab) And you copy this tab. idk .-. my network settings

  • Enable Allow incoming connections
  • Enable Connect through SOCKS5 proxy

Then restart Knots variant of your Satoshi Client again. Restart your Bitcoin Client.

Enabling OCEAN Lightning Payouts

OCEAN allows lightning payouts via BOLT12 Offers (Invoices).

The easiest way to set it up is using the Coinos custodial lightning wallet.

Unfortunately you can’t use Phoenix Wallet since BOLT12 implementations differ. But try it anyway in case it works. You can also open a lightning channel and use Core Lightning which is included in bitcoin-kit — but we’re trying to keep this guide simple. Coinos also allows you to auto-withdraw your balance to a LNURL, which is useful.

First you need to create a Coinos account — you can log in or register with Nostr. https://coinos.io

Once you have your Coinos account, click on “Receive”. On the Receive page there’s a button called “More Options” — click that and select “BOLT12”. opening coinos BOLT12 receive page

Once you’re on that page, open a new tab and go to: https://ocean.xyz/dashboard

You’ll see a search box at the bottom — paste your bitcoin mining address there and press enter. opening your ocean dashboard

This will open your Ocean Dashboard.

Click on the Configuration tab. You’ll see a page like this: image

There’s a box with the following fields:

  • Amount: “any”
  • Description: “OCEAN Payouts for bc1yourbitcoinaddress”

This describes your BOLT12 offer (invoice) — amount is unset (“any”), and the description identifies it as your OCEAN payout offer.

Copy the description from this page, go back to the Coinos tab, click “Add a note” and paste it there.

Then click the Copy button to copy your BOLT12 Offer (Invoice), go back to the OCEAN tab, and paste it into the Lightning BOLT12 Offer field.

Click GENERATE and you’ll see something like this: image

It will give you a JSON and ask you to sign it with your miner bitcoin address, then paste the signature back and press Confirm.

We can do this with Sparrow Wallet.

First make sure you have Sparrow Wallet and your miner wallet is added to it. (I’m not gonna cover that part — there are already plenty of guides on setting up Sparrow Wallet.)

Open Sparrow Wallet and go to: Tools > Sign/Verify Message image

Fill in the fields like this:

  • Address — the bitcoin miner address you used on the OCEAN Dashboard.
  • Message — the JSON you copied from under “Sign this with your wallet” on the OCEAN tab.
  • Format — select BIP322 (Simple)

Click Sign, paste the result into the “Paste signature here” field on the OCEAN tab, and click Confirm.

Done — lightning payouts are set up.

More info: https://ocean.xyz/docs/lightning#blog-bottom_post

Your lightning payouts sometimes might fail, OCEAN will keep retrying time to time. They pass through eventually. Don’t worry about it.

Using your own custom domain with your localtonet tunnels

Just set it as a “CNAME” in your domain’s DNS settings. How you do this depends on where your domain or nameservers are, so it’s better to ask an LLM for the specifics — but basically, if you point your own domain to the random localtonet subdomain as a CNAME, it works.

If you’re using Cloudflare as your nameserver, make sure to disable the “Proxy” toggle when setting the CNAME in DNS. This isn’t an HTTP server so Cloudflare can’t proxy it, and localtonet is already a tunnel itself.

Keep your DATUM worker name private

Go to your DATUM Gateway’s web interface at port 7152 and navigate to Config.

You’ll see an option called “Send Miner Usernames To Pool” with several options:

  • Override Bitcoin Address — allows hashers/workers connecting to your DATUM Stratum gateway to override your reward bitcoin address with their own worker username. This means they can use their own bitcoin address and mine for themselves through your DATUM Gateway, for example with a username like: bc1qshz088gg8cd8nl5t0sp3svasvmd243h4sq4fud or bc1qshz088gg8cd8nl5t0sp3svasvmd243h4sq4fud.myworker
  • Send as worker names — sends the full username as the worker name. People can only mine to your bitcoin address, not their own, through your DATUM Gateway.
  • Keep private — hides all worker names from OCEAN and groups them under a single worker named “default”. Nobody can see your worker names publicly; you can only see them from the Clients page of your DATUM Gateway interface.

All you have to do is pick Keep private. Done.

Connecting your Electrum server to your everyday wallet apps

This is simple — similar to how we exposed our DATUM Stratum server using localtonet, you can expose your Electrum server the same way.

In bitcoin-kit there are two Electrum ports:

  • 50001 is the plain, unencrypted Electrum port.
  • 50002 is behind a TLS proxy (encrypted).

You should expose both, since some wallets support one or the other — or both.

Think of it like HTTP vs HTTPS: the non-TLS version is HTTP, the TLS version is HTTPS.

Just like the Stratum endpoint, you can also use a custom domain or subdomain for these.


Write a comment
No comments yet.