Commit Graph

13 Commits

Author SHA1 Message Date
Arvin Xu c5ec20abab ✨ feat(docker): run self-hosted Compose chats in Gateway Mode by default (#19583)
* ✨ feat(docker): run self-hosted Compose chats in Gateway Mode by default

- Add the lobehub-gateway service to docker-compose and wire the lobe service
  to it; AGENT_GATEWAY_INTERNAL_URL keeps server pushes on the Compose network
  while browsers use AGENT_GATEWAY_URL.
- S3_INTERNAL_ENDPOINT routes the server's own S3 requests to rustfs:9000 while
  presigned URLs keep the browser-facing S3_ENDPOINT, which local mode sets to
  localhost and the container cannot reach.
- setup.sh generates a per-deployment JWKS_KEY and gateway token and writes the
  gateway URL for each deploy mode; the .env template drops the public JWKS key.
- Warn loudly at container startup when an upgraded stack lacks the gateway
  settings or still uses the public example JWKS_KEY, and document the upgrade.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* 🔒 fix(docker): pass only the public JWK to the gateway container

The gateway only needs the public half of JWKS_KEY to verify browser
sessions, but it received the full private key set, so anyone able to read
the gateway environment could sign tokens LobeHub trusts. setup.sh now also
writes JWKS_PUBLIC_KEY (the same key without d/p/q/dp/dq/qi), Compose passes
only that to the gateway, and the startup check warns when it is missing,
still contains private fields, or does not match JWKS_KEY.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 00:33:26 +08:00
Arvin Xu 40f8f469cf 🐛 fix(docker): make the one-click Docker Compose install start on the released image (#19590)
- Apply a bucket CORS rule in rustfs-init so browser uploads to RustFS through
  presigned URLs are not blocked by the preflight.
- Preload pg_cron and pg_stat_statements alongside pg_search, matching the
  ParadeDB image default. Its first-start bootstrap creates pg_cron under set -e,
  so preloading only pg_search aborted initialization, restarted the container
  and failed the first docker compose up with an unhealthy database.
- Probe PostgreSQL health over TCP with a start period. During initialization the
  image runs a temporary socket-only server, so the socket probe passed early and
  LobeHub's migrations failed with ECONNREFUSED until it had restarted repeatedly.
- setup.sh downloads templates from lobehub/lobehub main, uses curl with a wget
  fallback, and detects the host IP on macOS where hostname -I is missing.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 21:46:07 +08:00
YuTengjing 330c12a760 ✨ feat(self-host): add optional Elasticsearch to Docker Compose (#19028) 2026-09-02 17:37:38 +08:00
YuTengjing 7ba15cceba ♻️ refactor(docker-compose): restructure dev environment (#12132)
* 🔥 chore(docker-compose): remove Casdoor SSO dependency

Casdoor is no longer needed since BetterAuth now supports email/password registration natively.

LOBE-3907

* ♻️ refactor(docker-compose): restructure directories

- Rename local/ to dev/ for development dependencies
- Remove logto/ and zitadel/ from production/
- Restore Casdoor config in production/grafana/
- Simplify dev/ to core services only (postgresql, redis, rustfs, searxng)
- Update docker-compose.development.yml to use dev/
- Remove minio-bucket.config.json (switched to rustfs)

* ♻️ refactor(docker-compose): simplify dev environment setup

- Remove docker-compose.development.yml, use dev/docker-compose.yml directly
- Add npm scripts: dev:docker, dev:docker:down, dev:docker:reset
- Simplify .env.example.development (remove variable refs, redundant vars)
- Update docker-compose/dev/.env.example (consistent passwords)
- Add docker-compose/dev/data/ to .gitignore
- Update setup docs: use npm scripts, remove image generation section

* 🔧 chore: add SSRF_ALLOW_PRIVATE_IP_ADDRESS to dev env example

* 🔒 security: auto-generate KEY_VAULTS_SECRET and AUTH_SECRET in setup.sh

- Remove hardcoded secrets from docker-compose.yml
- Add placeholders to .env.example files
- Generate secrets dynamically in setup.sh using openssl rand -base64 32

* 🔧 chore(docker-compose): expose SearXNG port and improve dev scripts

- Add SearXNG port mapping (8180:8080) for host access
- Use --wait flag in dev:docker to ensure services are healthy
- Include db:migrate in dev:docker:reset for one-command reset
- Update MinIO reference to RustFS in zh-CN docs
- Add SearXNG to service URLs and port conflict docs
2026-02-06 12:21:30 +08:00
Arvin Xu 4a87b31246 📝 docs: improve docs (#12013)
Update docs
2026-01-31 19:46:44 +08:00
Arvin Xu f17acd7f7e ♻️ chore(docker-compose): refactor docker compose (#11989)
* improve message content

* ♻️ refactor(docker-compose): 创建精简版 deploy 配置

- 新建 docker-compose/deploy 目录,包含最小化部署配置
- 仅保留核心服务:postgresql、redis、rustfs、searxng、lobe
- 移除 Casdoor 认证服务相关配置
- 移除可观测性服务(Grafana/Prometheus/Tempo/otel-collector)
- 使用 paradedb/paradedb:latest 镜像(支持 pgvector + pg_search)
- 更新 setup.sh 指向新的 deploy 目录
- 清理 .env 示例文件中的 Casdoor 相关配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* update document

* update content

* update content

* improve env

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:15:43 +08:00
Rylan Cai 56942d4d57 👷 docs: Migrate On-Click Deployment to LobeHub (#11856)
* wip: use rustfs

* wip: update init rustfs

* wip: fix rustfs ports

* wip: fix rustfs ak sk

* wip: add dbg points

* fix: mc ak pk err

* fix: missing sso provider

* chore: set `lobe` to lobehub/lobehub

* 🐛 fix: network err

* chore: add webhook secret

* chore: add no searxng log display

* chore: update docs

* 🐛 fix: remove unstable options to fit older server

* 🐛 fix: add warning to add jwks

* 🐛 fix: check status after create bucket
2026-01-26 20:23:56 +08:00
Rylan Cai 6c83807218 🔨 chore: Migrate self-hosting auth to Casdoor@v2 (#8767)
* 🔨 chore: update casdoor to v2

* 🐛 fix: enable signin

* 🐛 fix: webhook hostname diag failed
2025-08-12 00:19:29 +08:00
Purelind 58d356c477 🔨 chore(setup.sh): Replace SED_COMMAND with SED_INPLACE_ARGS for improved compatibility across platforms on macOS (#7639) 2025-06-01 16:28:04 +08:00
Rylan Cai 81867c413c 👷 chore: fix re-init in setup.sh (#6714) 2025-03-09 19:00:22 +08:00
Arvin Xu 47efd1ba43 🔨 chore: improve setup.sh to download searxng file (#6552) 2025-02-26 23:42:22 +08:00
Rylan Cai cc088449ce 📝 docs: only detect private ip in port mode 2025-02-04 13:29:02 +08:00
Rylan Cai b63765ccce 📝 docs: Refactor the setup.sh to make deployment much easier (#5290)
* 🚧 wip: wip

* ✨ feat: create s3 bucket at start

* 🐛 fix: pswd shown in plain

* ♻️ refactor: remove unpack commands

* 🔨 ci: update script

* 🐛 fix: env files not downloaded

* 🔨 chore: support interact prompts

* 🐛 fix: AUTH_URL

* 🐛 fix: should download first

* 🐛 fix: let casdoor set origin

* 📝 docs: update docs for new setup

* 📝 docs: user non-admin app for lobe

* 👷 chore: remove -f for setup.sh

* 📝 docs: user

* 👷 chore: fix wrong host for casdoor

* 📝 docs: en docs

* 📝 docs: use new script

* ✏️ typo: fix typos

* 🐛 fix: wrong ip setup

* 🐛 fix: protocal generate failed

* 🐛 fix: remove warning

* ♻️ refactor: add warning for ip mode

* 📝 docs: display reverse proxy

* ♻️ refactor: move setup.sh to ../

* ✏️ typo: fix typos

* ♻️ refactor: remove setup.sh
2025-02-03 23:50:22 +08:00