package main import ( "fmt" "sync" "time" "github.com/getsentry/sentry-go" log "github.com/sirupsen/logrus" "goauthentik.io/internal/config" "goauthentik.io/internal/constants" "goauthentik.io/internal/gounicorn" "goauthentik.io/internal/web" ) func main() { log.SetLevel(log.DebugLevel) config.DefaultConfig() config.LoadConfig("./authentik/lib/default.yml") config.LoadConfig("./local.env.yml") config.ConfigureLogger() if config.G.ErrorReporting.Enabled { sentry.Init(sentry.ClientOptions{ Dsn: "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8", AttachStacktrace: true, TracesSampleRate: 0.6, Release: fmt.Sprintf("authentik@%s", constants.VERSION), Environment: config.G.ErrorReporting.Environment, }) defer sentry.Flush(time.Second * 5) defer sentry.Recover() } rl := log.WithField("logger", "authentik.g") wg := sync.WaitGroup{} wg.Add(2) go func() { defer wg.Done() g := gounicorn.NewGoUnicorn() for { err := g.Start() rl.WithError(err).Warning("gunicorn process died, restarting") } }() go func() { defer wg.Done() ws := web.NewWebServer() ws.Run() }() wg.Wait() }