Compare commits

...

4 Commits

Author SHA1 Message Date
Vincent Koc
71fa40a47b Changelog: document Docker docs image clarification 2026-03-01 18:23:23 -08:00
Vincent Koc
f8e790d638 Docs(Docker): clarify official GHCR image guidance 2026-03-01 18:23:19 -08:00
Vincent Koc
6769b43cb2 Telegram: apply required formatter update in accounts config merge 2026-03-01 18:22:54 -08:00
Ken
2a8873249a Add pre built images to docker docs 2026-03-01 18:21:43 -08:00
3 changed files with 39 additions and 3 deletions

View File

@@ -103,6 +103,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- Docs/Docker images: clarify the official GHCR image source and tag guidance (`main`, `latest`, `<version>`), and document that `OPENCLAW_IMAGE` skips local image builds but still uses the repo-local compose/setup flow. (#27214) Fixes #15655. Thanks @ipl31.
- Agents/Model fallback: classify additional network transport errors (`ECONNREFUSED`, `ENETUNREACH`, `EHOSTUNREACH`, `ENETRESET`, `EAI_AGAIN`) as failover-worthy so fallback chains advance when primary providers are unreachable. Landed from contributor PR #19077 by @ayanesakura. Thanks @ayanesakura.
- Agents/Copilot token refresh: refresh GitHub Copilot runtime API tokens after auth-expiry failures and re-run with the renewed token so long-running embedded/subagent turns do not fail on mid-session 401 expiry. Landed from contributor PR #8805 by @Arthur742Ramos. Thanks @Arthur742Ramos.
- Discord/Allowlist diagnostics: add debug logs for guild/channel allowlist drops so operators can quickly identify ignored inbound messages and required allowlist entries. Landed from contributor PR #30966 by @haosenwang1018. Thanks @haosenwang1018.

View File

@@ -41,7 +41,7 @@ From repo root:
This script:
- builds the gateway image
- builds the gateway image locally (or pulls a remote image if `OPENCLAW_IMAGE` is set)
- runs the onboarding wizard
- prints optional provider setup hints
- starts the gateway via Docker Compose
@@ -49,6 +49,7 @@ This script:
Optional env vars:
- `OPENCLAW_IMAGE` — use a remote image instead of building locally (e.g. `ghcr.io/openclaw/openclaw:latest`)
- `OPENCLAW_DOCKER_APT_PACKAGES` — install extra apt packages during build
- `OPENCLAW_EXTRA_MOUNTS` — add extra host bind mounts
- `OPENCLAW_HOME_VOLUME` — persist `/home/node` in a named volume
@@ -91,6 +92,37 @@ It writes config/workspace on the host:
Running on a VPS? See [Hetzner (Docker VPS)](/install/hetzner).
### Use a remote image (skip local build)
Official pre-built images are published at:
- [GitHub Container Registry package](https://github.com/openclaw/openclaw/pkgs/container/openclaw)
Use image name `ghcr.io/openclaw/openclaw` (not similarly named Docker Hub
images).
Common tags:
- `main` — latest build from `main`
- `<version>` — release tag builds (for example `2026.2.26`)
- `latest` — latest stable release tag
By default the setup script builds the image from source. To pull a pre-built
image instead, set `OPENCLAW_IMAGE` before running the script:
```bash
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./docker-setup.sh
```
The script detects that `OPENCLAW_IMAGE` is not the default `openclaw:local` and
runs `docker pull` instead of `docker build`. Everything else (onboarding,
gateway start, token generation) works the same way.
`docker-setup.sh` still runs from the repository root because it uses the local
`docker-compose.yml` and helper files. `OPENCLAW_IMAGE` skips local image build
time; it does not replace the compose/setup workflow.
### Shell Helpers (optional)
For easier day-to-day Docker management, install `ClawDock`:

View File

@@ -84,8 +84,11 @@ function resolveAccountConfig(
}
function mergeTelegramAccountConfig(cfg: OpenClawConfig, accountId: string): TelegramAccountConfig {
const { accounts: _ignored, groups: channelGroups, ...base } = (cfg.channels?.telegram ??
{}) as TelegramAccountConfig & { accounts?: unknown };
const {
accounts: _ignored,
groups: channelGroups,
...base
} = (cfg.channels?.telegram ?? {}) as TelegramAccountConfig & { accounts?: unknown };
const account = resolveAccountConfig(cfg, accountId) ?? {};
// In multi-account setups, channel-level `groups` must NOT be inherited by