Skip to content

Quickstart: SkyWalking 11.0.0, Horizon UI 1.0.0, BanyanDB 0.11.0 - #909

Merged
wu-sheng merged 3 commits into
masterfrom
chore/quickstart-11.0.0
Aug 28, 2026
Merged

Quickstart: SkyWalking 11.0.0, Horizon UI 1.0.0, BanyanDB 0.11.0#909
wu-sheng merged 3 commits into
masterfrom
chore/quickstart-11.0.0

Conversation

@wu-sheng

Copy link
Copy Markdown
Member

Brings content/quickstart-docker.sh and content/quickstart-docker.ps1 up to the current releases. Two of the changes are not version bumps — they are fixes for things that would break the quickstart as it stands.

Versions

bash was ps1 was now
SW_VERSION 10.4.0 10.2.0 11.0.0
SW_HORIZON_UI_VERSION 1.0.0 (new)
SW_BANYANDB_VERSION 0.11.0 0.8.0 0.11.0

The PowerShell script had drifted a long way further behind than the shell one.

The UI image changed, not just its tag

apache/skywalking's docker/docker-compose.yml now defaults UI_IMAGE to the Horizon image — the legacy UI is gone from the repo, and apache/skywalking-ui:11.0.0 does not exist. Both scripts were forcing apache/skywalking-ui:${SW_VERSION}, so they would fail on a bad image reference.

Worth flagging for reviewers, because the obvious fix is wrong: the released Horizon image is on Docker Hub as apache/skywalking-ui:horizon-<version>. The ghcr.io/apache/skywalking-horizon-ui path that upstream's docker/README.md and .env point at carries only commit-SHA tags and latest — there is no 1.0.0 there, so pinning a release against the documented path would 404.

The scripts never downloaded horizon.yaml

The ui service bind-mounts ./horizon.yaml relative to the compose file, and the image reads its OAP URLs and login users only from that file — there are no env vars for them. Fetching just docker-compose.yml leaves compose failing on the missing mount. Both scripts now download it alongside; the PowerShell one also back-fills it when the user reuses a manifest from an earlier run that predates Horizon.

Two dead patch lines removed

The shell script carried a perl rewrite of the OAP health check and a sed on start_period: 10s. Upstream's compose already ships the /dev/tcp probe and start_period: 90s, so neither matched anything.

Verification

Fetched the real manifest and config into a temp dir exactly as the script does, exported the same three image variables, and ran compose against it:

  • docker compose config resolves apache/skywalking-oap-server:11.0.0, apache/skywalking-ui:horizon-1.0.0, apache/skywalking-banyandb:0.11.0, and the horizon.yaml mount resolves to a real file.
  • up --dry-run creates the containers cleanly on both the elasticsearch and banyandb profiles.
  • All three images confirmed pullable via docker manifest inspect.
  • sh -n passes on the shell script.

The PowerShell script is reviewed by eye only — no pwsh on the machine this was written on, so a Windows check before merge would be worth having.

Bumps both quickstart scripts to the current releases and switches the UI
to Horizon, which is what the compose manifest they download now expects.

  SW_VERSION             10.4.0 (sh) / 10.2.0 (ps1) -> 11.0.0
  SW_HORIZON_UI_VERSION  new                        -> 1.0.0
  SW_BANYANDB_VERSION    0.8.0 (ps1)                -> 0.11.0

The UI image had to change, not just its tag. apache/skywalking docker's
compose now defaults UI_IMAGE to the Horizon image; the legacy UI is gone
and apache/skywalking-ui:11.0.0 does not exist. Note the released Horizon
image is on Docker Hub as apache/skywalking-ui:horizon-<version> — the
ghcr.io/apache/skywalking-horizon-ui path that docker/README.md and .env
point at only carries commit-SHA tags and latest, so pinning a release
against it would 404.

Both scripts now also download horizon.yaml beside the manifest. The ui
service bind-mounts ./horizon.yaml relative to the compose file, and the
image reads its OAP URLs and login users only from there, so fetching the
manifest alone leaves compose failing on a missing mount. The PowerShell
script back-fills it when the user reuses an older manifest as well.

