- 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>
* 🔧 chore(docker): replace minio with rustfs/rc in compose scripts
- dev/deploy: swap minio/mc init image for rustfs/rc and rename mc
commands to their mc-compatible rc equivalents
- production/grafana: replace the minio server with rustfs/rustfs,
split bucket initialization into a rustfs-init sidecar using
rustfs/rc, and rename MINIO_* env vars to RUSTFS_*
- verified locally: rc alias/mb/ls/anonymous set-json/admin info work
against a live RustFS server
* 🔥 revert(docker): drop production/grafana migration, keep minimal rustfs/rc swap
Per review feedback, the production/grafana changes (named volume switch
and MINIO_* -> RUSTFS_* env rename) break existing deployments' data and
.env contract. Revert them; keep only the rustfs-init image swap
(minio/mc -> rustfs/rc) and mc -> rc command rename in dev/deploy.
---------
Co-authored-by: arvinxx <arvinxuxu@icloud.com>
Enable pg_search in Postgres containers
Start Postgres with shared_preload_libraries=pg_search in three docker-compose files (deploy, dev, production/grafana). This adds a command to the Postgres service so the pg_search library is preloaded on startup, ensuring the pg_search extension is available for full-text search features.
Related Links: https://github.com/paradedb/paradedb/pull/4914
* 🔥 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