Development and deployment tutorials leave file storage enabled but unconfigured, so pnpm dev crashes and deployed file uploads target localhost
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- docker-compose, typescript
調査の方向性
docs/en/2-tutorials/2.0-development.mdxのConfigurationとMongoDBのセットアップに関する箇所、およびdocs/en/2-tutorials/2.1-deployment.mdのStep 4を読み、.env.templateとdocker-compose.yamlのストレージのデフォルト設定と手順を比較してください。両方のチュートリアルを更新して、開発時のストレージとデプロイ時のパブリックエンドポイントを扱い、ドキュメントに記載された設定が想定されるセットアップと一致することを確認してください。docs/にはテストランナーがないため、issueでは新しいcloneで各チュートリアルに従うことを提案しています。
索引モデルが issue の本文から書いたものです。
説明
The Development and Deployment tutorials never mention file storage, but the .env they tell you to generate turns it on. Following either tutorial as written gives a broken instance. .env.template sets STORAGE_ENABLED=true with STORAGE_ENDPOINT=http://localhost:9000, and generate-env.sh fills in the keys, so the env schema passes.
- Development.
docker-compose.dev.yamlstarts only MongoDB, and nothing listens on port 9000.StorageService.onModuleInitsendsHeadBucketCommand, catches the failure, and then sends an unguardedCreateBucketCommand, which also rejects. The api exits during boot. Turbo stops the gateway and web dev servers with it, so the tutorial's finalpnpm devends inERROR run failed, and the setup screen never appears. The error never mentions storage. (.agents/docs/playbooks/run-locally.mddocuments this trap for agents, step 4, but the public tutorial does not.) - Deployment. The stack starts, because Compose provides rustfs. The api, however, signs file URLs with
STORAGE_PUBLIC_ENDPOINT, anddocker-compose.yamldefaults that tohttp://localhost:${APP_PORT}/storage. The tutorial says to "leave the other settings as the default values", so every presigned upload and download URL sent to a browser points athttp://localhost:5500/storage/.... That URL means the user's own machine. Every file instrument fails on a deployment that follows the guide. The changelog's 2.0.0 notes say to setSTORAGE_PUBLIC_ENDPOINT"for real deployments", but the tutorial never does.
Where
.env.template:78 and :87:
STORAGE_ENABLED=true
...
STORAGE_PUBLIC_ENDPOINT=
apps/api/src/storage/storage.service.ts:93-103:
async onModuleInit(): Promise<void> {
if (!this.enabled || this.configService.get('NODE_ENV') === 'test') {
return;
}
const { bucket, s3 } = this.requireStorage();
try {
await s3.send(new HeadBucketCommand({ Bucket: bucket }));
} catch {
await s3.send(new CreateBucketCommand({ Bucket: bucket }));
}
}
docker-compose.yaml:43:
- STORAGE_PUBLIC_ENDPOINT=${STORAGE_PUBLIC_ENDPOINT:-http://localhost:${APP_PORT}/storage}
docs/en/2-tutorials/2.0-development.mdx:63-69 (Configuration) and :93-112 (MongoDB only), then :172-176 (pnpm dev). docs/en/2-tutorials/2.1-deployment.md:83-97, where Step 4 edits only SITE_ADDRESS, GATEWAY_SITE_ADDRESS, APP_PORT and GATEWAY_PORT:
For the purposes of this guide, we will leave the other settings as the default values.
Reproduce
Development:
- On a fresh clone, follow the Development tutorial:
./scripts/generate-env.sh, start the dev MongoDB, initiate the replica set,pnpm install,pnpm dev.
Actual: the api crashes on boot with a connection error to localhost:9000, turbo stops all three apps, and http://localhost:3000 never serves the setup screen.
Expected: following the tutorial ends at the setup screen.
Deployment:
- Follow the Deployment tutorial on a server with
SITE_ADDRESS=myplatform.com. - Sign in from another computer and complete a file instrument, such as the demo
ARBITRARY_SINGLE_FILE.
Actual: the browser PUTs the file to http://localhost:5500/storage/open-data-capture/..., which is the user's own computer, and the upload fails.
Expected: the presigned URL uses https://myplatform.com/storage/..., which Caddy proxies to rustfs.
Tests
docs/ has no test runner (docs/AGENTS.md). Verify by following each tutorial on a fresh clone: pnpm dev reaches the setup screen, and a file instrument completes on a deployment that follows the guide.
Suggested fix
- Development tutorial: add a step after "Configuration" to set
STORAGE_ENABLED=falsein.env, saying that file instruments then answer 503. Alternatively, add a rustfs service todocker-compose.dev.yamland say that it provides storage. - Deployment tutorial, Step 4: add
STORAGE_PUBLIC_ENDPOINT=https://myplatform.com/storageto the block of settings to change, and explain that it must be the public address of the core site.
This is separate from #1752, where rustfs itself fails to start on Linux because of a root-owned data directory. With that fixed, the deployment still hands browsers localhost URLs.
- 主要言語
- TypeScript
- スター
- 119
- フォーク
- 19
- 平均マージ
- 4日 11時間
- マージ済み PR(30日)
- 35
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
DouglasNeuroInformatics/OpenDataCapture のほかの issue
-
Area: Infrastructure Chore Difficulty: Low Priority: Medium
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
DouglasNeuroInformatics/OpenDataCapture#1835 ·
メンテナーはふだん 1 日以内に返信
-
Interactive With JSPsych example submits a DataCollection its own schema rejects対応中かも @Sanilas-ai が 1 日前に担当しました。 オープンArea: Playground Bug Difficulty: Low Good First Issue Priority: Medium
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
DouglasNeuroInformatics/OpenDataCapture#1833 ·
メンテナーはふだん 1 日以内に返信
-
Area: Instruments Bug Difficulty: Low Priority: Low
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
DouglasNeuroInformatics/OpenDataCapture#1824 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Area: Shared Bug Difficulty: Low Priority: Low
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
DouglasNeuroInformatics/OpenDataCapture#1813 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Multiple instructions show as one comma-joined paragraph ("questions., Conditional")対応中かも @Sanilas-ai が 1 日前に担当しました。 オープンArea: Shared Bug Difficulty: Low Good First Issue Priority: Low
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
DouglasNeuroInformatics/OpenDataCapture#1812 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
DouglasNeuroInformatics/OpenDataCapture の issue をすべて見る
似ている issue
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:other issue-rating: 🦞 diamond lobster maturity:stable no-stale P1
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
openclaw/openclaw#190772 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
2026-11 good first issue gsoc-2027 project: virtual tests
難易度 2/5 半日 初心者へのやさしさ 82/100
alphaonelabs/website#1150 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
flisk-sh/run-my-agents#61 ·
-
難易度 2/5 3〜5日 初心者へのやさしさ 62/100
career-ops-hq/career-ops#6399 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
agents ai-agents area: cli claude-code difficulty: easy dx enhancement examples good first issue growth hacktoberfest help wanted island: Agent Isle island: Recipe Archipelago rank: 7 kyu tech: typescript
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
tdk-landscape/tdk-cli-core#3126 ·