Drops two dead lines from the shell script: the perl rewrite of the OAP
health check and the start_period sed. Upstream's compose already ships
the /dev/tcp probe and start_period: 90s, so both matched nothing.

Verified by fetching the real manifest and config into a temp dir exactly
as the script does: docker compose config resolves all three images, the
horizon.yaml mount resolves to a real file, and up --dry-run creates the
containers on both the elasticsearch and banyandb profiles. All three
images confirmed pullable. The PowerShell script is reviewed by eye only;
no pwsh available here.
@netlify

netlify Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploy Preview for skywalking-website-preview failed.

Name Link
🔨 Latest commit e629f40
🔍 Latest deploy log https://app.netlify.com/projects/skywalking-website-preview/deploys/6a9183f17f9f0700087ad52f

…anch tip

The scripts were pulling the Horizon config from apache/skywalking's master
branch, which can change under a released quickstart the same way the image
tags cannot. Serve our own copy at https://skywalking.apache.org/horizon.yaml
— content/horizon.yaml, published at the site root the same way
quickstart-docker.{sh,ps1} already are — and fetch that.

The config body is identical to the upstream copy; only the header comment
differs, explaining where it is served from and that the service names have
to match the compose manifest the scripts download.

Verified by building the site, serving it, and running the scripts' fetch
path against it: horizon.yaml is published at the root, parses as YAML, and
compose up --dry-run creates the containers on the banyandb profile.
@wu-sheng

Copy link
Copy Markdown
Member Author

Pushed a second commit moving horizon.yaml onto the website rather than fetching it from apache/skywalking's master branch.

New file content/horizon.yaml, published at https://skywalking.apache.org/horizon.yaml — the same way quickstart-docker.{sh,ps1} are already served from content/. Both scripts now fetch that URL.

The reasoning is the same one behind pinning image tags: a released quickstart should not change because a branch tip moved. This copy is reviewed alongside the versions the scripts pin. The config body is byte-identical to the upstream copy — only the header comment differs, noting where it is served from and that the oap service name has to match the compose manifest the scripts download.

Verified by building the site, serving it locally, and running the scripts' actual fetch path against it: the file is published at the site root, parses as YAML, and compose up --dry-run creates the containers on the banyandb profile.

One consequence worth naming: the two copies can now drift. If the compose manifest upstream ever renames the oap service or changes those ports, this copy needs the same edit.

The hosted horizon.yaml carried the upstream demo user admin/admin. Use
skywalking/skywalking instead, and tell the user what it is — the sign-in
credentials were nowhere in the output, so a first-time run reached a login
page with no way past it.

Both scripts now close with the username and password and a note to change
them before exposing the UI beyond localhost.

The Argon2id hash was generated with the argon2 module inside the Horizon
image itself, so it is the same implementation the verifier uses; the
rotation command is recorded in a comment above it.

Verified against a real container: booted the image with this config and
POSTed /api/auth/login. skywalking/skywalking returns 200 with
roles ["admin"] and verbs ["*"]; admin/admin and a wrong password both
return 401.
@wu-sheng

Copy link
Copy Markdown
Member Author

Third commit: the quickstart now boots with skywalking / skywalking and says so.

The hosted horizon.yaml had inherited the upstream demo user admin/admin, and neither script mentioned credentials at all — so a first-time run landed on a login page with no way past it. Both scripts now close with:

Sign in to the UI at http://localhost:8080 with:
  username: skywalking
  password: skywalking
These are quickstart credentials — change them before exposing the UI beyond localhost.

The Argon2id hash was generated with the argon2 module inside the Horizon image itself, so it is the same implementation the verifier uses rather than a compatible-looking hash from another tool. The rotation command is recorded in a comment above it in horizon.yaml.

Verified against a real container rather than by inspection — booted apache/skywalking-ui:horizon-1.0.0 with this config and POSTed /api/auth/login:

credentials result
skywalking / skywalking 200, roles: ["admin"], verbs: ["*"]
admin / admin 401 invalid credentials
skywalking / wrong password 401

@wu-sheng
wu-sheng merged commit 2c859cc into master Aug 28, 2026
1 of 5 checks passed
@wu-sheng
wu-sheng deleted the chore/quickstart-11.0.0 branch August 28, 2026 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant