@intlayer/docs 9.5.6 → 9.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/ar/i18next_vs_intlayer.md +130 -16
- package/blog/ar/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ar/lingui_vs_intlayer.md +122 -15
- package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/ar/next-intl_vs_intlayer.md +136 -20
- package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
- package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
- package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/de/i18next_vs_intlayer.md +128 -14
- package/blog/de/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/de/lingui_vs_intlayer.md +122 -15
- package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/de/next-intl_vs_intlayer.md +125 -15
- package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/de/vue-i18n_vs_intlayer.md +193 -31
- package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
- package/blog/en/i18next_vs_intlayer.md +128 -14
- package/blog/en/is_intlayer_lighter_than_paraglide.md +288 -0
- package/blog/en/lingui_vs_intlayer.md +124 -15
- package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
- package/blog/en/next-intl_vs_intlayer.md +125 -13
- package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
- package/blog/en/vue-i18n_vs_intlayer.md +188 -27
- package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
- package/blog/en-GB/i18next_vs_intlayer.md +128 -14
- package/blog/en-GB/is_intlayer_lighter_than_paraglide.md +285 -0
- package/blog/en-GB/lingui_vs_intlayer.md +122 -15
- package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
- package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
- package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
- package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/es/i18next_vs_intlayer.md +128 -14
- package/blog/es/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/es/lingui_vs_intlayer.md +122 -15
- package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/es/next-intl_vs_intlayer.md +125 -15
- package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/es/vue-i18n_vs_intlayer.md +193 -31
- package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/fr/i18next_vs_intlayer.md +128 -14
- package/blog/fr/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/fr/lingui_vs_intlayer.md +122 -15
- package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/fr/next-intl_vs_intlayer.md +127 -15
- package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
- package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
- package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
- package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/hi/i18next_vs_intlayer.md +130 -16
- package/blog/hi/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/hi/lingui_vs_intlayer.md +122 -15
- package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/hi/next-intl_vs_intlayer.md +135 -19
- package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
- package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/id/i18next_vs_intlayer.md +128 -14
- package/blog/id/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/id/lingui_vs_intlayer.md +122 -15
- package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/id/next-intl_vs_intlayer.md +135 -19
- package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
- package/blog/id/vue-i18n_vs_intlayer.md +188 -26
- package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
- package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/it/i18next_vs_intlayer.md +128 -14
- package/blog/it/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/it/lingui_vs_intlayer.md +122 -15
- package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/it/next-intl_vs_intlayer.md +125 -15
- package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/it/vue-i18n_vs_intlayer.md +191 -31
- package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
- package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/ja/i18next_vs_intlayer.md +129 -17
- package/blog/ja/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ja/lingui_vs_intlayer.md +122 -15
- package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/ja/next-intl_vs_intlayer.md +124 -14
- package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
- package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/ko/i18next_vs_intlayer.md +129 -17
- package/blog/ko/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ko/lingui_vs_intlayer.md +122 -15
- package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/ko/next-intl_vs_intlayer.md +134 -18
- package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
- package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/pl/i18next_vs_intlayer.md +128 -14
- package/blog/pl/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/pl/lingui_vs_intlayer.md +122 -15
- package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/pl/next-intl_vs_intlayer.md +134 -18
- package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
- package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/pt/i18next_vs_intlayer.md +128 -14
- package/blog/pt/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/pt/lingui_vs_intlayer.md +122 -15
- package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/pt/next-intl_vs_intlayer.md +131 -15
- package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
- package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/ru/i18next_vs_intlayer.md +130 -16
- package/blog/ru/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/ru/lingui_vs_intlayer.md +122 -15
- package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
- package/blog/ru/next-intl_vs_intlayer.md +123 -13
- package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
- package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
- package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
- package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/tr/i18next_vs_intlayer.md +128 -14
- package/blog/tr/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/tr/lingui_vs_intlayer.md +122 -15
- package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/tr/next-intl_vs_intlayer.md +136 -20
- package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
- package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/uk/i18next_vs_intlayer.md +130 -16
- package/blog/uk/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/uk/lingui_vs_intlayer.md +122 -15
- package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/uk/next-intl_vs_intlayer.md +135 -19
- package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
- package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
- package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/vi/i18next_vs_intlayer.md +128 -14
- package/blog/vi/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/vi/lingui_vs_intlayer.md +122 -15
- package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/vi/next-intl_vs_intlayer.md +135 -19
- package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
- package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
- package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
- package/blog/zh/i18next_vs_intlayer.md +128 -14
- package/blog/zh/is_intlayer_lighter_than_paraglide.md +284 -0
- package/blog/zh/lingui_vs_intlayer.md +122 -15
- package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
- package/blog/zh/next-intl_vs_intlayer.md +125 -15
- package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
- package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
- package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +60 -40
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +60 -40
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +3 -2
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/nextjs.md +19 -16
- package/docs/ar/benchmark/solid.md +26 -9
- package/docs/ar/benchmark/svelte.md +22 -7
- package/docs/ar/benchmark/tanstack.md +20 -16
- package/docs/ar/benchmark/vue.md +19 -10
- package/docs/ar/chrome_extension.md +130 -0
- package/docs/ar/cli/index.md +11 -1
- package/docs/ar/cli/infra.md +162 -0
- package/docs/ar/cli/init.md +24 -1
- package/docs/ar/cli/upgrade.md +125 -0
- package/docs/ar/dictionary/html.md +173 -5
- package/docs/ar/dictionary/markdown.md +263 -1
- package/docs/ar/intlayer_with_analog.md +23 -1
- package/docs/ar/intlayer_with_angular_19.md +24 -1
- package/docs/ar/intlayer_with_angular_21.md +24 -1
- package/docs/ar/intlayer_with_astro.md +24 -1
- package/docs/ar/intlayer_with_astro_lit.md +25 -1
- package/docs/ar/intlayer_with_astro_preact.md +26 -1
- package/docs/ar/intlayer_with_astro_react.md +26 -1
- package/docs/ar/intlayer_with_astro_solid.md +26 -1
- package/docs/ar/intlayer_with_astro_svelte.md +25 -1
- package/docs/ar/intlayer_with_astro_vue.md +25 -1
- package/docs/ar/intlayer_with_remix_3.md +22 -1
- package/docs/ar/self_hosting.md +406 -231
- package/docs/de/benchmark/nextjs.md +19 -16
- package/docs/de/benchmark/solid.md +26 -9
- package/docs/de/benchmark/svelte.md +22 -7
- package/docs/de/benchmark/tanstack.md +20 -16
- package/docs/de/benchmark/vue.md +19 -10
- package/docs/de/chrome_extension.md +130 -0
- package/docs/de/cli/index.md +11 -1
- package/docs/de/cli/infra.md +162 -0
- package/docs/de/cli/init.md +24 -1
- package/docs/de/cli/upgrade.md +125 -0
- package/docs/de/dictionary/html.md +173 -5
- package/docs/de/dictionary/markdown.md +263 -1
- package/docs/de/intlayer_with_analog.md +23 -1
- package/docs/de/intlayer_with_angular_19.md +24 -1
- package/docs/de/intlayer_with_angular_21.md +24 -1
- package/docs/de/intlayer_with_astro.md +24 -1
- package/docs/de/intlayer_with_astro_lit.md +25 -1
- package/docs/de/intlayer_with_astro_preact.md +26 -1
- package/docs/de/intlayer_with_astro_react.md +26 -1
- package/docs/de/intlayer_with_astro_solid.md +26 -1
- package/docs/de/intlayer_with_astro_svelte.md +25 -1
- package/docs/de/intlayer_with_astro_vue.md +25 -1
- package/docs/de/intlayer_with_remix_3.md +22 -1
- package/docs/de/self_hosting.md +404 -227
- package/docs/en/agent_skills.md +29 -1
- package/docs/en/benchmark/nextjs.md +19 -16
- package/docs/en/benchmark/solid.md +26 -9
- package/docs/en/benchmark/svelte.md +22 -7
- package/docs/en/benchmark/tanstack.md +21 -17
- package/docs/en/benchmark/vue.md +20 -11
- package/docs/en/chrome_extension.md +130 -0
- package/docs/en/cli/index.md +11 -1
- package/docs/en/cli/infra.md +175 -0
- package/docs/en/cli/init.md +25 -1
- package/docs/en/cli/upgrade.md +125 -0
- package/docs/en/dictionary/html.md +173 -5
- package/docs/en/dictionary/markdown.md +263 -1
- package/docs/en/intlayer_with_analog.md +23 -1
- package/docs/en/intlayer_with_angular_19.md +24 -1
- package/docs/en/intlayer_with_angular_21.md +24 -1
- package/docs/en/intlayer_with_astro.md +24 -1
- package/docs/en/intlayer_with_astro_lit.md +25 -1
- package/docs/en/intlayer_with_astro_preact.md +26 -1
- package/docs/en/intlayer_with_astro_react.md +26 -1
- package/docs/en/intlayer_with_astro_solid.md +26 -1
- package/docs/en/intlayer_with_astro_svelte.md +25 -1
- package/docs/en/intlayer_with_astro_vue.md +25 -1
- package/docs/en/intlayer_with_remix_3.md +22 -1
- package/docs/en/self_hosting.md +418 -176
- package/docs/en-GB/benchmark/nextjs.md +19 -16
- package/docs/en-GB/benchmark/solid.md +26 -9
- package/docs/en-GB/benchmark/svelte.md +22 -7
- package/docs/en-GB/benchmark/tanstack.md +20 -16
- package/docs/en-GB/benchmark/vue.md +20 -11
- package/docs/en-GB/chrome_extension.md +130 -0
- package/docs/en-GB/cli/index.md +11 -1
- package/docs/en-GB/cli/infra.md +162 -0
- package/docs/en-GB/cli/init.md +24 -1
- package/docs/en-GB/cli/upgrade.md +125 -0
- package/docs/en-GB/dictionary/html.md +173 -5
- package/docs/en-GB/dictionary/markdown.md +263 -1
- package/docs/en-GB/intlayer_with_analog.md +23 -1
- package/docs/en-GB/intlayer_with_angular_19.md +24 -1
- package/docs/en-GB/intlayer_with_angular_21.md +24 -1
- package/docs/en-GB/intlayer_with_astro.md +24 -1
- package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
- package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
- package/docs/en-GB/intlayer_with_astro_react.md +26 -1
- package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
- package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
- package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
- package/docs/en-GB/intlayer_with_remix_3.md +22 -1
- package/docs/en-GB/self_hosting.md +381 -206
- package/docs/es/benchmark/nextjs.md +19 -16
- package/docs/es/benchmark/solid.md +26 -9
- package/docs/es/benchmark/svelte.md +22 -7
- package/docs/es/benchmark/tanstack.md +20 -16
- package/docs/es/benchmark/vue.md +19 -10
- package/docs/es/chrome_extension.md +130 -0
- package/docs/es/cli/index.md +11 -1
- package/docs/es/cli/infra.md +162 -0
- package/docs/es/cli/init.md +24 -1
- package/docs/es/cli/upgrade.md +125 -0
- package/docs/es/dictionary/html.md +173 -5
- package/docs/es/dictionary/markdown.md +263 -1
- package/docs/es/intlayer_with_analog.md +23 -1
- package/docs/es/intlayer_with_angular_19.md +24 -1
- package/docs/es/intlayer_with_angular_21.md +24 -1
- package/docs/es/intlayer_with_astro.md +24 -1
- package/docs/es/intlayer_with_astro_lit.md +25 -1
- package/docs/es/intlayer_with_astro_preact.md +26 -1
- package/docs/es/intlayer_with_astro_react.md +26 -1
- package/docs/es/intlayer_with_astro_solid.md +26 -1
- package/docs/es/intlayer_with_astro_svelte.md +25 -1
- package/docs/es/intlayer_with_astro_vue.md +25 -1
- package/docs/es/intlayer_with_remix_3.md +22 -1
- package/docs/es/self_hosting.md +400 -223
- package/docs/fr/benchmark/nextjs.md +19 -16
- package/docs/fr/benchmark/solid.md +26 -9
- package/docs/fr/benchmark/svelte.md +22 -7
- package/docs/fr/benchmark/tanstack.md +20 -16
- package/docs/fr/benchmark/vue.md +20 -11
- package/docs/fr/chrome_extension.md +130 -0
- package/docs/fr/cli/index.md +11 -1
- package/docs/fr/cli/infra.md +162 -0
- package/docs/fr/cli/init.md +24 -1
- package/docs/fr/cli/upgrade.md +125 -0
- package/docs/fr/dictionary/html.md +173 -5
- package/docs/fr/dictionary/markdown.md +265 -4
- package/docs/fr/intlayer_with_analog.md +23 -1
- package/docs/fr/intlayer_with_angular_19.md +24 -1
- package/docs/fr/intlayer_with_angular_21.md +24 -1
- package/docs/fr/intlayer_with_astro.md +24 -1
- package/docs/fr/intlayer_with_astro_lit.md +25 -1
- package/docs/fr/intlayer_with_astro_preact.md +26 -1
- package/docs/fr/intlayer_with_astro_react.md +26 -1
- package/docs/fr/intlayer_with_astro_solid.md +26 -1
- package/docs/fr/intlayer_with_astro_svelte.md +25 -1
- package/docs/fr/intlayer_with_astro_vue.md +25 -1
- package/docs/fr/intlayer_with_remix_3.md +22 -1
- package/docs/fr/self_hosting.md +401 -224
- package/docs/hi/benchmark/nextjs.md +19 -16
- package/docs/hi/benchmark/solid.md +26 -9
- package/docs/hi/benchmark/svelte.md +22 -7
- package/docs/hi/benchmark/tanstack.md +20 -16
- package/docs/hi/benchmark/vue.md +20 -11
- package/docs/hi/chrome_extension.md +130 -0
- package/docs/hi/cli/index.md +11 -1
- package/docs/hi/cli/infra.md +162 -0
- package/docs/hi/cli/init.md +24 -1
- package/docs/hi/cli/upgrade.md +125 -0
- package/docs/hi/dictionary/html.md +173 -5
- package/docs/hi/dictionary/markdown.md +263 -1
- package/docs/hi/intlayer_with_analog.md +23 -1
- package/docs/hi/intlayer_with_angular_19.md +24 -1
- package/docs/hi/intlayer_with_angular_21.md +24 -1
- package/docs/hi/intlayer_with_astro.md +24 -1
- package/docs/hi/intlayer_with_astro_lit.md +25 -1
- package/docs/hi/intlayer_with_astro_preact.md +26 -1
- package/docs/hi/intlayer_with_astro_react.md +26 -1
- package/docs/hi/intlayer_with_astro_solid.md +26 -1
- package/docs/hi/intlayer_with_astro_svelte.md +25 -1
- package/docs/hi/intlayer_with_astro_vue.md +25 -1
- package/docs/hi/intlayer_with_remix_3.md +22 -1
- package/docs/hi/self_hosting.md +409 -235
- package/docs/id/benchmark/nextjs.md +19 -16
- package/docs/id/benchmark/solid.md +26 -9
- package/docs/id/benchmark/svelte.md +22 -7
- package/docs/id/benchmark/tanstack.md +20 -16
- package/docs/id/benchmark/vue.md +20 -11
- package/docs/id/chrome_extension.md +130 -0
- package/docs/id/cli/index.md +11 -1
- package/docs/id/cli/infra.md +162 -0
- package/docs/id/cli/init.md +24 -1
- package/docs/id/cli/upgrade.md +125 -0
- package/docs/id/dictionary/html.md +173 -5
- package/docs/id/dictionary/markdown.md +263 -1
- package/docs/id/intlayer_with_analog.md +23 -1
- package/docs/id/intlayer_with_angular_19.md +24 -1
- package/docs/id/intlayer_with_angular_21.md +24 -1
- package/docs/id/intlayer_with_astro.md +24 -1
- package/docs/id/intlayer_with_astro_lit.md +25 -1
- package/docs/id/intlayer_with_astro_preact.md +26 -1
- package/docs/id/intlayer_with_astro_react.md +26 -1
- package/docs/id/intlayer_with_astro_solid.md +26 -1
- package/docs/id/intlayer_with_astro_svelte.md +25 -1
- package/docs/id/intlayer_with_astro_vue.md +25 -1
- package/docs/id/intlayer_with_remix_3.md +22 -1
- package/docs/id/self_hosting.md +416 -243
- package/docs/it/benchmark/nextjs.md +19 -16
- package/docs/it/benchmark/solid.md +26 -9
- package/docs/it/benchmark/svelte.md +22 -7
- package/docs/it/benchmark/tanstack.md +20 -16
- package/docs/it/benchmark/vue.md +19 -10
- package/docs/it/chrome_extension.md +130 -0
- package/docs/it/cli/index.md +11 -1
- package/docs/it/cli/infra.md +162 -0
- package/docs/it/cli/init.md +24 -1
- package/docs/it/cli/upgrade.md +125 -0
- package/docs/it/dictionary/html.md +173 -5
- package/docs/it/dictionary/markdown.md +263 -1
- package/docs/it/intlayer_with_analog.md +23 -1
- package/docs/it/intlayer_with_angular_19.md +24 -1
- package/docs/it/intlayer_with_angular_21.md +24 -1
- package/docs/it/intlayer_with_astro.md +24 -1
- package/docs/it/intlayer_with_astro_lit.md +25 -1
- package/docs/it/intlayer_with_astro_preact.md +26 -1
- package/docs/it/intlayer_with_astro_react.md +26 -1
- package/docs/it/intlayer_with_astro_solid.md +26 -1
- package/docs/it/intlayer_with_astro_svelte.md +25 -1
- package/docs/it/intlayer_with_astro_vue.md +25 -1
- package/docs/it/intlayer_with_remix_3.md +22 -1
- package/docs/it/self_hosting.md +412 -237
- package/docs/ja/benchmark/nextjs.md +19 -16
- package/docs/ja/benchmark/solid.md +26 -9
- package/docs/ja/benchmark/svelte.md +22 -7
- package/docs/ja/benchmark/tanstack.md +18 -14
- package/docs/ja/benchmark/vue.md +19 -10
- package/docs/ja/chrome_extension.md +130 -0
- package/docs/ja/cli/index.md +11 -1
- package/docs/ja/cli/infra.md +162 -0
- package/docs/ja/cli/init.md +24 -1
- package/docs/ja/cli/upgrade.md +125 -0
- package/docs/ja/dictionary/html.md +173 -5
- package/docs/ja/dictionary/markdown.md +263 -1
- package/docs/ja/intlayer_with_analog.md +23 -1
- package/docs/ja/intlayer_with_angular_19.md +24 -1
- package/docs/ja/intlayer_with_angular_21.md +24 -1
- package/docs/ja/intlayer_with_astro.md +24 -1
- package/docs/ja/intlayer_with_astro_lit.md +25 -1
- package/docs/ja/intlayer_with_astro_preact.md +26 -1
- package/docs/ja/intlayer_with_astro_react.md +26 -1
- package/docs/ja/intlayer_with_astro_solid.md +26 -1
- package/docs/ja/intlayer_with_astro_svelte.md +25 -1
- package/docs/ja/intlayer_with_astro_vue.md +25 -1
- package/docs/ja/intlayer_with_remix_3.md +22 -1
- package/docs/ja/self_hosting.md +398 -223
- package/docs/ko/benchmark/nextjs.md +19 -16
- package/docs/ko/benchmark/solid.md +26 -9
- package/docs/ko/benchmark/svelte.md +22 -7
- package/docs/ko/benchmark/tanstack.md +20 -16
- package/docs/ko/benchmark/vue.md +20 -11
- package/docs/ko/chrome_extension.md +130 -0
- package/docs/ko/cli/index.md +11 -1
- package/docs/ko/cli/infra.md +162 -0
- package/docs/ko/cli/init.md +24 -1
- package/docs/ko/cli/upgrade.md +126 -0
- package/docs/ko/dictionary/html.md +173 -5
- package/docs/ko/dictionary/markdown.md +263 -1
- package/docs/ko/intlayer_with_analog.md +23 -1
- package/docs/ko/intlayer_with_angular_19.md +24 -1
- package/docs/ko/intlayer_with_angular_21.md +24 -1
- package/docs/ko/intlayer_with_astro.md +24 -1
- package/docs/ko/intlayer_with_astro_lit.md +25 -1
- package/docs/ko/intlayer_with_astro_preact.md +26 -1
- package/docs/ko/intlayer_with_astro_react.md +26 -1
- package/docs/ko/intlayer_with_astro_solid.md +26 -1
- package/docs/ko/intlayer_with_astro_svelte.md +25 -1
- package/docs/ko/intlayer_with_astro_vue.md +25 -1
- package/docs/ko/intlayer_with_remix_3.md +22 -1
- package/docs/ko/self_hosting.md +411 -238
- package/docs/pl/benchmark/nextjs.md +19 -16
- package/docs/pl/benchmark/solid.md +26 -9
- package/docs/pl/benchmark/svelte.md +22 -7
- package/docs/pl/benchmark/tanstack.md +20 -16
- package/docs/pl/benchmark/vue.md +20 -11
- package/docs/pl/chrome_extension.md +130 -0
- package/docs/pl/cli/index.md +11 -1
- package/docs/pl/cli/infra.md +162 -0
- package/docs/pl/cli/init.md +24 -1
- package/docs/pl/cli/upgrade.md +125 -0
- package/docs/pl/dictionary/html.md +173 -5
- package/docs/pl/dictionary/markdown.md +263 -1
- package/docs/pl/intlayer_with_analog.md +23 -1
- package/docs/pl/intlayer_with_angular_19.md +24 -1
- package/docs/pl/intlayer_with_angular_21.md +24 -1
- package/docs/pl/intlayer_with_astro.md +24 -1
- package/docs/pl/intlayer_with_astro_lit.md +25 -1
- package/docs/pl/intlayer_with_astro_preact.md +26 -1
- package/docs/pl/intlayer_with_astro_react.md +26 -1
- package/docs/pl/intlayer_with_astro_solid.md +26 -1
- package/docs/pl/intlayer_with_astro_svelte.md +25 -1
- package/docs/pl/intlayer_with_astro_vue.md +25 -1
- package/docs/pl/intlayer_with_remix_3.md +22 -1
- package/docs/pl/self_hosting.md +408 -233
- package/docs/pt/benchmark/nextjs.md +19 -16
- package/docs/pt/benchmark/solid.md +26 -9
- package/docs/pt/benchmark/svelte.md +22 -7
- package/docs/pt/benchmark/tanstack.md +20 -16
- package/docs/pt/benchmark/vue.md +19 -10
- package/docs/pt/chrome_extension.md +130 -0
- package/docs/pt/cli/index.md +11 -1
- package/docs/pt/cli/infra.md +162 -0
- package/docs/pt/cli/init.md +24 -1
- package/docs/pt/cli/upgrade.md +125 -0
- package/docs/pt/dictionary/html.md +173 -5
- package/docs/pt/dictionary/markdown.md +263 -1
- package/docs/pt/intlayer_with_analog.md +23 -1
- package/docs/pt/intlayer_with_angular_19.md +24 -1
- package/docs/pt/intlayer_with_angular_21.md +24 -1
- package/docs/pt/intlayer_with_astro.md +24 -1
- package/docs/pt/intlayer_with_astro_lit.md +25 -1
- package/docs/pt/intlayer_with_astro_preact.md +26 -1
- package/docs/pt/intlayer_with_astro_react.md +26 -1
- package/docs/pt/intlayer_with_astro_solid.md +26 -1
- package/docs/pt/intlayer_with_astro_svelte.md +25 -1
- package/docs/pt/intlayer_with_astro_vue.md +25 -1
- package/docs/pt/intlayer_with_remix_3.md +22 -1
- package/docs/pt/self_hosting.md +399 -224
- package/docs/ru/benchmark/nextjs.md +19 -16
- package/docs/ru/benchmark/solid.md +26 -9
- package/docs/ru/benchmark/svelte.md +22 -7
- package/docs/ru/benchmark/tanstack.md +20 -16
- package/docs/ru/benchmark/vue.md +20 -11
- package/docs/ru/chrome_extension.md +130 -0
- package/docs/ru/cli/index.md +11 -1
- package/docs/ru/cli/infra.md +162 -0
- package/docs/ru/cli/init.md +24 -1
- package/docs/ru/cli/upgrade.md +125 -0
- package/docs/ru/dictionary/html.md +173 -5
- package/docs/ru/dictionary/markdown.md +263 -1
- package/docs/ru/intlayer_with_analog.md +23 -1
- package/docs/ru/intlayer_with_angular_19.md +24 -1
- package/docs/ru/intlayer_with_angular_21.md +24 -1
- package/docs/ru/intlayer_with_astro.md +24 -1
- package/docs/ru/intlayer_with_astro_lit.md +25 -1
- package/docs/ru/intlayer_with_astro_preact.md +26 -1
- package/docs/ru/intlayer_with_astro_react.md +26 -1
- package/docs/ru/intlayer_with_astro_solid.md +26 -1
- package/docs/ru/intlayer_with_astro_svelte.md +25 -1
- package/docs/ru/intlayer_with_astro_vue.md +25 -1
- package/docs/ru/intlayer_with_remix_3.md +22 -1
- package/docs/ru/self_hosting.md +403 -228
- package/docs/tr/benchmark/nextjs.md +19 -16
- package/docs/tr/benchmark/solid.md +26 -9
- package/docs/tr/benchmark/svelte.md +22 -7
- package/docs/tr/benchmark/tanstack.md +20 -16
- package/docs/tr/benchmark/vue.md +20 -11
- package/docs/tr/chrome_extension.md +130 -0
- package/docs/tr/cli/index.md +11 -1
- package/docs/tr/cli/infra.md +162 -0
- package/docs/tr/cli/init.md +24 -1
- package/docs/tr/cli/upgrade.md +125 -0
- package/docs/tr/dictionary/html.md +173 -5
- package/docs/tr/dictionary/markdown.md +263 -1
- package/docs/tr/intlayer_with_analog.md +23 -1
- package/docs/tr/intlayer_with_angular_19.md +24 -1
- package/docs/tr/intlayer_with_angular_21.md +24 -1
- package/docs/tr/intlayer_with_astro.md +24 -1
- package/docs/tr/intlayer_with_astro_lit.md +25 -1
- package/docs/tr/intlayer_with_astro_preact.md +26 -1
- package/docs/tr/intlayer_with_astro_react.md +26 -1
- package/docs/tr/intlayer_with_astro_solid.md +26 -1
- package/docs/tr/intlayer_with_astro_svelte.md +25 -1
- package/docs/tr/intlayer_with_astro_vue.md +25 -1
- package/docs/tr/intlayer_with_remix_3.md +22 -1
- package/docs/tr/self_hosting.md +410 -234
- package/docs/uk/benchmark/nextjs.md +19 -16
- package/docs/uk/benchmark/solid.md +26 -9
- package/docs/uk/benchmark/svelte.md +22 -7
- package/docs/uk/benchmark/tanstack.md +20 -16
- package/docs/uk/benchmark/vue.md +20 -11
- package/docs/uk/chrome_extension.md +130 -0
- package/docs/uk/cli/index.md +11 -1
- package/docs/uk/cli/infra.md +162 -0
- package/docs/uk/cli/init.md +24 -1
- package/docs/uk/cli/upgrade.md +125 -0
- package/docs/uk/dictionary/html.md +173 -5
- package/docs/uk/dictionary/markdown.md +263 -1
- package/docs/uk/intlayer_with_analog.md +23 -1
- package/docs/uk/intlayer_with_angular_19.md +24 -1
- package/docs/uk/intlayer_with_angular_21.md +24 -1
- package/docs/uk/intlayer_with_astro.md +24 -1
- package/docs/uk/intlayer_with_astro_lit.md +25 -1
- package/docs/uk/intlayer_with_astro_preact.md +26 -1
- package/docs/uk/intlayer_with_astro_react.md +26 -1
- package/docs/uk/intlayer_with_astro_solid.md +26 -1
- package/docs/uk/intlayer_with_astro_svelte.md +25 -1
- package/docs/uk/intlayer_with_astro_vue.md +25 -1
- package/docs/uk/intlayer_with_remix_3.md +22 -1
- package/docs/uk/self_hosting.md +413 -238
- package/docs/vi/benchmark/nextjs.md +19 -16
- package/docs/vi/benchmark/solid.md +26 -9
- package/docs/vi/benchmark/svelte.md +22 -7
- package/docs/vi/benchmark/tanstack.md +20 -16
- package/docs/vi/benchmark/vue.md +20 -11
- package/docs/vi/chrome_extension.md +130 -0
- package/docs/vi/cli/index.md +11 -1
- package/docs/vi/cli/infra.md +162 -0
- package/docs/vi/cli/init.md +24 -1
- package/docs/vi/cli/upgrade.md +125 -0
- package/docs/vi/dictionary/html.md +173 -5
- package/docs/vi/dictionary/markdown.md +263 -1
- package/docs/vi/intlayer_with_analog.md +23 -1
- package/docs/vi/intlayer_with_angular_19.md +24 -1
- package/docs/vi/intlayer_with_angular_21.md +24 -1
- package/docs/vi/intlayer_with_astro.md +24 -1
- package/docs/vi/intlayer_with_astro_lit.md +25 -1
- package/docs/vi/intlayer_with_astro_preact.md +26 -1
- package/docs/vi/intlayer_with_astro_react.md +26 -1
- package/docs/vi/intlayer_with_astro_solid.md +26 -1
- package/docs/vi/intlayer_with_astro_svelte.md +25 -1
- package/docs/vi/intlayer_with_astro_vue.md +25 -1
- package/docs/vi/intlayer_with_remix_3.md +22 -1
- package/docs/vi/self_hosting.md +408 -234
- package/docs/zh/benchmark/nextjs.md +19 -16
- package/docs/zh/benchmark/solid.md +26 -9
- package/docs/zh/benchmark/svelte.md +22 -7
- package/docs/zh/benchmark/tanstack.md +19 -15
- package/docs/zh/benchmark/vue.md +20 -11
- package/docs/zh/chrome_extension.md +130 -0
- package/docs/zh/cli/index.md +11 -1
- package/docs/zh/cli/infra.md +162 -0
- package/docs/zh/cli/init.md +24 -1
- package/docs/zh/cli/upgrade.md +125 -0
- package/docs/zh/dictionary/html.md +172 -5
- package/docs/zh/dictionary/markdown.md +262 -1
- package/docs/zh/intlayer_with_analog.md +23 -1
- package/docs/zh/intlayer_with_angular_19.md +24 -1
- package/docs/zh/intlayer_with_angular_21.md +24 -1
- package/docs/zh/intlayer_with_astro.md +24 -1
- package/docs/zh/intlayer_with_astro_lit.md +25 -1
- package/docs/zh/intlayer_with_astro_preact.md +26 -1
- package/docs/zh/intlayer_with_astro_react.md +26 -1
- package/docs/zh/intlayer_with_astro_solid.md +26 -1
- package/docs/zh/intlayer_with_astro_svelte.md +25 -1
- package/docs/zh/intlayer_with_astro_vue.md +25 -1
- package/docs/zh/intlayer_with_remix_3.md +22 -1
- package/docs/zh/self_hosting.md +410 -237
- package/legal/ar/privacy_notice.md +9 -3
- package/legal/de/privacy_notice.md +9 -3
- package/legal/en/privacy_notice.md +10 -3
- package/legal/en-GB/privacy_notice.md +9 -3
- package/legal/es/privacy_notice.md +9 -3
- package/legal/fr/privacy_notice.md +9 -3
- package/legal/hi/privacy_notice.md +9 -3
- package/legal/id/privacy_notice.md +9 -3
- package/legal/it/privacy_notice.md +9 -3
- package/legal/ja/privacy_notice.md +9 -3
- package/legal/ko/privacy_notice.md +9 -3
- package/legal/pl/privacy_notice.md +9 -3
- package/legal/pt/privacy_notice.md +9 -3
- package/legal/ru/privacy_notice.md +9 -3
- package/legal/tr/privacy_notice.md +9 -3
- package/legal/uk/privacy_notice.md +9 -3
- package/legal/vi/privacy_notice.md +9 -3
- package/legal/zh/privacy_notice.md +9 -3
- package/package.json +6 -6
- package/src/generated/blog.entry.ts +20 -0
- package/src/generated/docs.entry.ts +60 -40
- package/docs/ar/roadmap.md +0 -321
- package/docs/de/roadmap.md +0 -322
- package/docs/en/intlayer_with_astro_vanilla.md +0 -713
- package/docs/en/roadmap.md +0 -325
- package/docs/en-GB/roadmap.md +0 -322
- package/docs/es/roadmap.md +0 -322
- package/docs/fr/roadmap.md +0 -322
- package/docs/hi/roadmap.md +0 -322
- package/docs/id/roadmap.md +0 -325
- package/docs/it/roadmap.md +0 -322
- package/docs/ja/roadmap.md +0 -322
- package/docs/ko/roadmap.md +0 -322
- package/docs/pl/roadmap.md +0 -325
- package/docs/pt/roadmap.md +0 -322
- package/docs/ru/roadmap.md +0 -322
- package/docs/tr/roadmap.md +0 -325
- package/docs/uk/roadmap.md +0 -325
- package/docs/vi/roadmap.md +0 -325
- package/docs/zh/roadmap.md +0 -322
package/docs/ja/self_hosting.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-30
|
|
3
|
-
updatedAt: 2026-
|
|
4
|
-
title: Intlayerのセルフホスティング
|
|
5
|
-
description:
|
|
3
|
+
updatedAt: 2026-09-21
|
|
4
|
+
title: Intlayer のセルフホスティング
|
|
5
|
+
description: "独自のインフラストラクチャ上で Intlayer を実行します: デスクトップアプリ、単一のオールインワン Docker コンテナ、またはスケーラブルな Docker Compose スタック。Intlayer Cloud アカウントは不要です。"
|
|
6
6
|
keywords:
|
|
7
7
|
- セルフホスティング
|
|
8
8
|
- Docker
|
|
9
9
|
- Docker Compose
|
|
10
|
+
- デスクトップアプリ
|
|
10
11
|
- Intlayer
|
|
11
12
|
- CMS
|
|
12
13
|
- インストール
|
|
@@ -17,214 +18,455 @@ slugs:
|
|
|
17
18
|
author: aymericzip
|
|
18
19
|
---
|
|
19
20
|
|
|
20
|
-
# Intlayerのセルフホスティング
|
|
21
|
+
# Intlayer のセルフホスティング
|
|
21
22
|
|
|
22
|
-
Intlayer
|
|
23
|
+
Intlayer は独自のインフラストラクチャ上で実行でき、Intlayer Cloud アカウントは不要です。同じインストーラー(`install.sh`、Windows では `install.ps1`、または `npx intlayer init infra`)でセットアップできる3つの構成が用意されています:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
| Setup | What it is | Pick it for |
|
|
26
|
+
| ------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------- |
|
|
27
|
+
| **デスクトップアプリ** | macOS、Linux、Windows 向けのネイティブダッシュボード | ローカルクライアント、ホスティング不要 |
|
|
28
|
+
| **オールインワン Docker** | ダッシュボード、API、MongoDB、Redis、MinIO を**単一コンテナ**に集約 | テストや小規模な単一マシンへの導入 |
|
|
29
|
+
| **Docker Compose** | **サービスごとに1つのコンテナ**、各データストアをマネージドサービスに置換可能 | 本番環境、スケーリング、マネージドデータベース |
|
|
30
|
+
|
|
31
|
+
## Table of Contents
|
|
32
|
+
|
|
33
|
+
<TOC/>
|
|
34
|
+
|
|
35
|
+
## 公開イメージおよびパッケージ
|
|
36
|
+
|
|
37
|
+
| Artifact | Docker Hub | GHCR mirror | Contents |
|
|
38
|
+
| -------------------- | ------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------- |
|
|
39
|
+
| All-in-one container | [`intlayer/cms-all`](https://hub.docker.com/r/intlayer/cms-all) | `ghcr.io/aymericzip/intlayer/cms-all` | app + backend + MongoDB 8 + Redis + MinIO + Chromium |
|
|
40
|
+
| Dashboard (frontend) | [`intlayer/cms-frontend`](https://hub.docker.com/r/intlayer/cms-frontend) | `ghcr.io/aymericzip/intlayer/cms-frontend` | TanStack Start dashboard on Bun |
|
|
41
|
+
| API (backend) | [`intlayer/cms-backend`](https://hub.docker.com/r/intlayer/cms-backend) | `ghcr.io/aymericzip/intlayer/cms-backend` | Fastify REST API on Bun + Chromium |
|
|
42
|
+
| Desktop app | [GitHub releases](https://github.com/aymericzip/intlayer/releases/latest) | n/a | `.dmg` (macOS), `.deb` / `.rpm` / `.AppImage` (Linux), `.exe` / `.msi` (Windows) |
|
|
43
|
+
|
|
44
|
+
3つのイメージはすべて同じ [`docker/selfhost/Dockerfile`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost) からビルドされ、リリースごとに公開されます。Compose スタックは公式の `mongo:8`、`redis:8-alpine`、`quay.io/minio/minio` イメージも取得します。
|
|
45
|
+
|
|
46
|
+
## セットアップ
|
|
47
|
+
|
|
48
|
+
インストーラーは希望するセットアップを尋ね、前提条件を確認し(Dockerのインストールを提案)、生成済みのシークレットを含む環境ファイルを書き出し、イメージを取得します。自動で起動することはありません: Docker モードでは最初にメーラーが必要となるため、最後に実行すべきコマンドを出力して終了します。再実行は安全です: 既存の環境ファイルは上書きされないため、アップグレード時にも利用できます。
|
|
49
|
+
|
|
50
|
+
<Tabs group="mode">
|
|
51
|
+
<Tab label="デスクトップアプリ" value="desktop">
|
|
52
|
+
|
|
53
|
+
Tauri で構築されたネイティブアプリケーションとしての Intlayer ダッシュボード。Intlayer Cloud (`https://app.intlayer.org`) にログインするため、ホスティングは不要です。ブラウザのタブではなくローカルクライアントを使用したい場合に最適な選択肢です。
|
|
54
|
+
|
|
55
|
+
### インストール
|
|
56
|
+
|
|
57
|
+
インストーラーはお使いの OS と CPU に適したパッケージをダウンロードし、開く(macOS)、インストールする(Linux では `dpkg` / `rpm`)、またはセットアップウィザードを起動します(Windows)。[リリースページ](https://github.com/aymericzip/intlayer/releases/latest) から手動でダウンロードすることもできます。
|
|
58
|
+
|
|
59
|
+
<Tabs group="os">
|
|
60
|
+
<Tab label="macOS / Linux" value="unix">
|
|
25
61
|
|
|
26
62
|
```sh
|
|
27
|
-
curl -fsSL https://intlayer.org/install.sh | sh
|
|
63
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
|
|
28
64
|
```
|
|
29
65
|
|
|
30
|
-
|
|
66
|
+
</Tab>
|
|
67
|
+
<Tab label="Windows" value="windows">
|
|
31
68
|
|
|
32
|
-
|
|
69
|
+
In PowerShell:
|
|
33
70
|
|
|
34
|
-
|
|
71
|
+
```powershell
|
|
72
|
+
$env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
|
|
73
|
+
```
|
|
35
74
|
|
|
36
|
-
|
|
75
|
+
</Tab>
|
|
76
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx intlayer init infra --mode desktop
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
</Tab>
|
|
83
|
+
</Tabs>
|
|
37
84
|
|
|
38
|
-
|
|
85
|
+
### 要件
|
|
86
|
+
|
|
87
|
+
- **Node.js**: アプリにはダッシュボードのサーバーが組み込まれており、マシンの `node` バイナリで起動します。アプリが起動しない場合は [nodejs.org](https://nodejs.org) からインストールしてください。
|
|
88
|
+
|
|
89
|
+
> 公開されているデスクトップビルドは Intlayer Cloud バックエンドと通信します。セルフホストされたバックエンドに向けるには、API に合わせた `VITE_BACKEND_URL` でアプリをリビルドする必要があります。[制限事項](#limitations) を参照してください。
|
|
90
|
+
|
|
91
|
+
</Tab>
|
|
92
|
+
<Tab label="オールインワン Docker" value="docker">
|
|
93
|
+
|
|
94
|
+
すべてが単一の `intlayer/cms-all` コンテナ内で実行され、[s6-overlay](https://github.com/just-containers/s6-overlay) によって監視され、すべてのデータストアが1つのボリュームに永続化されます。
|
|
39
95
|
|
|
40
96
|
```
|
|
41
97
|
┌─────────────────────────────┐
|
|
42
98
|
browser ──────▶ │ app (TanStack Start) :3000│ ──┐
|
|
43
|
-
|
|
99
|
+
(localhost) └─────────────────────────────┘ │ VITE_BACKEND_URL (baked at build)
|
|
44
100
|
┌─────────────────────────────┐ │
|
|
45
101
|
│ backend (Fastify/Bun) :3100│ ◀─┘
|
|
46
102
|
└──────────────┬──────────────┘
|
|
47
|
-
|
|
48
|
-
▼ ▼ ▼
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
(コンソール) (ウェブUI)
|
|
103
|
+
┌──────────┬─────────┼──────────────┐
|
|
104
|
+
▼ ▼ ▼ ▼
|
|
105
|
+
mongo:27017 redis:6379 minio:9000 Chromium
|
|
106
|
+
/data/mongo /data/redis /data/minio (in-image)
|
|
107
|
+
(1-node RS) minio:9001
|
|
53
108
|
```
|
|
54
109
|
|
|
55
|
-
|
|
110
|
+
| サービス | ホストポート | 用途 |
|
|
111
|
+
| ----------- | -------------------------------- | -------------------------------------------------------------- |
|
|
112
|
+
| **app** | `3000` | ダッシュボード(CMS UI) |
|
|
113
|
+
| **backend** | `3100` | REST API(`/health` エンドポイント) |
|
|
114
|
+
| **mongo** | 内部 | MongoDB 8、シングルノードレプリカセット `rs0` |
|
|
115
|
+
| **redis** | 内部 | ジョブキュー(BullMQ)およびキャッシング |
|
|
116
|
+
| **minio** | `9000` (S3), `9001` (コンソール) | アバターやスクリーンショット用の S3 互換オブジェクトストレージ |
|
|
117
|
+
|
|
118
|
+
起動順序は s6 の依存関係(`mongod` → replica-set 初期化、`minio` → バケット作成、その後 `backend`、最後に `app`)によって管理され、終了時にサービスが再起動するため、初回起動時も自動的に復旧します。
|
|
56
119
|
|
|
57
|
-
|
|
120
|
+
### 前提条件
|
|
58
121
|
|
|
59
|
-
- **Docker** ≥ 24
|
|
60
|
-
- ホスト上でポート `3000`、`3100`、`
|
|
61
|
-
-
|
|
122
|
+
- **Docker** ≥ 24: インストーラーがインストールを提案します(Linux では [get.docker.com](https://get.docker.com)、macOS では Homebrew 経由)。Windows では、まず [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/)(WSL 2 バックエンド)をインストールしてください。
|
|
123
|
+
- ホスト上でポート `3000`、`3100`、`9000`、`9001` が空いていること。MinIO `9000` は、ブラウザが `S3_PUBLIC_URL` から直接アセットを読み込むため、ブラウザから到達可能である必要があります。
|
|
124
|
+
- メーラー: [Resend](https://resend.com) API キーまたは SMTP リレー。
|
|
62
125
|
|
|
63
|
-
|
|
126
|
+
### 1. インストール
|
|
64
127
|
|
|
65
|
-
|
|
128
|
+
`BETTER_AUTH_SECRET` および `S3_SECRET_ACCESS_KEY` が生成された `./intlayer.env` を書き込み、`intlayer/cms-all:latest` を取得します。
|
|
66
129
|
|
|
67
|
-
|
|
130
|
+
<Tabs group="os">
|
|
131
|
+
<Tab label="macOS / Linux" value="unix">
|
|
68
132
|
|
|
69
133
|
```sh
|
|
70
|
-
curl -fsSL https://intlayer.org/install.sh | sh
|
|
134
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
</Tab>
|
|
138
|
+
<Tab label="Windows" value="windows">
|
|
139
|
+
|
|
140
|
+
In PowerShell:
|
|
141
|
+
|
|
142
|
+
```powershell
|
|
143
|
+
$env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
|
|
71
144
|
```
|
|
72
145
|
|
|
73
|
-
|
|
146
|
+
</Tab>
|
|
147
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
74
148
|
|
|
75
|
-
|
|
149
|
+
CLI がインストーラーを実行し、他のタブに示されている `docker run …` コマンドを出力します。メーラーを設定したらターミナルに貼り付けて実行してください。
|
|
76
150
|
|
|
77
|
-
|
|
151
|
+
</Tab>
|
|
152
|
+
</Tabs>
|
|
78
153
|
|
|
79
|
-
|
|
154
|
+
### 2. メーラーの設定
|
|
155
|
+
|
|
156
|
+
`intlayer.env` を開き、Resend **または** SMTP を設定します(詳細は [グローバルメーラー](#global-mailer) を参照):
|
|
80
157
|
|
|
81
158
|
```sh fileName="intlayer.env"
|
|
82
|
-
|
|
83
|
-
DB_MDP=<atlas-password>
|
|
84
|
-
DB_CLUSTER=<cluster>.xxxxx.mongodb.net
|
|
159
|
+
# Option A: Resend
|
|
85
160
|
RESEND_API_KEY=<your-resend-key>
|
|
86
|
-
```
|
|
87
161
|
|
|
88
|
-
|
|
162
|
+
# Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
|
|
163
|
+
MAIL_SMTP_HOST=smtp.example.com
|
|
164
|
+
MAIL_SMTP_PORT=587
|
|
165
|
+
MAIL_SMTP_USER=<user>
|
|
166
|
+
MAIL_SMTP_PASSWORD=<password>
|
|
167
|
+
MAIL_FROM=Intlayer <no-reply@example.com>
|
|
168
|
+
```
|
|
89
169
|
|
|
90
|
-
|
|
170
|
+
### 3. 起動
|
|
91
171
|
|
|
92
|
-
|
|
172
|
+
インストーラーが出力する起動コマンドです:
|
|
93
173
|
|
|
94
|
-
|
|
174
|
+
<Tabs group="os">
|
|
175
|
+
<Tab label="macOS / Linux" value="unix">
|
|
95
176
|
|
|
96
177
|
```sh
|
|
97
178
|
docker run -d --name intlayer \
|
|
98
179
|
--restart unless-stopped \
|
|
99
|
-
-p 3000:3000 \
|
|
100
|
-
-p 3100:3100 \
|
|
101
|
-
-p 9000:9000 \
|
|
102
|
-
-p 9001:9001 \
|
|
180
|
+
-p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
|
|
103
181
|
-v intlayer-data:/data \
|
|
104
182
|
--env-file ./intlayer.env \
|
|
105
|
-
|
|
183
|
+
intlayer/cms-all:latest
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
</Tab>
|
|
187
|
+
<Tab label="Windows" value="windows">
|
|
188
|
+
|
|
189
|
+
```powershell
|
|
190
|
+
docker run -d --name intlayer `
|
|
191
|
+
--restart unless-stopped `
|
|
192
|
+
-p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
|
|
193
|
+
-v intlayer-data:/data `
|
|
194
|
+
--env-file ./intlayer.env `
|
|
195
|
+
intlayer/cms-all:latest
|
|
106
196
|
```
|
|
107
197
|
|
|
108
|
-
|
|
198
|
+
</Tab>
|
|
199
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
200
|
+
|
|
201
|
+
CLI がインストーラーを実行し、他のタブに示されている `docker run …` コマンドを出力します。メーラーを設定したらターミナルに貼り付けて実行してください。
|
|
202
|
+
|
|
203
|
+
</Tab>
|
|
204
|
+
</Tabs>
|
|
109
205
|
|
|
110
|
-
|
|
206
|
+
**http://localhost:3000** を開き、[初回セットアップ](#first-run-setup) に従います。初回の起動ではレプリカセットとバケットが初期化されるため、少しお待ちください。
|
|
111
207
|
|
|
112
|
-
###
|
|
208
|
+
### バックアップとアップグレード
|
|
113
209
|
|
|
114
|
-
|
|
210
|
+
すべての状態は `intlayer-data` ボリューム(`/data/mongo`、`/data/redis`、`/data/minio`)内に保持されます。
|
|
115
211
|
|
|
116
212
|
```sh
|
|
117
|
-
|
|
213
|
+
# Backup (stop the container first so MongoDB's files are consistent)
|
|
214
|
+
docker stop intlayer
|
|
215
|
+
docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
|
|
216
|
+
docker start intlayer
|
|
217
|
+
|
|
218
|
+
# Restore
|
|
219
|
+
docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
|
|
118
220
|
```
|
|
119
221
|
|
|
120
|
-
|
|
121
|
-
| ------------------------- | --------------------------------------------- | ------------------------------------------ |
|
|
122
|
-
| `INTLAYER_IMAGE` | `ghcr.io/aymericzip/intlayer-selfhost:latest` | プルするイメージ |
|
|
123
|
-
| `INTLAYER_ENV_FILE` | `./intlayer.env` | env ファイルの書き込み先 |
|
|
124
|
-
| `INTLAYER_CONTAINER_NAME` | `intlayer` | コンテナー名 |
|
|
125
|
-
| `INTLAYER_DATA_VOLUME` | `intlayer-data` | `/data` にマウントされた名前付きボリューム |
|
|
126
|
-
| `INTLAYER_APP_PORT` | `3000` | ダッシュボードのホストポート |
|
|
127
|
-
| `INTLAYER_API_PORT` | `3100` | API のホストポート |
|
|
128
|
-
| `INTLAYER_S3_PORT` | `9000` | MinIO S3 API のホストポート |
|
|
129
|
-
| `INTLAYER_CONSOLE_PORT` | `9001` | MinIO コンソールのホストポート |
|
|
222
|
+
アップグレードするには、インストーラーを再実行し(最新イメージを取得し、`intlayer.env` を維持します)、`docker rm -f intlayer` を実行してから起動コマンドを再実行します。バンドルされたものではなくマネージド MongoDB を使用するには、`intlayer.env` に `MONGODB_URI` を設定します。
|
|
130
223
|
|
|
131
|
-
>
|
|
224
|
+
</Tab>
|
|
225
|
+
<Tab label="Docker Compose" value="compose">
|
|
132
226
|
|
|
133
|
-
|
|
227
|
+
プライベートな Compose ネットワーク上のサービスごとに1つのコンテナを用意します。ダッシュボードと API は公開されている `intlayer/cms-frontend` および `intlayer/cms-backend` イメージを使用し、データストアは公式の `mongo`、`redis`、`minio` イメージを使用します。
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
┌───────────────────┐
|
|
231
|
+
browser ──────▶ │ app :3000 │ ── SSR ──▶ http://backend:3100
|
|
232
|
+
(localhost) └───────────────────┘
|
|
233
|
+
┌───────────────────┐
|
|
234
|
+
browser ──────▶ │ backend :3100 │
|
|
235
|
+
(localhost) └─────────┬─────────┘
|
|
236
|
+
┌───────────────┼───────────────┐
|
|
237
|
+
▼ ▼ ▼
|
|
238
|
+
mongo:27017 redis:6379 minio:9000 ◀── browser (assets)
|
|
239
|
+
(1-node RS) minio:9001
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
| サービス | イメージ | 役割 |
|
|
243
|
+
| ------------ | ----------------------- | -------------------------------------------------------------------------- |
|
|
244
|
+
| `app` | `intlayer/cms-frontend` | `:3000` 上のダッシュボード。バックエンドが健全になるのを待機 |
|
|
245
|
+
| `backend` | `intlayer/cms-backend` | `:3100` 上の Chromium 付き API。Mongo、Redis、MinIO バケットを待機 |
|
|
246
|
+
| `mongo` | `mongo:8` | 自身のヘルスチェックによって初期化されるシングルノードレプリカセット `rs0` |
|
|
247
|
+
| `redis` | `redis:8-alpine` | キューおよびキャッシング、追記専用(append-only)永続化 |
|
|
248
|
+
| `minio` | `quay.io/minio/minio` | `:9000` の S3 ストレージ、`:9001` のコンソール |
|
|
249
|
+
| `minio-init` | `quay.io/minio/mc` | ワンショット: バケットとその匿名ダウンロードポリシーを作成 |
|
|
250
|
+
|
|
251
|
+
データは `intlayer_mongo-data`、`intlayer_redis-data`、`intlayer_minio-data` の各ボリュームに保存されます。サービスの接続設定(`MONGODB_URI`、`REDIS_URL`、`S3_ENDPOINT`、サーバーサイドレンダリング用の内部バックエンド URL)は compose ファイルに固定されており、シークレットとオプションの統合のみを保持する `.env` よりも優先されます。
|
|
252
|
+
|
|
253
|
+
### 前提条件
|
|
254
|
+
|
|
255
|
+
- **Docker** ≥ 24(Compose プラグイン付き): インストーラーが Linux および macOS 上でインストールを提案します。Windows では、まず [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/)(WSL 2 バックエンド)をインストールしてください。
|
|
256
|
+
- ホスト上でポート `3000`、`3100`、`9000`、`9001` が空いていること。
|
|
257
|
+
- メーラー: [Resend](https://resend.com) API キーまたは SMTP リレー。
|
|
258
|
+
|
|
259
|
+
### 1. インストール
|
|
260
|
+
|
|
261
|
+
`docker-compose.yml` と生成されたシークレットを含む `.env` を `./intlayer/` に書き出し、イメージを取得します。
|
|
262
|
+
|
|
263
|
+
<Tabs group="os">
|
|
264
|
+
<Tab label="macOS / Linux" value="unix">
|
|
265
|
+
|
|
266
|
+
```sh
|
|
267
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Or by hand:
|
|
271
|
+
|
|
272
|
+
```sh
|
|
273
|
+
mkdir intlayer && cd intlayer
|
|
274
|
+
curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
|
|
275
|
+
curl -fsSL https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
|
|
276
|
+
# fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
</Tab>
|
|
280
|
+
<Tab label="Windows" value="windows">
|
|
134
281
|
|
|
135
|
-
|
|
282
|
+
In PowerShell:
|
|
283
|
+
|
|
284
|
+
```powershell
|
|
285
|
+
$env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
|
|
286
|
+
```
|
|
136
287
|
|
|
137
|
-
|
|
138
|
-
2. 検証メールが送信されます(Resend経由)。メール検証は **必須** です — これが `RESEND_API_KEY` を開始前に設定する必要がある理由です。
|
|
139
|
-
3. メール内のリンクをクリックしてサインインします。
|
|
288
|
+
Or by hand:
|
|
140
289
|
|
|
141
|
-
|
|
290
|
+
```powershell
|
|
291
|
+
mkdir intlayer; cd intlayer
|
|
292
|
+
irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
|
|
293
|
+
irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
|
|
294
|
+
# fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
</Tab>
|
|
298
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
npx intlayer init infra --mode compose
|
|
302
|
+
```
|
|
142
303
|
|
|
143
|
-
|
|
304
|
+
</Tab>
|
|
305
|
+
</Tabs>
|
|
144
306
|
|
|
145
|
-
|
|
146
|
-
| ----------- | ------------------------------------ | -------------------------------- | ------------------------------------------------------------ |
|
|
147
|
-
| **app** | `apps/app/Dockerfile` からビルド | `3000` | TanStack Start ダッシュボード (CMS UI) |
|
|
148
|
-
| **backend** | `apps/backend/Dockerfile` からビルド | `3100` | Fastify REST API (`/health` エンドポイント) |
|
|
149
|
-
| **mongo** | `mongo:7` | 内部 | シングルノードレプリカセット (`rs0`) |
|
|
150
|
-
| **redis** | `redis:7-alpine` | 内部 | ジョブキュー (BullMQ) とキャッシュ (ioredis) |
|
|
151
|
-
| **minio** | `minio/minio` | `9000` (S3), `9001` (コンソール) | アバターとスクリーンショット用のS3互換オブジェクトストレージ |
|
|
152
|
-
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (ウェブUI) | ローカルトランザクションメールシンク |
|
|
307
|
+
### 2. メーラーの設定
|
|
153
308
|
|
|
154
|
-
|
|
309
|
+
オールインワン構成と同様に、`intlayer/.env` に Resend **または** SMTP を記入します([グローバルメーラー](#global-mailer) を参照)。
|
|
310
|
+
|
|
311
|
+
### 3. 起動
|
|
312
|
+
|
|
313
|
+
```sh
|
|
314
|
+
cd intlayer && docker compose up -d
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**http://localhost:3000** を開き、[初回セットアップ](#first-run-setup) に従います。
|
|
318
|
+
|
|
319
|
+
### マネージドデータストア
|
|
320
|
+
|
|
321
|
+
compose ファイルから置き換えるサービス(および `backend` の `depends_on` エントリ)を削除し、対応する変数を上書きします:
|
|
322
|
+
|
|
323
|
+
```yaml fileName="docker-compose.yml"
|
|
324
|
+
services:
|
|
325
|
+
backend:
|
|
326
|
+
environment:
|
|
327
|
+
MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
|
|
328
|
+
REDIS_URL: rediss://default:password@redis.example.com:6380
|
|
329
|
+
S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
|
|
330
|
+
S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
`S3_ACCESS_KEY_ID` / `S3_SECRET_ACCESS_KEY` / `S3_BUCKET_NAME` は、任意の S3 互換プロバイダーに対してそのまま機能します。
|
|
334
|
+
|
|
335
|
+
### スケーリング
|
|
336
|
+
|
|
337
|
+
`app` と `backend` はステートレスです。ロードバランサーの背後では、固定のホストポートマッピングを削除し、プロキシがサービス名でルーティングするようにすれば、`docker compose up -d --scale backend=3` が機能します。バックグラウンドジョブは Redis (BullMQ) 経由で調整されるため、複数のバックエンドレプリカがキューを安全に共有します。
|
|
338
|
+
|
|
339
|
+
### ソースからのビルド
|
|
340
|
+
|
|
341
|
+
リポジトリのクローンから、オーバーライド設定により2つの Intlayer サービスを `image:` から `build:` に切り替えます:
|
|
342
|
+
|
|
343
|
+
```sh
|
|
344
|
+
cd docker/selfhost
|
|
345
|
+
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
カスタムドメイン用のイメージを作成する場合もこの方法を使用します: `VITE_*` の値をビルド引数として渡します([制限事項](#limitations) を参照)。
|
|
349
|
+
|
|
350
|
+
### バックアップとアップグレード
|
|
351
|
+
|
|
352
|
+
```sh
|
|
353
|
+
# Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
|
|
354
|
+
docker compose stop
|
|
355
|
+
docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
|
|
356
|
+
docker compose start
|
|
357
|
+
|
|
358
|
+
# Upgrade, volumes are kept
|
|
359
|
+
docker compose pull && docker compose up -d
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
</Tab>
|
|
363
|
+
</Tabs>
|
|
364
|
+
|
|
365
|
+
### インストーラーの設定
|
|
366
|
+
|
|
367
|
+
`--mode`(または `INTLAYER_MODE`)を指定しない場合、インストーラーはメニューを表示します: `desktop`、`docker`(オールインワン)、または `compose`。また、いくつかの環境変数も読み取ります。シェルへのパイプライン処理を行うため、`curl` ではなくシェルに変数を渡してください:
|
|
368
|
+
|
|
369
|
+
```sh
|
|
370
|
+
curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
```powershell
|
|
374
|
+
$env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
| Variable | Default | Applies to | Description |
|
|
378
|
+
| ------------------------- | ------------------------- | ---------- | ---------------------------------------------------------- |
|
|
379
|
+
| `INTLAYER_MODE` | _(asked)_ | all | `desktop`, `docker` or `compose`, same as `--mode` |
|
|
380
|
+
| `INTLAYER_DOWNLOAD_DIR` | `~/Downloads` | desktop | Where the app installer is saved |
|
|
381
|
+
| `INTLAYER_IMAGE` | `intlayer/cms-all:latest` | docker | All-in-one image to pull |
|
|
382
|
+
| `INTLAYER_ENV_FILE` | `./intlayer.env` | docker | Where to write the environment file |
|
|
383
|
+
| `INTLAYER_CONTAINER_NAME` | `intlayer` | docker | Container name |
|
|
384
|
+
| `INTLAYER_DATA_VOLUME` | `intlayer-data` | docker | Named volume mounted at `/data` |
|
|
385
|
+
| `INTLAYER_APP_PORT` | `3000` | docker | Host port for the dashboard |
|
|
386
|
+
| `INTLAYER_API_PORT` | `3100` | docker | Host port for the API |
|
|
387
|
+
| `INTLAYER_S3_PORT` | `9000` | docker | Host port for the MinIO S3 API |
|
|
388
|
+
| `INTLAYER_CONSOLE_PORT` | `9001` | docker | Host port for the MinIO console |
|
|
389
|
+
| `INTLAYER_COMPOSE_DIR` | `./intlayer` | compose | Where `docker-compose.yml` and `.env` are written |
|
|
390
|
+
| `INTLAYER_SELFHOST_REF` | `main` | both | Git ref the compose file and env template are fetched from |
|
|
391
|
+
|
|
392
|
+
> ポート変数はマッピングの **ホスト** 側のみを変更します。公開されているイメージには `http://localhost:3000`、`http://localhost:3100`、`http://localhost:9000` がダッシュボードバンドルにコンパイルされているため、独自のイメージをビルドしない限りデフォルトを維持してください。[制限事項](#limitations) を参照してください。
|
|
393
|
+
|
|
394
|
+
## 初回セットアップ
|
|
395
|
+
|
|
396
|
+
新規インスタンス(空のデータベース)でダッシュボードを開くと、自動的に **`/init`** ページにリダイレクトされます:
|
|
397
|
+
|
|
398
|
+
1. 最初のアカウントを作成します。ユーザーコレクションが空のため、このアカウントは自動的に **スーパー管理者** に昇格します。
|
|
399
|
+
2. Resend または SMTP リレー経由で確認メールが送信されます。メール確認は **必須** です。そのため、起動前にメーラーを設定する必要があります。
|
|
400
|
+
3. メール内のリンクをクリックし、サインインします。
|
|
401
|
+
|
|
402
|
+
管理者が存在する場合、`/init` は通常のサインインページにリダイレクトされます。
|
|
155
403
|
|
|
156
404
|
## 環境変数
|
|
157
405
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
| `PORT`
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `DOMAIN`
|
|
178
|
-
| `
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
| `
|
|
184
|
-
| `
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
| `OPENAI_API_KEY` | AIアシストによる翻訳とコンテンツ監査 |
|
|
198
|
-
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | 請求とサブスクリプション管理 |
|
|
199
|
-
| `RESEND_API_KEY` | Resendを介したトランザクションメール (設定されている場合、Mailpitを上書き) |
|
|
200
|
-
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuthログイン |
|
|
201
|
-
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuthログイン |
|
|
202
|
-
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuthログイン |
|
|
203
|
-
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuthログイン |
|
|
204
|
-
| `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | LinkedIn OAuthログイン |
|
|
205
|
-
| `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Atlassian OAuthログイン |
|
|
406
|
+
両方の Docker モードは、[`docker/selfhost/.env.template`](https://github.com/aymericzip/intlayer/blob/main/docker/selfhost/.env.template) から生成された同じファイル(コンテナ用は `intlayer.env`、Compose 用は `.env`)を読み取ります。
|
|
407
|
+
|
|
408
|
+
### 必須項目
|
|
409
|
+
|
|
410
|
+
| Variable | Example | Description |
|
|
411
|
+
| ---------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
412
|
+
| `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
|
|
413
|
+
| `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret for the bundled MinIO |
|
|
414
|
+
| `RESEND_API_KEY` | _(your key)_ | Transactional email via Resend. Required for first-run setup unless an SMTP relay is configured instead (see [Global mailer](#global-mailer)) |
|
|
415
|
+
|
|
416
|
+
### デプロイによって固定
|
|
417
|
+
|
|
418
|
+
These are set by the image (all-in-one) or by the compose file, and only need overriding for a non-standard topology.
|
|
419
|
+
|
|
420
|
+
| Variable | All-in-one | Docker Compose | Description |
|
|
421
|
+
| ------------------ | --------------------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------- |
|
|
422
|
+
| `PORT` | `3100` | `3100` | Backend listening port |
|
|
423
|
+
| `APP_URL` | `http://localhost:3000` | `http://localhost:3000` | Public URL of the dashboard |
|
|
424
|
+
| `BACKEND_URL` | `http://localhost:3100` | `http://localhost:3100` | Public URL of the backend API |
|
|
425
|
+
| `DOMAIN` | `localhost` | `localhost` | Cookie domain |
|
|
426
|
+
| `SELF_HOSTED` | `true` | `true` | Disables the cloud-only API endpoints (billing, subscriptions, marketplace) |
|
|
427
|
+
| `MONGODB_URI` | `mongodb://127.0.0.1:27017/intlayer?replicaSet=rs0` | `mongodb://mongo:27017/…` | MongoDB connection string, any `mongodb://` or `mongodb+srv://` cluster works |
|
|
428
|
+
| `REDIS_URL` | `redis://127.0.0.1:6379` | `redis://redis:6379` | Redis |
|
|
429
|
+
| `S3_ENDPOINT` | `http://127.0.0.1:9000` | `http://minio:9000` | MinIO (server-to-server) |
|
|
430
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | `http://localhost:9000/intlayer` | Public URL for browser asset loading |
|
|
431
|
+
| `S3_BUCKET_NAME` | `intlayer` | `intlayer` | Bucket name |
|
|
432
|
+
| `S3_ACCESS_KEY_ID` | `intlayer` | `intlayer` | MinIO access key |
|
|
433
|
+
|
|
434
|
+
Compose の `app` サービスは追加で `INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100` を受け取ります: ブラウザは `localhost:3100` で API にアクセスしますが、サーバーサイドレンダリングは Compose ネットワーク内で実行されるため、サービス名を使用する必要があります。
|
|
435
|
+
|
|
436
|
+
### オプション(設定しない場合でも機能は正常にフォールバックします)
|
|
437
|
+
|
|
438
|
+
| Variable | Feature |
|
|
439
|
+
| ------------------------------------------------ | ----------------------------------------- |
|
|
440
|
+
| `OPENAI_API_KEY` | AI-assisted translation and content audit |
|
|
441
|
+
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
|
|
442
|
+
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
|
|
443
|
+
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
|
|
444
|
+
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
|
|
206
445
|
|
|
207
446
|
### グローバルメーラー
|
|
208
447
|
|
|
209
|
-
|
|
448
|
+
パスワードのリセットやマジックリンクなど、組織外のメールを含むすべてのトランザクションメールは、次の2つのグローバルトランスポートのいずれかを経由します:
|
|
210
449
|
|
|
211
|
-
`
|
|
450
|
+
- **Resend**: `RESEND_API_KEY` を使用。
|
|
451
|
+
- **SMTP**: `MAIL_SMTP_*` 変数を使用。`MAIL_SMTP_HOST` が設定されると直ちに SMTP が使用され、`RESEND_API_KEY` は無視されます。
|
|
212
452
|
|
|
213
|
-
|
|
214
|
-
| -------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------ |
|
|
215
|
-
| `MAIL_PROVIDER` | `smtp` | グローバルトランスポート: `smtp` または `resend`。デフォルトを使用する場合は未設定のままにしてください |
|
|
216
|
-
| `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | 送信者ヘッダー。ベアアドレスまたは `Name <email>` 形式を受け入れます |
|
|
217
|
-
| `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP ホスト (`MAIL_PROVIDER=smtp` の場合は必須) |
|
|
218
|
-
| `MAIL_SMTP_PORT` | `587` | SMTP ポート (デフォルトは `587`) |
|
|
219
|
-
| `MAIL_SMTP_SECURE` | `false` | 暗黙的な TLS。ポート `465` の場合は `true` に設定してください |
|
|
220
|
-
| `MAIL_SMTP_USER` | _(your user)_ | SMTP ユーザー名 (オプション; 認証されていないリレーの場合は省略可) |
|
|
221
|
-
| `MAIL_SMTP_PASSWORD` | _(your password)_ | SMTP パスワード |
|
|
453
|
+
`MAIL_PROVIDER` は、両方が構成されている場合に一方のトランスポートを強制するためにのみ必要です(たとえば、SMTP ホストが存在する場合に Resend を維持するために `MAIL_PROVIDER=resend`)。
|
|
222
454
|
|
|
223
|
-
|
|
455
|
+
| Variable | Example | Description |
|
|
456
|
+
| -------------------- | ------------------------------ | ---------------------------------------------------------------------------- |
|
|
457
|
+
| `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Sender header for either transport. Accepts a bare address or `Name <email>` |
|
|
458
|
+
| `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP host. Setting it selects the SMTP transport |
|
|
459
|
+
| `MAIL_SMTP_PORT` | `587` | SMTP port (defaults to `587`) |
|
|
460
|
+
| `MAIL_SMTP_SECURE` | `false` | Implicit TLS. Set `true` for port `465` |
|
|
461
|
+
| `MAIL_SMTP_USER` | _(your user)_ | SMTP username (optional; omit for unauthenticated relays) |
|
|
462
|
+
| `MAIL_SMTP_PASSWORD` | _(your password)_ | SMTP password |
|
|
463
|
+
| `MAIL_PROVIDER` | `resend` | Optional override: `smtp` or `resend`. Leave unset to auto-select |
|
|
224
464
|
|
|
225
|
-
|
|
465
|
+
> 優先順位: 組織独自のメーラー(**組織** ダッシュボードから構成)はグローバルメーラーよりも優先され、グローバルメーラーはデフォルトの Resend キーよりも優先されます。
|
|
226
466
|
|
|
227
|
-
|
|
467
|
+
## Intlayer プロジェクトの接続
|
|
468
|
+
|
|
469
|
+
スタックが実行されたら、`intlayer.org` ではなく、セルフホストされたバックエンドとダッシュボードを指すようにプロジェクトを設定します。
|
|
228
470
|
|
|
229
471
|
### プロジェクト設定
|
|
230
472
|
|
|
@@ -237,23 +479,23 @@ const config: IntlayerConfig = {
|
|
|
237
479
|
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
238
480
|
|
|
239
481
|
/**
|
|
240
|
-
*
|
|
241
|
-
*
|
|
482
|
+
* URL of the self-hosted CMS dashboard.
|
|
483
|
+
* Default: https://app.intlayer.org
|
|
242
484
|
*/
|
|
243
|
-
cmsURL: process.env.INTLAYER_CMS_URL, //
|
|
485
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
|
|
244
486
|
|
|
245
487
|
/**
|
|
246
|
-
*
|
|
247
|
-
*
|
|
488
|
+
* URL of the self-hosted backend API.
|
|
489
|
+
* Default: https://back.intlayer.org
|
|
248
490
|
*/
|
|
249
|
-
backendURL: process.env.INTLAYER_BACKEND_URL, //
|
|
491
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
|
|
250
492
|
},
|
|
251
493
|
};
|
|
252
494
|
|
|
253
495
|
export default config;
|
|
254
496
|
```
|
|
255
497
|
|
|
256
|
-
|
|
498
|
+
Set the environment variables in your project's `.env`:
|
|
257
499
|
|
|
258
500
|
```sh
|
|
259
501
|
INTLAYER_CMS_URL=http://localhost:3000
|
|
@@ -262,11 +504,11 @@ INTLAYER_CLIENT_ID=<your-client-id>
|
|
|
262
504
|
INTLAYER_CLIENT_SECRET=<your-client-secret>
|
|
263
505
|
```
|
|
264
506
|
|
|
265
|
-
|
|
507
|
+
セルフホストダッシュボードの **Projects → Access keys** (`http://localhost:3000/projects`) でアクセス資格情報を作成します。
|
|
266
508
|
|
|
267
509
|
### `@intlayer/api` SDK
|
|
268
510
|
|
|
269
|
-
`@intlayer/api` SDK
|
|
511
|
+
プログラムで `@intlayer/api` SDK を使用する場合、`backendURL` を明示的に渡します:
|
|
270
512
|
|
|
271
513
|
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
272
514
|
import { createIntlayerCMS } from "@intlayer/api";
|
|
@@ -283,84 +525,17 @@ const cms = createIntlayerCMS({
|
|
|
283
525
|
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
284
526
|
```
|
|
285
527
|
|
|
286
|
-
## アップグレード
|
|
287
|
-
|
|
288
|
-
これにより、最新のイメージがプルされ、`docker compose pull && docker compose up -d` でコンテナが再起動されます。既存のボリューム (`mongo-data`、`redis-data`、`minio-data`) は保持され、データ損失はありません。
|
|
289
|
-
|
|
290
|
-
```sh
|
|
291
|
-
docker compose pull
|
|
292
|
-
docker compose up -d
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
## バックアップと復元
|
|
296
|
-
|
|
297
|
-
すべての永続データは、3つの名前付きDockerボリュームに保存されます。
|
|
298
|
-
|
|
299
|
-
### バックアップ
|
|
300
|
-
|
|
301
|
-
```sh
|
|
302
|
-
docker run --rm \
|
|
303
|
-
-v intlayer_mongo-data:/data \
|
|
304
|
-
-v "$(pwd)":/backup \
|
|
305
|
-
busybox tar czf /backup/mongo-data.tar.gz /data
|
|
306
|
-
|
|
307
|
-
docker run --rm \
|
|
308
|
-
-v intlayer_redis-data:/data \
|
|
309
|
-
-v "$(pwd)":/backup \
|
|
310
|
-
busybox tar czf /backup/redis-data.tar.gz /data
|
|
311
|
-
|
|
312
|
-
docker run --rm \
|
|
313
|
-
-v intlayer_minio-data:/data \
|
|
314
|
-
-v "$(pwd)":/backup \
|
|
315
|
-
busybox tar czf /backup/minio-data.tar.gz /data
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### 復元
|
|
319
|
-
|
|
320
|
-
```sh
|
|
321
|
-
docker run --rm \
|
|
322
|
-
-v intlayer_mongo-data:/data \
|
|
323
|
-
-v "$(pwd)":/backup \
|
|
324
|
-
busybox tar xzf /backup/mongo-data.tar.gz -C /
|
|
325
|
-
|
|
326
|
-
# redis-data と minio-data についても同様に繰り返します
|
|
327
|
-
```
|
|
328
|
-
|
|
329
528
|
## 制限事項
|
|
330
529
|
|
|
331
|
-
-
|
|
332
|
-
-
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
## トラブルシューティング
|
|
336
|
-
|
|
337
|
-
### 最初の起動時にバックエンドがクラッシュループする
|
|
338
|
-
|
|
339
|
-
バックエンドが起動する前に、MongoDBとRedisが正常である必要があります。composeファイルは `condition: service_healthy` とともに `depends_on` を使用しています。バックエンドの再起動が繰り返される場合は、`mongo` と `redis` のヘルスチェックがパスしているか確認してください。
|
|
340
|
-
|
|
341
|
-
```sh
|
|
342
|
-
docker compose ps
|
|
343
|
-
docker compose logs mongo
|
|
344
|
-
docker compose logs redis
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
ログの上部付近で `MongoDB connection error` を探してください。
|
|
348
|
-
|
|
349
|
-
### メールが送信されない
|
|
350
|
-
|
|
351
|
-
デフォルトでは、すべての送信メールはMailpitによって捕捉されます。送信されたメッセージを確認するには、`http://localhost:8025` を開いてください。実際のメールを送信するには、`.env` で `MAIL_PROVIDER=resend` と `RESEND_API_KEY=<your-key>` を設定し、バックエンドを再起動します。
|
|
352
|
-
|
|
353
|
-
### MinIOバケットが見つからない
|
|
354
|
-
|
|
355
|
-
`minio-init` ワンショットサービスが実行されなかった場合 (またはMinIOが準備できる前に実行された場合) は、手動でバケットを作成してください。
|
|
356
|
-
|
|
357
|
-
```sh
|
|
358
|
-
docker compose run --rm minio-init
|
|
359
|
-
```
|
|
530
|
+
- **カスタムドメインおよびポート再マッピングの未対応。** ブラウザ向けのすべての `VITE_*` URL はビルド時にダッシュボードに組み込まれ、公開イメージ(およびデスクトップアプリ)には `localhost` / Intlayer Cloud の値が設定されています。ダッシュボードは `http://localhost:3000`、API は `:3100`、MinIO は `:9000` でアクセスする必要があります。公開ドメインでホストする場合、またはデスクトップアプリをセルフホストバックエンドに向ける場合は、ターゲット URL を組み込んだ状態でのリビルド(`docker/selfhost/Dockerfile` または `docker-compose.build.yml` 上で `--build-arg VITE_BACKEND_URL=… VITE_SITE_URL=… VITE_DOMAIN=…` を指定)が必要であり、初期状態ではサポートされていません。
|
|
531
|
+
- **メール送信には機能するメーラーが必要です。** 初回セットアップではメール確認が必須となるため、`RESEND_API_KEY` または [SMTP リレー](#global-mailer) (`MAIL_SMTP_*`) のいずれかを構成する必要があります。最初の管理者がサインインした後、各組織はダッシュボードから独自の SMTP または Resend メーラーを構成することもできます。
|
|
532
|
+
- **デスクトップアプリは組み込みサーバーを起動するためにマシン上に Node.js を必要とします。**
|
|
360
533
|
|
|
361
|
-
##
|
|
534
|
+
## 便利なリンク
|
|
362
535
|
|
|
363
536
|
- [Intlayer CMS ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)
|
|
364
537
|
- [設定リファレンス](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)
|
|
365
|
-
- [CMS SDK
|
|
366
|
-
- [
|
|
538
|
+
- [CMS SDK: `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
|
|
539
|
+
- [デスクトップアプリのリリース](https://github.com/aymericzip/intlayer/releases/latest)
|
|
540
|
+
- Docker Hub: [`intlayer/cms-all`](https://hub.docker.com/r/intlayer/cms-all), [`intlayer/cms-frontend`](https://hub.docker.com/r/intlayer/cms-frontend), [`intlayer/cms-backend`](https://hub.docker.com/r/intlayer/cms-backend)、GHCR ミラー: `ghcr.io/aymericzip/intlayer/`
|
|
541
|
+
- [`docker/selfhost/`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost): Dockerfile、`docker-compose.yml`、`.env.template`
|