Feature request: Dockerfile + docker-compose for self-hosted deployment
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- docker, docker-compose, javascript, nginx, node.js
調査の方向性
Start by reading the root README.md, amplify.yml, and customHttp.yml, then inspect the app build scripts and worker scripts named in the issue. Compare the existing deployment headers and build outputs with the proposed Docker and Compose setup, and resolve the open questions about shared configuration, worker services, and Puter dependencies with maintainers. Done means a documented self-hosting path that builds and serves selected apps with the required headers.
索引モデルが issue の本文から書いたものです。
説明
Summary
Right now the only documented way to run an app is per-folder npm install && npm run dev, and the only documented production path is AWS Amplify (amplify.yml + customHttp.yml at the repo root).
There is no container image, no compose file, and no nginx/Caddy config anywhere in the repo — I walked the full file tree on main (34,886 paths) and found zero matches for Dockerfile, docker-compose, compose.yml or nginx.
That makes self-hosting impractical. Someone who wants these apps on their own VPS/NAS/home lab currently has to clone the repo, install Node 22.12+, run a build in each of the 51 app folders, and then hand-write a static file server that reproduces the caching behaviour the apps actually depend on.
What would make self-hosting work
- A
Dockerfileper app (or one parameterizedDockerfileplus a build arg) that:- builds in
node:22(README requires >= 22.12), - runs
npm ci && npm run build, - serves
dist/from a multi-stage nginx or Caddy runtime image, - runs non-root and declares a
HEALTHCHECK.
- builds in
- A
docker-compose.ymlat the repo root that brings up a chosen set of apps behind one reverse proxy on a single port, so a self-hoster gets one URL per app. - A short "Self-hosting" section in
README.mdwith the exactdocker compose up -dcommands.
The part that's easy to get wrong: customHttp.yml
The Amplify config encodes real application behaviour, not just cosmetics. An nginx image would have to reproduce it, and I'd be happy to help get it right:
/and**/*.html→no-cache, max-age=0, s-maxage=0, must-revalidate/assets/*→public, max-age=31536000, immutable(Vite content hashes)/assets/*.wasm→ additionallyContent-Type: application/wasm(circuits,parametric,music-studio)/sw.js,/worker/*,/manifest.json→no-cache, ...(teamchat,fleet,legal,property-management,help-desk,solitaire,cad, and others)chess,backgammon,checkersadditionally ship a fullContent-Security-PolicyplusX-Content-Type-Options,Referrer-Policy,Permissions-PolicyandStrict-Transport-Security
Getting this wrong is not cosmetic: a stale sw.js pins returning users to an old build forever, and a missing application/wasm content type breaks the CAD / circuits / parametric engines outright.
Open questions
- Where should this live? One
Dockerfile+ compose file inside each of the 51 app folders is a lot of duplication. A shareddeploy/directory, or a single parameterizedDockerfiledriven by a build arg, might be cleaner — I'd like to follow the maintainers' preference here. - What about the worker components?
documents,spreadsheet,teamchat,help-desk,fleet,legalandproperty-managementhavebuild:worker/deploy:email-workerscripts targeting Cloudflare Workers. Should the compose file run those locally too (workerd/wrangler dev), or is the expectation that they stay external and just get documented? - How self-hosted is "self-hosted"? Several apps pull the Puter SDK from
https://js.puter.comand talk toapi.puter.com, and the shipped CSPs allow those origins. Should there be a documented path to point an app at a self-hosted Puter instance (cf.HeyPuter/puter), and would the baked-in CSPs need to become configurable?
Why it seems worth doing
The project's goal is free, open-source alternatives to proprietary software, and the audience for that is exactly the group that wants to self-host: home labs, small teams, privacy-sensitive organisations, people without an AWS account. docker compose up -d is the interface that audience already knows.
I'm happy to contribute a PR — for example documents and spreadsheet as a reference implementation, including the nginx header rules — if the approach is agreeable. Just wanted to check the direction before writing 51 near-identical Dockerfiles.
Checklist
- I have searched the existing issues and discussions for this and believe it is new
- I have read the contributing guidelines / README deployment notes
- 主要言語
- JavaScript
- スター
- 7.1k
- フォーク
- 732
- 平均マージ
- 2時間 54分
- マージ済み PR(30日)
- 21
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
HeyPuter/everything のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 60/100
HeyPuter/everything#187 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
HeyPuter/everything#189 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
HeyPuter/everything#188 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 57/100
HeyPuter/everything#186 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 28/100
HeyPuter/everything#185 ·
メンテナーはふだん 1 日以内に返信
HeyPuter/everything の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
obsidianmd/obsidian-developer-docs#281 ·
メンテナーはふだん 4 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
FriendsOfFlarum/synopsis#16 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Fei-Away/Codex-Dream-Skin#449 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
sysprog21/codetrial#604 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
outline/outline#14489 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信