Skip to content

Instantly share code, notes, and snippets.

@jordan-rash
Created June 8, 2023 19:53
Show Gist options
  • Save jordan-rash/b4a11fe8a056eba5d5cdea0ac97a8a8c to your computer and use it in GitHub Desktop.
Save jordan-rash/b4a11fe8a056eba5d5cdea0ac97a8a8c to your computer and use it in GitHub Desktop.
NATS Server + TSNet
package main
import (
nats "github.com/nats-io/nats-server/v2/server"
"tailscale.com/tsnet"
"tailscale.com/types/logger"
"fmt"
"log"
)
var (
hostname string = "nats-tailscale"
ts_authkey string = "<TS_AUTH_KEY_HERE>"
port string = "8088"
)
func main() {
s := &tsnet.Server{
Hostname: hostname,
AuthKey: ts_authkey,
Logf: logger.Discard,
}
defer s.Close()
ln, err := s.Listen("tcp", ":"+port)
if err != nil {
log.Fatal(err)
}
defer ln.Close()
opts := new(nats.Options)
opts.NetListener = &ln
ns, err := nats.NewServer(opts)
if err != nil {
nats.PrintAndDie(fmt.Sprintf("%s: %s", hostname, err))
}
ns.ConfigureLogger()
// Start things up. Block here until done.
if err := nats.Run(ns); err != nil {
nats.PrintAndDie(err.Error())
}
ns.WaitForShutdown()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment