Hi,
I’m trying to bootstrap a Juju 4.0.5 controller on an unmanaged cloud (bare metal VM) but bootstrap always fails.
Environment:
- Juju version: 4.0.5
- Cloud type: unmanaged
- Bootstrap machine OS: Ubuntu 24.04
The machine agent starts fine but port 17070 neveropens. From /var/log/juju/machine-0.log:
root@inventyv:~# tail -f /var/log/juju/machine-0.log
stack trace:
unable to connect to API: dial tcp 127.0.0.1:17070: connect: connection refused
github.com/juju/juju/api.dialWebsocketMulti:1015:
github.com/juju/juju/api.dialAPI:677:
github.com/juju/juju/api.Open:148:
github.com/juju/juju/internal/worker/apicaller.connectFallback:166:
github.com/juju/juju/internal/worker/apicaller.ScaryConnect:221:
github.com/juju/juju/cmd/jujud-controller/agent/machine.commonManifolds.Manifold.ManifoldConfig.startFunc.func50:93: [ae6c03] "machine-0" cannot open api
2026-05-12 10:43:04 ERROR juju.worker.dependency engine.go:709 "api-caller" manifold worker returned unexpected error: [ae6c03] "machine-0" cannot open api: unable to connect to API: dial tcp 127.0.0.1:17070: connect: connection refused
2026-05-12 10:43:05 WARNING juju.worker.services.changestream state.go:124 watermarks "0" are outside of window, check logs to see if the change stream is keeping up
2026-05-12 10:43:06 INFO juju.worker.apiaddresssetter runner.go:673 runner "apiaddresssetter" starting worker "0"
2026-05-12 10:43:06 DEBUG juju.worker.apiaddresssetter runner.go:543 runner "apiaddresssetter" worker "0" done with error: starting watcher for unit "controller/0" addresses: unit not found: controller/0
2026-05-12 10:43:06 INFO juju.worker.apiaddresssetter runner.go:657 runner "apiaddresssetter" waiting 3s before starting worker "0"
2026-05-12 10:43:08 DEBUG juju.worker.apicaller connect.go:121 connecting with current password
2026-05-12 10:43:08 DEBUG juju.api apiclient.go:800 looked up localhost -> [127.0.0.1]
2026-05-12 10:43:09 DEBUG juju.worker.apicaller connect.go:165 [ae6c03] failed to connect
2026-05-12 10:43:09 DEBUG juju.worker.dependency engine.go:633 "api-caller" manifold worker stopped: [ae6c03] "machine-0" cannot open api: unable to connect to API: dial tcp 127.0.0.1:17070: connect: connection refused
stack trace:
unable to connect to API: dial tcp 127.0.0.1:17070: connect: connection refused
github.com/juju/juju/api.dialWebsocketMulti:1015:
github.com/juju/juju/api.dialAPI:677:
github.com/juju/juju/api.Open:148:
github.com/juju/juju/internal/worker/apicaller.connectFallback:166:
github.com/juju/juju/internal/worker/apicaller.ScaryConnect:221:
github.com/juju/juju/cmd/jujud-controller/agent/machine.commonManifolds.Manifold.ManifoldConfig.startFunc.func50:93: [ae6c03] "machine-0" cannot open api
2026-05-12 10:43:09 ERROR juju.worker.dependency engine.go:709 "api-caller" manifold worker returned unexpected error: [ae6c03] "machine-0" cannot open api: unable to connect to API: dial tcp 127.0.0.1:17070: connect: connection refused
2026-05-12 10:43:09 INFO juju.worker.apiaddresssetter runner.go:673 runner "apiaddresssetter" starting worker "0"
2026-05-12 10:43:09 DEBUG juju.worker.apiaddresssetter runner.go:543 runner "apiaddresssetter" worker "0" done with error: starting watcher for unit "controller/0" addresses: unit not found: controller/0
2026-05-12 10:43:09 INFO juju.worker.apiaddresssetter runner.go:657 runner "apiaddresssetter" waiting 3s before starting worker "0"
ERROR: providertracker worker done with error: retrieving model config: coercing provider config attributes: provider not found or doesn’t support config schema
This causes:
- controller charm never deploys
- jujud-controller snap never installs
- port 17070 never opens
- bootstrap times out with “connection refused”
What I tried:
- Clean VM (no previous Juju)
- With/without S3 config
- With object-store-type=file
Additional findings:
- Juju 3.6 on same VM/cloud works perfectly
- Juju 4.0.5 on LXD cloud works perfectly
- Only unmanaged cloud fails
Is this a known issue? Is unmanaged cloud supported in Juju 4.0?
Thanks