Code Monkey home page Code Monkey logo

pockethost's Introduction

pockethost.io

This is the open source monorepo for pockethost.io, the hosting platform for PocketBase.

Introduction

https://pockethost.io hosts your PocketBase projects so you don't have to. Create a project like you would in Firebase and Supabase and let PocketHost do the rest.

Features:

  • Create unlimited PocketBase instances
  • Each instance runs on a subdomain of pockethost.io
  • Run your instance in an ultra-beefy shared environment

Focus on your app

Get a live PocketBase instance in 10 seconds with no backend setup:

  1. Create an account at pockethost.io
  2. Provision your first PocketBase instance
  3. Connect from anywhere
const client = new PocketBase(`https://harvest.pockethost.io`)

Batteries Included

Here's all the Linux/devops stuff that PocketHost does for you:

  • Docker
  • Email and DKIM+SPF and more
  • DNS jargon: MX, TXT, CNAME
  • SSL cert provisioning and management
  • Storage
  • Volume mounts
  • Could computing or VPS deployment
  • CDN and static asset hosting
  • Amazon AWS
  • Lots more - scaling, firewalls, DDoS defense, user security, log rotation, patches, updates, build tools, CPU architectures, multitenancy, on and on

This monorepo contains the entire open source stack that powers pockethost.io. You can use it to run your own private or public multitenant platform.

Questions?

Join us in the discussion area.

Development

Just the frontend (Svelte)

This is the easiest setup.

git clone [email protected]:benallfree/pockethost.git
cd pockethost
yarn
yarn dev:www

That's it. You're in business. Your local Svelte build will talk to the pockethost.io mothership and connect to that for all database-related tasks.

All our base

The entire pockethost.io stack is Dockerized to make it as easy as possible to mimic a production environment.

Prerequisites

OS X Tip - In Docker Desktop > Beta Features, enable the Virtualization framework and VirtioFS. These settings make a huge performance difference with the volume mounts used frequently with development mode

Running in dev mode

The following will run the Docker stack in dev mode. Dev mode links all code to the host repo and everything will rebuild/relaunch upon modification.

git clone [email protected]:benallfree/pockethost.git
cd pockethost/docker
cp .env-template-dev .env.local  # Edit as needed - defaults should work
cd ..
docker build .
docker compose -f docker/build.yaml up --remove-orphans
docker compose -f docker/migrate.yaml up --remove-orphans
docker compose -f docker/install.yaml up --remove-orphans
docker compose -f docker/dev.yaml up --remove-orphans
open https://pockethost.test

Production Deployment

1. Build

git clone [email protected]:benallfree/pockethost.git
cd pockethost/docker
cp .env-template-prod .env.local  # Edit as needed - defaults should work
cd ..
docker build .
docker compose -f docker/build.yaml up --remove-orphans
docker compose -f docker/migrate.yaml up --remove-orphans
docker compose -f docker/install.yaml up --remove-orphans
docker compose -f docker/prod.yaml up --remove-orphans

2. Refresh Certbot

./scripts/certbot-refresh.sh

Then, ensure keys named fullchain.pem and privkey.key are in docker/mount/nginx/ssl.

3. Run

sudo open https://pockethost.io

4. Test

If all goes well:

  • Update readme.md with latest relevant fixes.
  • Create a new discussion on PocketHost forum
  • If major release, create announcement on PocketBase forum
  • Use yarn version --patch for patch release and tag with git

5. Prod Run

nohup docker compose -f docker/prod.yaml up --remove-orphans &

Release History

next

0.5.5

  • chore: PocketBase 0.9.2 update
  • chore: PocketBase 0.10.0, 0.10.1 updates

0.5.4

  • fix: Create Instance cancel button does not work
  • fix: instances do not stay active for realtime events
  • chore: support for PocketBase 0.9.0 and 0.9.1

0.5.3

  • fix: incorrect instance information displaying on dashboard details in some cases
  • fix: more helpful error message when backup fails for nonexistent instance
  • chore: move version number to base package.json
  • refactor: logging and async helpers
  • chore: restore auto-cancellation
  • chore: rebuild with go 1.19.3 and include in bin name
  • fix: Disallow backups if data dir doesn't exist

0.5.2

  • chore: rc3, rc4, 0.8.0-final support
  • chore: dedupe yarn
  • Fix: Account verification needs to hard-redirect
  • chore: improved bootstrap TS support

0.5.1

  • fix: 404 after creating instance
  • fix: SQLite3 build

0.5.0

  • Create data backups
  • Display version near PocketHost logo
  • Account activation ux enhancements
  • Password reset feature
  • Menu ux refresh
  • PocketBase instance version number now shows on dashboard

0.4.2

  • Runtime metrics now show how many minutes per month an instance has used

0.4.1

  • Support for 0.7.10 and 0.8.0-rc2
  • Update to go 1.19.3
  • Docker build system updates

0.4.0

  • PocketBase 0.8 support
  • Introduced "platforms" concept for version control

0.3.2

  • Migrated PBScript repository to here
  • Accounts must now be verified before running an instance

0.3.1

  • OpenGraph support
  • Darkmode enhancements

0.3.0

  • Improved realtime support in proxy
  • Updated developer docs
  • Improved Docker support for dev and prod
  • Complete UX redesign
  • Idle/running status for PB instance now shows in green
  • Ability to run separate versions of PocketBase per instance for custom cases including beta/dev

0.2.0

  • 100% dockerized
  • Completely rewritten daemon proxy that launches PocketBase instances on demand

0.0.1

  • Initial release

pockethost's People

Contributors

benallfree avatar brewhousedigital avatar ianmello10 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.