>>> headscale: Building community/headscale 0.28.0-r0 (using abuild 3.18.0_rc3-r1) started Thu, 16 Jul 2026 04:12:30 +0000 >>> headscale: Validating /home/buildozer/aports/community/headscale/APKBUILD... >>> headscale: Analyzing dependencies... >>> headscale: Installing for build: build-base go postgresql17 ( 1/17) Installing go (1.26.4-r0) ( 2/17) Installing postgresql-common (1.3-r0) Executing postgresql-common-1.3-r0.pre-install ( 3/17) Installing libpq (18.4-r0) ( 4/17) Installing readline (8.3.3-r1) ( 5/17) Installing postgresql17-client (17.10-r0) ( 6/17) Installing tzdata (2026c-r0) ( 7/17) Installing icu-data-en (78.1-r0) Executing icu-data-en-78.1-r0.post-install * If you need ICU with non-English locales and legacy charset support, install * package icu-data-full. ( 8/17) Installing icu-libs (78.1-r0) ( 9/17) Installing gdbm (1.26-r0) (10/17) Installing libsasl (2.1.28-r9) (11/17) Installing libldap (2.6.13-r0) (12/17) Installing xz-libs (5.8.3-r0) (13/17) Installing libxml2 (2.13.9-r2) (14/17) Installing postgresql17 (17.10-r0) Executing postgresql17-17.10-r0.post-install * * If you want to use JIT in PostgreSQL, install postgresql17-jit or * postgresql-jit (if you didn't install specific major version of postgresql). * (15/17) Installing .makedepends-headscale (20260716.041230) (16/17) Installing postgresql-common-openrc (1.3-r0) (17/17) Installing postgresql17-openrc (17.10-r0) Executing busybox-1.38.0-r1.trigger Executing postgresql-common-1.3-r0.trigger * Setting postgresql17 as the default version * * You are using 'postgresql17'. It's recommended to upgrade to the latest * major version provided by package 'postgresql18'. * Use command 'pg_versions' to switch between versions. * OK: 620.2 MiB in 122 packages >>> headscale: Cleaning up srcdir >>> headscale: Cleaning up pkgdir >>> headscale: Cleaning up tmpdir >>> headscale: Fetching https://distfiles.alpinelinux.org/distfiles/edge/headscale-0.28.0-1.tar.gz /var/cache/distfiles/edge/headscale-0.28.0-1.tar.gz: OK /home/buildozer/aports/community/headscale/headscale.initd: OK >>> headscale: Fetching https://distfiles.alpinelinux.org/distfiles/edge/headscale-0.28.0-1.tar.gz /var/cache/distfiles/edge/headscale-0.28.0-1.tar.gz: OK /home/buildozer/aports/community/headscale/headscale.initd: OK >>> headscale: Unpacking /var/cache/distfiles/edge/headscale-0.28.0-1.tar.gz... go: downloading github.com/jagottsicher/termcolor v1.0.2 go: downloading github.com/rs/zerolog v1.34.0 go: downloading tailscale.com v1.94.1 go: downloading google.golang.org/grpc v1.78.0 go: downloading gopkg.in/yaml.v3 v3.0.1 go: downloading github.com/spf13/cobra v1.10.2 go: downloading github.com/spf13/viper v1.21.0 go: downloading github.com/pterm/pterm v0.12.82 go: downloading github.com/tailscale/squibble v0.0.0-20251104223530-a961feffb67f go: downloading github.com/prometheus/common v0.67.5 go: downloading github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e go: downloading github.com/oauth2-proxy/mockoidc v0.0.0-20240214162133-caebfff84d25 go: downloading google.golang.org/protobuf v1.36.11 go: downloading github.com/samber/lo v1.52.0 go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 go: downloading github.com/google/go-cmp v0.7.0 go: downloading go4.org/netipx v0.0.0-20231129151722-fdeea329fbba go: downloading gorm.io/gorm v1.31.1 go: downloading github.com/coreos/go-oidc/v3 v3.17.0 go: downloading github.com/go-json-experiment/json v0.0.0-20251027170946-4849db3c2f7e go: downloading github.com/arl/statsviz v0.8.0 go: downloading github.com/cenkalti/backoff/v5 v5.0.3 go: downloading github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc go: downloading github.com/gofrs/uuid/v5 v5.4.0 go: downloading github.com/gorilla/mux v1.8.1 go: downloading github.com/philip-bui/grpc-zerolog v1.0.1 go: downloading github.com/pkg/profile v1.7.0 go: downloading github.com/prometheus/client_golang v1.23.2 go: downloading github.com/sasha-s/go-deadlock v0.3.6 go: downloading github.com/tailscale/tailsql v0.0.0-20260105194658-001575c3ca09 go: downloading golang.org/x/crypto v0.47.0 go: downloading golang.org/x/net v0.49.0 go: downloading golang.org/x/sync v0.19.0 go: downloading golang.org/x/oauth2 v0.34.0 go: downloading zgo.at/zcache/v2 v2.4.1 go: downloading github.com/glebarez/sqlite v1.11.0 go: downloading github.com/go-gormigrate/gormigrate/v2 v2.1.5 go: downloading gorm.io/driver/postgres v1.6.0 go: downloading github.com/tailscale/hujson v0.0.0-20250605163823-992244df8c5a go: downloading github.com/mattn/go-isatty v0.0.20 go: downloading github.com/creachadair/mds v0.25.15 go: downloading github.com/klauspost/compress v1.18.3 go: downloading golang.org/x/exp v0.0.0-20260112195511-716be5621a96 go: downloading github.com/fsnotify/fsnotify v1.9.0 go: downloading github.com/coder/websocket v1.8.14 go: downloading github.com/chasefleming/elem-go v0.31.0 go: downloading github.com/puzpuzpuz/xsync/v4 v4.4.0 go: downloading github.com/google/go-github v17.0.0+incompatible go: downloading github.com/hashicorp/go-version v1.8.0 go: downloading github.com/go-jose/go-jose/v4 v4.1.3 go: downloading github.com/go-jose/go-jose/v3 v3.0.4 go: downloading github.com/golang-jwt/jwt/v5 v5.3.1 go: downloading github.com/go-viper/mapstructure/v2 v2.5.0 go: downloading github.com/sagikazarmark/locafero v0.12.0 go: downloading github.com/spf13/afero v1.15.0 go: downloading github.com/spf13/cast v1.10.0 go: downloading github.com/spf13/pflag v1.0.10 go: downloading golang.org/x/text v0.33.0 go: downloading github.com/mattn/go-colorable v0.1.14 go: downloading github.com/felixge/fgprof v0.9.5 go: downloading github.com/golang/protobuf v1.5.4 go: downloading github.com/jinzhu/now v1.1.5 go: downloading github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741 go: downloading github.com/prometheus/client_model v0.6.2 go: downloading go.yaml.in/yaml/v2 v2.4.3 go: downloading github.com/jinzhu/inflection v1.0.0 go: downloading github.com/tailscale/setec v0.0.0-20260115174028-19d190c5556d go: downloading github.com/glebarez/go-sqlite v1.22.0 go: downloading modernc.org/sqlite v1.44.3 go: downloading atomicgo.dev/cursor v0.2.0 go: downloading atomicgo.dev/keyboard v0.2.9 go: downloading atomicgo.dev/schedule v0.1.0 go: downloading github.com/gookit/color v1.6.0 go: downloading github.com/lithammer/fuzzysearch v1.1.8 go: downloading github.com/mattn/go-runewidth v0.0.19 go: downloading golang.org/x/term v0.39.0 go: downloading github.com/beorn7/perks v1.0.1 go: downloading github.com/prometheus/procfs v0.19.2 go: downloading github.com/cespare/xxhash/v2 v2.3.0 go: downloading github.com/jackc/pgx/v5 v5.8.0 go: downloading golang.org/x/sys v0.40.0 go: downloading github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 go: downloading github.com/google/go-querystring v1.2.0 go: downloading google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 go: downloading github.com/subosito/gotenv v1.6.0 go: downloading github.com/pelletier/go-toml/v2 v2.2.4 go: downloading go.yaml.in/yaml/v3 v3.0.4 go: downloading github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 go: downloading github.com/containerd/console v1.0.5 go: downloading modernc.org/libc v1.67.6 go: downloading github.com/creachadair/msync v0.8.2 go: downloading github.com/clipperhouse/uax29/v2 v2.5.0 go: downloading github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e go: downloading github.com/jackc/pgpassfile v1.0.0 go: downloading github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 go: downloading github.com/jackc/puddle/v2 v2.2.2 go: downloading github.com/clipperhouse/stringish v0.1.1 go: downloading go4.org/mem v0.0.0-20240501181205-ae6ca9944745 go: downloading github.com/jsimonetti/rtnetlink v1.4.2 go: downloading github.com/mdlayher/netlink v1.8.0 go: downloading github.com/axiomhq/hyperloglog v0.2.6 go: downloading github.com/aws/aws-sdk-go-v2 v1.41.1 go: downloading golang.org/x/time v0.14.0 go: downloading github.com/tailscale/peercred v0.0.0-20250107143737-35a0c7bd7edc go: downloading github.com/huin/goupnp v1.3.0 go: downloading github.com/aws/aws-sdk-go-v2/config v1.32.7 go: downloading github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 go: downloading github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 go: downloading github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 go: downloading github.com/mitchellh/go-ps v1.0.0 go: downloading github.com/aws/smithy-go v1.24.0 go: downloading github.com/gaissmai/bart v0.26.1 go: downloading github.com/pires/go-proxyproto v0.9.2 go: downloading github.com/fxamacker/cbor/v2 v2.9.0 go: downloading gvisor.dev/gvisor v0.0.0-20250205023644-9414b50a5633 go: downloading github.com/hdevalence/ed25519consensus v0.2.0 go: downloading github.com/tailscale/web-client-prebuilt v0.0.0-20251127225136-f19339b67368 go: downloading github.com/mdlayher/socket v0.5.1 go: downloading github.com/tailscale/wireguard-go v0.0.0-20250716170648-1d0488a3d7da go: downloading github.com/godbus/dbus/v5 v5.2.2 go: downloading github.com/safchain/ethtool v0.7.0 go: downloading github.com/kamstrup/intmap v0.5.2 go: downloading github.com/dgryski/go-metro v0.0.0-20250106013310-edb8663e5e33 go: downloading filippo.io/edwards25519 v1.1.0 go: downloading github.com/x448/float16 v0.8.4 go: downloading github.com/aws/aws-sdk-go-v2/credentials v1.19.7 go: downloading github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 go: downloading github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 go: downloading github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 go: downloading github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 go: downloading github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 go: downloading github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 go: downloading github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 go: downloading github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 go: downloading github.com/google/btree v1.1.3 go: downloading modernc.org/memory v1.11.0 go: downloading github.com/dustin/go-humanize v1.0.1 go: downloading github.com/google/uuid v1.6.0 go: downloading modernc.org/mathutil v1.7.1 go: downloading github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec go: downloading github.com/stretchr/testify v1.11.1 go: downloading github.com/creachadair/flax v0.0.5 go: downloading github.com/creachadair/command v0.2.0 go: downloading github.com/ory/dockertest/v3 v3.12.0 go: downloading zombiezen.com/go/postgrestest v1.0.1 go: downloading github.com/docker/docker v28.5.2+incompatible go: downloading github.com/lib/pq v1.11.1 go: downloading github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 go: downloading github.com/cenkalti/backoff/v4 v4.3.0 go: downloading github.com/docker/go-connections v0.6.0 go: downloading github.com/docker/go-units v0.5.0 go: downloading github.com/opencontainers/image-spec v1.1.1 go: downloading github.com/opencontainers/runc v1.3.2 go: downloading github.com/sirupsen/logrus v1.9.4 go: downloading github.com/containerd/continuity v0.4.5 go: downloading github.com/docker/cli v29.2.1+incompatible go: downloading github.com/moby/term v0.5.2 go: downloading github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 go: downloading github.com/opencontainers/go-digest v1.0.0 go: downloading github.com/moby/sys/user v0.4.0 go: downloading dario.cat/mergo v1.0.2 go: downloading github.com/moby/moby/api v1.53.0 go: downloading github.com/xeipuuv/gojsonschema v1.2.0 go: downloading github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 go: downloading github.com/moby/moby/client v0.2.2 go: downloading github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 go: downloading github.com/containerd/errdefs v1.0.0 go: downloading github.com/containerd/errdefs/pkg v0.3.0 go: downloading go.opentelemetry.io/otel/trace v1.40.0 go: downloading go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 go: downloading github.com/distribution/reference v0.6.0 go: downloading github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb go: downloading go.opentelemetry.io/otel v1.40.0 go: downloading github.com/felixge/httpsnoop v1.0.4 go: downloading go.opentelemetry.io/otel/metric v1.40.0 go: downloading github.com/moby/docker-image-spec v1.3.1 go: downloading github.com/pkg/errors v0.9.1 go: downloading go.opentelemetry.io/auto/sdk v1.2.1 go: downloading github.com/go-logr/logr v1.4.3 go: downloading github.com/go-logr/stdr v1.2.2 ? github.com/juanfont/headscale [no test files] ok github.com/juanfont/headscale/cmd/headscale 0.025s ok github.com/juanfont/headscale/cmd/headscale/cli 0.024s ? github.com/juanfont/headscale/cmd/hi [no test files] ? github.com/juanfont/headscale/cmd/mapresponses [no test files] ? github.com/juanfont/headscale/gen/go/headscale/v1 [no test files] {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedPreAuthKeyCreatesTaggedNode3619256286/001/noise_private.key","time":"2026-07-16T04:13:48Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedPreAuthKeyCreatesTaggedNode3619256286/001/headscale_test.db","time":"2026-07-16T04:13:48Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:48Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:48Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:48Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:48Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:48Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:48Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:48Z","reusable":true,"used":false,"time":"2026-07-16T04:13:48Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node","machine.key":"[f3DtM]","node.key":"[Wlk/T]","user.name":"tag-creator","time":"2026-07-16T04:13:48Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node","time":"2026-07-16T04:13:48Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:48Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:48Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:48Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:48Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:5a593f4dd4b20305e173f5a2239f301f808475a3168ecf5f9491facaddb02524","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-aD4ktcvfAkkM-288hI_Gpv3nsnMZ0aerEyQXHcplB_cGbVJ0Gq6Bbi83BS73b1DqOmRJ1OS3fdT0B"},"Expiry":"2026-07-17T04:13:48.31684804Z","Followup":"","Hostinfo":{"Hostname":"tagged-node"},"NodeKeySignature":null},"node.name":"tagged-node","node.id":1,"time":"2026-07-16T04:13:49Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:49Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:49Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestReAuthDoesNotReapplyTags877297989/001/noise_private.key","time":"2026-07-16T04:13:49Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestReAuthDoesNotReapplyTags877297989/001/headscale_test.db","time":"2026-07-16T04:13:49Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:49Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:49Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:49Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:49Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:49Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:49Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:49Z","reusable":true,"used":false,"time":"2026-07-16T04:13:49Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reauth-test-node","machine.key":"[6Aeru]","node.key":"[MdFHj]","user.name":"tag-creator","time":"2026-07-16T04:13:49Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reauth-test-node","time":"2026-07-16T04:13:49Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:49Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:49Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:49Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:49Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:31d1478c3e1298182131da53e7f2ea88fed9415971dec538b139bd048022b361","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Hu7GkJYK9m9X-m0JAqKpuUh5n8_aXfqSkOgCS8XzvM8tSvPe_75-dSC2QbsTj_4vja0wPnq6pyHZw"},"Expiry":"2026-07-17T04:13:49.348080494Z","Followup":"","Hostinfo":{"Hostname":"reauth-test-node"},"NodeKeySignature":null},"node.name":"reauth-test-node","node.id":1,"time":"2026-07-16T04:13:50Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"reauth-test-node","machine.key":"[6Aeru]","node.key.existing":"[MdFHj]","node.key.request":"[MdFHj]","authkey.id":1,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:13:50Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reauth-test-node","machine.key":"[6Aeru]","node.key":"[MdFHj]","user.name":"tag-creator","time":"2026-07-16T04:13:50Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"reauth-test-node","node.id":1,"machine.key":"[6Aeru]","node.key":"[MdFHj]","user.name":"tag-creator","time":"2026-07-16T04:13:50Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"reauth-test-node","time":"2026-07-16T04:13:50Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"reauth-test-node","node.id":1,"machine.key":"[6Aeru]","node.key":"[MdFHj]","user.name":"tag-creator","time":"2026-07-16T04:13:50Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:50Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:50Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:50Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:31d1478c3e1298182131da53e7f2ea88fed9415971dec538b139bd048022b361","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Hu7GkJYK9m9X-m0JAqKpuUh5n8_aXfqSkOgCS8XzvM8tSvPe_75-dSC2QbsTj_4vja0wPnq6pyHZw"},"Expiry":"2026-07-17T04:13:50.226702619Z","Followup":"","Hostinfo":{"Hostname":"reauth-test-node"},"NodeKeySignature":null},"node.name":"reauth-test-node","node.id":1,"time":"2026-07-16T04:13:50Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:50Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:50Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestCannotRemoveAllTags4082783393/001/noise_private.key","time":"2026-07-16T04:13:50Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestCannotRemoveAllTags4082783393/001/headscale_test.db","time":"2026-07-16T04:13:50Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:50Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:50Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:50Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:50Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:50Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:50Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:51Z","reusable":true,"used":false,"time":"2026-07-16T04:13:51Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node","machine.key":"[n1cgk]","node.key":"[8e07f]","user.name":"tag-creator","time":"2026-07-16T04:13:51Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node","time":"2026-07-16T04:13:51Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:51Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:51Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:51Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:51Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:f1ed3b7c812fad9da0e6d50e1750f2fb2e142b3fd2ac26c065a0b2787dc4e271","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-qvaqDM-_I0xs-4KwleFgDoVgMVhStvRP48MQ_pZc_qSYY1Wt_z3GHV0w155ZllYaGybdOqRqhhaIU"},"Expiry":"2026-07-17T04:13:50.894193803Z","Followup":"","Hostinfo":{"Hostname":"tagged-node"},"NodeKeySignature":null},"node.name":"tagged-node","node.id":1,"time":"2026-07-16T04:13:51Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:51Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:51Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestUserOwnedNodeCreatedWithUntaggedPreAuthKey3136917840/001/noise_private.key","time":"2026-07-16T04:13:51Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestUserOwnedNodeCreatedWithUntaggedPreAuthKey3136917840/001/headscale_test.db","time":"2026-07-16T04:13:51Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:51Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:51Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:51Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:51Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:51Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:51Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:52Z","reusable":true,"used":false,"time":"2026-07-16T04:13:52Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user-owned-node","machine.key":"[8ClVD]","node.key":"[zPjpk]","user.name":"node-owner","time":"2026-07-16T04:13:52Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user-owned-node","time":"2026-07-16T04:13:52Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:52Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:52Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:52Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:52Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"node-owner","Created":"2026-07-16T04:13:51.828419939Z"},"Login":{"ID":1,"Provider":"","LoginName":"node-owner","DisplayName":"node-owner"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:ccf8e990a85b6a11ba605e2acecb864b0ee25b3148d9e839a6c44a4eee2a0c67","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-QkyghxO1ZI3A-6SKu7uZ6ehbAT0tn8rs_cB6Wnl1WEC3gLpBdRgkG9xqA6d9BkifkvELyu64GTMsO"},"Expiry":"2026-07-17T04:13:51.975940057Z","Followup":"","Hostinfo":{"Hostname":"user-owned-node"},"NodeKeySignature":null},"node.name":"user-owned-node","node.id":1,"time":"2026-07-16T04:13:52Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:52Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:52Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestMultipleNodesWithSameReusableTaggedPreAuthKey1447449458/001/noise_private.key","time":"2026-07-16T04:13:52Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestMultipleNodesWithSameReusableTaggedPreAuthKey1447449458/001/headscale_test.db","time":"2026-07-16T04:13:52Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:52Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:52Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:52Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:52Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:52Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:52Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:53Z","reusable":true,"used":false,"time":"2026-07-16T04:13:53Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node-1","machine.key":"[q2ddg]","node.key":"[xt043]","user.name":"tag-creator","time":"2026-07-16T04:13:53Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node-1","time":"2026-07-16T04:13:53Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:53Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:53Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:53Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:53Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:c6dd38dfc910a8016ebc87c56d0efd5af4fda28e037c526d964f3b8485ba0a5b","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth--Yytlg9q1gB9-3liKcvLdO_y9UPW-NiIWSkarpXVo7_ybdzqn48IAT1eQ_PFza1KzBKllj27m6KKS"},"Expiry":"2026-07-17T04:13:53.015633487Z","Followup":"","Hostinfo":{"Hostname":"tagged-node-1"},"NodeKeySignature":null},"node.name":"tagged-node-1","node.id":1,"time":"2026-07-16T04:13:53Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:54Z","reusable":true,"used":false,"time":"2026-07-16T04:13:54Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node-2","machine.key":"[GkIPc]","node.key":"[O9UhS]","user.name":"tag-creator","time":"2026-07-16T04:13:54Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node-2","time":"2026-07-16T04:13:54Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:54Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:54Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:54Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:54Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:3bd5214b7f932002e0db3d909b17465f4df0f94b8427b90f6f1103b4207f7240","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth--Yytlg9q1gB9-3liKcvLdO_y9UPW-NiIWSkarpXVo7_ybdzqn48IAT1eQ_PFza1KzBKllj27m6KKS"},"Expiry":"2026-07-17T04:13:53.885701133Z","Followup":"","Hostinfo":{"Hostname":"tagged-node-2"},"NodeKeySignature":null},"node.name":"tagged-node-2","node.id":2,"time":"2026-07-16T04:13:54Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:54Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:54Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestNonReusableTaggedPreAuthKey283089868/001/noise_private.key","time":"2026-07-16T04:13:54Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestNonReusableTaggedPreAuthKey283089868/001/headscale_test.db","time":"2026-07-16T04:13:54Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:54Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:54Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:54Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:54Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:54Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:54Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:55Z","reusable":false,"used":false,"time":"2026-07-16T04:13:55Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node-1","machine.key":"[m8boO]","node.key":"[FhJlU]","user.name":"tag-creator","time":"2026-07-16T04:13:55Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node-1","time":"2026-07-16T04:13:55Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:55Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:55Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:55Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:55Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:161265525ccf25300946483845621135bcbe85ab42b7de8a5a4c8298f990ba18","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-ckuwm4Ko-3mF-sk98PsS_QZmNDUBiHv7xHU4G3NbQFsBQD2KyT0r7uCj7oXeT5XlZYKiIADfvvlvr"},"Expiry":"2026-07-17T04:13:55.073045622Z","Followup":"","Hostinfo":{"Hostname":"tagged-node-1"},"NodeKeySignature":null},"node.name":"tagged-node-1","node.id":1,"time":"2026-07-16T04:13:55Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:56Z","reusable":false,"used":true,"time":"2026-07-16T04:13:56Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:13:56Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:56Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiredTaggedPreAuthKey259355356/001/noise_private.key","time":"2026-07-16T04:13:56Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiredTaggedPreAuthKey259355356/001/headscale_test.db","time":"2026-07-16T04:13:56Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:56Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:56Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:56Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:56Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:56Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-16T03:13:56Z","now":"2026-07-16T04:13:56Z","reusable":false,"used":false,"time":"2026-07-16T04:13:56Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:13:56Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:56Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestSingleVsMultipleTags918746399/001/noise_private.key","time":"2026-07-16T04:13:56Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestSingleVsMultipleTags918746399/001/headscale_test.db","time":"2026-07-16T04:13:56Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:56Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:56Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:56Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:56Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:56Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:56Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:56Z","reusable":true,"used":false,"time":"2026-07-16T04:13:56Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"single-tag-node","machine.key":"[WQhcG]","node.key":"[Q5A32]","user.name":"tag-creator","time":"2026-07-16T04:13:56Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"single-tag-node","time":"2026-07-16T04:13:56Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:56Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:56Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:56Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:56Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:439037d9e141370e403931aa8bc1572b094c280807ad06a70088de7aace6b351","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-cc3IR9T_Susd-0U6-9jLFci1Hc56pDR25ZT_qjgotjAtCtO4aCJWKsD9DqJjZhyFoqSK69g_pmKGL"},"Expiry":"2026-07-17T04:13:56.513690303Z","Followup":"","Hostinfo":{"Hostname":"single-tag-node"},"NodeKeySignature":null},"node.name":"single-tag-node","node.id":1,"time":"2026-07-16T04:13:57Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:57Z","reusable":true,"used":false,"time":"2026-07-16T04:13:57Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"multi-tag-node","machine.key":"[elVmC]","node.key":"[JY4CC]","user.name":"tag-creator","time":"2026-07-16T04:13:57Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"multi-tag-node","time":"2026-07-16T04:13:57Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:57Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:57Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:57Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:57Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:258e020b7ba38959afc2b03dbe0aaba576a6fbe15f0047e1592b7b12b943551d","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-RXZ7DXung8If-1kBURkHIzQMuurkULILMXYzOjF7ALYEKeC8JOHcAgyzUSpbsqUAfediPzIJU_qcO"},"Expiry":"2026-07-17T04:13:57.561467214Z","Followup":"","Hostinfo":{"Hostname":"multi-tag-node"},"NodeKeySignature":null},"node.name":"multi-tag-node","node.id":2,"time":"2026-07-16T04:13:58Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:58Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:58Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedPreAuthKeyDisablesKeyExpiry266902214/001/noise_private.key","time":"2026-07-16T04:13:58Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedPreAuthKeyDisablesKeyExpiry266902214/001/headscale_test.db","time":"2026-07-16T04:13:58Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:58Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:58Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:58Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:58Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:58Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:58Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:58Z","reusable":true,"used":false,"time":"2026-07-16T04:13:58Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-expiry-test","machine.key":"[hmkfb]","node.key":"[EQHDX]","user.name":"tag-creator","time":"2026-07-16T04:13:58Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-expiry-test","time":"2026-07-16T04:13:58Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:58Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:58Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:58Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:58Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:1101c35f36f3082f19a8ada11fd22371c92c5c9270e569de86c029bb2ef65826","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-TS8cvOIF0dq1-MWy20w_EbmAEDfDLf9Wt4MbbSnSIVoraNIH48Mdd7q-LOkpi8EUm9ElgJn41oWEn"},"Expiry":"2026-07-17T04:13:58.587862104Z","Followup":"","Hostinfo":{"Hostname":"tagged-expiry-test"},"NodeKeySignature":null},"node.name":"tagged-expiry-test","node.id":1,"time":"2026-07-16T04:13:59Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:13:59Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:13:59Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestUntaggedPreAuthKeyPreservesKeyExpiry3127997403/001/noise_private.key","time":"2026-07-16T04:13:59Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestUntaggedPreAuthKeyPreservesKeyExpiry3127997403/001/headscale_test.db","time":"2026-07-16T04:13:59Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:13:59Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:13:59Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:13:59Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:13:59Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:13:59Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:13:59Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:13:59Z","reusable":true,"used":false,"time":"2026-07-16T04:13:59Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"untagged-expiry-test","machine.key":"[Fds+U]","node.key":"[zGmkw]","user.name":"node-owner","time":"2026-07-16T04:13:59Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"untagged-expiry-test","time":"2026-07-16T04:13:59Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:13:59Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:13:59Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:13:59Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:13:59Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"node-owner","Created":"2026-07-16T04:13:59.48502041Z"},"Login":{"ID":1,"Provider":"","LoginName":"node-owner","DisplayName":"node-owner"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:cc69a4c234338a58868ef2b84c299dbd984581728d5fe9e40d72375f5aa2ac3c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Kux6QPGOKUbi-PNtBP6-nnQRrm6IDlMnH9YYRQDUff_1uNTN3asWiPk_cB_trW3HS6_HBQm807UMc"},"Expiry":"2026-07-17T04:13:59.613173798Z","Followup":"","Hostinfo":{"Hostname":"untagged-expiry-test"},"NodeKeySignature":null},"node.name":"untagged-expiry-test","node.id":1,"time":"2026-07-16T04:14:00Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:00Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:00Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedNodeReauthPreservesDisabledExpiry2121861208/001/noise_private.key","time":"2026-07-16T04:14:00Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedNodeReauthPreservesDisabledExpiry2121861208/001/headscale_test.db","time":"2026-07-16T04:14:00Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:00Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:00Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:00Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:00Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:00Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:00Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:00Z","reusable":true,"used":false,"time":"2026-07-16T04:14:00Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-reauth-test","machine.key":"[+AMYS]","node.key":"[laC8p]","user.name":"tag-creator","time":"2026-07-16T04:14:00Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-reauth-test","time":"2026-07-16T04:14:00Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:01Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:01Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:01Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:01Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:95a0bca67b201f48e4428c3f8c590dcb630111defa42525969092c0eff63944b","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Uk2AMhcUr6Yt-ybg9H10JDHFl3sbq6kBmp85BTLBnKr7H1yAuLXiyWNGmnTjb0mB9K4Q8NyN_Fb9p"},"Expiry":"2026-07-17T04:14:00.679689669Z","Followup":"","Hostinfo":{"Hostname":"tagged-reauth-test"},"NodeKeySignature":null},"node.name":"tagged-reauth-test","node.id":1,"time":"2026-07-16T04:14:01Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"tagged-reauth-test","machine.key":"[+AMYS]","node.key.existing":"[laC8p]","node.key.request":"[laC8p]","authkey.id":1,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:14:01Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-reauth-test","machine.key":"[+AMYS]","node.key":"[laC8p]","user.name":"tag-creator","time":"2026-07-16T04:14:01Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"tagged-reauth-test","node.id":1,"machine.key":"[+AMYS]","node.key":"[laC8p]","user.name":"tag-creator","time":"2026-07-16T04:14:01Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"tagged-reauth-test","time":"2026-07-16T04:14:02Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"tagged-reauth-test","node.id":1,"machine.key":"[+AMYS]","node.key":"[laC8p]","user.name":"tag-creator","time":"2026-07-16T04:14:02Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:95a0bca67b201f48e4428c3f8c590dcb630111defa42525969092c0eff63944b","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Uk2AMhcUr6Yt-ybg9H10JDHFl3sbq6kBmp85BTLBnKr7H1yAuLXiyWNGmnTjb0mB9K4Q8NyN_Fb9p"},"Expiry":"2026-07-18T04:14:01.548392912Z","Followup":"","Hostinfo":{"Hostname":"tagged-reauth-test"},"NodeKeySignature":null},"node.name":"tagged-reauth-test","node.id":1,"time":"2026-07-16T04:14:02Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:02Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:02Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiryDuringPersonalToTaggedConversion2229631380/001/noise_private.key","time":"2026-07-16T04:14:02Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiryDuringPersonalToTaggedConversion2229631380/001/headscale_test.db","time":"2026-07-16T04:14:02Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:02Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:02Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:02Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:02Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:02Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:02Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","policy.bytes":128,"acls.count":1,"groups.count":0,"hosts.count":0,"tagOwners.count":1,"autoApprovers.routes.count":0,"time":"2026-07-16T04:14:02Z","message":"Policy parsed successfully"} {"level":"debug","filter.hash.old":"609b677c","filter.hash.new":"155a78fd","filter.rules":1,"filter.rules.new":1,"time":"2026-07-16T04:14:02Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"70e8498f","tagOwner.hash.new":"1aee8701","tagOwners.old":0,"tagOwners.new":1,"time":"2026-07-16T04:14:02Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"ebeaca81","autoApprove.hash.new":"7a1ced38","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:02Z","message":"Auto-approvers hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":false,"time":"2026-07-16T04:14:02Z","message":"Policy changes require node updates"} {"level":"debug","registration_id":"_OprSBtH_VkqqOctMNmAN6iE","user.name":"expiry-test-user","machine.key":"[w8NQj]","method":"webauth","expiry":null,"time":"2026-07-16T04:14:02Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"personal-to-tagged","time":"2026-07-16T04:14:02Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:02Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","node.name":"personal-to-tagged","node.id":1,"hostinfo":{"Hostname":"personal-to-tagged","RequestTags":["tag:server"]},"time":"2026-07-16T04:14:03Z","message":"Updating existing node registration via reauth"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"personal-to-tagged","time":"2026-07-16T04:14:03Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.id":1,"node.name":"personal-to-tagged","request.tags":["tag:server"],"current.tags":[],"is.tagged":false,"was.authkey.tagged":false,"time":"2026-07-16T04:14:03Z","message":"Processing RequestTags during reauth"} {"level":"info","node.id":1,"node.name":"personal-to-tagged","new.tags":["tag:server"],"old.user":"expiry-test-user","time":"2026-07-16T04:14:03Z","message":"Reauth: applying tags, transferring node to tagged-devices"} {"level":"trace","node.name":"personal-to-tagged","node.id":1,"node.key":"[W6b5Q]","time":"2026-07-16T04:14:03Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:03Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:03Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:03Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:03Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiryDuringTaggedToPersonalConversion3802944175/001/noise_private.key","time":"2026-07-16T04:14:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpiryDuringTaggedToPersonalConversion3802944175/001/headscale_test.db","time":"2026-07-16T04:14:04Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:04Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:04Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:04Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:04Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","policy.bytes":129,"acls.count":1,"groups.count":0,"hosts.count":0,"tagOwners.count":1,"autoApprovers.routes.count":0,"time":"2026-07-16T04:14:04Z","message":"Policy parsed successfully"} {"level":"debug","filter.hash.old":"609b677c","filter.hash.new":"5d7d4a6f","filter.rules":1,"filter.rules.new":1,"time":"2026-07-16T04:14:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"70e8498f","tagOwner.hash.new":"1aee8701","tagOwners.old":0,"tagOwners.new":1,"time":"2026-07-16T04:14:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"ebeaca81","autoApprove.hash.new":"7a1ced38","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:04Z","message":"Auto-approvers hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":false,"time":"2026-07-16T04:14:04Z","message":"Policy changes require node updates"} {"level":"debug","registration_id":"bfjiVtPjQxwhlTQKpH4bACp4","user.name":"expiry-test-user2","machine.key":"[2CSeD]","method":"webauth","expiry":null,"time":"2026-07-16T04:14:04Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-to-personal","time":"2026-07-16T04:14:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"info","node.name":"tagged-to-personal","tags":["tag:server"],"time":"2026-07-16T04:14:04Z","message":"approved advertise-tags during registration"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:04Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:04Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","node.name":"tagged-to-personal","node.id":1,"hostinfo":{"Hostname":"tagged-to-personal"},"time":"2026-07-16T04:14:05Z","message":"Updating existing node registration via reauth"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"tagged-to-personal","time":"2026-07-16T04:14:05Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.id":1,"node.name":"tagged-to-personal","request.tags":[],"current.tags":["tag:server"],"is.tagged":true,"was.authkey.tagged":false,"time":"2026-07-16T04:14:05Z","message":"Processing RequestTags during reauth"} {"level":"info","node.id":1,"node.name":"tagged-to-personal","removed.tags":["tag:server"],"user.name":"expiry-test-user2","was.authkey.tagged":false,"time":"2026-07-16T04:14:05Z","message":"Reauth: removing all tags, returning node ownership to user"} {"level":"trace","node.name":"tagged-to-personal","node.id":1,"node.key":"[das0t]","time":"2026-07-16T04:14:05Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:06Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestReAuthWithDifferentMachineKey3322581966/001/noise_private.key","time":"2026-07-16T04:14:06Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestReAuthWithDifferentMachineKey3322581966/001/headscale_test.db","time":"2026-07-16T04:14:06Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:06Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:06Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:06Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:06Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:06Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:06Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:06Z","reusable":true,"used":false,"time":"2026-07-16T04:14:06Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[fWR2r]","node.key":"[3nOfr]","user.name":"tag-creator","time":"2026-07-16T04:14:06Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-node","time":"2026-07-16T04:14:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:de739faea06922107be3f240519f046727d738e9347924fa576748d59b777045","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-fUhw49O8wZ1--rfv7bD94sxmfF5kl_lP6l7zn-gJnCwNpGJRAQTVBCqi9jXmxQEjlaR-alyCQW0hT"},"Expiry":"2026-07-17T04:14:06.329303336Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":1,"time":"2026-07-16T04:14:07Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:07Z","reusable":true,"used":false,"time":"2026-07-16T04:14:07Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[+z1QO]","node.key":"[3nOfr]","user.name":"tag-creator","time":"2026-07-16T04:14:07Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-node","time":"2026-07-16T04:14:07Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:07Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:07Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:07Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:07Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:de739faea06922107be3f240519f046727d738e9347924fa576748d59b777045","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-fUhw49O8wZ1--rfv7bD94sxmfF5kl_lP6l7zn-gJnCwNpGJRAQTVBCqi9jXmxQEjlaR-alyCQW0hT"},"Expiry":"2026-07-17T04:14:07.200094664Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":2,"time":"2026-07-16T04:14:08Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:08Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:08Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_valid_new_node2197667366/001/noise_private.key","time":"2026-07-16T04:14:08Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_valid_new_node2197667366/001/headscale_test.db","time":"2026-07-16T04:14:08Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:08Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:08Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:08Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:08Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:08Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:08Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:08Z","reusable":true,"used":false,"time":"2026-07-16T04:14:08Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"preauth-node-1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"preauth-user","time":"2026-07-16T04:14:08Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"preauth-node-1","time":"2026-07-16T04:14:08Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:08Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:08Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:08Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:08Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"preauth-user","Created":"2026-07-16T04:14:08.24161956Z"},"Login":{"ID":1,"Provider":"","LoginName":"preauth-user","DisplayName":"preauth-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-me5kMDqHNhoW-6EyMexxFuPWVvxphoQJb5TKq5Wx62UP44WLwI019RlRNNfM7xPWomJvr_pRKZuLk"},"Expiry":"2026-07-17T04:14:08.370771638Z","Followup":"","Hostinfo":{"Hostname":"preauth-node-1"},"NodeKeySignature":null},"node.name":"preauth-node-1","node.id":1,"time":"2026-07-16T04:14:09Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:09Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:09Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_reusable_multiple_nodes279463649/001/noise_private.key","time":"2026-07-16T04:14:09Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_reusable_multiple_nodes279463649/001/headscale_test.db","time":"2026-07-16T04:14:09Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:09Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:09Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:09Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:09Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:09Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:09Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:09Z","reusable":true,"used":false,"time":"2026-07-16T04:14:09Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reusable-node-1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reusable-user","time":"2026-07-16T04:14:09Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reusable-node-1","time":"2026-07-16T04:14:09Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:09Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:09Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:09Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:09Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"reusable-user","Created":"2026-07-16T04:14:09.281022396Z"},"Login":{"ID":1,"Provider":"","LoginName":"reusable-user","DisplayName":"reusable-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-601qZi2A7qmM-6rZf7-PLTurJVHI37tEvZ0nej8oZeKVsZkmXYBbN7mqgTqUABsR_pzB3Nz8f8p4m"},"Expiry":"2026-07-17T04:14:09.411236233Z","Followup":"","Hostinfo":{"Hostname":"reusable-node-1"},"NodeKeySignature":null},"node.name":"reusable-node-1","node.id":1,"time":"2026-07-16T04:14:10Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:10Z","reusable":true,"used":false,"time":"2026-07-16T04:14:10Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reusable-node-2","machine.key":"[o3i3f]","node.key":"[YKWkd]","user.name":"reusable-user","time":"2026-07-16T04:14:10Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reusable-node-2","time":"2026-07-16T04:14:10Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:10Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:10Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:10Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:10Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"reusable-user","Created":"2026-07-16T04:14:09.281022396Z"},"Login":{"ID":1,"Provider":"","LoginName":"reusable-user","DisplayName":"reusable-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:60a5a4741b60a8797328e8f1ef0bc4d9282b4e0f1d0bbecf8f3f4c7d953e215e","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-601qZi2A7qmM-6rZf7-PLTurJVHI37tEvZ0nej8oZeKVsZkmXYBbN7mqgTqUABsR_pzB3Nz8f8p4m"},"Expiry":"2026-07-17T04:14:10.285183258Z","Followup":"","Hostinfo":{"Hostname":"reusable-node-2"},"NodeKeySignature":null},"node.name":"reusable-node-2","node.id":2,"time":"2026-07-16T04:14:11Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:11Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:11Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_single_use_exhausted111481440/001/noise_private.key","time":"2026-07-16T04:14:11Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_single_use_exhausted111481440/001/headscale_test.db","time":"2026-07-16T04:14:11Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:11Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:11Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:11Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:11Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:11Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:11Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:11Z","reusable":false,"used":false,"time":"2026-07-16T04:14:11Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"single-use-node-1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"single-use-user","time":"2026-07-16T04:14:11Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"single-use-node-1","time":"2026-07-16T04:14:11Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:11Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:11Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:11Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:11Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"single-use-user","Created":"2026-07-16T04:14:11.334070637Z"},"Login":{"ID":1,"Provider":"","LoginName":"single-use-user","DisplayName":"single-use-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-qnXbKyhVxlye-dbG3c-ONg20qgyXt2ayBZK63tt_eHbCQ65do-TJNkDnIbi7Yafg8n4ivN2U6evN-"},"Expiry":"2026-07-17T04:14:11.478427072Z","Followup":"","Hostinfo":{"Hostname":"single-use-node-1"},"NodeKeySignature":null},"node.name":"single-use-node-1","node.id":1,"time":"2026-07-16T04:14:12Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:12Z","reusable":false,"used":true,"time":"2026-07-16T04:14:12Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:14:12Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:12Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_invalid2453572495/001/noise_private.key","time":"2026-07-16T04:14:12Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_invalid2453572495/001/headscale_test.db","time":"2026-07-16T04:14:12Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:12Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:12Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:12Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:12Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:12Z","message":"Policy changes require node updates"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:12Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:12Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_ephemeral_node697835349/001/noise_private.key","time":"2026-07-16T04:14:12Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_ephemeral_node697835349/001/headscale_test.db","time":"2026-07-16T04:14:12Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:12Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:12Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:12Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:12Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:12Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:12Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:12Z","reusable":false,"used":false,"time":"2026-07-16T04:14:12Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"ephemeral-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"ephemeral-user","time":"2026-07-16T04:14:12Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"ephemeral-node","time":"2026-07-16T04:14:12Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:13Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:13Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:13Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:13Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"ephemeral-user","Created":"2026-07-16T04:14:12.533861329Z"},"Login":{"ID":1,"Provider":"","LoginName":"ephemeral-user","DisplayName":"ephemeral-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-1r5K3xnLbl93-kDdRcqGRNza5r8nwkZUrMPRqFroDX2yUv-H5EKVGAbWf6NYo9eIXElcZs3MFG-91"},"Expiry":"2026-07-17T04:14:12.655633039Z","Followup":"","Hostinfo":{"Hostname":"ephemeral-node"},"NodeKeySignature":null},"node.name":"ephemeral-node","node.id":1,"time":"2026-07-16T04:14:13Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:13Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:13Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfull_interactive_workflow_new_node1278314352/001/noise_private.key","time":"2026-07-16T04:14:13Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfull_interactive_workflow_new_node1278314352/001/headscale_test.db","time":"2026-07-16T04:14:13Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:13Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:13Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:13Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:13Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:13Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:13Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:13Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:13Z","message":"Starting node registration using key: 72Eh1t4YtDpY5QlfWEau_SiT"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:13Z","message":"received register request with no auth, and no existing node"} {"level":"debug","registration_id":"72Eh1t4YtDpY5QlfWEau_SiT","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:13Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"interactive-flow-node","time":"2026-07-16T04:14:13Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:14Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:14Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:14Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:14Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:14Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:14Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_no_auth_struct293039999/001/noise_private.key","time":"2026-07-16T04:14:14Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_no_auth_struct293039999/001/headscale_test.db","time":"2026-07-16T04:14:14Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:14Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:14Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:14Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:14Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:14Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:14Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:14Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:14Z","message":"Starting node registration using key: V8pRfruxL9Vy4ukKLOVmEzls"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:14Z","message":"received register request with no auth, and no existing node"} {"level":"debug","registration_id":"V8pRfruxL9Vy4ukKLOVmEzls","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:14Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"interactive-no-auth-node","time":"2026-07-16T04:14:14Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:15Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:15Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:15Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:15Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:15Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:15Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_logout3307611050/001/noise_private.key","time":"2026-07-16T04:14:15Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_logout3307611050/001/headscale_test.db","time":"2026-07-16T04:14:15Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:15Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:15Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:15Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:15Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:15Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:15Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:15Z","reusable":true,"used":false,"time":"2026-07-16T04:14:15Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"logout-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"logout-user","time":"2026-07-16T04:14:15Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"logout-node","time":"2026-07-16T04:14:15Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:16Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:16Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:16Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:16Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"logout-user","Created":"2026-07-16T04:14:15.706660725Z"},"Login":{"ID":1,"Provider":"","LoginName":"logout-user","DisplayName":"logout-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-kA9NpJNvuv5r-FCKt4CtWbMj3A0DP212UHZAI1Atx8kh8Xt6GQo5qZkWqzCYX21PtxxEvjVF1H0ue"},"Expiry":"2026-07-17T04:14:15.839744284Z","Followup":"","Hostinfo":{"Hostname":"logout-node"},"NodeKeySignature":null},"node.name":"logout-node","node.id":1,"time":"2026-07-16T04:14:16Z","message":"RegisterResponse"} {"level":"debug","node.key":"[k6gUS]","expiry":"2026-07-16T03:14:16Z","has_auth":false,"time":"2026-07-16T04:14:16Z","message":"Detected logout attempt with past expiry"} {"level":"debug","node.id":1,"node.name":"logout-node","is_ephemeral":false,"has_authkey":true,"time":"2026-07-16T04:14:16Z","message":"Found existing node for logout, calling handleLogout"} {"level":"debug","node.id":1,"node.name":"logout-node","is_ephemeral":false,"has_authkey":true,"req.expiry":"2026-07-16T03:14:16Z","time":"2026-07-16T04:14:16Z","message":"Processing logout request with past expiry"} {"level":"debug","node.id":1,"node.name":"logout-node","time":"2026-07-16T04:14:16Z","message":"Node is not ephemeral, setting expiry instead of deleting"} {"level":"info","time":"2026-07-16T04:14:17Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:17Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_machine_key_mismatch4049734602/001/noise_private.key","time":"2026-07-16T04:14:17Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_machine_key_mismatch4049734602/001/headscale_test.db","time":"2026-07-16T04:14:17Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:17Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:17Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:17Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:17Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:17Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:17Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:17Z","reusable":true,"used":false,"time":"2026-07-16T04:14:17Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"mismatch-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"mismatch-user","time":"2026-07-16T04:14:17Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"mismatch-node","time":"2026-07-16T04:14:17Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:17Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:17Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:17Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:17Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"mismatch-user","Created":"2026-07-16T04:14:17.262915298Z"},"Login":{"ID":1,"Provider":"","LoginName":"mismatch-user","DisplayName":"mismatch-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth--_q8S8hmUnDq-Ub8wAKNKVKHv3TTDn5Dd5bXylkwAD6MFjBmvvhuJ5mVWGBJdhuzszGzRKT-qiQdt"},"Expiry":"2026-07-17T04:14:17.412570257Z","Followup":"","Hostinfo":{"Hostname":"mismatch-node"},"NodeKeySignature":null},"node.name":"mismatch-node","node.id":1,"time":"2026-07-16T04:14:18Z","message":"RegisterResponse"} {"level":"debug","node.key":"[k6gUS]","expiry":"2026-07-16T03:14:18Z","has_auth":false,"time":"2026-07-16T04:14:18Z","message":"Detected logout attempt with past expiry"} {"level":"debug","node.id":1,"node.name":"mismatch-node","is_ephemeral":false,"has_authkey":true,"time":"2026-07-16T04:14:18Z","message":"Found existing node for logout, calling handleLogout"} {"level":"info","time":"2026-07-16T04:14:18Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:18Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_key_extension_not_allowed4018206651/001/noise_private.key","time":"2026-07-16T04:14:18Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_key_extension_not_allowed4018206651/001/headscale_test.db","time":"2026-07-16T04:14:18Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:18Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:18Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:18Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:18Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:18Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:18Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:18Z","reusable":true,"used":false,"time":"2026-07-16T04:14:18Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"extend-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"extend-user","time":"2026-07-16T04:14:18Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"extend-node","time":"2026-07-16T04:14:18Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:18Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:18Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:18Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:18Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"extend-user","Created":"2026-07-16T04:14:18.320843451Z"},"Login":{"ID":1,"Provider":"","LoginName":"extend-user","DisplayName":"extend-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-xF6nLsmwXxwG-XR2U_NjgL_gvfYhmubHCU2ssPw_MrONg4RVGPOajk2t1XKtfVgG_KbpUOCzMbC9L"},"Expiry":"2026-07-17T04:14:18.446641222Z","Followup":"","Hostinfo":{"Hostname":"extend-node"},"NodeKeySignature":null},"node.name":"extend-node","node.id":1,"time":"2026-07-16T04:14:19Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:19Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:19Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_expired_forces_reauth2033404126/001/noise_private.key","time":"2026-07-16T04:14:19Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_expired_forces_reauth2033404126/001/headscale_test.db","time":"2026-07-16T04:14:19Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:19Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:19Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:19Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:19Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:19Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:19Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:19Z","reusable":true,"used":false,"time":"2026-07-16T04:14:19Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reauth-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reauth-user","time":"2026-07-16T04:14:19Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reauth-node","time":"2026-07-16T04:14:19Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:19Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:19Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:19Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:19Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"reauth-user","Created":"2026-07-16T04:14:19.356428162Z"},"Login":{"ID":1,"Provider":"","LoginName":"reauth-user","DisplayName":"reauth-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-TKh4fSGzwLbU-BgTkRWgDuOMJeF5PIMh-x6rXP2wzhZfXDM0PeR2_iJe9uOb2Sqpzr_aeSvOIRQf0"},"Expiry":"2026-07-17T04:14:19.481671682Z","Followup":"","Hostinfo":{"Hostname":"reauth-node"},"NodeKeySignature":null},"node.name":"reauth-node","node.id":1,"time":"2026-07-16T04:14:20Z","message":"RegisterResponse"} {"level":"trace","node.name":"reauth-node","node.id":1,"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Expiry":"2026-07-17T04:14:20.861296778Z","Followup":"","Hostinfo":null,"NodeKeySignature":null},"unexpected":true,"time":"2026-07-16T04:14:20Z","message":"Node key expired, forcing re-authentication"} {"level":"info","time":"2026-07-16T04:14:20Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:20Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsephemeral_node_logout_deletion3928840499/001/noise_private.key","time":"2026-07-16T04:14:20Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsephemeral_node_logout_deletion3928840499/001/headscale_test.db","time":"2026-07-16T04:14:20Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:20Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:20Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:20Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:20Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:20Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:20Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:21Z","reusable":false,"used":false,"time":"2026-07-16T04:14:21Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"ephemeral-logout-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"ephemeral-logout-user","time":"2026-07-16T04:14:21Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"ephemeral-logout-node","time":"2026-07-16T04:14:21Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:21Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:21Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:21Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:21Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"ephemeral-logout-user","Created":"2026-07-16T04:14:20.921381089Z"},"Login":{"ID":1,"Provider":"","LoginName":"ephemeral-logout-user","DisplayName":"ephemeral-logout-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-1XqUBEEoIUWV-fJwkx0JkTrLyuZJMBV_4z6ywFN1Ra9H71MAjj2O4mpTopI0LWLLuODeOkbrqQvQk"},"Expiry":"2026-07-17T04:14:21.07526908Z","Followup":"","Hostinfo":{"Hostname":"ephemeral-logout-node"},"NodeKeySignature":null},"node.name":"ephemeral-logout-node","node.id":1,"time":"2026-07-16T04:14:21Z","message":"RegisterResponse"} {"level":"debug","node.key":"[k6gUS]","expiry":"2026-07-16T03:14:21Z","has_auth":false,"time":"2026-07-16T04:14:21Z","message":"Detected logout attempt with past expiry"} {"level":"debug","node.id":1,"node.name":"ephemeral-logout-node","is_ephemeral":true,"has_authkey":true,"time":"2026-07-16T04:14:21Z","message":"Found existing node for logout, calling handleLogout"} {"level":"debug","node.id":1,"node.name":"ephemeral-logout-node","is_ephemeral":true,"has_authkey":true,"req.expiry":"2026-07-16T03:14:21Z","time":"2026-07-16T04:14:21Z","message":"Processing logout request with past expiry"} {"level":"info","node.id":1,"node.name":"ephemeral-logout-node","time":"2026-07-16T04:14:21Z","message":"Deleting ephemeral node during logout"} {"level":"trace","time":"2026-07-16T04:14:22Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:22Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:22Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_success774222075/001/noise_private.key","time":"2026-07-16T04:14:22Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_success774222075/001/headscale_test.db","time":"2026-07-16T04:14:22Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:22Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:22Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:22Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:22Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:22Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:22Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:22Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:23Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:23Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_timeout450248108/001/noise_private.key","time":"2026-07-16T04:14:23Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_timeout450248108/001/headscale_test.db","time":"2026-07-16T04:14:23Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:23Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:23Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:23Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:23Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:23Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:23Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:23Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:23Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_invalid_url538409128/001/noise_private.key","time":"2026-07-16T04:14:23Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_invalid_url538409128/001/headscale_test.db","time":"2026-07-16T04:14:23Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:23Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:23Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:23Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:23Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:23Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:23Z","message":"received register request with no auth, and no existing node"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:23Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:23Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_not_found1904180095/001/noise_private.key","time":"2026-07-16T04:14:23Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_not_found1904180095/001/headscale_test.db","time":"2026-07-16T04:14:23Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:23Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:23Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:23Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:23Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:23Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:23Z","message":"received register request with no auth, and no existing node"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:23Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:23Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsempty_hostname1802003786/001/noise_private.key","time":"2026-07-16T04:14:23Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsempty_hostname1802003786/001/headscale_test.db","time":"2026-07-16T04:14:23Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:23Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:23Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:23Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:23Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:23Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:23Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:23Z","reusable":true,"used":false,"time":"2026-07-16T04:14:23Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"node-mkey:3a4","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"empty-hostname-user","time":"2026-07-16T04:14:23Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"node-mkey:3a4","time":"2026-07-16T04:14:23Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:23Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:23Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:23Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:23Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"empty-hostname-user","Created":"2026-07-16T04:14:23.368297676Z"},"Login":{"ID":1,"Provider":"","LoginName":"empty-hostname-user","DisplayName":"empty-hostname-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-EDiIGA41hCn7-pWkgKxBOFR0krHq6iHTlUqw1llVk2PrRrTZ-lYIkN_ollRN6quj0WGYs1zmr98RT"},"Expiry":"2026-07-17T04:14:23.526160723Z","Followup":"","Hostinfo":{"Hostname":"node-mkey:3a4"},"NodeKeySignature":null},"node.name":"node-mkey:3a4","node.id":1,"time":"2026-07-16T04:14:24Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:24Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:24Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsnil_hostinfo1603772666/001/noise_private.key","time":"2026-07-16T04:14:24Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsnil_hostinfo1603772666/001/headscale_test.db","time":"2026-07-16T04:14:24Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:24Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:24Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:24Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:24Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:24Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:24Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:24Z","reusable":true,"used":false,"time":"2026-07-16T04:14:24Z","message":"PreAuthKey.Validate: checking key"} {"level":"warn","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1068","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"nil-hostinfo-user","generated.hostname":"node-mkey:3a4","time":"2026-07-16T04:14:24Z","message":"Registration had nil hostinfo, generated default hostname"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"node-mkey:3a4","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"nil-hostinfo-user","time":"2026-07-16T04:14:24Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"node-mkey:3a4","time":"2026-07-16T04:14:24Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:24Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:24Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:24Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:24Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"nil-hostinfo-user","Created":"2026-07-16T04:14:24.422674171Z"},"Login":{"ID":1,"Provider":"","LoginName":"nil-hostinfo-user","DisplayName":"nil-hostinfo-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-MFHKY747QmaU-Z8UgLchEksC70Gd6oKj-ZHflxYb7rIdXX4HkUNTvytBfjka59ksplZ1mFbI27UOX"},"Expiry":"2026-07-17T04:14:24.553347457Z","Followup":"","Hostinfo":null,"NodeKeySignature":null},"node.name":"node-mkey:3a4","node.id":1,"time":"2026-07-16T04:14:25Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:25Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:25Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_expired737920385/001/noise_private.key","time":"2026-07-16T04:14:25Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_expired737920385/001/headscale_test.db","time":"2026-07-16T04:14:25Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:25Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:25Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:25Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:25Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:25Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-16T03:14:25Z","now":"2026-07-16T04:14:25Z","reusable":true,"used":false,"time":"2026-07-16T04:14:25Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:14:25Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:25Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_with_acl_tags629908071/001/noise_private.key","time":"2026-07-16T04:14:25Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_with_acl_tags629908071/001/headscale_test.db","time":"2026-07-16T04:14:25Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:25Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:25Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:25Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:25Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:25Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:25Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:25Z","reusable":true,"used":false,"time":"2026-07-16T04:14:25Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-pak-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"tagged-pak-user","time":"2026-07-16T04:14:25Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-pak-node","time":"2026-07-16T04:14:25Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:26Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:26Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:26Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:26Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-tbh5bRcDQpMp-5ZE4uuC1SlU48p9o46zaC-1mUU86DqkRDHDnHVK-UHSHRS602rwjohCkE8aFq1Uj"},"Expiry":"2026-07-17T04:14:25.853291454Z","Followup":"","Hostinfo":{"Hostname":"tagged-pak-node"},"NodeKeySignature":null},"node.name":"tagged-pak-node","node.id":1,"time":"2026-07-16T04:14:26Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:26Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:26Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_rejects_request_tags358650440/001/noise_private.key","time":"2026-07-16T04:14:26Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_rejects_request_tags358650440/001/headscale_test.db","time":"2026-07-16T04:14:26Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:26Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:26Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:26Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:26Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:26Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:26Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:27Z","reusable":true,"used":false,"time":"2026-07-16T04:14:27Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"pak-requesttags-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"pak-requesttags-user","time":"2026-07-16T04:14:27Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"pak-requesttags-node","time":"2026-07-16T04:14:27Z","message":"node sent update but has no NetInfo in request or database"} {"level":"info","time":"2026-07-16T04:14:27Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:27Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowstagged_preauth_key_rejects_client_reques2634548092/001/noise_private.key","time":"2026-07-16T04:14:27Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowstagged_preauth_key_rejects_client_reques2634548092/001/headscale_test.db","time":"2026-07-16T04:14:27Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:27Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:27Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:27Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:27Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:27Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:27Z","reusable":true,"used":false,"time":"2026-07-16T04:14:27Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-pak-clienttags-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"tagged-pak-clienttags-user","time":"2026-07-16T04:14:27Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-pak-clienttags-node","time":"2026-07-16T04:14:27Z","message":"node sent update but has no NetInfo in request or database"} {"level":"info","time":"2026-07-16T04:14:27Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:27Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_reauth_with_new_authkey2252668189/001/noise_private.key","time":"2026-07-16T04:14:27Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_reauth_with_new_authkey2252668189/001/headscale_test.db","time":"2026-07-16T04:14:27Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:27Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:27Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:27Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:27Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:27Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:27Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:27Z","reusable":true,"used":false,"time":"2026-07-16T04:14:27Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reauth-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reauth-user","time":"2026-07-16T04:14:27Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reauth-node","time":"2026-07-16T04:14:27Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:27Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:27Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:27Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:27Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"reauth-user","Created":"2026-07-16T04:14:27.34278386Z"},"Login":{"ID":1,"Provider":"","LoginName":"reauth-user","DisplayName":"reauth-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-8twh0Shv18iW-1wPIJfsMPewcchKUD1mAvnU_TdyD552E0nNR7Tde-ajFejpZzEIoW1uMfS2BEIJs"},"Expiry":"2026-07-17T04:14:27.459890192Z","Followup":"","Hostinfo":{"Hostname":"reauth-node"},"NodeKeySignature":null},"node.name":"reauth-node","node.id":1,"time":"2026-07-16T04:14:28Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"reauth-node","machine.key":"[OkJMk]","node.key.existing":"[k6gUS]","node.key.request":"[k6gUS]","authkey.id":2,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:14:28Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reauth-node-updated","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reauth-user","time":"2026-07-16T04:14:28Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"reauth-node","node.id":1,"machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reauth-user","time":"2026-07-16T04:14:28Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"reauth-node-updated","time":"2026-07-16T04:14:28Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"reauth-node-updated","node.id":1,"machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"reauth-user","time":"2026-07-16T04:14:28Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:28Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:28Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:28Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"reauth-user","Created":"2026-07-16T04:14:27.34278386Z"},"Login":{"ID":1,"Provider":"","LoginName":"reauth-user","DisplayName":"reauth-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-yrcPpZ8I4V9F-vdMpsT5-5l17H8zIiGeJeXdimypHrruy_AIBdXXwkzYhS6hQ5lC_d4eQLFgA3qWb"},"Expiry":"2026-07-18T04:14:28.505973274Z","Followup":"","Hostinfo":{"Hostname":"reauth-node-updated"},"NodeKeySignature":null},"node.name":"reauth-node-updated","node.id":1,"time":"2026-07-16T04:14:28Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:28Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:28Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_reauth_interactive_flow2289591450/001/noise_private.key","time":"2026-07-16T04:14:28Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsexisting_node_reauth_interactive_flow2289591450/001/headscale_test.db","time":"2026-07-16T04:14:28Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:28Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:28Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:28Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:28Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:28Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:28Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:29Z","reusable":true,"used":false,"time":"2026-07-16T04:14:29Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"interactive-reauth-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"interactive-reauth-user","time":"2026-07-16T04:14:29Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"interactive-reauth-node","time":"2026-07-16T04:14:29Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:29Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:29Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:29Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:29Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"interactive-reauth-user","Created":"2026-07-16T04:14:28.899379515Z"},"Login":{"ID":1,"Provider":"","LoginName":"interactive-reauth-user","DisplayName":"interactive-reauth-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-lh3tKlj21BEI-o2aeLQIKUrULMwVYLaTtaHyjs0k4ADnrc0ENqOylmq3AcZ0rQZUpvSVsWKMrXlk-"},"Expiry":"2026-07-17T04:14:29.027595875Z","Followup":"","Hostinfo":{"Hostname":"interactive-reauth-node"},"NodeKeySignature":null},"node.name":"interactive-reauth-node","node.id":1,"time":"2026-07-16T04:14:29Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:29Z","message":"Starting node registration using key: 8K2cHy56N7mk02sepqlX9OfB"} {"level":"info","time":"2026-07-16T04:14:29Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:29Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsnode_key_rotation_same_machine3654791361/001/noise_private.key","time":"2026-07-16T04:14:29Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsnode_key_rotation_same_machine3654791361/001/headscale_test.db","time":"2026-07-16T04:14:29Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:29Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:29Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:29Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:29Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:29Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:29Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:30Z","reusable":true,"used":false,"time":"2026-07-16T04:14:30Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"rotation-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"rotation-user","time":"2026-07-16T04:14:30Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"rotation-node","time":"2026-07-16T04:14:30Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:30Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:30Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:30Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:30Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"rotation-user","Created":"2026-07-16T04:14:29.958004753Z"},"Login":{"ID":1,"Provider":"","LoginName":"rotation-user","DisplayName":"rotation-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-v_M3uIUFi9RH-Hkqh6JDg6yl43k7mwnxS7oj8wiZUxYt3T1ondt68UQfoUlt1h86_3LYkf8CWpXAs"},"Expiry":"2026-07-17T04:14:30.102910911Z","Followup":"","Hostinfo":{"Hostname":"rotation-node"},"NodeKeySignature":null},"node.name":"rotation-node","node.id":1,"time":"2026-07-16T04:14:30Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:31Z","reusable":true,"used":false,"time":"2026-07-16T04:14:31Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"rotation-node","machine.key":"[OkJMk]","node.key":"[YKWkd]","user.name":"rotation-user","time":"2026-07-16T04:14:31Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"rotation-node","node.id":1,"machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"rotation-user","time":"2026-07-16T04:14:31Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"rotation-node","time":"2026-07-16T04:14:31Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"rotation-node","node.id":1,"machine.key":"[OkJMk]","node.key":"[YKWkd]","user.name":"rotation-user","time":"2026-07-16T04:14:31Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:31Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:31Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:31Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"rotation-user","Created":"2026-07-16T04:14:29.958004753Z"},"Login":{"ID":1,"Provider":"","LoginName":"rotation-user","DisplayName":"rotation-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:60a5a4741b60a8797328e8f1ef0bc4d9282b4e0f1d0bbecf8f3f4c7d953e215e","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-QnuNEMXm2p29-xFyC9hc3F8Ge91SzTdOhoOYwQNqZsazoCCbptYCE81dONtS7urzvCsGAQIcKYFI-"},"Expiry":"2026-07-17T04:14:31.122788921Z","Followup":"","Hostinfo":{"Hostname":"rotation-node"},"NodeKeySignature":null},"node.name":"rotation-node","node.id":1,"time":"2026-07-16T04:14:31Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:31Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:31Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsmalformed_expiry_zero_time413809764/001/noise_private.key","time":"2026-07-16T04:14:31Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsmalformed_expiry_zero_time413809764/001/headscale_test.db","time":"2026-07-16T04:14:31Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:31Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:31Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:31Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:31Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:31Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:31Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:31Z","reusable":true,"used":false,"time":"2026-07-16T04:14:31Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"zero-expiry-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"zero-expiry-user","time":"2026-07-16T04:14:31Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"zero-expiry-node","time":"2026-07-16T04:14:31Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:31Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:31Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:31Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:31Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"zero-expiry-user","Created":"2026-07-16T04:14:31.495607585Z"},"Login":{"ID":1,"Provider":"","LoginName":"zero-expiry-user","DisplayName":"zero-expiry-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-P0mOdcp_6_Lh-R0W2PsP4jFsImL2opOIEK9TrsHut3m40VDErVKA0GBPEsfrRsNkZN3druvFYdEll"},"Expiry":"0001-01-01T00:00:00Z","Followup":"","Hostinfo":{"Hostname":"zero-expiry-node"},"NodeKeySignature":null},"node.name":"zero-expiry-node","node.id":1,"time":"2026-07-16T04:14:32Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:32Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:32Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsmalformed_hostinfo_invalid_data223199480/001/noise_private.key","time":"2026-07-16T04:14:32Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsmalformed_hostinfo_invalid_data223199480/001/headscale_test.db","time":"2026-07-16T04:14:32Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:32Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:32Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:32Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:32Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:32Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:32Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:32Z","reusable":true,"used":false,"time":"2026-07-16T04:14:32Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"invalid-yz4hgsxw","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"invalid-hostinfo-user","time":"2026-07-16T04:14:32Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"invalid-yz4hgsxw","time":"2026-07-16T04:14:32Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:33Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:33Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:33Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:33Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"invalid-hostinfo-user","Created":"2026-07-16T04:14:32.551353173Z"},"Login":{"ID":1,"Provider":"","LoginName":"invalid-hostinfo-user","DisplayName":"invalid-hostinfo-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-JcL4aH7O7FkL-q_ydobgPvmDio8RJmrwkC2hOkpl-2A1n6ZtKqdgriv3fKLJBz1hVPTpn9JO0WSvM"},"Expiry":"2026-07-17T04:14:32.683482062Z","Followup":"","Hostinfo":{"BackendLogID":"invalid-log-id","OS":"unknown-os","OSVersion":"999.999.999","DeviceModel":"test-device-model","Hostname":"invalid-yz4hgsxw","Services":[{"Proto":"tcp","Port":65535}]},"NodeKeySignature":null},"node.name":"invalid-yz4hgsxw","node.id":1,"time":"2026-07-16T04:14:33Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:33Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_node_nil_response3875141344/001/noise_private.key","time":"2026-07-16T04:14:33Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_node_nil_response3875141344/001/headscale_test.db","time":"2026-07-16T04:14:33Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:33Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:33Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:33Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:33Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:33Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:33Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"New followup node registration using key: wZzvRYZyrNr-EAxi744TP7lY"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:33Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_malformed_path2920124869/001/noise_private.key","time":"2026-07-16T04:14:33Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_malformed_path2920124869/001/headscale_test.db","time":"2026-07-16T04:14:33Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:33Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:33Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:33Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:33Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:33Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:33Z","message":"received register request with no auth, and no existing node"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:33Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_wrong_path_format142649799/001/noise_private.key","time":"2026-07-16T04:14:33Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_registration_wrong_path_format142649799/001/headscale_test.db","time":"2026-07-16T04:14:33Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:33Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:33Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:33Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:33Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:33Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:33Z","message":"received register request with no auth, and no existing node"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:33Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_custom_hostinf4080539416/001/noise_private.key","time":"2026-07-16T04:14:33Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_custom_hostinf4080539416/001/headscale_test.db","time":"2026-07-16T04:14:33Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:33Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:33Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:33Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:33Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:33Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:33Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:33Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:33Z","message":"Starting node registration using key: Qydf6wnjqx7BejOUXiGJ8AXl"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:33Z","message":"received register request with no auth, and no existing node"} {"level":"debug","registration_id":"Qydf6wnjqx7BejOUXiGJ8AXl","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:33Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"custom-interactive-node","time":"2026-07-16T04:14:33Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:34Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:34Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:34Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:34Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:34Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:34Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_usage_count_tracking1232042100/001/noise_private.key","time":"2026-07-16T04:14:34Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowspreauth_key_usage_count_tracking1232042100/001/headscale_test.db","time":"2026-07-16T04:14:34Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:34Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:34Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:34Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:34Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:34Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:34Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:35Z","reusable":false,"used":false,"time":"2026-07-16T04:14:35Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"usage-count-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"usage-count-user","time":"2026-07-16T04:14:35Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"usage-count-node","time":"2026-07-16T04:14:35Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:35Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:35Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:35Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:35Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"usage-count-user","Created":"2026-07-16T04:14:34.79477804Z"},"Login":{"ID":1,"Provider":"","LoginName":"usage-count-user","DisplayName":"usage-count-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Ko0Rt-WIXGET-dq32ZvnFzaepGFJ2JEIWrN9PSALf8Y8ZwA8k_ED9c2m-O-EL-2BLxOmTK5IEraVn"},"Expiry":"2026-07-17T04:14:34.915585425Z","Followup":"","Hostinfo":{"Hostname":"usage-count-node"},"NodeKeySignature":null},"node.name":"usage-count-node","node.id":1,"time":"2026-07-16T04:14:35Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:35Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:35Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_registration_id_gen2871635885/001/noise_private.key","time":"2026-07-16T04:14:35Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_registration_id_gen2871635885/001/headscale_test.db","time":"2026-07-16T04:14:35Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:35Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:35Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:35Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:35Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:35Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:35Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:35Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:35Z","message":"Starting node registration using key: WhWFUkcfDBd6Nc20Z4AVBqcP"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:35Z","message":"received register request with no auth, and no existing node"} {"level":"debug","registration_id":"WhWFUkcfDBd6Nc20Z4AVBqcP","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:35Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"registration-id-test-node","time":"2026-07-16T04:14:35Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:36Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:36Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:36Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:36Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:36Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:36Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsconcurrent_registration_same_node_key1840876097/001/noise_private.key","time":"2026-07-16T04:14:36Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsconcurrent_registration_same_node_key1840876097/001/headscale_test.db","time":"2026-07-16T04:14:36Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:36Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:36Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:36Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:36Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:36Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:36Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:37Z","reusable":true,"used":false,"time":"2026-07-16T04:14:37Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"concurrent-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"concurrent-user","time":"2026-07-16T04:14:37Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"concurrent-node","time":"2026-07-16T04:14:37Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:37Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:37Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:37Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:37Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"concurrent-user","Created":"2026-07-16T04:14:36.871717645Z"},"Login":{"ID":1,"Provider":"","LoginName":"concurrent-user","DisplayName":"concurrent-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-ECDADeynIRMS-rhdTLDRGE6O00EQ6UmNiesF8SYBSePQGnIjcQzJ0XYD6SHX32j_IA1FMw8jglObx"},"Expiry":"2026-07-17T04:14:36.999396746Z","Followup":"","Hostinfo":{"Hostname":"concurrent-node"},"NodeKeySignature":null},"node.name":"concurrent-node","node.id":1,"time":"2026-07-16T04:14:37Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:37Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:37Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsauth_key_with_future_expiry_past_request940716966/001/noise_private.key","time":"2026-07-16T04:14:37Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsauth_key_with_future_expiry_past_request940716966/001/headscale_test.db","time":"2026-07-16T04:14:37Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:37Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:37Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:37Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:37Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:37Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:37Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-18T04:14:37Z","now":"2026-07-16T04:14:38Z","reusable":true,"used":false,"time":"2026-07-16T04:14:38Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"future-expiry-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"future-expiry-user","time":"2026-07-16T04:14:38Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"future-expiry-node","time":"2026-07-16T04:14:38Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:38Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:38Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:38Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:38Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"future-expiry-user","Created":"2026-07-16T04:14:37.91126015Z"},"Login":{"ID":1,"Provider":"","LoginName":"future-expiry-user","DisplayName":"future-expiry-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-vfgYQwZ-MEiN-hOQ2C_kKBhmdSOzDK5yaqUdD5Mxz0ZzR4DD06MdrKgl0jHUPDNRtkWf5Ud5dE8Vv"},"Expiry":"2026-07-16T16:14:38.039463532Z","Followup":"","Hostinfo":{"Hostname":"future-expiry-node"},"NodeKeySignature":null},"node.name":"future-expiry-node","node.id":1,"time":"2026-07-16T04:14:38Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:38Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:38Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsreauth_existing_node_different_user_auth2554918121/001/noise_private.key","time":"2026-07-16T04:14:38Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsreauth_existing_node_different_user_auth2554918121/001/headscale_test.db","time":"2026-07-16T04:14:38Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:38Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:38Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:38Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:38Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:38Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:38Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:39Z","reusable":true,"used":false,"time":"2026-07-16T04:14:39Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"context-node-user1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"user1-context","time":"2026-07-16T04:14:39Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"context-node-user1","time":"2026-07-16T04:14:39Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:39Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:39Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:39Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:39Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1-context","Created":"2026-07-16T04:14:38.94954998Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1-context","DisplayName":"user1-context"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-DEJGBHFxnan7-5WSEVu7SZD4Ouqz1Bl00a2ZD0DyFVteRU_jib23em_tBv5IyeroBjr3bOhTU77Kz"},"Expiry":"2026-07-17T04:14:39.075077911Z","Followup":"","Hostinfo":{"Hostname":"context-node-user1"},"NodeKeySignature":null},"node.name":"context-node-user1","node.id":1,"time":"2026-07-16T04:14:39Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:40Z","reusable":true,"used":false,"time":"2026-07-16T04:14:40Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"context-node-user2","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"user2-context","time":"2026-07-16T04:14:40Z","message":"Registering node with pre-auth key"} {"level":"info","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1890","existing.node.name":"context-node-user1","existing.node.id":1,"machine.key":"[OkJMk]","old.user":"user1-context","new.user":"user2-context","time":"2026-07-16T04:14:40Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"context-node-user2","time":"2026-07-16T04:14:40Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:40Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:40Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:40Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:40Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2,"DisplayName":"user2-context","Created":"2026-07-16T04:14:38.950155417Z"},"Login":{"ID":2,"Provider":"","LoginName":"user2-context","DisplayName":"user2-context"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-0kcsbsjuWfHW-FDqQzaeUtZf7cIC1NUchfHjjAVs3Lq2Zt_hxm8B_fX-51E-kK5GN0i2_fa5PTX4-"},"Expiry":"2026-07-17T04:14:40.075367272Z","Followup":"","Hostinfo":{"Hostname":"context-node-user2"},"NodeKeySignature":null},"node.name":"context-node-user2","node.id":2,"time":"2026-07-16T04:14:40Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:40Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:40Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_reauth_existing_node_differe2012748412/001/noise_private.key","time":"2026-07-16T04:14:40Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_reauth_existing_node_differe2012748412/001/headscale_test.db","time":"2026-07-16T04:14:40Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:40Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:41Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:41Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:41Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:41Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:41Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:41Z","reusable":true,"used":false,"time":"2026-07-16T04:14:41Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"transfer-node-user1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"interactive-user-1","time":"2026-07-16T04:14:41Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"transfer-node-user1","time":"2026-07-16T04:14:41Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:41Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:41Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:41Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:41Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"interactive-user-1","Created":"2026-07-16T04:14:41.006364014Z"},"Login":{"ID":1,"Provider":"","LoginName":"interactive-user-1","DisplayName":"interactive-user-1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-K4B1nW_8TOW9-j0xizAx8t7dqFxGDrPeVu4Y9-YainFv044Mltn54Ckl7N26-IDXeEJZSdvMe66L3"},"Expiry":"2026-07-17T04:14:41.137854782Z","Followup":"","Hostinfo":{"Hostname":"transfer-node-user1"},"NodeKeySignature":null},"node.name":"transfer-node-user1","node.id":1,"time":"2026-07-16T04:14:42Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:42Z","message":"Starting node registration using key: 5hh3GukMYafuW30oDvf9iOIp"} {"level":"info","registration_id":"5hh3GukMYafuW30oDvf9iOIp","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","existing.node.name":"transfer-node-user1","existing.node.id":1,"old.user":"interactive-user-1","time":"2026-07-16T04:14:42Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","registration_id":"5hh3GukMYafuW30oDvf9iOIp","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:42Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"transfer-node-user2","time":"2026-07-16T04:14:42Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:42Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:42Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:42Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:42Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:43Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:43Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_request_after_cache_expiry660795675/001/noise_private.key","time":"2026-07-16T04:14:43Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsfollowup_request_after_cache_expiry660795675/001/headscale_test.db","time":"2026-07-16T04:14:43Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:43Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:43Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:43Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:43Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:43Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:43Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:43Z","message":"New followup node registration using key: WNTMSzh29SL9MMDfalNSAKh1"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:43Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:43Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowslogout_with_exactly_now_expiry3953983726/001/noise_private.key","time":"2026-07-16T04:14:43Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowslogout_with_exactly_now_expiry3953983726/001/headscale_test.db","time":"2026-07-16T04:14:43Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:43Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:43Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:43Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:43Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:43Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:43Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:43Z","reusable":true,"used":false,"time":"2026-07-16T04:14:43Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"exact-now-node","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"exact-now-user","time":"2026-07-16T04:14:43Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"exact-now-node","time":"2026-07-16T04:14:43Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:43Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:43Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:43Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:43Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"exact-now-user","Created":"2026-07-16T04:14:43.103701455Z"},"Login":{"ID":1,"Provider":"","LoginName":"exact-now-user","DisplayName":"exact-now-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-nT9XIV4ijAka-6cMZZdrCT1uswR5bLgrqHqdXEseoyHTo4VDfBUH8ZMmhsPQUgr0pwRquAjOpP__l"},"Expiry":"2026-07-17T04:14:43.227414803Z","Followup":"","Hostinfo":{"Hostname":"exact-now-node"},"NodeKeySignature":null},"node.name":"exact-now-node","node.id":1,"time":"2026-07-16T04:14:44Z","message":"RegisterResponse"} {"level":"debug","node.key":"[k6gUS]","expiry":"2026-07-16T04:14:44Z","has_auth":false,"time":"2026-07-16T04:14:44Z","message":"Detected logout attempt with past expiry"} {"level":"debug","node.id":1,"node.name":"exact-now-node","is_ephemeral":false,"has_authkey":true,"time":"2026-07-16T04:14:44Z","message":"Found existing node for logout, calling handleLogout"} {"level":"debug","node.id":1,"node.name":"exact-now-node","is_ephemeral":false,"has_authkey":true,"req.expiry":"2026-07-16T04:14:44Z","time":"2026-07-16T04:14:44Z","message":"Processing logout request with past expiry"} {"level":"debug","node.id":1,"node.name":"exact-now-node","time":"2026-07-16T04:14:44Z","message":"Node is not ephemeral, setting expiry instead of deleting"} {"level":"info","time":"2026-07-16T04:14:44Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:44Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_timeout_cleanup768098784/001/noise_private.key","time":"2026-07-16T04:14:44Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_timeout_cleanup768098784/001/headscale_test.db","time":"2026-07-16T04:14:44Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:44Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:44Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:44Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:44Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:44Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[YKWkd]","machine.key":"[o3i3f]","unexpected":true,"time":"2026-07-16T04:14:44Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:44Z","message":"Starting node registration using key: Ph2IadpnRBmFVg4RV8lpXIhj"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:44Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:44Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_existing_node_3457252296/001/noise_private.key","time":"2026-07-16T04:14:44Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_existing_node_3457252296/001/headscale_test.db","time":"2026-07-16T04:14:44Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:44Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:44Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:44Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:44Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:44Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:44Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:44Z","reusable":true,"used":false,"time":"2026-07-16T04:14:44Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"existing-node-user1","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"existing-user-1","time":"2026-07-16T04:14:44Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"existing-node-user1","time":"2026-07-16T04:14:44Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:45Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:45Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:45Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:45Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"existing-user-1","Created":"2026-07-16T04:14:44.716851133Z"},"Login":{"ID":1,"Provider":"","LoginName":"existing-user-1","DisplayName":"existing-user-1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-F0xhz8m3aUyO-wFYMrPQqoOG0MX5VFzlc6KhWYjeFOpLtpAMgxQIPspSg7FiAw--TElqRoTDXkYYd"},"Expiry":"2026-07-17T04:14:44.843275518Z","Followup":"","Hostinfo":{"Hostname":"existing-node-user1"},"NodeKeySignature":null},"node.name":"existing-node-user1","node.id":1,"time":"2026-07-16T04:14:45Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:45Z","message":"Starting node registration using key: I820StVac__ygQi5Yxorv_I9"} {"level":"info","registration_id":"I820StVac__ygQi5Yxorv_I9","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","existing.node.name":"existing-node-user1","existing.node.id":1,"old.user":"existing-user-1","time":"2026-07-16T04:14:45Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","registration_id":"I820StVac__ygQi5Yxorv_I9","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:45Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"existing-node-user2","time":"2026-07-16T04:14:45Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:46Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:46Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:46Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:46Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:46Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:46Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_malformed_followup_2237561098/001/noise_private.key","time":"2026-07-16T04:14:46Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_malformed_followup_2237561098/001/headscale_test.db","time":"2026-07-16T04:14:46Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:46Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:46Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:46Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:46Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:46Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:46Z","message":"Starting node registration using key: k62TK13eGk2qnANSsWNlwLxB"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:46Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:46Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_concurrent_registra1591346230/001/noise_private.key","time":"2026-07-16T04:14:46Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_concurrent_registra1591346230/001/headscale_test.db","time":"2026-07-16T04:14:46Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:46Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:46Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:46Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:46Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:46Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:46Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:46Z","message":"Starting node registration using key: ASlwWZ3vZXP1nPkFPA26Jzm-"} {"level":"debug","registration_id":"ASlwWZ3vZXP1nPkFPA26Jzm-","user.name":"concurrent-test-user","machine.key":"[OkJMk]","method":"concurrent-test-method","expiry":null,"time":"2026-07-16T04:14:46Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"concurrent-registration-node","time":"2026-07-16T04:14:46Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:46Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:47Z","message":"New followup node registration using key: PkGifW1CkHkUHzfLWfq-Cpc4"} {"level":"info","time":"2026-07-16T04:14:47Z","message":"New followup node registration using key: 8xD2EJPT4uInpFRt5Z2SuOHN"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:47Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:47Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:47Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:47Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:47Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:47Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_node_key_rotation1347267753/001/noise_private.key","time":"2026-07-16T04:14:47Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_node_key_rotation1347267753/001/headscale_test.db","time":"2026-07-16T04:14:47Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:47Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:47Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:47Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:47Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:47Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:47Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:48Z","reusable":true,"used":false,"time":"2026-07-16T04:14:48Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"rotation-node-initial","machine.key":"[OkJMk]","node.key":"[k6gUS]","user.name":"rotation-user","time":"2026-07-16T04:14:48Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"rotation-node-initial","time":"2026-07-16T04:14:48Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:48Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:48Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:48Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:48Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"rotation-user","Created":"2026-07-16T04:14:47.860116843Z"},"Login":{"ID":1,"Provider":"","LoginName":"rotation-user","DisplayName":"rotation-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:93a8144a2bc11ebb24cb6ed30729f29c88dbbe44026b89346f4fc4cb5ec78275","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-X-zVyfO6taBF-7DkC8PW4b9U8H0H3wmEIan1MG9mlnAqpFeTWI0XHmg7PfJlBAwZxNciHSFyqGejN"},"Expiry":"2026-07-17T04:14:48.012993425Z","Followup":"","Hostinfo":{"Hostname":"rotation-node-initial"},"NodeKeySignature":null},"node.name":"rotation-node-initial","node.id":1,"time":"2026-07-16T04:14:48Z","message":"RegisterResponse"} {"level":"debug","node.key":"[YKWkd]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:48Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:48Z","message":"Starting node registration using key: SIDRIjcWbkzxvOdLGdz-Mo14"} {"level":"debug","node.key":"[YKWkd]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:48Z","message":"received register request with no auth, and no existing node"} {"level":"info","registration_id":"SIDRIjcWbkzxvOdLGdz-Mo14","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","existing.node.name":"rotation-node-initial","existing.node.id":1,"old.user":"rotation-user","time":"2026-07-16T04:14:48Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","registration_id":"SIDRIjcWbkzxvOdLGdz-Mo14","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:48Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"rotation-node-updated","time":"2026-07-16T04:14:48Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:49Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:49Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:49Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:49Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:49Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:49Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_nil_hostinfo4105203213/001/noise_private.key","time":"2026-07-16T04:14:49Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_with_nil_hostinfo4105203213/001/headscale_test.db","time":"2026-07-16T04:14:49Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:49Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:49Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:49Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:49Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:49Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:49Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:49Z","message":"received register request with no auth, and no existing node"} {"level":"warn","machine.key":"[OkJMk]","node.key":"[k6gUS]","generated.hostname":"node-mkey:3a4","time":"2026-07-16T04:14:49Z","message":"Received registration request with nil hostinfo, generated default hostname"} {"level":"info","time":"2026-07-16T04:14:49Z","message":"Starting node registration using key: ZrPdRcu3RQHAiGSKN_5xHhNA"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:49Z","message":"received register request with no auth, and no existing node"} {"level":"debug","registration_id":"ZrPdRcu3RQHAiGSKN_5xHhNA","user.name":"interactive-test-user","machine.key":"[OkJMk]","method":"test-method","expiry":null,"time":"2026-07-16T04:14:49Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"invalid-w0kjmiul","time":"2026-07-16T04:14:49Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:50Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:50Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:50Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:50Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:50Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:50Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_registration_cache_3809907813/001/noise_private.key","time":"2026-07-16T04:14:50Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_registration_cache_3809907813/001/headscale_test.db","time":"2026-07-16T04:14:50Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:50Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:50Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:50Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:50Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:50Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:50Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:50Z","message":"Starting node registration using key: F3qOzB4lb5xiT9lYy2rj8_h5"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:50Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:50Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_multiple_steps_same1476898698/001/noise_private.key","time":"2026-07-16T04:14:50Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_multiple_steps_same1476898698/001/headscale_test.db","time":"2026-07-16T04:14:50Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:50Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:51Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:51Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:51Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:51Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:51Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:51Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:51Z","message":"Starting node registration using key: TiWPnI5MbAPQ6obfzjwMAuAG"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:51Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:51Z","message":"Starting node registration using key: V2J93RfzyJewNNBsOs53Lz9d"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:51Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:14:51Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_complete_second_of_1290697536/001/noise_private.key","time":"2026-07-16T04:14:51Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthenticationFlowsinteractive_workflow_complete_second_of_1290697536/001/headscale_test.db","time":"2026-07-16T04:14:51Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:51Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:51Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:51Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:51Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:51Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:51Z","message":"Policy changes require node updates"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:51Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:51Z","message":"Starting node registration using key: xvCCqVazrBON2KylgbqNrC44"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:51Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:14:51Z","message":"Starting node registration using key: T2cDY12BSUpFwo8ygtEE0xsx"} {"level":"debug","registration_id":"T2cDY12BSUpFwo8ygtEE0xsx","user.name":"second-registration-user","machine.key":"[OkJMk]","method":"second-registration-method","expiry":null,"time":"2026-07-16T04:14:51Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"pending-node-2","time":"2026-07-16T04:14:51Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.key":"[k6gUS]","machine.key":"[OkJMk]","unexpected":true,"time":"2026-07-16T04:14:51Z","message":"received register request with no auth, and no existing node"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:51Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:51Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:51Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:51Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:14:52Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:52Z","message":"batcher shutting down, exiting worker"} --- FAIL: TestAuthenticationFlows (43.88s) --- FAIL: TestAuthenticationFlows/followup_registration_success (0.16s) auth_test.go:2477: Node NOT found before handleRegister for key [k6gUS] auth_test.go:2490: Error Trace: github.com/juanfont/headscale/hscontrol/auth_test.go:2490 Error: Received unexpected error: http error[401]: registration timed out, %!s() Test: TestAuthenticationFlows/followup_registration_success Messages: unexpected error: http error[401]: registration timed out, %!s() {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeStoreLookup4040392121/001/noise_private.key","time":"2026-07-16T04:14:52Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeStoreLookup4040392121/001/headscale_test.db","time":"2026-07-16T04:14:52Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:52Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:52Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:52Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:52Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:52Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:52Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:52Z","reusable":true,"used":false,"time":"2026-07-16T04:14:52Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[MoZU8]","node.key":"[ZUh7x]","user.name":"test-user","time":"2026-07-16T04:14:52Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-node","time":"2026-07-16T04:14:52Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:14:52Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:52Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:52Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:52Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:14:52.111940764Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:65487bc4eff2e8b2c7a130f655a5ed2d92ec5d83840274bbe5c519a18077634c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-fz2zUyrXL8Bp-8GlbKsfQ-n0wCAEWvodDGNX7dt-f17ngIU2fxOrqalFymkJqHdcc9P3tUA5vPeS6"},"Expiry":"2026-07-17T04:14:52.233069391Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":1,"time":"2026-07-16T04:14:53Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:14:53Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:14:53Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestPreAuthKeyLogoutAndReloginDifferentUser1704656672/001/noise_private.key","time":"2026-07-16T04:14:53Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestPreAuthKeyLogoutAndReloginDifferentUser1704656672/001/headscale_test.db","time":"2026-07-16T04:14:53Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:14:53Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:14:53Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:14:53Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:14:53Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:14:53Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:14:53Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:53Z","reusable":true,"used":false,"time":"2026-07-16T04:14:53Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user1-node1","machine.key":"[VOFx/]","node.key":"[gaO2L]","user.name":"user1","time":"2026-07-16T04:14:53Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user1-node1","time":"2026-07-16T04:14:53Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:53Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:53Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:53Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:53Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:81a3b62c8bcde2e738ebdd222996d91dcfabdb2f37b54ca852296b10b68acb65","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-TmdFhq23UHku-8UU67KQNVAM7HTtFoBiXuBbWHdZLFeFGyoAqU5uIRir585shjJx3UG3TgUT23j0E"},"Expiry":"2026-07-17T04:14:53.418129679Z","Followup":"","Hostinfo":{"Hostname":"user1-node1"},"NodeKeySignature":null},"node.name":"user1-node1","node.id":1,"time":"2026-07-16T04:14:54Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:54Z","reusable":true,"used":false,"time":"2026-07-16T04:14:54Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user1-node2","machine.key":"[6XGZY]","node.key":"[b4BiT]","user.name":"user1","time":"2026-07-16T04:14:54Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user1-node2","time":"2026-07-16T04:14:54Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:54Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:54Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:54Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:54Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:6f80624eb9b69e5e4a85950c96fe81e50a8fe243ffd6e10cc311cdc0c700ce78","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-TmdFhq23UHku-8UU67KQNVAM7HTtFoBiXuBbWHdZLFeFGyoAqU5uIRir585shjJx3UG3TgUT23j0E"},"Expiry":"2026-07-17T04:14:54.173655362Z","Followup":"","Hostinfo":{"Hostname":"user1-node2"},"NodeKeySignature":null},"node.name":"user1-node2","node.id":2,"time":"2026-07-16T04:14:55Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:55Z","reusable":true,"used":false,"time":"2026-07-16T04:14:55Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user2-node1","machine.key":"[Dn/MP]","node.key":"[q3HC7]","user.name":"user2","time":"2026-07-16T04:14:55Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user2-node1","time":"2026-07-16T04:14:55Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:55Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:55Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:55Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:55Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2,"DisplayName":"user2","Created":"2026-07-16T04:14:53.170156851Z"},"Login":{"ID":2,"Provider":"","LoginName":"user2","DisplayName":"user2"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:ab71c2ec1acc1de4d01efa03796d8067803c22c78c1ccf9a5009859f1daa8738","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-O69Su9QIvTJy-VPCaOjgo_cQh4AA7AgsMcjhjOupaHcQnHJaJUB7x0PyP4gUFKw2PfOHyTGwuGmxF"},"Expiry":"2026-07-17T04:14:55.175421882Z","Followup":"","Hostinfo":{"Hostname":"user2-node1"},"NodeKeySignature":null},"node.name":"user2-node1","node.id":3,"time":"2026-07-16T04:14:56Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:56Z","reusable":true,"used":false,"time":"2026-07-16T04:14:56Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user2-node2","machine.key":"[EgPl1]","node.key":"[L3iEc]","user.name":"user2","time":"2026-07-16T04:14:56Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user2-node2","time":"2026-07-16T04:14:56Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:56Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:56Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:56Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:56Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2,"DisplayName":"user2","Created":"2026-07-16T04:14:53.170156851Z"},"Login":{"ID":2,"Provider":"","LoginName":"user2","DisplayName":"user2"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:2f788470734a98703aff5ab88436c3fe3f1b5aa6f980a724c20d3c2f7acc8f2f","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-O69Su9QIvTJy-VPCaOjgo_cQh4AA7AgsMcjhjOupaHcQnHJaJUB7x0PyP4gUFKw2PfOHyTGwuGmxF"},"Expiry":"2026-07-17T04:14:56.176986644Z","Followup":"","Hostinfo":{"Hostname":"user2-node2"},"NodeKeySignature":null},"node.name":"user2-node2","node.id":4,"time":"2026-07-16T04:14:57Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"user1-node1","machine.key":"[VOFx/]","node.key.existing":"[gaO2L]","node.key.request":"[gaO2L]","authkey.id":3,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:14:57Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user1-node1","machine.key":"[VOFx/]","node.key":"[gaO2L]","user.name":"user1","time":"2026-07-16T04:14:57Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"user1-node1","node.id":1,"machine.key":"[VOFx/]","node.key":"[gaO2L]","user.name":"user1","time":"2026-07-16T04:14:57Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"user1-node1","time":"2026-07-16T04:14:57Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"user1-node1","node.id":1,"machine.key":"[VOFx/]","node.key":"[gaO2L]","user.name":"user1","time":"2026-07-16T04:14:57Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:57Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:57Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:57Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:81a3b62c8bcde2e738ebdd222996d91dcfabdb2f37b54ca852296b10b68acb65","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Lcv-WrC4WJba-1CwzyL0Hm6hlQIoX5VKz8f1Vg7eqT0wXRLFhlZcplOfL4D_4HlUCHls6avgoo7vE"},"Expiry":"2026-07-17T04:14:57.355906517Z","Followup":"","Hostinfo":{"Hostname":"user1-node1"},"NodeKeySignature":null},"node.name":"user1-node1","node.id":1,"time":"2026-07-16T04:14:57Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":2,"node.name":"user1-node2","machine.key":"[6XGZY]","node.key.existing":"[b4BiT]","node.key.request":"[b4BiT]","authkey.id":3,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:14:57Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user1-node2","machine.key":"[6XGZY]","node.key":"[b4BiT]","user.name":"user1","time":"2026-07-16T04:14:57Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"user1-node2","node.id":2,"machine.key":"[6XGZY]","node.key":"[b4BiT]","user.name":"user1","time":"2026-07-16T04:14:57Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":2,"node.hostname":"user1-node2","time":"2026-07-16T04:14:58Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"user1-node2","node.id":2,"machine.key":"[6XGZY]","node.key":"[b4BiT]","user.name":"user1","time":"2026-07-16T04:14:58Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:58Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:58Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:58Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:6f80624eb9b69e5e4a85950c96fe81e50a8fe243ffd6e10cc311cdc0c700ce78","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Lcv-WrC4WJba-1CwzyL0Hm6hlQIoX5VKz8f1Vg7eqT0wXRLFhlZcplOfL4D_4HlUCHls6avgoo7vE"},"Expiry":"2026-07-17T04:14:57.680131249Z","Followup":"","Hostinfo":{"Hostname":"user1-node2"},"NodeKeySignature":null},"node.name":"user1-node2","node.id":2,"time":"2026-07-16T04:14:58Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:58Z","reusable":true,"used":false,"time":"2026-07-16T04:14:58Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user2-node1","machine.key":"[Dn/MP]","node.key":"[q3HC7]","user.name":"user1","time":"2026-07-16T04:14:58Z","message":"Registering node with pre-auth key"} {"level":"info","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1890","existing.node.name":"user2-node1","existing.node.id":3,"machine.key":"[Dn/MP]","old.user":"user2","new.user":"user1","time":"2026-07-16T04:14:58Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user2-node1","time":"2026-07-16T04:14:58Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:58Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:58Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:58Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:58Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:ab71c2ec1acc1de4d01efa03796d8067803c22c78c1ccf9a5009859f1daa8738","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Lcv-WrC4WJba-1CwzyL0Hm6hlQIoX5VKz8f1Vg7eqT0wXRLFhlZcplOfL4D_4HlUCHls6avgoo7vE"},"Expiry":"2026-07-17T04:14:58.181391934Z","Followup":"","Hostinfo":{"Hostname":"user2-node1"},"NodeKeySignature":null},"node.name":"user2-node1","node.id":5,"time":"2026-07-16T04:14:59Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:14:59Z","reusable":true,"used":false,"time":"2026-07-16T04:14:59Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user2-node2","machine.key":"[EgPl1]","node.key":"[L3iEc]","user.name":"user1","time":"2026-07-16T04:14:59Z","message":"Registering node with pre-auth key"} {"level":"info","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1890","existing.node.name":"user2-node2","existing.node.id":4,"machine.key":"[EgPl1]","old.user":"user2","new.user":"user1","time":"2026-07-16T04:14:59Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user2-node2","time":"2026-07-16T04:14:59Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:14:59Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:14:59Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:14:59Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:14:59Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:14:53.16946458Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:2f788470734a98703aff5ab88436c3fe3f1b5aa6f980a724c20d3c2f7acc8f2f","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-Lcv-WrC4WJba-1CwzyL0Hm6hlQIoX5VKz8f1Vg7eqT0wXRLFhlZcplOfL4D_4HlUCHls6avgoo7vE"},"Expiry":"2026-07-17T04:14:59.183588564Z","Followup":"","Hostinfo":{"Hostname":"user2-node2"},"NodeKeySignature":null},"node.name":"user2-node2","node.id":6,"time":"2026-07-16T04:15:00Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:15:00Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:00Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestWebFlowReauthDifferentUser1518418720/001/noise_private.key","time":"2026-07-16T04:15:00Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestWebFlowReauthDifferentUser1518418720/001/headscale_test.db","time":"2026-07-16T04:15:00Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:00Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:00Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:00Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:00Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:00Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:00Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:00Z","reusable":true,"used":false,"time":"2026-07-16T04:15:00Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-machine","machine.key":"[1OVT1]","node.key":"[qRNT/]","user.name":"user1","time":"2026-07-16T04:15:00Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-machine","time":"2026-07-16T04:15:00Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:00Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:00Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:00Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:00Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"user1","Created":"2026-07-16T04:15:00.244694889Z"},"Login":{"ID":1,"Provider":"","LoginName":"user1","DisplayName":"user1"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:a91353ff458f29a5cad35aa5fc7251a0366aa328b4416907f80c7892d02d9135","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-aTOEEStsKFOU-FjwHL4KlpSqty7aPC9zuPV9Wjlomwjj0c4ufJ6jjNWBR9PegiB2bje4OcXW0R8rE"},"Expiry":"2026-07-17T04:15:00.38869338Z","Followup":"","Hostinfo":{"Hostname":"test-machine"},"NodeKeySignature":null},"node.name":"test-machine","node.id":1,"time":"2026-07-16T04:15:01Z","message":"RegisterResponse"} {"level":"debug","node.key":"[qRNT/]","expiry":"2026-07-16T03:15:01Z","has_auth":false,"time":"2026-07-16T04:15:01Z","message":"Detected logout attempt with past expiry"} {"level":"debug","node.id":1,"node.name":"test-machine","is_ephemeral":false,"has_authkey":true,"time":"2026-07-16T04:15:01Z","message":"Found existing node for logout, calling handleLogout"} {"level":"debug","node.id":1,"node.name":"test-machine","is_ephemeral":false,"has_authkey":true,"req.expiry":"2026-07-16T03:15:01Z","time":"2026-07-16T04:15:01Z","message":"Processing logout request with past expiry"} {"level":"debug","node.id":1,"node.name":"test-machine","time":"2026-07-16T04:15:01Z","message":"Node is not ephemeral, setting expiry instead of deleting"} {"level":"debug","node.key":"[WytOv]","machine.key":"[1OVT1]","unexpected":true,"time":"2026-07-16T04:15:01Z","message":"received register request with no auth, and no existing node"} {"level":"info","time":"2026-07-16T04:15:01Z","message":"Starting node registration using key: 0DuLtOH_WdKWuavxYY9b1mbp"} {"level":"info","registration_id":"0DuLtOH_WdKWuavxYY9b1mbp","user.name":"user2","machine.key":"[1OVT1]","method":"cli","existing.node.name":"test-machine","existing.node.id":1,"old.user":"user1","time":"2026-07-16T04:15:01Z","message":"Creating new node for different user (same machine key exists for another user)"} {"level":"debug","registration_id":"0DuLtOH_WdKWuavxYY9b1mbp","user.name":"user2","machine.key":"[1OVT1]","method":"cli","expiry":null,"time":"2026-07-16T04:15:01Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-machine","time":"2026-07-16T04:15:01Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":2,"time":"2026-07-16T04:15:02Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:02Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:02Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:15:02Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:02Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestGitHubIssue2830_ExistingNodeCanReregisterWithUsedPreAuthKey2160169022/001/noise_private.key","time":"2026-07-16T04:15:02Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestGitHubIssue2830_ExistingNodeCanReregisterWithUsedPreAuthKey2160169022/001/headscale_test.db","time":"2026-07-16T04:15:02Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:02Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:02Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:02Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:02Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:02Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:02Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:03Z","reusable":false,"used":false,"time":"2026-07-16T04:15:03Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"issue-2830-test-node","machine.key":"[MdbUV]","node.key":"[xwmji]","user.name":"testuser","time":"2026-07-16T04:15:03Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"issue-2830-test-node","time":"2026-07-16T04:15:03Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:03Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:03Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:03Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:03Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"testuser","Created":"2026-07-16T04:15:02.817817254Z"},"Login":{"ID":1,"Provider":"","LoginName":"testuser","DisplayName":"testuser"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:c709a38bd293b54b44a3ef73fb57eadda2e479dfbca86b072eff895358d8205c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-YZLaBAwT8RLf-mnAz87Fb8_FIqi_pefVFDu7lPodf8Ua-II5AL5aG5k2_W9h64ApXq74gPx6OKQzD"},"Expiry":"2026-07-17T04:15:03.068423267Z","Followup":"","Hostinfo":{"Hostname":"issue-2830-test-node"},"NodeKeySignature":null},"node.name":"issue-2830-test-node","node.id":1,"time":"2026-07-16T04:15:03Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"issue-2830-test-node","machine.key":"[MdbUV]","node.key.existing":"[xwmji]","node.key.request":"[xwmji]","authkey.id":1,"authkey.used":true,"authkey.expired":false,"authkey.reusable":false,"nodekey.rotation":false,"time":"2026-07-16T04:15:04Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"issue-2830-test-node","machine.key":"[MdbUV]","node.key":"[xwmji]","user.name":"testuser","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"issue-2830-test-node","node.id":1,"machine.key":"[MdbUV]","node.key":"[xwmji]","user.name":"testuser","time":"2026-07-16T04:15:04Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"issue-2830-test-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"issue-2830-test-node","node.id":1,"machine.key":"[MdbUV]","node.key":"[xwmji]","user.name":"testuser","time":"2026-07-16T04:15:04Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"testuser","Created":"2026-07-16T04:15:02.817817254Z"},"Login":{"ID":1,"Provider":"","LoginName":"testuser","DisplayName":"testuser"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:c709a38bd293b54b44a3ef73fb57eadda2e479dfbca86b072eff895358d8205c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-YZLaBAwT8RLf-mnAz87Fb8_FIqi_pefVFDu7lPodf8Ua-II5AL5aG5k2_W9h64ApXq74gPx6OKQzD"},"Expiry":"2026-07-17T04:15:03.97946561Z","Followup":"","Hostinfo":{"Hostname":"issue-2830-test-node"},"NodeKeySignature":null},"node.name":"issue-2830-test-node","node.id":1,"time":"2026-07-16T04:15:04Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:04Z","reusable":false,"used":true,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestGitHubIssue2830_NodeRestartWithUsedPreAuthKey530466235/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestGitHubIssue2830_NodeRestartWithUsedPreAuthKey530466235/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_CannotRemoveAllTags2128243412/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_ByPrefix1837211394/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_ByPrefix1837211394/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_NoIdentifier3884097976/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_NoIdentifier3884097976/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_BothIdentifiers919311877/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_BothIdentifiers919311877/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_ByID3026576099/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteUser_ReturnsProperChangeSignal205927303/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteUser_ReturnsProperChangeSignal205927303/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_ByID3026576099/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_BothIdentifiers4142298840/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_BothIdentifiers4142298840/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestIssue2830_ExistingNodeReregistersWithExpiredKey1849784395/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthKeyTaggedToUserOwnedViaReauth4248101814/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestWebAuthReauthWithEmptyTagsRemovesAllTags1833103996/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeReregistrationWithExpiredPreAuthKey1088130668/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestIssue2830_ExistingNodeReregistersWithExpiredKey1849784395/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestAuthKeyTaggedToUserOwnedViaReauth4248101814/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestWebAuthReauthWithEmptyTagsRemovesAllTags1833103996/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeletedPreAuthKeyNotRecreatedOnNodeUpdate1466665860/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_NoIdentifier4015667577/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_ByPrefix1408804791/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeReregistrationWithReusablePreAuthKey2809257766/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeReregistrationWithExpiredPreAuthKey1088130668/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeletedPreAuthKeyNotRecreatedOnNodeUpdate1466665860/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_NoIdentifier4015667577/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_CannotRemoveAllTags2128243412/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_ByID271206060/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestNodeReregistrationWithReusablePreAuthKey2809257766/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_TaggedNode3598263942/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestDeleteApiKey_ByID271206060/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedNodeWithoutUserToDifferentUser4015791625/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_Conversion2583038782/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestTaggedNodeWithoutUserToDifferentUser4015791625/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_Conversion2583038782/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestExpireApiKey_ByPrefix1408804791/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestSetTags_TaggedNode3598263942/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"info","path":"/home/buildozer/aports/community/headscale/tmp/TestWebAuthRejectsUnauthorizedRequestTags798592936/001/noise_private.key","time":"2026-07-16T04:15:04Z","message":"No private key file at path, creating..."} {"level":"info","database":"sqlite3","path":"/home/buildozer/aports/community/headscale/tmp/TestWebAuthRejectsUnauthorizedRequestTags798592936/001/headscale_test.db","time":"2026-07-16T04:15:04Z","message":"Opening database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501221827","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202501311657","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502070949","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502131714","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202502171819","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505091439","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/db/db.go:940","migration_id":"202505141324","time":"2026-07-16T04:15:04Z","message":"Running migration"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"worker channel closing, shutting down worker 1"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"worker channel closing, shutting down worker 1"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"debug","registration_id":"CKLEEpbQYeBQklxkJb7iQdar","user.name":"webauth-tags-user","machine.key":"[JaNI8]","method":"webauth","expiry":null,"time":"2026-07-16T04:15:04Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"webauth-tags-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","policy.bytes":175,"acls.count":1,"groups.count":0,"hosts.count":0,"tagOwners.count":2,"autoApprovers.routes.count":0,"time":"2026-07-16T04:15:04Z","message":"Policy parsed successfully"} {"level":"debug","filter.hash.old":"609b677c","filter.hash.new":"34e20b75","filter.rules":1,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"70e8498f","tagOwner.hash.new":"1b5eeb16","tagOwners.old":0,"tagOwners.new":2,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"ebeaca81","autoApprove.hash.new":"7a1ced38","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":false,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":0,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:04Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:04Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","filter.hash.old":"00000000","filter.hash.new":"609b677c","filter.rules":0,"filter.rules.new":1,"time":"2026-07-16T04:15:04Z","message":"Policy filter hash changed"} {"level":"debug","tagOwner.hash.old":"00000000","tagOwner.hash.new":"70e8498f","tagOwners.old":0,"tagOwners.new":0,"time":"2026-07-16T04:15:04Z","message":"Tag owner hash changed"} {"level":"debug","autoApprove.hash.old":"00000000","autoApprove.hash.new":"ebeaca81","autoApprovers.old":0,"autoApprovers.new":0,"time":"2026-07-16T04:15:04Z","message":"Auto-approvers hash changed"} {"level":"debug","exitSet.hash.old":"00000000","exitSet.hash.new":"2a8f2b3f","time":"2026-07-16T04:15:04Z","message":"Exit node set hash changed"} {"level":"debug","filter.changed":true,"tagOwners.changed":true,"autoApprovers.changed":true,"exitNodes.changed":true,"time":"2026-07-16T04:15:04Z","message":"Policy changes require node updates"} {"level":"debug","registration_id":"TBJ_z5fCbKu8bNWhtabm24ag","user.name":"reauth-untag-user","machine.key":"[PcH5/]","method":"webauth","expiry":null,"time":"2026-07-16T04:15:04Z","message":"Registering new node from auth callback"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reauth-untag-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"info","node.name":"reauth-untag-node","tags":["tag:second","tag:valid-owned"],"time":"2026-07-16T04:15:04Z","message":"approved advertise-tags during registration"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:04Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:04Z","message":"batcher shutting down, exiting worker"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:04Z","reusable":false,"used":false,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"user-owned-node","machine.key":"[mLo3v]","node.key":"[o3K+Z]","user.name":"test-user","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"user-owned-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:04Z","reusable":false,"used":false,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node","machine.key":"[iLvmk]","node.key":"[DKFw0]","user.name":"test-user","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:04Z","reusable":true,"used":false,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"authkey-tagged-node","machine.key":"[vYS91]","node.key":"[+1BDJ]","user.name":"authkey-to-user","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"authkey-tagged-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:04Z","reusable":true,"used":false,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-orphan-node","machine.key":"[NSlFa]","node.key":"[Jqtum]","user.name":"tagged-devices","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-orphan-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-16T05:15:04Z","now":"2026-07-16T04:15:04Z","reusable":false,"used":false,"time":"2026-07-16T04:15:04Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"issue2830-node","machine.key":"[R6xRH]","node.key":"[EMm04]","user.name":"test-user","time":"2026-07-16T04:15:04Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"issue2830-node","time":"2026-07-16T04:15:04Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:05Z","reusable":false,"used":false,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"tagged-node","machine.key":"[m7OoZ]","node.key":"[8gkB2]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"tagged-node","time":"2026-07-16T04:15:05Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:05Z","reusable":false,"used":false,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[+m44+]","node.key":"[3zKw+]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-node","time":"2026-07-16T04:15:05Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-16T03:15:04Z","now":"2026-07-16T04:15:05Z","reusable":true,"used":false,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"info","time":"2026-07-16T04:15:05Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:05Z","message":"batcher shutting down, exiting worker"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:05Z","reusable":true,"used":false,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reusable-test-node","machine.key":"[Wd5bM]","node.key":"[kCdmb]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"reusable-test-node","time":"2026-07-16T04:15:05Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":false,"expiration":"0001-01-01T00:00:00Z","now":"2026-07-16T04:15:05Z","reusable":false,"used":false,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[jiTvz]","node.key":"[QYgM4]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":0,"node.hostname":"test-node","time":"2026-07-16T04:15:05Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":0,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:05Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:05Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.671657264Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:41880ce2dddf386c62bfd7906c80b4255a2734f4f188e833f5efef6c98f28367","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-mlK3i9O7pYSt-LoJ0wST_H7toPAh6zSNahuvrbtcrRs2k81Ff_Ib6WHqa1hYh-CWAzSnVG5Fz6iKp"},"Expiry":"2026-07-17T04:15:05.028677322Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.673018133Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:9027666f87ead480c6296796c7213a8b88ec38e80bfeee25e16837ab711bb85c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-W4r41SoNQIn8-vmbpH9xblCNM2MqGKL4I4VAVFwc49qmvPX5gishEQ1lkRDtbOdqG4IWQZLc-qyHc"},"Expiry":"2026-07-17T04:15:05.012395766Z","Followup":"","Hostinfo":{"Hostname":"reusable-test-node"},"NodeKeySignature":null},"node.name":"reusable-test-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.677053494Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:10c9b4e18a978aad0b3fefdc533fd2d164d0a5aba13c3e10dc82b74122a2db41","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-AS4iGC4OrPrL-_lagHQuEdRzeCSmKbtRfdXAsAT-YtyrDgqqDwgQODqqFg1-J9iRSJqijMsFu9BnR"},"Expiry":"2026-07-17T04:15:04.837586437Z","Followup":"","Hostinfo":{"Hostname":"issue2830-node"},"NodeKeySignature":null},"node.name":"issue2830-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:26ab6e9846241761de367f27da44e594bad702f168fdcc29a92201b45f8aff6d","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-xFb4zyckPqOE-H8kDkyCNNpTCDLN9Bxu8J8X7C40V67PpNTmnXINmt7xxYlPcJjeD4vQ5b3K9LpYe"},"Expiry":"2026-07-17T04:15:04.836870112Z","Followup":"","Hostinfo":{"Hostname":"tagged-orphan-node"},"NodeKeySignature":null},"node.name":"tagged-orphan-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:f20901db5649470c3973c5e4148612bfa303fcebfdb2e62ec553205f33b47237","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-z00BmKu4W3iT-eu0Wu9r33yWjR3Es8VXbmI0Sz-jSRwxIghsrGH-uKvq1hQbmo8XzbbCu2uG4yBbT"},"Expiry":"0001-01-01T00:00:00Z","Followup":"","Hostinfo":{"Hostname":"tagged-node"},"NodeKeySignature":null},"node.name":"tagged-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:0ca170d0175d8a58499a972d2a495004ea4a27580dfd218c5b0aad5a0737f006","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-stdXapLgGb2q-CKVtdxgjIWwQE73SVO-KNcHldktqSQvSwPt3etoZIYu-cEta4oU_4FrzLAZBpcjO"},"Expiry":"0001-01-01T00:00:00Z","Followup":"","Hostinfo":{"Hostname":"tagged-node"},"NodeKeySignature":null},"node.name":"tagged-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:fb50432787ed283ff153ddeeaeb32fe169f56c7dc4ebc55bb1a5e82c24189454","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-KuwKY58mX8Mh-kA4x5cp-NyLz2ulfW5NJOgd1m-7kAZSGENO6JYe9s_XGTjxz621vfS445zIoa6wD"},"Expiry":"2026-07-17T04:15:04.861282017Z","Followup":"","Hostinfo":{"Hostname":"authkey-tagged-node"},"NodeKeySignature":null},"node.name":"authkey-tagged-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":2147455555,"DisplayName":"Tagged Devices"},"Login":{"ID":2147455555,"Provider":"","LoginName":"tagged-devices","DisplayName":"Tagged Devices"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:df32b0f8c747ae5987c320020b744ae4e024811267222a2b790bb75c516cef70","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-vH9Vival1RK6-TFcgy5Slwxt8ClwwTLdl4qO-s3DI0YXKyb7HuG6pW4xy8kUVgVWGQGmM9WhgxJvn"},"Expiry":"0001-01-01T00:00:00Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:15:05Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:05Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:05Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:05Z","message":"batcher shutting down, exiting worker"} {"level":"info","node.name":"reauth-untag-node","node.id":1,"hostinfo":{"Hostname":"reauth-untag-node"},"time":"2026-07-16T04:15:05Z","message":"Updating existing node registration via reauth"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:2076","node.id":1,"request":{"Version":0,"NodeKey":"nodekey:df32b0f8c747ae5987c320020b744ae4e024811267222a2b790bb75c516cef70","DiscoKey":"discokey:0000000000000000000000000000000000000000000000000000000000000000","Hostinfo":{"Hostname":"test-node","GoVersion":"go1.21"}},"time":"2026-07-16T04:15:05Z","message":"Processing MapRequest for node"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.69446146Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:a372be65a15c399375b70e0d0eb920426cb40fd5a4aeeefdfc73d102e686d772","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-c5oWt_klorJh-sTFVE_wyyigjzGdtwKZLQtl91SISwmOrVj6exZH7v9RRbyaLIabAjjrIAfKyncTH"},"Expiry":"0001-01-01T00:00:00Z","Followup":"","Hostinfo":{"Hostname":"user-owned-node"},"NodeKeySignature":null},"node.name":"user-owned-node","node.id":1,"time":"2026-07-16T04:15:05Z","message":"RegisterResponse"} {"level":"info","node.name":"tagged-orphan-node","node.id":1,"old.tags":["tag:prod","tag:server"],"time":"2026-07-16T04:15:05Z","message":"Converting tagged node to user-owned node"} {"level":"info","node.name":"authkey-tagged-node","node.id":1,"hostinfo":{"Hostname":"authkey-tagged-node"},"time":"2026-07-16T04:15:05Z","message":"Updating existing node registration via reauth"} {"level":"info","time":"2026-07-16T04:15:05Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:05Z","message":"batcher shutting down, exiting worker"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/types/preauth_key.go:124","key":"","hasExpiration":true,"expiration":"2026-07-16T03:15:05Z","now":"2026-07-16T04:15:05Z","reusable":false,"used":true,"time":"2026-07-16T04:15:05Z","message":"PreAuthKey.Validate: checking key"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"reusable-test-node","machine.key":"[Wd5bM]","node.key.existing":"[kCdmb]","node.key.request":"[kCdmb]","authkey.id":1,"authkey.used":false,"authkey.expired":false,"authkey.reusable":true,"nodekey.rotation":false,"time":"2026-07-16T04:15:05Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"reusable-test-node","machine.key":"[Wd5bM]","node.key":"[kCdmb]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"reusable-test-node","node.id":1,"machine.key":"[Wd5bM]","node.key":"[kCdmb]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"issue2830-node","machine.key":"[R6xRH]","node.key.existing":"[EMm04]","node.key.request":"[EMm04]","authkey.id":1,"authkey.used":true,"authkey.expired":true,"authkey.reusable":false,"nodekey.rotation":false,"time":"2026-07-16T04:15:05Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"issue2830-node","machine.key":"[R6xRH]","node.key":"[EMm04]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"issue2830-node","node.id":1,"machine.key":"[R6xRH]","node.key":"[EMm04]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1750","node.id":1,"node.name":"test-node","machine.key":"[jiTvz]","node.key.existing":"[QYgM4]","node.key.request":"[QYgM4]","authkey.id":1,"authkey.used":true,"authkey.expired":false,"authkey.reusable":false,"nodekey.rotation":false,"time":"2026-07-16T04:15:05Z","message":"Existing node re-registering with same NodeKey and auth key, skipping validation"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1790","node.name":"test-node","machine.key":"[jiTvz]","node.key":"[QYgM4]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Registering node with pre-auth key"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1803","node.name":"test-node","node.id":1,"machine.key":"[jiTvz]","node.key":"[QYgM4]","user.name":"test-user","time":"2026-07-16T04:15:05Z","message":"Node re-registering with existing machine key and user, updating in place"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"test-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"reusable-test-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"test-node","node.id":1,"machine.key":"[jiTvz]","node.key":"[QYgM4]","user.name":"test-user","time":"2026-07-16T04:15:06Z","message":"Node re-authorized"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"reusable-test-node","node.id":1,"machine.key":"[Wd5bM]","node.key":"[kCdmb]","user.name":"test-user","time":"2026-07-16T04:15:06Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.671657264Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:41880ce2dddf386c62bfd7906c80b4255a2734f4f188e833f5efef6c98f28367","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-mlK3i9O7pYSt-LoJ0wST_H7toPAh6zSNahuvrbtcrRs2k81Ff_Ib6WHqa1hYh-CWAzSnVG5Fz6iKp"},"Expiry":"2026-07-17T04:15:05.849525278Z","Followup":"","Hostinfo":{"Hostname":"test-node"},"NodeKeySignature":null},"node.name":"test-node","node.id":1,"time":"2026-07-16T04:15:06Z","message":"RegisterResponse"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.673018133Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:9027666f87ead480c6296796c7213a8b88ec38e80bfeee25e16837ab711bb85c","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-W4r41SoNQIn8-vmbpH9xblCNM2MqGKL4I4VAVFwc49qmvPX5gishEQ1lkRDtbOdqG4IWQZLc-qyHc"},"Expiry":"2026-07-17T04:15:05.675190051Z","Followup":"","Hostinfo":{"Hostname":"reusable-test-node"},"NodeKeySignature":null},"node.name":"reusable-test-node","node.id":1,"time":"2026-07-16T04:15:06Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"issue2830-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1868","node.name":"issue2830-node","node.id":1,"machine.key":"[R6xRH]","node.key":"[EMm04]","user.name":"test-user","time":"2026-07-16T04:15:06Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","caller":"github.com/juanfont/headscale/hscontrol/auth.go:397","reg.resp":{"User":{"ID":1,"DisplayName":"test-user","Created":"2026-07-16T04:15:04.677053494Z"},"Login":{"ID":1,"Provider":"","LoginName":"test-user","DisplayName":"test-user"},"NodeKeyExpired":false,"MachineAuthorized":true,"AuthURL":"","NodeKeySignature":null,"Error":""},"reg.req":{"Version":0,"NodeKey":"nodekey:10c9b4e18a978aad0b3fefdc533fd2d164d0a5aba13c3e10dc82b74122a2db41","OldNodeKey":"nodekey:0000000000000000000000000000000000000000000000000000000000000000","NLKey":"nlpub:0000000000000000000000000000000000000000000000000000000000000000","Auth":{"AuthKey":"hskey-auth-AS4iGC4OrPrL-_lagHQuEdRzeCSmKbtRfdXAsAT-YtyrDgqqDwgQODqqFg1-J9iRSJqijMsFu9BnR"},"Expiry":"2026-07-17T04:15:05.838660867Z","Followup":"","Hostinfo":{"Hostname":"issue2830-node"},"NodeKeySignature":null},"node.name":"issue2830-node","node.id":1,"time":"2026-07-16T04:15:06Z","message":"RegisterResponse"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"tagged-orphan-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.id":1,"node.name":"tagged-orphan-node","request.tags":[],"current.tags":["tag:prod","tag:server"],"is.tagged":true,"was.authkey.tagged":true,"time":"2026-07-16T04:15:06Z","message":"Processing RequestTags during reauth"} {"level":"info","node.id":1,"node.name":"tagged-orphan-node","removed.tags":["tag:prod","tag:server"],"user.name":"alice","was.authkey.tagged":true,"time":"2026-07-16T04:15:06Z","message":"Reauth: removing all tags, returning node ownership to user"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"reauth-untag-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.id":1,"node.name":"reauth-untag-node","request.tags":[],"current.tags":["tag:second","tag:valid-owned"],"is.tagged":true,"was.authkey.tagged":false,"time":"2026-07-16T04:15:06Z","message":"Processing RequestTags during reauth"} {"level":"info","node.id":1,"node.name":"reauth-untag-node","removed.tags":["tag:second","tag:valid-owned"],"user.name":"reauth-untag-user","was.authkey.tagged":false,"time":"2026-07-16T04:15:06Z","message":"Reauth: removing all tags, returning node ownership to user"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"authkey-tagged-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"debug","node.id":1,"node.name":"authkey-tagged-node","request.tags":[],"current.tags":["tag:prod","tag:server"],"is.tagged":true,"was.authkey.tagged":true,"time":"2026-07-16T04:15:06Z","message":"Processing RequestTags during reauth"} {"level":"info","node.id":1,"node.name":"authkey-tagged-node","removed.tags":["tag:prod","tag:server"],"user.name":"authkey-to-user","was.authkey.tagged":true,"time":"2026-07-16T04:15:06Z","message":"Reauth: removing all tags, returning node ownership to user"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/maprequest.go:44","node.id":1,"node.hostname":"test-node","time":"2026-07-16T04:15:06Z","message":"node sent update but has no NetInfo in request or database"} {"level":"trace","node.name":"tagged-orphan-node","node.id":1,"node.key":"[hivj/]","time":"2026-07-16T04:15:06Z","message":"Tagged node converted to user-owned"} {"level":"trace","node.name":"reauth-untag-node","node.id":1,"node.key":"[BmkIV]","time":"2026-07-16T04:15:06Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","node.name":"authkey-tagged-node","node.id":1,"node.key":"[y1sbG]","time":"2026-07-16T04:15:06Z","message":"Node re-authorized"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1963","user.count":1,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update initiated because user list modification detected"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","caller":"github.com/juanfont/headscale/hscontrol/state/state.go:1970","policy.changed":false,"time":"2026-07-16T04:15:06Z","message":"Policy manager user update completed because SetUsers operation finished"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"trace","time":"2026-07-16T04:15:06Z","message":"Policy evaluation detected no changes - all hashes match"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"info","time":"2026-07-16T04:15:06Z","message":"batcher done channel closed, stopping to feed workers"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} {"level":"debug","worker.id":1,"time":"2026-07-16T04:15:06Z","message":"batcher shutting down, exiting worker"} FAIL FAIL github.com/juanfont/headscale/hscontrol 78.577s ? github.com/juanfont/headscale/hscontrol/assets [no test files] ok github.com/juanfont/headscale/hscontrol/capver 0.008s ok github.com/juanfont/headscale/hscontrol/db 19.877s ok github.com/juanfont/headscale/hscontrol/db/sqliteconfig 0.040s ok github.com/juanfont/headscale/hscontrol/derp 0.012s ? github.com/juanfont/headscale/hscontrol/derp/server [no test files] ? github.com/juanfont/headscale/hscontrol/dns [no test files] ok github.com/juanfont/headscale/hscontrol/mapper 42.518s ok github.com/juanfont/headscale/hscontrol/policy 0.055s ok github.com/juanfont/headscale/hscontrol/policy/matcher 0.008s [no tests to run] ok github.com/juanfont/headscale/hscontrol/policy/policyutil 0.016s ok github.com/juanfont/headscale/hscontrol/policy/v2 0.049s ok github.com/juanfont/headscale/hscontrol/routes 0.017s ok github.com/juanfont/headscale/hscontrol/state 2.936s ? github.com/juanfont/headscale/hscontrol/templates [no test files] ok github.com/juanfont/headscale/hscontrol/types 0.036s ok github.com/juanfont/headscale/hscontrol/types/change 0.012s ok github.com/juanfont/headscale/hscontrol/util 0.367s ok github.com/juanfont/headscale/integration 0.026s ? github.com/juanfont/headscale/integration/dockertestutil [no test files] ? github.com/juanfont/headscale/integration/dsic [no test files] ? github.com/juanfont/headscale/integration/hsic [no test files] ? github.com/juanfont/headscale/integration/integrationutil [no test files] ? github.com/juanfont/headscale/integration/tsic [no test files] ? github.com/juanfont/headscale/tools/capver [no test files] FAIL >>> ERROR: headscale: check failed >>> headscale: Uninstalling dependencies... ( 1/17) Purging .makedepends-headscale (20260716.041230) ( 2/17) Purging go (1.26.4-r0) ( 3/17) Purging postgresql17-openrc (17.10-r0) ( 4/17) Purging postgresql-common-openrc (1.3-r0) ( 5/17) Purging postgresql17 (17.10-r0) Executing postgresql17-17.10-r0.pre-deinstall ( 6/17) Purging postgresql17-client (17.10-r0) ( 7/17) Purging postgresql-common (1.3-r0) Executing postgresql-common-1.3-r0.pre-deinstall ( 8/17) Purging tzdata (2026c-r0) ( 9/17) Purging icu-libs (78.1-r0) (10/17) Purging libldap (2.6.13-r0) (11/17) Purging libpq (18.4-r0) (12/17) Purging libsasl (2.1.28-r9) (13/17) Purging libxml2 (2.13.9-r2) (14/17) Purging readline (8.3.3-r1) (15/17) Purging xz-libs (5.8.3-r0) (16/17) Purging gdbm (1.26-r0) (17/17) Purging icu-data-en (78.1-r0) Executing busybox-1.38.0-r1.trigger OK: 426.9 MiB in 105 packages