feat: blog

This commit is contained in:
Ben Allfree 2025-01-08 11:51:48 -08:00
parent 8f35d0edbd
commit e87890407a
12 changed files with 133 additions and 12 deletions

View File

@ -0,0 +1,4 @@
<div class="docs-content prose p-5 w-full md:w-fit">
<a href="/blog"><h1>Bloggin Since 2025</h1></a>
<slot />
</div>

View File

@ -0,0 +1,11 @@
### [YouTube Dev Channel is Live](/blog/announcing-dev-channel)
### [Moving to a hard paywall](/blog/hard-paywall)
### [Why no SLA?](/blog/why-no-sla)
### [PocketHost is live in 40+ countries](/blog/live-in-40-countries)
### [Announcing Pocker](/blog/announcing-pocker)
### [What's Next For PocketBase (Early Morning Dev Round 1)](/blog/early-morning-dev-1)

View File

@ -0,0 +1,7 @@
## YouTube Channel is Live
_[@cap'n](https://discord.gg/nVTxCMEcGT) Jan 8, 2025_
I've decided to launch a dev channel for all things PocketBase/PocketHost. We'll be posting videos on how to use PocketBase, PocketHost, and other PocketBase related topics such as side projects, tutorials, and other ecosystem tools like PocketPages, PocketPress, and more.
Check out the channel, give it a like and sub [https://youtube.com/@hocketpost](https://youtube.com/@hocketpost)!

View File

@ -0,0 +1,43 @@
## Pocker
_[@cap'n](https://discord.gg/nVTxCMEcGT) Dec 20, 2024_
Well, I've decided to go rogue and solve the problem of global PocketBase hosting. The Flounder series has raised enough money for us to do this, so I'm moving forward.
We need a custom container solution for PocketHost/PocketBase. Docker is great, and individual VPS's are great if that's how you want to spend your time, but we can do a lot better.
I sat down and started testing a simple question: how many PocketBase instances can I run in a single golang binary? The results I found were astonishing from the outside, but not that surprising to me after having worked on PocketHost for a few years. A single golang process can run 1000+ PocketBase instances AT THE SAME TIME on a single 256mb VPS.
Contrast that to max 50 simultaneous instances running on a 32GB VPS with Docker. We are talking about a 20x increase in the number of instances we can run on a fraction of the hardware. It's a crazy difference.
### Built in Go
Pocker is built in Go. PocketBase is compiled directly into the Pocker binary, thus maintaining the "1 file" ethos of PocketBase. By building in golang, I have direct access to the PocketBase source and can closely control what is allowed to run, under what conditions.
### Why is this better?
Pocker can launch a PocketBase instance in about 5ms. Contrast that to 600-1000ms with Docker and you get a 200x speedup at boot time. Requests are also handled much more quickly.
It also creates options for extending PocketBase in interesting ways, such as adding SQLite extensions or AI agents. Instead of everyone having to fight to build their own custom version of PocketBase, we can do it once and share it with everyone. We can even extend the JSVM to make the extended features scriptable.
I predict these capabilities will be a huge win and game changer for the PocketBase ecosystem.
### But what about security?
Pocker is a custom container technology that allows us to run 1000+ PocketBase instances concurrently on a single VPS. Because we control all the code, Pocker can be as secure as the open source community can make it - maybe even surpassing Docker, but without all the overhead that Docker needs to be a general container technology.
In order to create a secure sandbox for each instance, there are a few JSVM capabilities we need to modify. Namely, we need to disable/modify the `$os` functions because they allow direct access to operating system features.
### But what about "bad neighbor" and resource starvation?
As of Go 1.14, the concurrency model is fully pre-emptive. That means a misbehaving goroutine will be forced to play nicely with the others. If that isn't enough, we may also need to restrict request times. So far, I don't anticipate resource starvation will be an issue because Go's concurrency model is already so good.
### But what about custom binaries?
Right, custom binaries won't be allowed. Instead, we're going to leverage JSVM (and possibly other languages) for extension via scripting. We're going to bake in support for popular extensions like SQLite extensions and AI agents. If you have a suggestion, let me know.
### Exciting times ahead
So that's the 2025 strategy. We are building a global PocketBase platform that is secure, screaming fast, and extensible.
I'm excited to see what the community comes up with.

View File

@ -0,0 +1,3 @@
## Early Morning Dev, Round 1
I stopped in to chat with Early Morning Dev on his episode, [What's Next For PocketBase With The Founder Of PocketHost](https://www.youtube.com/watch?v=o9eSgzc9jvQ). Check it out

View File

@ -0,0 +1,9 @@
## Moving to a hard paywall
_[@cap'n](https://discord.gg/nVTxCMEcGT) Jan 6, 2025_
Along with the [Pocker](/blog/announcing-pocker) rollout, I've also decided to move to a hard paywall. This means that every new user will have to pay for their PocketHost account before they can use it. There will be a 7 day free trial, but after that, you'll have to pay, and you will know that going in.
I dislike hard paywalls, but there is a lot of research out there suggesting that it's best to have the price/value conversation up front. It makes you think more carefully about the value being offered and whether it's worth paying for. Ultimately, if running PocketHost at a global scale isn't worth it to enough people, the project will die. So I think this is a necessary step to ensure the project's long term viability.
PocketHost has over 10,000 users and only a handful of subscribers because it's been possible to run a free PocketHost account with virtually unlimited resources. This has been great for the community, but it's also meant that PocketHost has been a bit of a free ride for a lot of people, while only a handful of people have been supporting all the others.

View File

@ -0,0 +1,17 @@
## PocketHost is live in 40+ countries
_[@cap'n](https://discord.gg/nVTxCMEcGT) Dec 25, 2024_
I've been hard at work getting PocketHost live in 40+ countries. This is the beginning of the 2025 global takeover by PocketHost.
![](2025-01-05-07-46-14.png)
We used to have just one prototype server running in SFO. Everyone would hit Cloudflare first, and Cloudflare would then proxy to SFO. This was okay, but users around the globe were reporting latency. After doing some research, I found that Fly's internal VPN routing was actually faster than Cloudflare's.
Now, we have PocketHost edges running around the globe. Your request hits the nearest PocketHost edge and is then routed via VPN to _another_ proxy server in SJC, which is milliseconds away from SFO. From there, the request is proxied over to SFO where our prototype server lives.
Below is a live log showing requests hitting PocketHost edges and then being routed to SJC where they are proxied over to SFO where our prototype server lives. The latency has been reduced by about 150ms on average. Processing the request still takes what it takes, but the latency of the request traveling back and forth between you and SFO is much lower.
This is part of the larger [Pocker](/blog/announcing-pocker) strategy.
![](2025-01-05-07-50-04.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -0,0 +1,31 @@
## Why no SLA?
_[@cap'n](https://discord.gg/nVTxCMEcGT) Jan 1, 2025_
PocketHost is in its 3rd year as an open source hosting service. We have never offered an SLA. Why?
### I'm just one guy
It's just me making this thing. I have to sleep sometimes. I have a life and family, and have to take care of myself. More than once, I've stopped on the side of the road in a remote area while traveling just to reboot PocketHost when something goes wrong. I leave Discord notifications on at night while I sleep. In short, the service level we have is the best I can offer without a team.
### I'm kind of averse to SLA's
Unless you are willing to pay outrageous amounts of money, SLA's are just theatre. They are a way to make you feel better about the service, but in reality, they don't mean anything because downtime is typically caused by things like hardware failures, network issues, or other things that are out of our control.
### Self-hosting doesn't come with an SLA either
The alternative to PocketHost is to self-host. Self-hosting doesn't come with an SLA either. It's just you. You have to figure out how to manage hardware failures, network issues, and other things that are out of your control. Instead of doing that, you're paying someone else to do it for you, but the underlying problems are still the same. I don't want to hide that reality from you. So we will do the best we can, and you'll benefit from running on a global platform that is WAY more advanced than what you would be able to do on your own. Not because you can't, but just because it isn't feasible to set up a global network for yourself unless you are running a really big project.
### I do like uptime stats and transparency
Just because PocketHost doesn't have an SLA doesn't mean we don't care about uptime. We do care about uptime, and we do care about transparency. We have a [public uptime dashboard](https://status.pockethost.dev) that shows uptime as best we can, but it's not perfect. I also think it's a little unfair to count certain types of downtime against PocketHost's reputation. If an underlying service goes down, what can we do?
An overall uptime metric is a good thing, but I think understanding PocketHost's stability as a platform is also important. So I have mixed feelings about uptime stats that aren't explained or qualified. Lies, damn lies, and statistics.
### I'd like PocketHost to be something different
I don't particularly care for hosting providers or cloud solutions. I envision PocketHost as a community-driven effort. Perhaps one day, the PocketHost users can wield some kind of control over the platform enough to manage downtime themselves. Perhaps the system can be self-healing, too. I'd rather employ these approaches than to scale out an IT team to babysit the platform. An autonomous system is a much better system.
### Conclusion
Overall, this is a personal choice I've made as the project owner. I don't seen a point in making promises that I can't really keep or control. If PocketHost grows big enough, perhaps an SLA will make more sense, but for now, I'm happy with the current state of things and am running my production apps on PocketHost without an SLA.

View File

@ -40,6 +40,9 @@
<a href="/stats">Stats</a>
</li>
</UserHasRole>
<li class={isCollapsed ? '' : 'hidden lg:flex'}>
<a href="/blog" rel="noreferrer">Blog</a>
</li>
<li class={isCollapsed ? '' : 'hidden lg:flex'}>
<a href="/pricing" rel="noreferrer">Pricing</a>
</li>

View File

@ -5,7 +5,7 @@
import { browser, dev } from '$app/environment'
import { is23Available } from '$util/stores'
const BANNER_KEY = 'promo-banner-v0.23-dismissed'
const BANNER_KEY = 'pocker-announcement'
$: isActive = $is23Available
$: isVisible = isActive && browser && !localStorage.getItem(BANNER_KEY)
@ -18,17 +18,10 @@
{#if isVisible}
<div class="alert alert-info bg-yellow-300 rounded-none mb-10 relative">
<div class="text-info-content flex-1">
v0.23 is now available.
<UserLoggedIn>
<a href="/instances/new" class="btn btn-sm btn-neutral m-2"
>Try it now!</a
>
</UserLoggedIn>
<UserLoggedOut>
<a href="/get-started" class="btn btn-sm btn-neutral m-2"
>Get started now!</a
>
</UserLoggedOut>
PocketHost is live in 40+ countries.
<a href="/blog/announcing-pocker" class="btn btn-sm btn-neutral m-2"
>Learn more</a
>
</div>
<button
class="btn btn-ghost btn-circle btn-xs absolute top-0 right-0"