@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/tr/self_hosting.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-30
|
|
3
|
-
updatedAt: 2026-
|
|
4
|
-
title: Intlayer
|
|
5
|
-
description:
|
|
3
|
+
updatedAt: 2026-09-21
|
|
4
|
+
title: Intlayer Kendi Kendine Barındırma (Self-Hosting)
|
|
5
|
+
description: "Intlayer'ı kendi altyapınızda çalıştırın: masaüstü uygulaması, tek hepsi-bir-arada Docker kapsayıcısı veya ölçeklenebilir bir Docker Compose yığını. Intlayer Cloud hesabı gerekmez."
|
|
6
6
|
keywords:
|
|
7
|
-
-
|
|
7
|
+
- Self-Hosting
|
|
8
|
+
- Kendi Kendine Barındırma
|
|
8
9
|
- Docker
|
|
9
10
|
- Docker Compose
|
|
11
|
+
- Masaüstü Uygulaması
|
|
10
12
|
- Intlayer
|
|
11
13
|
- CMS
|
|
12
14
|
- Kurulum
|
|
@@ -17,216 +19,457 @@ slugs:
|
|
|
17
19
|
author: aymericzip
|
|
18
20
|
---
|
|
19
21
|
|
|
20
|
-
# Intlayer
|
|
22
|
+
# Intlayer Kendi Kendine Barındırma (Self-Hosting)
|
|
21
23
|
|
|
22
|
-
Intlayer,
|
|
24
|
+
Intlayer, bir Intlayer Cloud hesabına ihtiyaç duymadan kendi altyapınızda çalışabilir. Aynı yükleyici (`install.sh`, Windows üzerinde `install.ps1` veya `npx intlayer init infra`) ile yapılandırılabilen üç kurulum sunulmaktadır:
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
| Setup | What it is | Pick it for |
|
|
27
|
+
| -------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
28
|
+
| **Masaüstü Uygulaması** | macOS, Linux ve Windows için yerel kontrol paneli | Yerel bir istemci, barındırma gerekmez |
|
|
29
|
+
| **Hepsi-Bir-Arada Docker** | Kontrol paneli, API, MongoDB, Redis ve MinIO **tek bir kapsayıcıda** | Testler ve küçük tek sunuculu kurulumlar |
|
|
30
|
+
| **Docker Compose** | **Hizmet başına bir kapsayıcı**, her veri deposu yönetilen bir hizmetle değiştirilebilir | Üretim, ölçekleme, yönetilen veritabanları |
|
|
31
|
+
|
|
32
|
+
## Table of Contents
|
|
33
|
+
|
|
34
|
+
<TOC/>
|
|
35
|
+
|
|
36
|
+
## Yayınlanan İmajlar ve Paketler
|
|
37
|
+
|
|
38
|
+
| Artifact | Docker Hub | GHCR mirror | Contents |
|
|
39
|
+
| -------------------- | ------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------- |
|
|
40
|
+
| 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 |
|
|
41
|
+
| Dashboard (frontend) | [`intlayer/cms-frontend`](https://hub.docker.com/r/intlayer/cms-frontend) | `ghcr.io/aymericzip/intlayer/cms-frontend` | TanStack Start dashboard on Bun |
|
|
42
|
+
| 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 |
|
|
43
|
+
| Desktop app | [GitHub releases](https://github.com/aymericzip/intlayer/releases/latest) | n/a | `.dmg` (macOS), `.deb` / `.rpm` / `.AppImage` (Linux), `.exe` / `.msi` (Windows) |
|
|
44
|
+
|
|
45
|
+
Her üç imaj da aynı [`docker/selfhost/Dockerfile`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost) dosyasından oluşturulur ve her sürümde yayınlanır. Compose yığını ayrıca resmi `mongo:8`, `redis:8-alpine` ve `quay.io/minio/minio` imajlarını çeker.
|
|
46
|
+
|
|
47
|
+
## Kurulum
|
|
48
|
+
|
|
49
|
+
Yükleyici istediğiniz kurulumu sorar, önkoşulları kontrol eder (Docker kurulumunu önerir), önceden oluşturulmuş gizli anahtarlarla ortam dosyasını yazar ve imajları çeker. Kendi kendine hiçbir şey başlatmaz: Docker modları önce bir e-posta göndericisinin ayarlanmasını gerektirir, bu nedenle çalıştırılacak komutu yazdırarak tamamlanır. Tekrar çalıştırmak güvenlidir: mevcut bir ortam dosyasının üzerine asla yazılmaz, bu da onu bir güncelleme yolu haline getirir.
|
|
50
|
+
|
|
51
|
+
<Tabs group="mode">
|
|
52
|
+
<Tab label="Masaüstü Uygulaması" value="desktop">
|
|
53
|
+
|
|
54
|
+
Tauri ile oluşturulmuş yerel bir uygulama olarak Intlayer kontrol paneli. Intlayer Cloud (`https://app.intlayer.org`) üzerinden oturum açar, bu nedenle barındırma gerekmez. Bir tarayıcı sekmesi yerine yerel bir istemci tercih ettiğinizde en iyi seçenektir.
|
|
55
|
+
|
|
56
|
+
### Yükleme
|
|
57
|
+
|
|
58
|
+
Yükleyici işletim sisteminiz ve işlemciniz için uygun paketi indirir ve açar (macOS), yükler (Linux'ta `dpkg` / `rpm`) veya kurulum sihirbazını başlatır (Windows). Ayrıca [Sürümler sayfasından](https://github.com/aymericzip/intlayer/releases/latest) manuel olarak da indirebilirsiniz.
|
|
59
|
+
|
|
60
|
+
<Tabs group="os">
|
|
61
|
+
<Tab label="macOS / Linux" value="unix">
|
|
25
62
|
|
|
26
63
|
```sh
|
|
27
|
-
curl -fsSL https://intlayer.org/install.sh | sh
|
|
64
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
|
|
28
65
|
```
|
|
29
66
|
|
|
30
|
-
|
|
67
|
+
</Tab>
|
|
68
|
+
<Tab label="Windows" value="windows">
|
|
31
69
|
|
|
32
|
-
|
|
70
|
+
In PowerShell:
|
|
33
71
|
|
|
34
|
-
|
|
72
|
+
```powershell
|
|
73
|
+
$env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
|
|
74
|
+
```
|
|
35
75
|
|
|
36
|
-
|
|
76
|
+
</Tab>
|
|
77
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx intlayer init infra --mode desktop
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
</Tab>
|
|
84
|
+
</Tabs>
|
|
37
85
|
|
|
38
|
-
|
|
86
|
+
### Gereksinimler
|
|
87
|
+
|
|
88
|
+
- **Node.js**: Uygulama kontrol paneli sunucusunu yerleşik olarak içerir ve makinenin `node` ikili dosyasıyla başlatır. Uygulama açılmazsa [nodejs.org](https://nodejs.org) adresinden yükleyin.
|
|
89
|
+
|
|
90
|
+
> Yayınlanan masaüstü derlemesi Intlayer Cloud arka ucuyla iletişim kurar. Kendi kendine barındırılan bir arka uca yönlendirmek, uygulamanın API'nize işaret eden `VITE_BACKEND_URL` ile yeniden derlenmesini gerektirir, bkz. [Sınırlamalar](#limitations).
|
|
91
|
+
|
|
92
|
+
</Tab>
|
|
93
|
+
<Tab label="Hepsi-Bir-Arada Docker" value="docker">
|
|
94
|
+
|
|
95
|
+
Her şey [s6-overlay](https://github.com/just-containers/s6-overlay) tarafından denetlenen tek bir `intlayer/cms-all` kapsayıcısı içinde çalışır ve tüm veri depoları tek bir birimde kalıcı olarak saklanır.
|
|
39
96
|
|
|
40
97
|
```
|
|
41
98
|
┌─────────────────────────────┐
|
|
42
99
|
browser ──────▶ │ app (TanStack Start) :3000│ ──┐
|
|
43
|
-
|
|
100
|
+
(localhost) └─────────────────────────────┘ │ VITE_BACKEND_URL (baked at build)
|
|
44
101
|
┌─────────────────────────────┐ │
|
|
45
102
|
│ backend (Fastify/Bun) :3100│ ◀─┘
|
|
46
103
|
└──────────────┬──────────────┘
|
|
47
|
-
|
|
48
|
-
▼ ▼ ▼
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
(konsol) (web arayüzü)
|
|
104
|
+
┌──────────┬─────────┼──────────────┐
|
|
105
|
+
▼ ▼ ▼ ▼
|
|
106
|
+
mongo:27017 redis:6379 minio:9000 Chromium
|
|
107
|
+
/data/mongo /data/redis /data/minio (in-image)
|
|
108
|
+
(1-node RS) minio:9001
|
|
53
109
|
```
|
|
54
110
|
|
|
55
|
-
|
|
111
|
+
| Hizmet | Ana Bilgisayar Port(lar)ı | Amaç |
|
|
112
|
+
| ----------- | ---------------------------- | ------------------------------------------------------------ |
|
|
113
|
+
| **app** | `3000` | Kontrol paneli (CMS kullanıcı arayüzü) |
|
|
114
|
+
| **backend** | `3100` | REST API (`/health` uç noktası) |
|
|
115
|
+
| **mongo** | dahili | MongoDB 8, tek düğümlü replika seti `rs0` |
|
|
116
|
+
| **redis** | dahili | İş kuyrukları (BullMQ) ve önbellekleme |
|
|
117
|
+
| **minio** | `9000` (S3), `9001` (konsol) | Avatarlar ve ekran görüntüleri için S3 uyumlu nesne depolama |
|
|
118
|
+
|
|
119
|
+
Önyükleme sırası s6 bağımlılıkları tarafından yönetilir (`mongod` → replika seti başlatma, `minio` → demet oluşturma, ardından `backend`, ardından `app`) ve hizmetler sonlandığında yeniden başlatılır, böylece ilk önyükleme kendi kendini toparlar.
|
|
56
120
|
|
|
57
|
-
|
|
121
|
+
### Önkoşullar
|
|
58
122
|
|
|
59
|
-
- **Docker** ≥ 24
|
|
60
|
-
- Ana bilgisayarda `3000`, `3100`, `
|
|
61
|
-
- Bir
|
|
123
|
+
- **Docker** ≥ 24: Yükleyici kurulumu önerir (Linux'ta [get.docker.com](https://get.docker.com), macOS'ta Homebrew). Windows'ta önce [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/) (WSL 2 arka ucu) kurun.
|
|
124
|
+
- Ana bilgisayarda `3000`, `3100`, `9000` ve `9001` portları boş olmalıdır. Tarayıcı varlıkları doğrudan `S3_PUBLIC_URL` adresinden yüklediğinden MinIO `9000` portu tarayıcı tarafından erişilebilir kalmalıdır.
|
|
125
|
+
- Bir e-posta göndericisi (mailer): [Resend](https://resend.com) API anahtarı veya bir SMTP geçişi.
|
|
62
126
|
|
|
63
|
-
|
|
127
|
+
### 1. Yükleme
|
|
64
128
|
|
|
65
|
-
|
|
129
|
+
Oluşturulan `BETTER_AUTH_SECRET` ve `S3_SECRET_ACCESS_KEY` ile birlikte `./intlayer.env` dosyasını yazar ve `intlayer/cms-all:latest` imajını çeker.
|
|
66
130
|
|
|
67
|
-
|
|
131
|
+
<Tabs group="os">
|
|
132
|
+
<Tab label="macOS / Linux" value="unix">
|
|
68
133
|
|
|
69
134
|
```sh
|
|
70
|
-
curl -fsSL https://intlayer.org/install.sh | sh
|
|
135
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
</Tab>
|
|
139
|
+
<Tab label="Windows" value="windows">
|
|
140
|
+
|
|
141
|
+
In PowerShell:
|
|
142
|
+
|
|
143
|
+
```powershell
|
|
144
|
+
$env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
|
|
71
145
|
```
|
|
72
146
|
|
|
73
|
-
|
|
147
|
+
</Tab>
|
|
148
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
74
149
|
|
|
75
|
-
|
|
150
|
+
CLI, yükleyiciyi çalıştırır ve diğer sekmelerde gösterilen `docker run …` komutunu yazdırır. E-posta göndericisini yapılandırdıktan sonra terminalinize yapıştırın.
|
|
76
151
|
|
|
77
|
-
|
|
152
|
+
</Tab>
|
|
153
|
+
</Tabs>
|
|
78
154
|
|
|
79
|
-
|
|
155
|
+
### 2. E-posta Göndericisini Yapılandırın
|
|
156
|
+
|
|
157
|
+
`intlayer.env` dosyasını açın ve Resend **veya** SMTP bilgilerini doldurun (ayrıntılar için [Genel e-posta göndericisi](#global-mailer) bölümüne bakın):
|
|
80
158
|
|
|
81
159
|
```sh fileName="intlayer.env"
|
|
82
|
-
|
|
83
|
-
DB_MDP=<atlas-password>
|
|
84
|
-
DB_CLUSTER=<cluster>.xxxxx.mongodb.net
|
|
160
|
+
# Option A: Resend
|
|
85
161
|
RESEND_API_KEY=<your-resend-key>
|
|
86
|
-
```
|
|
87
162
|
|
|
88
|
-
|
|
163
|
+
# Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
|
|
164
|
+
MAIL_SMTP_HOST=smtp.example.com
|
|
165
|
+
MAIL_SMTP_PORT=587
|
|
166
|
+
MAIL_SMTP_USER=<user>
|
|
167
|
+
MAIL_SMTP_PASSWORD=<password>
|
|
168
|
+
MAIL_FROM=Intlayer <no-reply@example.com>
|
|
169
|
+
```
|
|
89
170
|
|
|
90
|
-
|
|
171
|
+
### 3. Başlatma
|
|
91
172
|
|
|
92
|
-
|
|
173
|
+
Yükleyici tarafından yazdırılan çalıştırma komutudur:
|
|
93
174
|
|
|
94
|
-
|
|
175
|
+
<Tabs group="os">
|
|
176
|
+
<Tab label="macOS / Linux" value="unix">
|
|
95
177
|
|
|
96
178
|
```sh
|
|
97
179
|
docker run -d --name intlayer \
|
|
98
180
|
--restart unless-stopped \
|
|
99
|
-
-p 3000:3000 \
|
|
100
|
-
-p 3100:3100 \
|
|
101
|
-
-p 9000:9000 \
|
|
102
|
-
-p 9001:9001 \
|
|
181
|
+
-p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
|
|
103
182
|
-v intlayer-data:/data \
|
|
104
183
|
--env-file ./intlayer.env \
|
|
105
|
-
|
|
184
|
+
intlayer/cms-all:latest
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
</Tab>
|
|
188
|
+
<Tab label="Windows" value="windows">
|
|
189
|
+
|
|
190
|
+
```powershell
|
|
191
|
+
docker run -d --name intlayer `
|
|
192
|
+
--restart unless-stopped `
|
|
193
|
+
-p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
|
|
194
|
+
-v intlayer-data:/data `
|
|
195
|
+
--env-file ./intlayer.env `
|
|
196
|
+
intlayer/cms-all:latest
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
</Tab>
|
|
200
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
201
|
+
|
|
202
|
+
CLI, yükleyiciyi çalıştırır ve diğer sekmelerde gösterilen `docker run …` komutunu yazdırır. E-posta göndericisini yapılandırdıktan sonra terminalinize yapıştırın.
|
|
203
|
+
|
|
204
|
+
</Tab>
|
|
205
|
+
</Tabs>
|
|
206
|
+
|
|
207
|
+
**http://localhost:3000** adresini açın ve [İlk Çalıştırma Kurulumu](#first-run-setup) adımlarını izleyin. İlk önyüklemede replika seti ve demet başlatılır, bu nedenle bir dakika bekleyin.
|
|
208
|
+
|
|
209
|
+
### Yedekleme ve Güncelleme
|
|
210
|
+
|
|
211
|
+
Tüm durum `intlayer-data` birimi (`/data/mongo`, `/data/redis`, `/data/minio`) içinde tutulur.
|
|
212
|
+
|
|
213
|
+
```sh
|
|
214
|
+
# Backup (stop the container first so MongoDB's files are consistent)
|
|
215
|
+
docker stop intlayer
|
|
216
|
+
docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
|
|
217
|
+
docker start intlayer
|
|
218
|
+
|
|
219
|
+
# Restore
|
|
220
|
+
docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Güncellemek için yükleyiciyi tekrar çalıştırın (en son imajı çeker ve `intlayer.env` dosyasını korur), ardından `docker rm -f intlayer` komutunu çalıştırın ve başlatma komutunu yeniden çalıştırın. Birlikte gelen yerine yönetilen bir MongoDB kullanmak için `intlayer.env` dosyasında `MONGODB_URI` değişkenini ayarlayın.
|
|
224
|
+
|
|
225
|
+
</Tab>
|
|
226
|
+
<Tab label="Docker Compose" value="compose">
|
|
227
|
+
|
|
228
|
+
Özel bir Compose ağında hizmet başına bir kapsayıcı. Kontrol paneli ve API, yayınlanan `intlayer/cms-frontend` ve `intlayer/cms-backend` imajlarını kullanır; veri depoları ise resmi `mongo`, `redis` ve `minio` imajlarını kullanır.
|
|
229
|
+
|
|
106
230
|
```
|
|
231
|
+
┌───────────────────┐
|
|
232
|
+
browser ──────▶ │ app :3000 │ ── SSR ──▶ http://backend:3100
|
|
233
|
+
(localhost) └───────────────────┘
|
|
234
|
+
┌───────────────────┐
|
|
235
|
+
browser ──────▶ │ backend :3100 │
|
|
236
|
+
(localhost) └─────────┬─────────┘
|
|
237
|
+
┌───────────────┼───────────────┐
|
|
238
|
+
▼ ▼ ▼
|
|
239
|
+
mongo:27017 redis:6379 minio:9000 ◀── browser (assets)
|
|
240
|
+
(1-node RS) minio:9001
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
| Hizmet | İmaj | Rol |
|
|
244
|
+
| ------------ | ----------------------- | -------------------------------------------------------------------------- |
|
|
245
|
+
| `app` | `intlayer/cms-frontend` | `:3000` portundaki kontrol paneli; arka ucun sağlıklı olmasını bekler |
|
|
246
|
+
| `backend` | `intlayer/cms-backend` | Chromium ile `:3100` portundaki API; Mongo, Redis ve MinIO demetini bekler |
|
|
247
|
+
| `mongo` | `mongo:8` | Kendi durum kontrolü ile başlatılan tek düğümlü replika seti `rs0` |
|
|
248
|
+
| `redis` | `redis:8-alpine` | Kuyruklar ve önbellekleme, yalnızca eklemeli (append-only) kalıcılık |
|
|
249
|
+
| `minio` | `quay.io/minio/minio` | `:9000` portunda S3 depolama, `:9001` portunda konsol |
|
|
250
|
+
| `minio-init` | `quay.io/minio/mc` | Tek seferlik: demeti ve anonim indirme politikasını oluşturur |
|
|
251
|
+
|
|
252
|
+
Veriler `intlayer_mongo-data`, `intlayer_redis-data` ve `intlayer_minio-data` birimlerinde depolanır. Hizmet bağlantıları (`MONGODB_URI`, `REDIS_URL`, `S3_ENDPOINT`, sunucu tarafı işleme için dahili arka uç URL'si) compose dosyasında tanımlıdır ve yalnızca gizli anahtarları ve isteğe bağlı entegrasyonları barındıran `.env` dosyasına göre önceliklidir.
|
|
253
|
+
|
|
254
|
+
### Önkoşullar
|
|
255
|
+
|
|
256
|
+
- **Docker** ≥ 24 (Compose eklentisiyle birlikte): Yükleyici Linux ve macOS'ta kurulumu önerir. Windows'ta önce [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/) (WSL 2 arka ucu) kurun.
|
|
257
|
+
- Ana bilgisayarda `3000`, `3100`, `9000` ve `9001` portları boş olmalıdır.
|
|
258
|
+
- Bir e-posta göndericisi: [Resend](https://resend.com) API anahtarı veya bir SMTP geçişi.
|
|
259
|
+
|
|
260
|
+
### 1. Yükleme
|
|
107
261
|
|
|
108
|
-
|
|
262
|
+
Oluşturulan gizli anahtarlarla birlikte `docker-compose.yml` ve bir `.env` dosyasını `./intlayer/` dizinine yazar ve imajları çeker.
|
|
109
263
|
|
|
110
|
-
>
|
|
264
|
+
<Tabs group="os">
|
|
265
|
+
<Tab label="macOS / Linux" value="unix">
|
|
111
266
|
|
|
112
|
-
|
|
267
|
+
```sh
|
|
268
|
+
curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
|
|
269
|
+
```
|
|
113
270
|
|
|
114
|
-
|
|
271
|
+
Or by hand:
|
|
115
272
|
|
|
116
273
|
```sh
|
|
117
|
-
|
|
274
|
+
mkdir intlayer && cd intlayer
|
|
275
|
+
curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
|
|
276
|
+
curl -fsSL https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
|
|
277
|
+
# fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
</Tab>
|
|
281
|
+
<Tab label="Windows" value="windows">
|
|
282
|
+
|
|
283
|
+
In PowerShell:
|
|
284
|
+
|
|
285
|
+
```powershell
|
|
286
|
+
$env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Or by hand:
|
|
290
|
+
|
|
291
|
+
```powershell
|
|
292
|
+
mkdir intlayer; cd intlayer
|
|
293
|
+
irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
|
|
294
|
+
irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
|
|
295
|
+
# fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
|
|
118
296
|
```
|
|
119
297
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
| `INTLAYER_IMAGE` | `ghcr.io/aymericzip/intlayer-selfhost:latest` | Çekilecek image |
|
|
123
|
-
| `INTLAYER_ENV_FILE` | `./intlayer.env` | Env dosyasının yazılacağı yer |
|
|
124
|
-
| `INTLAYER_CONTAINER_NAME` | `intlayer` | Container adı |
|
|
125
|
-
| `INTLAYER_DATA_VOLUME` | `intlayer-data` | `/data` dizinine bağlı volume |
|
|
126
|
-
| `INTLAYER_APP_PORT` | `3000` | Dashboard için host portu |
|
|
127
|
-
| `INTLAYER_API_PORT` | `3100` | API için host portu |
|
|
128
|
-
| `INTLAYER_S3_PORT` | `9000` | MinIO S3 API için host portu |
|
|
129
|
-
| `INTLAYER_CONSOLE_PORT` | `9001` | MinIO konsolu için host portu |
|
|
298
|
+
</Tab>
|
|
299
|
+
<Tab label="Intlayer CLI" value="cli">
|
|
130
300
|
|
|
131
|
-
|
|
301
|
+
```bash
|
|
302
|
+
npx intlayer init infra --mode compose
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
</Tab>
|
|
306
|
+
</Tabs>
|
|
307
|
+
|
|
308
|
+
### 2. E-posta Göndericisini Yapılandırın
|
|
132
309
|
|
|
133
|
-
|
|
310
|
+
Tıpkı hepsi-bir-arada kapsayıcısında olduğu gibi `intlayer/.env` dosyasına Resend **veya** SMTP bilgilerini girin ([Genel e-posta göndericisi](#global-mailer) bölümüne bakın).
|
|
134
311
|
|
|
135
|
-
|
|
312
|
+
### 3. Başlatma
|
|
136
313
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
314
|
+
```sh
|
|
315
|
+
cd intlayer && docker compose up -d
|
|
316
|
+
```
|
|
140
317
|
|
|
141
|
-
|
|
318
|
+
**http://localhost:3000** adresini açın ve [İlk Çalıştırma Kurulumu](#first-run-setup) adımlarını izleyin.
|
|
319
|
+
|
|
320
|
+
### Yönetilen Veri Depoları
|
|
321
|
+
|
|
322
|
+
Değiştirdiğiniz hizmeti compose dosyasından (ve `backend` altındaki `depends_on` girişinden) silin ve ilgili değişkeni geçersiz kılın:
|
|
323
|
+
|
|
324
|
+
```yaml fileName="docker-compose.yml"
|
|
325
|
+
services:
|
|
326
|
+
backend:
|
|
327
|
+
environment:
|
|
328
|
+
MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
|
|
329
|
+
REDIS_URL: rediss://default:password@redis.example.com:6380
|
|
330
|
+
S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
|
|
331
|
+
S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
|
|
332
|
+
```
|
|
142
333
|
|
|
143
|
-
|
|
334
|
+
`S3_ACCESS_KEY_ID` / `S3_SECRET_ACCESS_KEY` / `S3_BUCKET_NAME` değişkenleri herhangi bir S3 uyumlu sağlayıcı ile sorunsuz çalışır.
|
|
144
335
|
|
|
145
|
-
|
|
146
|
-
| ----------- | ------------------------------------------------- | ------------------------------------- | ------------------------------------------------------------ |
|
|
147
|
-
| **app** | `apps/app/Dockerfile` dosyasından oluşturuldu | `3000` | TanStack Start kontrol paneli (CMS UI) |
|
|
148
|
-
| **backend** | `apps/backend/Dockerfile` dosyasından oluşturuldu | `3100` | Fastify REST API (`/health` uç noktası) |
|
|
149
|
-
| **mongo** | `mongo:7` | dahili | Tek düğümlü replika seti (`rs0`) |
|
|
150
|
-
| **redis** | `redis:7-alpine` | dahili | İş kuyrukları (BullMQ) ve önbellekleme (ioredis) |
|
|
151
|
-
| **minio** | `minio/minio` | `9000` (S3), `9001` (konsol) | Avatarlar ve ekran görüntüleri için S3 uyumlu nesne depolama |
|
|
152
|
-
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (web UI) | Yerel işlem e-postası alıcısı |
|
|
336
|
+
### Ölçekleme
|
|
153
337
|
|
|
154
|
-
|
|
338
|
+
`app` ve `backend` durumsuzdur (stateless). Bir yük dengeleyicinin arkasında, sabit ana bilgisayar port eşlemelerini kaldırdığınız ve proxy'nin hizmet adına göre yönlendirme yaptığı varsayımıyla `docker compose up -d --scale backend=3` komutu çalışır. Arka plan işleri Redis (BullMQ) aracılığıyla koordine edilir, bu nedenle birden çok arka uç kopyası kuyrukları güvenle paylaşır.
|
|
155
339
|
|
|
156
|
-
|
|
340
|
+
### Kaynaktan Derleme
|
|
341
|
+
|
|
342
|
+
Depo klonundan bir geçersiz kılma (override) ile iki Intlayer hizmetini `image:` yerine `build:` kullanımına geçirin:
|
|
343
|
+
|
|
344
|
+
```sh
|
|
345
|
+
cd docker/selfhost
|
|
346
|
+
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
Özel bir alan adı için imajlar oluştururken de bunu kullanın: `VITE_*` değerlerini derleme argümanları olarak iletin (bkz. [Sınırlamalar](#limitations)).
|
|
350
|
+
|
|
351
|
+
### Yedekleme ve Güncelleme
|
|
352
|
+
|
|
353
|
+
```sh
|
|
354
|
+
# Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
|
|
355
|
+
docker compose stop
|
|
356
|
+
docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
|
|
357
|
+
docker compose start
|
|
358
|
+
|
|
359
|
+
# Upgrade, volumes are kept
|
|
360
|
+
docker compose pull && docker compose up -d
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
</Tab>
|
|
364
|
+
</Tabs>
|
|
365
|
+
|
|
366
|
+
### Yükleyici Ayarları
|
|
367
|
+
|
|
368
|
+
`--mode` (veya `INTLAYER_MODE`) belirtilmezse, yükleyici bir menü sunar: `desktop`, `docker` (hepsi-bir-arada) veya `compose`. Ayrıca birkaç ortam değişkenini de okur; bunlar kabuğa yönlendirildiği için `curl` yerine doğrudan kabuğa aktarılmalıdır:
|
|
369
|
+
|
|
370
|
+
```sh
|
|
371
|
+
curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
```powershell
|
|
375
|
+
$env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
| Variable | Default | Applies to | Description |
|
|
379
|
+
| ------------------------- | ------------------------- | ---------- | ---------------------------------------------------------- |
|
|
380
|
+
| `INTLAYER_MODE` | _(asked)_ | all | `desktop`, `docker` or `compose`, same as `--mode` |
|
|
381
|
+
| `INTLAYER_DOWNLOAD_DIR` | `~/Downloads` | desktop | Where the app installer is saved |
|
|
382
|
+
| `INTLAYER_IMAGE` | `intlayer/cms-all:latest` | docker | All-in-one image to pull |
|
|
383
|
+
| `INTLAYER_ENV_FILE` | `./intlayer.env` | docker | Where to write the environment file |
|
|
384
|
+
| `INTLAYER_CONTAINER_NAME` | `intlayer` | docker | Container name |
|
|
385
|
+
| `INTLAYER_DATA_VOLUME` | `intlayer-data` | docker | Named volume mounted at `/data` |
|
|
386
|
+
| `INTLAYER_APP_PORT` | `3000` | docker | Host port for the dashboard |
|
|
387
|
+
| `INTLAYER_API_PORT` | `3100` | docker | Host port for the API |
|
|
388
|
+
| `INTLAYER_S3_PORT` | `9000` | docker | Host port for the MinIO S3 API |
|
|
389
|
+
| `INTLAYER_CONSOLE_PORT` | `9001` | docker | Host port for the MinIO console |
|
|
390
|
+
| `INTLAYER_COMPOSE_DIR` | `./intlayer` | compose | Where `docker-compose.yml` and `.env` are written |
|
|
391
|
+
| `INTLAYER_SELFHOST_REF` | `main` | both | Git ref the compose file and env template are fetched from |
|
|
392
|
+
|
|
393
|
+
> Port değişkenleri yalnızca eşlemenin **ana bilgisayar** tarafını değiştirir. Yayınlanan imajlarda kontrol paneli paketine `http://localhost:3000`, `http://localhost:3100` ve `http://localhost:9000` derlenmiştir; bu nedenle kendi imajınızı derlemediğiniz sürece varsayılan değerleri koruyun, bkz. [Sınırlamalar](#limitations).
|
|
394
|
+
|
|
395
|
+
## İlk Çalıştırma Kurulumu
|
|
396
|
+
|
|
397
|
+
Yeni bir örnekte (boş veritabanı) kontrol panelini açtığınızda otomatik olarak **`/init`** sayfasına yönlendirilirsiniz:
|
|
398
|
+
|
|
399
|
+
1. İlk hesabı oluşturun. Kullanıcı koleksiyonu boş olduğundan, bu hesap otomatik olarak **Süper Yönetici** yapılır.
|
|
400
|
+
2. Resend veya SMTP geçişiniz üzerinden bir doğrulama e-postası gönderilir. E-posta doğrulaması **zorunludur**; bu nedenle başlatmadan önce bir e-posta göndericisi yapılandırılmalıdır.
|
|
401
|
+
3. E-postadaki bağlantıya tıklayın ve giriş yapın.
|
|
402
|
+
|
|
403
|
+
Yönetici oluşturulduktan sonra `/init` adresi normal oturum açma sayfasına yönlendirilir.
|
|
404
|
+
|
|
405
|
+
## Ortam Değişkenleri
|
|
406
|
+
|
|
407
|
+
Her iki Docker modu da [`docker/selfhost/.env.template`](https://github.com/aymericzip/intlayer/blob/main/docker/selfhost/.env.template) dosyasından oluşturulan aynı dosyayı (kapsayıcı için `intlayer.env`, Compose için `.env`) okur.
|
|
157
408
|
|
|
158
409
|
### Gerekli
|
|
159
410
|
|
|
160
|
-
| Variable | Example
|
|
161
|
-
| ---------------------- |
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `
|
|
178
|
-
| `
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
> Öncelik: bir organizasyonun kendi mailer'ı (**Organization** panosundan yapılandırılmış) global mailer'dan daha yüksek önceliğe sahiptir ve bu da varsayılan Resend anahtarından daha yüksek önceliğe sahiptir.
|
|
224
|
-
|
|
225
|
-
## Intlayer projenizi bağlama
|
|
226
|
-
|
|
227
|
-
Yığın çalışmaya başladıktan sonra, projenizi `intlayer.org` yerine kendi barındırılan backend ve kontrol paneline yönlendirin.
|
|
228
|
-
|
|
229
|
-
### Proje yapılandırması
|
|
411
|
+
| Variable | Example | Description |
|
|
412
|
+
| ---------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
413
|
+
| `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
|
|
414
|
+
| `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret for the bundled MinIO |
|
|
415
|
+
| `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)) |
|
|
416
|
+
|
|
417
|
+
### Dağıtım Tarafından Sabitlenmiş
|
|
418
|
+
|
|
419
|
+
These are set by the image (all-in-one) or by the compose file, and only need overriding for a non-standard topology.
|
|
420
|
+
|
|
421
|
+
| Variable | All-in-one | Docker Compose | Description |
|
|
422
|
+
| ------------------ | --------------------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------- |
|
|
423
|
+
| `PORT` | `3100` | `3100` | Backend listening port |
|
|
424
|
+
| `APP_URL` | `http://localhost:3000` | `http://localhost:3000` | Public URL of the dashboard |
|
|
425
|
+
| `BACKEND_URL` | `http://localhost:3100` | `http://localhost:3100` | Public URL of the backend API |
|
|
426
|
+
| `DOMAIN` | `localhost` | `localhost` | Cookie domain |
|
|
427
|
+
| `SELF_HOSTED` | `true` | `true` | Disables the cloud-only API endpoints (billing, subscriptions, marketplace) |
|
|
428
|
+
| `MONGODB_URI` | `mongodb://127.0.0.1:27017/intlayer?replicaSet=rs0` | `mongodb://mongo:27017/…` | MongoDB connection string, any `mongodb://` or `mongodb+srv://` cluster works |
|
|
429
|
+
| `REDIS_URL` | `redis://127.0.0.1:6379` | `redis://redis:6379` | Redis |
|
|
430
|
+
| `S3_ENDPOINT` | `http://127.0.0.1:9000` | `http://minio:9000` | MinIO (server-to-server) |
|
|
431
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | `http://localhost:9000/intlayer` | Public URL for browser asset loading |
|
|
432
|
+
| `S3_BUCKET_NAME` | `intlayer` | `intlayer` | Bucket name |
|
|
433
|
+
| `S3_ACCESS_KEY_ID` | `intlayer` | `intlayer` | MinIO access key |
|
|
434
|
+
|
|
435
|
+
Compose `app` hizmeti ek olarak `INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100` alır: tarayıcı API'ye `localhost:3100` üzerinden erişirken, sunucu tarafı işleme Compose ağı içinde çalışır ve bu nedenle hizmet adını kullanmalıdır.
|
|
436
|
+
|
|
437
|
+
### İsteğe Bağlı (ayarlanmadığında özellikler sorunsuz bir şekilde devre dışı kalır)
|
|
438
|
+
|
|
439
|
+
| Variable | Feature |
|
|
440
|
+
| ------------------------------------------------ | ----------------------------------------- |
|
|
441
|
+
| `OPENAI_API_KEY` | AI-assisted translation and content audit |
|
|
442
|
+
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
|
|
443
|
+
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
|
|
444
|
+
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
|
|
445
|
+
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
|
|
446
|
+
|
|
447
|
+
### Genel E-posta Göndericisi (Mailer)
|
|
448
|
+
|
|
449
|
+
Şifre sıfırlama ve sihirli bağlantılar dahil olmak üzere kuruluş dışı e-postalar da dahil tüm işlem e-postaları iki genel aktarımdan biri üzerinden gönderilir:
|
|
450
|
+
|
|
451
|
+
- **Resend**: `RESEND_API_KEY` kullanır.
|
|
452
|
+
- **SMTP**: `MAIL_SMTP_*` değişkenlerini kullanır. `MAIL_SMTP_HOST` ayarlandığı anda SMTP seçilir ve `RESEND_API_KEY` yok sayılır.
|
|
453
|
+
|
|
454
|
+
`MAIL_PROVIDER` yalnızca her ikisi de yapılandırıldığında bir aktarımı zorlamak için gereklidir (örneğin bir SMTP sunucusu mevcutken Resend'i korumak için `MAIL_PROVIDER=resend`).
|
|
455
|
+
|
|
456
|
+
| Variable | Example | Description |
|
|
457
|
+
| -------------------- | ------------------------------ | ---------------------------------------------------------------------------- |
|
|
458
|
+
| `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Sender header for either transport. Accepts a bare address or `Name <email>` |
|
|
459
|
+
| `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP host. Setting it selects the SMTP transport |
|
|
460
|
+
| `MAIL_SMTP_PORT` | `587` | SMTP port (defaults to `587`) |
|
|
461
|
+
| `MAIL_SMTP_SECURE` | `false` | Implicit TLS. Set `true` for port `465` |
|
|
462
|
+
| `MAIL_SMTP_USER` | _(your user)_ | SMTP username (optional; omit for unauthenticated relays) |
|
|
463
|
+
| `MAIL_SMTP_PASSWORD` | _(your password)_ | SMTP password |
|
|
464
|
+
| `MAIL_PROVIDER` | `resend` | Optional override: `smtp` or `resend`. Leave unset to auto-select |
|
|
465
|
+
|
|
466
|
+
> Öncelik: Bir kuruluşun kendi e-posta göndericisi (**Kuruluş** kontrol panelinden yapılandırılır) genel e-posta göndericisini geçersiz kılar; genel e-posta göndericisi ise varsayılan Resend anahtarını geçersiz kılar.
|
|
467
|
+
|
|
468
|
+
## Intlayer Projenizi Bağlama
|
|
469
|
+
|
|
470
|
+
Yığın çalıştırıldıktan sonra, projenizi `intlayer.org` yerine kendi barındırdığınız arka uca ve kontrol paneline işaret edecek şekilde yapılandırın.
|
|
471
|
+
|
|
472
|
+
### Proje Yapılandırması
|
|
230
473
|
|
|
231
474
|
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
232
475
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -237,23 +480,23 @@ const config: IntlayerConfig = {
|
|
|
237
480
|
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
238
481
|
|
|
239
482
|
/**
|
|
240
|
-
*
|
|
241
|
-
*
|
|
483
|
+
* URL of the self-hosted CMS dashboard.
|
|
484
|
+
* Default: https://app.intlayer.org
|
|
242
485
|
*/
|
|
243
|
-
cmsURL: process.env.INTLAYER_CMS_URL, //
|
|
486
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
|
|
244
487
|
|
|
245
488
|
/**
|
|
246
|
-
*
|
|
247
|
-
*
|
|
489
|
+
* URL of the self-hosted backend API.
|
|
490
|
+
* Default: https://back.intlayer.org
|
|
248
491
|
*/
|
|
249
|
-
backendURL: process.env.INTLAYER_BACKEND_URL, //
|
|
492
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
|
|
250
493
|
},
|
|
251
494
|
};
|
|
252
495
|
|
|
253
496
|
export default config;
|
|
254
497
|
```
|
|
255
498
|
|
|
256
|
-
|
|
499
|
+
Set the environment variables in your project's `.env`:
|
|
257
500
|
|
|
258
501
|
```sh
|
|
259
502
|
INTLAYER_CMS_URL=http://localhost:3000
|
|
@@ -262,11 +505,11 @@ INTLAYER_CLIENT_ID=<your-client-id>
|
|
|
262
505
|
INTLAYER_CLIENT_SECRET=<your-client-secret>
|
|
263
506
|
```
|
|
264
507
|
|
|
265
|
-
|
|
508
|
+
Erişim kimlik bilgilerini kendi barındırdığınız kontrol panelinden oluşturun: **Projeler → Erişim Anahtarları** (`http://localhost:3000/projects`).
|
|
266
509
|
|
|
267
510
|
### `@intlayer/api` SDK
|
|
268
511
|
|
|
269
|
-
`@intlayer/api` SDK'sını programlı olarak kullanırken
|
|
512
|
+
`@intlayer/api` SDK'sını programlı olarak kullanırken `backendURL` parametresini açıkça iletin:
|
|
270
513
|
|
|
271
514
|
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
272
515
|
import { createIntlayerCMS } from "@intlayer/api";
|
|
@@ -283,84 +526,17 @@ const cms = createIntlayerCMS({
|
|
|
283
526
|
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
284
527
|
```
|
|
285
528
|
|
|
286
|
-
## Yükseltme
|
|
287
|
-
|
|
288
|
-
Bu, en son görüntüleri çeker ve kapsayıcıları `docker compose pull && docker compose up -d` ile yeniden başlatır. Mevcut birimler (`mongo-data`, `redis-data`, `minio-data`) korunur; veri kaybı olmaz.
|
|
289
|
-
|
|
290
|
-
```sh
|
|
291
|
-
docker compose pull
|
|
292
|
-
docker compose up -d
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
## Yedekleme ve Geri Yükleme
|
|
296
|
-
|
|
297
|
-
Tüm kalıcı veriler, üç adet adlandırılmış Docker biriminde bulunur.
|
|
298
|
-
|
|
299
|
-
### Yedekleme
|
|
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
|
-
### Geri Yükleme
|
|
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 ve minio-data için tekrarlayın
|
|
327
|
-
```
|
|
328
|
-
|
|
329
529
|
## Sınırlamalar
|
|
330
530
|
|
|
331
|
-
-
|
|
332
|
-
-
|
|
333
|
-
- **
|
|
334
|
-
|
|
335
|
-
## Sorun Giderme
|
|
336
|
-
|
|
337
|
-
### İlk Başlangıçta Backend Sürekli Çöküyor
|
|
338
|
-
|
|
339
|
-
Backend başlamadan önce MongoDB ve Redis'in sağlıklı olması gerekir. Compose dosyası `condition: service_healthy` ile `depends_on` kullanır. Tekrarlayan backend yeniden başlatmaları görüyorsanız, `mongo` ve `redis` sağlık kontrollerinin geçtiğinden emin olun:
|
|
340
|
-
|
|
341
|
-
```sh
|
|
342
|
-
docker compose ps
|
|
343
|
-
docker compose logs mongo
|
|
344
|
-
docker compose logs redis
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
Log dosyasının üst kısmına yakın yerde `MongoDB connection error` (MongoDB bağlantı hatası) ifadesini arayın.
|
|
348
|
-
|
|
349
|
-
### Kontrol Paneli API'ye Ulaşamıyor
|
|
350
|
-
|
|
351
|
-
`VITE_BACKEND_URL`'in backend'e **tarayıcıdan** (Docker ağı değil) erişilebilen URL ile eşleştiğini doğrulayın. Backend portunu değiştirdiyseniz veya bir ters proxy eklediyseniz, kontrol paneli görüntüsünü yeniden oluşturun:
|
|
352
|
-
|
|
353
|
-
### MinIO Kovası Eksik
|
|
354
|
-
|
|
355
|
-
Eğer `minio-init` tek seferlik servisi çalışmadıysa (veya MinIO hazır olmadan önce çalıştıysa), kovayı manuel olarak oluşturun:
|
|
356
|
-
|
|
357
|
-
```sh
|
|
358
|
-
docker compose run --rm minio-init
|
|
359
|
-
```
|
|
531
|
+
- **Özel alan adları ve port yeniden eşleme desteklenmez.** Tarayıcıya yönelik tüm `VITE_*` URL'leri derleme sırasında kontrol paneline dahil edilir ve yayınlanan imajlar (ve masaüstü uygulaması) `localhost` / Intlayer Cloud değerleriyle yapılandırılmıştır. Kontrol paneline `http://localhost:3000`, API'ye `:3100` ve MinIO'ya `:9000` üzerinden erişilmelidir. Genel bir alan adında barındırmak veya masaüstü uygulamasını kendi kendine barındırılan bir arka uca yönlendirmek, hedef URL'ler ile yeniden derleme gerektirir (`docker/selfhost/Dockerfile` veya `docker-compose.build.yml` üzerinde `--build-arg VITE_BACKEND_URL=… VITE_SITE_URL=… VITE_DOMAIN=…` ile) ve kutudan çıktığı haliyle desteklenmez.
|
|
532
|
+
- **E-posta gönderimi çalışan bir gönderici gerektirir.** İlk çalıştırma kurulumunda e-posta doğrulaması zorunlu olduğundan `RESEND_API_KEY` veya bir [SMTP geçişi](#global-mailer) (`MAIL_SMTP_*`) yapılandırılmalıdır. İlk yönetici oturum açtıktan sonra kuruluşlar kontrol panelinden kendi SMTP veya Resend göndericilerini de yapılandırabilir.
|
|
533
|
+
- **Masaüstü uygulaması yerleşik sunucuyu başlatmak için makinede Node.js gerektirir.**
|
|
360
534
|
|
|
361
535
|
## Faydalı Bağlantılar
|
|
362
536
|
|
|
363
|
-
- [Intlayer CMS
|
|
364
|
-
- [Yapılandırma
|
|
365
|
-
- [CMS SDK
|
|
366
|
-
- [
|
|
537
|
+
- [Intlayer CMS Belgeleri](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md)
|
|
538
|
+
- [Yapılandırma Referansı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md)
|
|
539
|
+
- [CMS SDK: `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
|
|
540
|
+
- [Masaüstü Uygulaması Sürümleri](https://github.com/aymericzip/intlayer/releases/latest)
|
|
541
|
+
- 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 yansıması: `ghcr.io/aymericzip/intlayer/`
|
|
542
|
+
- [`docker/selfhost/`](https://github.com/aymericzip/intlayer/tree/main/docker/selfhost): Dockerfile, `docker-compose.yml`, `.env.template`
|