Umbrel is not FOSS though, they have a polyform noncommercial license. That's not very common in this space and feels off, I don't like it. Other then that, no problems with Umbrel, the UI is great ;)
😆 I'll be on it asap when a beta drops. Need some time to learn the new sdk and update and test all the wrappers.
Make sure to follow the instructions, as you have to SSH into StartOS to forward the stratum port. (Hopefully not needed anymore when StartOS 0.3.6 or 0.4.0 comes out).
It already works! I wrapped public-pool for StartOS here: https://github.com/remcoros/public-pool-startos/
When StartOS 0.3.6 is released with more options for port-forwarding, I will submit it to the Start9 marketplace.
It works, been running it 24/7 since I released it on Github. Both on mainnet and testnet4. Note that there is one DIY step that requires you to SSH into StartOS (for forwarding the stratum port). Instructions are included when you install it. This is a limitation of StartOS and will hopefully not be needed anymore when StartOS 0.3.6 (or 0.4.0) is released.
If you're using StartOS, this is pretty easy:
I have wrapped public-pool for StartOS here: https://github.com/remcoros/public-pool-startos/
It has support for testnet4, if you use the bitcoind-testnet package for StartOS here: https://github.com/remcoros/bitcoind-testnet4-startos
Note that public-pool does not support Bitcoin Core 28.x, because of small bug, but I fixed that in my StartOS wrapper.
by moving the pc clock forward or modified mining code. and that data is from the rpc api (wrote a bash script for it)
Actually, there is more CPU mining then asics on testnet4, they just fake the block time to get the lowest difficulty. Look at this (mostly difficulty 1 blocks):
Block 46521: Timestamp: Sun Sep 22 01:26:32 UTC 2024 | Difficulty 1
Block 46520: Timestamp: Sun Sep 22 01:06:31 UTC 2024 | Difficulty 1
Block 46519: Timestamp: Sun Sep 22 00:46:30 UTC 2024 | Difficulty 1
Block 46518: Timestamp: Sun Sep 22 00:26:29 UTC 2024 | Difficulty 1
Block 46517: Timestamp: Sun Sep 22 00:06:28 UTC 2024 | Difficulty 1
Block 46516: Timestamp: Sat Sep 21 23:46:27 UTC 2024 | Difficulty 150569646.7815716
Block 46515: Timestamp: Sun Sep 22 01:26:34 UTC 2024 | Difficulty 1
Block 46514: Timestamp: Sun Sep 22 01:06:33 UTC 2024 | Difficulty 1
Block 46513: Timestamp: Sun Sep 22 00:46:32 UTC 2024 | Difficulty 1
Block 46512: Timestamp: Sun Sep 22 00:26:30 UTC 2024 | Difficulty 1
Block 46511: Timestamp: Sun Sep 22 00:06:28 UTC 2024 | Difficulty 1
Block 46510: Timestamp: Sat Sep 21 23:46:26 UTC 2024 | Difficulty 1
Block 46509: Timestamp: Sat Sep 21 23:26:25 UTC 2024 | Difficulty 1
Block 46508: Timestamp: Sat Sep 21 23:06:24 UTC 2024 | Difficulty 1
Block 46507: Timestamp: Sat Sep 21 22:46:23 UTC 2024 | Difficulty 1
Block 46506: Timestamp: Sat Sep 21 22:26:21 UTC 2024 | Difficulty 1
Block 46505: Timestamp: Sat Sep 21 22:06:18 UTC 2024 | Difficulty 150569646.7815716
Block 46504: Timestamp: Sat Sep 21 23:46:21 UTC 2024 | Difficulty 1
Block 46503: Timestamp: Sat Sep 21 23:26:20 UTC 2024 | Difficulty 1
Block 46502: Timestamp: Sat Sep 21 23:06:15 UTC 2024 | Difficulty 1
Block 46501: Timestamp: Sat Sep 21 22:46:13 UTC 2024 | Difficulty 1
Block 46500: Timestamp: Sat Sep 21 22:26:11 UTC 2024 | Difficulty 1
Block 46499: Timestamp: Sat Sep 21 22:06:10 UTC 2024 | Difficulty 1
Block 46498: Timestamp: Sat Sep 21 21:46:09 UTC 2024 | Difficulty 1
Block 46497: Timestamp: Sat Sep 21 21:26:08 UTC 2024 | Difficulty 1
Block 46496: Timestamp: Sat Sep 21 21:06:06 UTC 2024 | Difficulty 150569646.7815716
no clue 😥 don't see any error logs on my end and did receive a few zaps the other day. I'll keep an eye on it.
Wasabi for StartOS 2.2.1 released
https://github.com/remcoros/wasabi-webtop-startos/releases/tag/v2.2.1
Sparrow for StartOS 2.0.0 released
https://github.com/remcoros/sparrow-webtop-startos/releases/tag/v2.0.0
NFC PushTX for StartOS 1.0.1 released
https://github.com/remcoros/pushtx-startos/releases/tag/v1.0.1
Of-course, we should always keep building better, it's the "now we don't have to" marketing language. It's like saying "Bitcoin fixes everything". It doesn't. Not being pessimistic, just realistic 😉
"We can't entrust our primary communications network to a handful of corruptible humans. " We already do at a much deeper level that Nostr can't fix: BGP
You can easily see this on mempool. All the latest block show "Just now", but when you click on them, and view their timestamp, they are often in the future (with a maximum of +2 hours)
testnet3 and 4 have a rule: when the 'nTime' of a block is larger then the nTime of the last block + 20 minutes, the difficulty drops to 1. This means that anyone (cpu/gpu/asic) can easily mine it, because the difficulty is 1.
So you can construct a block with a 'fake' nTime in the future (at least 20 minutes more then the last block), and instantly mine it.
There is a limit to this (else you can keep moving nTime more and more in the future).
The limit is another rule: nTime of block cannot be later then last block + 2 hours.
So it's possible to always mine 5 blocks into the future. This is being done a lot on testnet (because it's an easy way to get some coins without waiting to actually mine it).
How do you calculate the hashrate of testnet4? Because what is shown on pools (like testnet.vkbit) and 'getmininginfo' RPC is completely wrong. This is because people mine future blocks with their CPU, so there is a lot of "difficulty 1" blocks, which completely messes up the hashrate calculation.
If you want to calculate the chance of hitting high enough difficulty requirement, you should only use that. e.g. P (probabilty) = 1 / (difficulty * 2^32).
You can get the difficulty from a block that has difficulty > 1 (most blocks on testnet have difficulty "1" because they set the time of the block (nTime) to 'last block + 20 minutes', and then use CPU (or bitaxe or whatever) to immediatly hash that block.
I love the idea of nostr:npub126ntw5mnermmj0znhjhgdk8lh2af72sm8qfzq48umdlnhaj9kuns3le9ll, however thought of it as "mostly" useless to average individuals who aren't looking to tor everything.
While the new version is in developement to enable https external access to services using your domain, I found out a hack on how to do this in the meantime
Credit to remcoros on the nostr:npub126ntw5mnermmj0znhjhgdk8lh2af72sm8qfzq48umdlnhaj9kuns3le9ll for the original guide. Hopefully I made it a little more understandable to dumbos like me 😉
As a prerequisite, you'll need to know Caddy reverse proxy (or use another, but Caddy simplifies cert stuff for me), and you'll need to know basic CLI, like how to navigate the filesystem, and create/save a text file.
This example uses the FreeGPT service but I've tested with nostr:npub1wyuh3scfgzqmxn709a2fzuemps389rxnk7nfgege6s847zze3tuqfl87ez, and nostr-rs-relay.
## Enable external access+HTTPS
1. pick a port and subdomain. add the entry to Caddy for automatic certificate/ssl reverse proxy:
```
https://subdomain.domain.com:443 {
header Strict-Transport-Security max-age=31536000;
reverse_proxy 192.168.1.111:50002
}
```
2. Install the service from start9 marketplace or sideload.
3. Go to the services management page and go to the Wrapper Repository URL listed there.
4. Arriving in Github, look for the file `scripts/procedures/healthChecks.ts`
1. possibly line 4? You should see a line: `"web-ui": healthUtil.checkWebUrl("http://free-gpt.embassy:8080")`, the part you need is `free-gpt.embassy:8080` which is the service and port it's listening on.
5. Now SSH into the Start9 server and switch to the root user with `sudo -i`.
6. Switch to the "chrooted" environment with `/usr/lib/startos/scripts/chroot-and-upgrade`. You should see a bit of syncing.
7. Create and open your service file `vim /lib/systemd/system/socat.freegpt.service` and give it a sensible name.
8. Paste the below text and:
1. Modify the description
2. Modify the port number after "tcp-l" to match the port you chose in your CaddyFile.
3. Modify the text "free-gpt.embassy:8080" to match the text for your service found from Github.
```
bash
[Unit]
Description=socat electrs forward
Wants=podman.service
After=podman.service
[Service]
Type=simple
Restart=always
RestartSec=3
ExecStartPre=/bin/bash -c "/bin/systemctl set-environment IP=$(ip route | grep default | awk '{print $9}')"
ExecStart=/usr/bin/socat tcp-l:50002,fork,reuseaddr,su=nobody,bind=${IP} tcp:free-gpt.embassy:8080
[Install]
WantedBy=multi-user.target
```
9. Save and quit.
10. Start your service with `systemctl enable socat.freegpt` or whichever service name you chose. That's the file name you created earlier.
11. exit the "chrooted" environment with `exit`.
12. That's it! if all's well you may reach your site on the clear-net with your domain.
Great! I'm using nginx instead of Caddy (using Nginx Proxy Manager docker container on a separate Pi4, which has a nice UI and letsencrypt integration).
