Overview
February 2, 2026 ยท View on GitHub
Overview
This plugin allow expose local Pocketbase with ngrok
This plugin can be used for development purposes, when you need to expose your local Pocketbase instance to the internet. For example, you can use it to test your Pocketbase app on mobile device.
Requirements
- Go 1.25+
- Pocketbase 0.36+
Installation
go get github.com/iamelevich/pocketbase-plugin-ngrok
Example
You can check examples in examples folder
package main
import (
"context"
ngrokPlugin "github.com/iamelevich/pocketbase-plugin-ngrok"
"log"
"github.com/pocketbase/pocketbase"
)
func main() {
app := pocketbase.New()
// Setup ngrok
ngrokPlugin.MustRegister(app, &ngrokPlugin.Options{
Ctx: context.Background(),
Enabled: true,
AuthToken: "YOUR_NGROK_AUTH_TOKEN", // Better to use ENV variable for that
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
pocketbase_plugin_ngrok
import "github.com/iamelevich/pocketbase-plugin-ngrok"
Index
type Options
Options defines optional struct to customize the default plugin behavior.
type Options struct {
// Ctx is a context that will be used to start ngrok tunnel.
Ctx context.Context
// Enabled defines if ngrok tunnel should be started.
Enabled bool
// Enable logging of ngrok events to pocketbase logger
EnableLogging bool
// AuthToken is your ngrok auth token. You can get it from https://dashboard.ngrok.com/auth
AuthToken string
// AfterSetup is a callback function that will be called after ngrok tunnel is started.
AfterSetup func(url *url.URL) error
// TunnelForwarder is optional. When set, used instead of ngrok for creating tunnels.
// Primarily useful for testing without a real ngrok connection.
TunnelForwarder TunnelForwarder
}
type Plugin
type Plugin struct {
// contains filtered or unexported fields
}
func MustRegister
func MustRegister(app core.App, options *Options) *Plugin
MustRegister is a helper function that registers plugin and panics if error occurred.
func Register
func Register(app core.App, options *Options) (*Plugin, error)
Register registers plugin.
func (*Plugin) Validate
func (p *Plugin) Validate() error
Validate plugin options. Return error if some option is invalid.
type TunnelForwarder
TunnelForwarder creates ngrok tunnels. Used for dependency injection in tests. When nil, the default ngrok implementation is used.
type TunnelForwarder interface {
Forward(ctx context.Context, upstreamAddr, authToken string, enableLogging bool, logger interface{}) (*url.URL, error)
}
Generated by gomarkdoc
Contributing
This pocketbase plugin is free and open source project licensed under the MIT License. You are free to do whatever you want with it, even offering it as a paid service.
Process
- Fork the repo
- Create a new branch
- Make your changes
- Create a pull request
- Wait for review
- Make changes if needed
- Merge
- Celebrate :)
Development setup
- Install mise and run
mise install. - Setup
prekhooks withprek install -t commit-msg -t pre-commit
Testing
- Run
mise run testto run tests - Run
mise run test-reportto run tests and get coverage report in./coverage.html
Linting
- Run
mise run lintto run linters
Docs update in README
- Run
mise run docsto update docs in README (it will also install gomarkdoc)