without relying on external services.
You do realize that it's safer to rely on a stable external service than to run your own when it comes to mining? And by safer I am talking about your ability to actually win a block.
People often talk about bitcoin mining as if it's a race, which isn't entirely true. in reality, up to the point of when you find a valid hash, you are not racing against anyone, and your chances of hitting a block are independent from other miners hitting a block; however, once you do hit a block, the race starts. You need to make sure you propagate the block in a fraction of a second, mainly to other miners' nodes to let them know that you have already solved a block and that they need to start working on the next one. Other than that, it's possible that your block will be orphaned by another miner that has better connectivity to other nodes.
Add to it all the technical issues that your infrastructure can run into, like a small delay in downloading new blocks and clearning your mempool, and your getblocktemplate creates an invalid block. It takes a few components working together to ensure that your final constructed block is valid and propagated well and fast. everything must have 99.99% uptime, or else you are adding more risk for potentially no reward. You can't meaningfully have well-set-up mining infrastructure at home where your cat or kid may unplug the router power cable.
With that said, I do encourage everyone to test local mining for fun and educational purposes -- it's interesting to say the least, so good work you did there.
I've heard this argument on a few occasions and technically it really doesn't hold water.
Mining solo to a local solo pool attached to bitcoin core has the same network delays as any other bitcoin node on the network since it is a Peer to Peer network.
Bitcoin is a P2P (peer to peer) network, Bitcoin-core selects the incoming and outgoing peers/nodes that it communicates with (you dont get a choice in that), this is true of every node on the planet, the execption being where Bitcoin-core nodes have been programmed to talk directly to another node without going through the selection process. for example where someone is running multiple bitcoin core nodes on the same network, but that doesn't offer any real advantage in propagation to the rest of the network.
Mining takes place by the miner requesting a block over the Stratum protocol to the local Stratum pool host, which in turn transforms and forwards the request as a GetBlockTemplate request to the local Bitcoin-core node, when a share is found the work is passed from the miner to Bitcoin-core in the same manner over the Stratum protocol, the work done is then propagated to the network over P2P by Bitcoin-core.
It doesn't matter if you have a Bitcoin-core node in a datacenter or in a garden shed, as long as it has a good network connection and I don't mean using WiFi, GSM or some other mobile comms, I'm talking wired ethernet to you local broad-band router/gateway, then the network infrastructure the data has to traverse between P2P peers is the same irrespective of the location.
It still has to go over internet routers, switches and gateways located between nodes.
So I don't agree at all that having a bitcoin-core node in a datacenter is any better than running one on you local home network, provided said network has reasonable bandwidth.
I think its a fallacy cooked up by pool operators.