Personal bookmarking and archiving database powered by PocketBase.
- Go ≥ 1.25
- Docker + Docker Compose (for containerized runs)
- Access to the external APIs used by the helpers:
- Backblaze B2:
B2_APP_KEY_ID,B2_APP_KEY,B2_BUCKET_ID,B2_BUCKET_NAME - GitHub GraphQL:
GH_TOKEN,GH_USERNAME - The Movie Database:
TMDB_KEY - YouTube Data API v3:
YOUTUBE_KEY - PocketBase meta collection id:
META_ID
- Backblaze B2:
- Clone the repository and move into it.
- Create a
.envfile in the project root with all required variables:
cat <<'EOF' > .env
B2_APP_KEY_ID=
B2_APP_KEY=
B2_BUCKET_ID=
B2_BUCKET_NAME=
GH_TOKEN=
GH_USERNAME=
TMDB_KEY=
YOUTUBE_KEY=
META_ID=
EOF- Pull Go dependencies:
go mod downloadRun the PocketBase app directly:
go run . serve- The HTTP API listens on
http://127.0.0.1:8090by default. - Data created through PocketBase UI or API will be stored inside the local
pb_data/directory.
Build and start the stack (PocketBase + Caddy):
docker compose up --build- The PocketBase service binds to
8090, proxied by Caddy on ports80/443. - Persistent data lives in the
pb_databind mount; keep it if you need to retain records.
Stop and remove the containers:
docker compose downThe repo ships with a convenience script that pulls the latest code and rebuilds the Docker services:
./deploy.shRun it from the server where the stack should stay up-to-date.