@intlayer/docs 9.5.6 → 9.5.7

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.
Files changed (601) hide show
  1. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  2. package/blog/ar/i18next_vs_intlayer.md +130 -16
  3. package/blog/ar/lingui_vs_intlayer.md +122 -15
  4. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  5. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  6. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  7. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  8. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  9. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  10. package/blog/de/i18next_vs_intlayer.md +128 -14
  11. package/blog/de/lingui_vs_intlayer.md +122 -15
  12. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  13. package/blog/de/next-intl_vs_intlayer.md +125 -15
  14. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  15. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  16. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  17. package/blog/en/i18next_vs_intlayer.md +128 -14
  18. package/blog/en/lingui_vs_intlayer.md +124 -15
  19. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  20. package/blog/en/next-intl_vs_intlayer.md +125 -13
  21. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  22. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  23. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  24. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  25. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  26. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  27. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  28. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  30. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  31. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  32. package/blog/es/i18next_vs_intlayer.md +128 -14
  33. package/blog/es/lingui_vs_intlayer.md +122 -15
  34. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  35. package/blog/es/next-intl_vs_intlayer.md +125 -15
  36. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  37. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  38. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  39. package/blog/fr/i18next_vs_intlayer.md +128 -14
  40. package/blog/fr/lingui_vs_intlayer.md +122 -15
  41. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  42. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  43. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  44. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  45. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  46. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  47. package/blog/hi/i18next_vs_intlayer.md +130 -16
  48. package/blog/hi/lingui_vs_intlayer.md +122 -15
  49. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  50. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  51. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  52. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  53. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  54. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  55. package/blog/id/i18next_vs_intlayer.md +128 -14
  56. package/blog/id/lingui_vs_intlayer.md +122 -15
  57. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  58. package/blog/id/next-intl_vs_intlayer.md +135 -19
  59. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  60. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  61. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  62. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/it/i18next_vs_intlayer.md +128 -14
  64. package/blog/it/lingui_vs_intlayer.md +122 -15
  65. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/it/next-intl_vs_intlayer.md +125 -15
  67. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  68. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  69. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  70. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/ja/i18next_vs_intlayer.md +129 -17
  72. package/blog/ja/lingui_vs_intlayer.md +122 -15
  73. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  74. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  75. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  76. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  77. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  78. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  79. package/blog/ko/i18next_vs_intlayer.md +129 -17
  80. package/blog/ko/lingui_vs_intlayer.md +122 -15
  81. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  82. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  83. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  84. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  85. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  86. package/blog/pl/i18next_vs_intlayer.md +128 -14
  87. package/blog/pl/lingui_vs_intlayer.md +122 -15
  88. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  89. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  90. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  91. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  92. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  93. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  94. package/blog/pt/i18next_vs_intlayer.md +128 -14
  95. package/blog/pt/lingui_vs_intlayer.md +122 -15
  96. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  97. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  98. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  99. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  100. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  101. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  102. package/blog/ru/i18next_vs_intlayer.md +130 -16
  103. package/blog/ru/lingui_vs_intlayer.md +122 -15
  104. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  105. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  106. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  107. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  108. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  109. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  110. package/blog/tr/i18next_vs_intlayer.md +128 -14
  111. package/blog/tr/lingui_vs_intlayer.md +122 -15
  112. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  113. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  114. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  115. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  116. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  117. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  118. package/blog/uk/i18next_vs_intlayer.md +130 -16
  119. package/blog/uk/lingui_vs_intlayer.md +122 -15
  120. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  121. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  122. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  123. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  124. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  125. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  126. package/blog/vi/i18next_vs_intlayer.md +128 -14
  127. package/blog/vi/lingui_vs_intlayer.md +122 -15
  128. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  129. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  130. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/zh/i18next_vs_intlayer.md +128 -14
  135. package/blog/zh/lingui_vs_intlayer.md +122 -15
  136. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  138. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  139. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  140. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  141. package/dist/cjs/generated/docs.entry.cjs +40 -40
  142. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  143. package/dist/cjs/index.cjs +2 -2
  144. package/dist/esm/generated/docs.entry.mjs +40 -40
  145. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  146. package/dist/esm/index.mjs +2 -2
  147. package/dist/types/generated/docs.entry.d.ts +2 -2
  148. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  149. package/docs/ar/benchmark/nextjs.md +13 -13
  150. package/docs/ar/benchmark/solid.md +5 -5
  151. package/docs/ar/benchmark/svelte.md +4 -4
  152. package/docs/ar/benchmark/tanstack.md +14 -13
  153. package/docs/ar/benchmark/vue.md +5 -5
  154. package/docs/ar/chrome_extension.md +130 -0
  155. package/docs/ar/cli/index.md +6 -1
  156. package/docs/ar/cli/infra.md +162 -0
  157. package/docs/ar/cli/init.md +24 -1
  158. package/docs/ar/dictionary/html.md +173 -5
  159. package/docs/ar/dictionary/markdown.md +263 -1
  160. package/docs/ar/intlayer_with_analog.md +23 -1
  161. package/docs/ar/intlayer_with_angular_19.md +24 -1
  162. package/docs/ar/intlayer_with_angular_21.md +24 -1
  163. package/docs/ar/intlayer_with_astro.md +24 -1
  164. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  165. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  166. package/docs/ar/intlayer_with_astro_react.md +26 -1
  167. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  168. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  169. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  170. package/docs/ar/intlayer_with_remix_3.md +22 -1
  171. package/docs/ar/self_hosting.md +406 -231
  172. package/docs/de/benchmark/nextjs.md +13 -13
  173. package/docs/de/benchmark/solid.md +5 -5
  174. package/docs/de/benchmark/svelte.md +4 -4
  175. package/docs/de/benchmark/tanstack.md +14 -13
  176. package/docs/de/benchmark/vue.md +5 -5
  177. package/docs/de/chrome_extension.md +130 -0
  178. package/docs/de/cli/index.md +6 -1
  179. package/docs/de/cli/infra.md +162 -0
  180. package/docs/de/cli/init.md +24 -1
  181. package/docs/de/dictionary/html.md +173 -5
  182. package/docs/de/dictionary/markdown.md +263 -1
  183. package/docs/de/intlayer_with_analog.md +23 -1
  184. package/docs/de/intlayer_with_angular_19.md +24 -1
  185. package/docs/de/intlayer_with_angular_21.md +24 -1
  186. package/docs/de/intlayer_with_astro.md +24 -1
  187. package/docs/de/intlayer_with_astro_lit.md +25 -1
  188. package/docs/de/intlayer_with_astro_preact.md +26 -1
  189. package/docs/de/intlayer_with_astro_react.md +26 -1
  190. package/docs/de/intlayer_with_astro_solid.md +26 -1
  191. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/de/intlayer_with_astro_vue.md +25 -1
  193. package/docs/de/intlayer_with_remix_3.md +22 -1
  194. package/docs/de/self_hosting.md +404 -227
  195. package/docs/en/benchmark/nextjs.md +13 -13
  196. package/docs/en/benchmark/solid.md +5 -5
  197. package/docs/en/benchmark/svelte.md +4 -4
  198. package/docs/en/benchmark/tanstack.md +14 -13
  199. package/docs/en/benchmark/vue.md +5 -5
  200. package/docs/en/chrome_extension.md +130 -0
  201. package/docs/en/cli/index.md +6 -1
  202. package/docs/en/cli/infra.md +175 -0
  203. package/docs/en/cli/init.md +25 -1
  204. package/docs/en/dictionary/html.md +173 -5
  205. package/docs/en/dictionary/markdown.md +263 -1
  206. package/docs/en/intlayer_with_analog.md +23 -1
  207. package/docs/en/intlayer_with_angular_19.md +24 -1
  208. package/docs/en/intlayer_with_angular_21.md +24 -1
  209. package/docs/en/intlayer_with_astro.md +24 -1
  210. package/docs/en/intlayer_with_astro_lit.md +25 -1
  211. package/docs/en/intlayer_with_astro_preact.md +26 -1
  212. package/docs/en/intlayer_with_astro_react.md +26 -1
  213. package/docs/en/intlayer_with_astro_solid.md +26 -1
  214. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  215. package/docs/en/intlayer_with_astro_vue.md +25 -1
  216. package/docs/en/intlayer_with_remix_3.md +22 -1
  217. package/docs/en/self_hosting.md +418 -176
  218. package/docs/en-GB/benchmark/nextjs.md +13 -13
  219. package/docs/en-GB/benchmark/solid.md +5 -5
  220. package/docs/en-GB/benchmark/svelte.md +4 -4
  221. package/docs/en-GB/benchmark/tanstack.md +14 -13
  222. package/docs/en-GB/benchmark/vue.md +5 -5
  223. package/docs/en-GB/chrome_extension.md +130 -0
  224. package/docs/en-GB/cli/index.md +6 -1
  225. package/docs/en-GB/cli/infra.md +162 -0
  226. package/docs/en-GB/cli/init.md +24 -1
  227. package/docs/en-GB/dictionary/html.md +173 -5
  228. package/docs/en-GB/dictionary/markdown.md +263 -1
  229. package/docs/en-GB/intlayer_with_analog.md +23 -1
  230. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  231. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  232. package/docs/en-GB/intlayer_with_astro.md +24 -1
  233. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  234. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  235. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  236. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  237. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  238. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  239. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  240. package/docs/en-GB/self_hosting.md +381 -206
  241. package/docs/es/benchmark/nextjs.md +13 -13
  242. package/docs/es/benchmark/solid.md +5 -5
  243. package/docs/es/benchmark/svelte.md +4 -4
  244. package/docs/es/benchmark/tanstack.md +14 -13
  245. package/docs/es/benchmark/vue.md +5 -5
  246. package/docs/es/chrome_extension.md +130 -0
  247. package/docs/es/cli/index.md +6 -1
  248. package/docs/es/cli/infra.md +162 -0
  249. package/docs/es/cli/init.md +24 -1
  250. package/docs/es/dictionary/html.md +173 -5
  251. package/docs/es/dictionary/markdown.md +263 -1
  252. package/docs/es/intlayer_with_analog.md +23 -1
  253. package/docs/es/intlayer_with_angular_19.md +24 -1
  254. package/docs/es/intlayer_with_angular_21.md +24 -1
  255. package/docs/es/intlayer_with_astro.md +24 -1
  256. package/docs/es/intlayer_with_astro_lit.md +25 -1
  257. package/docs/es/intlayer_with_astro_preact.md +26 -1
  258. package/docs/es/intlayer_with_astro_react.md +26 -1
  259. package/docs/es/intlayer_with_astro_solid.md +26 -1
  260. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  261. package/docs/es/intlayer_with_astro_vue.md +25 -1
  262. package/docs/es/intlayer_with_remix_3.md +22 -1
  263. package/docs/es/self_hosting.md +400 -223
  264. package/docs/fr/benchmark/nextjs.md +13 -13
  265. package/docs/fr/benchmark/solid.md +5 -5
  266. package/docs/fr/benchmark/svelte.md +4 -4
  267. package/docs/fr/benchmark/tanstack.md +14 -13
  268. package/docs/fr/benchmark/vue.md +5 -5
  269. package/docs/fr/chrome_extension.md +130 -0
  270. package/docs/fr/cli/index.md +6 -1
  271. package/docs/fr/cli/infra.md +162 -0
  272. package/docs/fr/cli/init.md +24 -1
  273. package/docs/fr/dictionary/html.md +173 -5
  274. package/docs/fr/dictionary/markdown.md +265 -4
  275. package/docs/fr/intlayer_with_analog.md +23 -1
  276. package/docs/fr/intlayer_with_angular_19.md +24 -1
  277. package/docs/fr/intlayer_with_angular_21.md +24 -1
  278. package/docs/fr/intlayer_with_astro.md +24 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  280. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  281. package/docs/fr/intlayer_with_astro_react.md +26 -1
  282. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  283. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  284. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  285. package/docs/fr/intlayer_with_remix_3.md +22 -1
  286. package/docs/fr/self_hosting.md +401 -224
  287. package/docs/hi/benchmark/nextjs.md +13 -13
  288. package/docs/hi/benchmark/solid.md +5 -5
  289. package/docs/hi/benchmark/svelte.md +4 -4
  290. package/docs/hi/benchmark/tanstack.md +14 -13
  291. package/docs/hi/benchmark/vue.md +5 -5
  292. package/docs/hi/chrome_extension.md +130 -0
  293. package/docs/hi/cli/index.md +6 -1
  294. package/docs/hi/cli/infra.md +162 -0
  295. package/docs/hi/cli/init.md +24 -1
  296. package/docs/hi/dictionary/html.md +173 -5
  297. package/docs/hi/dictionary/markdown.md +263 -1
  298. package/docs/hi/intlayer_with_analog.md +23 -1
  299. package/docs/hi/intlayer_with_angular_19.md +24 -1
  300. package/docs/hi/intlayer_with_angular_21.md +24 -1
  301. package/docs/hi/intlayer_with_astro.md +24 -1
  302. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  303. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  304. package/docs/hi/intlayer_with_astro_react.md +26 -1
  305. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  306. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  307. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  308. package/docs/hi/intlayer_with_remix_3.md +22 -1
  309. package/docs/hi/self_hosting.md +409 -235
  310. package/docs/id/benchmark/nextjs.md +13 -13
  311. package/docs/id/benchmark/solid.md +5 -5
  312. package/docs/id/benchmark/svelte.md +4 -4
  313. package/docs/id/benchmark/tanstack.md +14 -13
  314. package/docs/id/benchmark/vue.md +5 -5
  315. package/docs/id/chrome_extension.md +130 -0
  316. package/docs/id/cli/index.md +6 -1
  317. package/docs/id/cli/infra.md +162 -0
  318. package/docs/id/cli/init.md +24 -1
  319. package/docs/id/dictionary/html.md +173 -5
  320. package/docs/id/dictionary/markdown.md +263 -1
  321. package/docs/id/intlayer_with_analog.md +23 -1
  322. package/docs/id/intlayer_with_angular_19.md +24 -1
  323. package/docs/id/intlayer_with_angular_21.md +24 -1
  324. package/docs/id/intlayer_with_astro.md +24 -1
  325. package/docs/id/intlayer_with_astro_lit.md +25 -1
  326. package/docs/id/intlayer_with_astro_preact.md +26 -1
  327. package/docs/id/intlayer_with_astro_react.md +26 -1
  328. package/docs/id/intlayer_with_astro_solid.md +26 -1
  329. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  330. package/docs/id/intlayer_with_astro_vue.md +25 -1
  331. package/docs/id/intlayer_with_remix_3.md +22 -1
  332. package/docs/id/self_hosting.md +416 -243
  333. package/docs/it/benchmark/nextjs.md +13 -13
  334. package/docs/it/benchmark/solid.md +5 -5
  335. package/docs/it/benchmark/svelte.md +4 -4
  336. package/docs/it/benchmark/tanstack.md +14 -13
  337. package/docs/it/benchmark/vue.md +5 -5
  338. package/docs/it/chrome_extension.md +130 -0
  339. package/docs/it/cli/index.md +6 -1
  340. package/docs/it/cli/infra.md +162 -0
  341. package/docs/it/cli/init.md +24 -1
  342. package/docs/it/dictionary/html.md +173 -5
  343. package/docs/it/dictionary/markdown.md +263 -1
  344. package/docs/it/intlayer_with_analog.md +23 -1
  345. package/docs/it/intlayer_with_angular_19.md +24 -1
  346. package/docs/it/intlayer_with_angular_21.md +24 -1
  347. package/docs/it/intlayer_with_astro.md +24 -1
  348. package/docs/it/intlayer_with_astro_lit.md +25 -1
  349. package/docs/it/intlayer_with_astro_preact.md +26 -1
  350. package/docs/it/intlayer_with_astro_react.md +26 -1
  351. package/docs/it/intlayer_with_astro_solid.md +26 -1
  352. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  353. package/docs/it/intlayer_with_astro_vue.md +25 -1
  354. package/docs/it/intlayer_with_remix_3.md +22 -1
  355. package/docs/it/self_hosting.md +412 -237
  356. package/docs/ja/benchmark/nextjs.md +13 -13
  357. package/docs/ja/benchmark/solid.md +5 -5
  358. package/docs/ja/benchmark/svelte.md +4 -4
  359. package/docs/ja/benchmark/tanstack.md +13 -12
  360. package/docs/ja/benchmark/vue.md +5 -5
  361. package/docs/ja/chrome_extension.md +130 -0
  362. package/docs/ja/cli/index.md +6 -1
  363. package/docs/ja/cli/infra.md +162 -0
  364. package/docs/ja/cli/init.md +24 -1
  365. package/docs/ja/dictionary/html.md +173 -5
  366. package/docs/ja/dictionary/markdown.md +263 -1
  367. package/docs/ja/intlayer_with_analog.md +23 -1
  368. package/docs/ja/intlayer_with_angular_19.md +24 -1
  369. package/docs/ja/intlayer_with_angular_21.md +24 -1
  370. package/docs/ja/intlayer_with_astro.md +24 -1
  371. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  372. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  373. package/docs/ja/intlayer_with_astro_react.md +26 -1
  374. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  375. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  376. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  377. package/docs/ja/intlayer_with_remix_3.md +22 -1
  378. package/docs/ja/self_hosting.md +398 -223
  379. package/docs/ko/benchmark/nextjs.md +13 -13
  380. package/docs/ko/benchmark/solid.md +5 -5
  381. package/docs/ko/benchmark/svelte.md +4 -4
  382. package/docs/ko/benchmark/tanstack.md +14 -13
  383. package/docs/ko/benchmark/vue.md +5 -5
  384. package/docs/ko/chrome_extension.md +130 -0
  385. package/docs/ko/cli/index.md +6 -1
  386. package/docs/ko/cli/infra.md +162 -0
  387. package/docs/ko/cli/init.md +24 -1
  388. package/docs/ko/dictionary/html.md +173 -5
  389. package/docs/ko/dictionary/markdown.md +263 -1
  390. package/docs/ko/intlayer_with_analog.md +23 -1
  391. package/docs/ko/intlayer_with_angular_19.md +24 -1
  392. package/docs/ko/intlayer_with_angular_21.md +24 -1
  393. package/docs/ko/intlayer_with_astro.md +24 -1
  394. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  395. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  396. package/docs/ko/intlayer_with_astro_react.md +26 -1
  397. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  398. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  399. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  400. package/docs/ko/intlayer_with_remix_3.md +22 -1
  401. package/docs/ko/self_hosting.md +411 -238
  402. package/docs/pl/benchmark/nextjs.md +13 -13
  403. package/docs/pl/benchmark/solid.md +5 -5
  404. package/docs/pl/benchmark/svelte.md +4 -4
  405. package/docs/pl/benchmark/tanstack.md +14 -13
  406. package/docs/pl/benchmark/vue.md +5 -5
  407. package/docs/pl/chrome_extension.md +130 -0
  408. package/docs/pl/cli/index.md +6 -1
  409. package/docs/pl/cli/infra.md +162 -0
  410. package/docs/pl/cli/init.md +24 -1
  411. package/docs/pl/dictionary/html.md +173 -5
  412. package/docs/pl/dictionary/markdown.md +263 -1
  413. package/docs/pl/intlayer_with_analog.md +23 -1
  414. package/docs/pl/intlayer_with_angular_19.md +24 -1
  415. package/docs/pl/intlayer_with_angular_21.md +24 -1
  416. package/docs/pl/intlayer_with_astro.md +24 -1
  417. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  418. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  419. package/docs/pl/intlayer_with_astro_react.md +26 -1
  420. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  421. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  422. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  423. package/docs/pl/intlayer_with_remix_3.md +22 -1
  424. package/docs/pl/self_hosting.md +408 -233
  425. package/docs/pt/benchmark/nextjs.md +13 -13
  426. package/docs/pt/benchmark/solid.md +5 -5
  427. package/docs/pt/benchmark/svelte.md +4 -4
  428. package/docs/pt/benchmark/tanstack.md +14 -13
  429. package/docs/pt/benchmark/vue.md +5 -5
  430. package/docs/pt/chrome_extension.md +130 -0
  431. package/docs/pt/cli/index.md +6 -1
  432. package/docs/pt/cli/infra.md +162 -0
  433. package/docs/pt/cli/init.md +24 -1
  434. package/docs/pt/dictionary/html.md +173 -5
  435. package/docs/pt/dictionary/markdown.md +263 -1
  436. package/docs/pt/intlayer_with_analog.md +23 -1
  437. package/docs/pt/intlayer_with_angular_19.md +24 -1
  438. package/docs/pt/intlayer_with_angular_21.md +24 -1
  439. package/docs/pt/intlayer_with_astro.md +24 -1
  440. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  441. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  442. package/docs/pt/intlayer_with_astro_react.md +26 -1
  443. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  444. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  445. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  446. package/docs/pt/intlayer_with_remix_3.md +22 -1
  447. package/docs/pt/self_hosting.md +399 -224
  448. package/docs/ru/benchmark/nextjs.md +13 -13
  449. package/docs/ru/benchmark/solid.md +5 -5
  450. package/docs/ru/benchmark/svelte.md +4 -4
  451. package/docs/ru/benchmark/tanstack.md +14 -13
  452. package/docs/ru/benchmark/vue.md +5 -5
  453. package/docs/ru/chrome_extension.md +130 -0
  454. package/docs/ru/cli/index.md +6 -1
  455. package/docs/ru/cli/infra.md +162 -0
  456. package/docs/ru/cli/init.md +24 -1
  457. package/docs/ru/dictionary/html.md +173 -5
  458. package/docs/ru/dictionary/markdown.md +263 -1
  459. package/docs/ru/intlayer_with_analog.md +23 -1
  460. package/docs/ru/intlayer_with_angular_19.md +24 -1
  461. package/docs/ru/intlayer_with_angular_21.md +24 -1
  462. package/docs/ru/intlayer_with_astro.md +24 -1
  463. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  464. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  465. package/docs/ru/intlayer_with_astro_react.md +26 -1
  466. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  467. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  468. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  469. package/docs/ru/intlayer_with_remix_3.md +22 -1
  470. package/docs/ru/self_hosting.md +403 -228
  471. package/docs/tr/benchmark/nextjs.md +13 -13
  472. package/docs/tr/benchmark/solid.md +5 -5
  473. package/docs/tr/benchmark/svelte.md +4 -4
  474. package/docs/tr/benchmark/tanstack.md +14 -13
  475. package/docs/tr/benchmark/vue.md +5 -5
  476. package/docs/tr/chrome_extension.md +130 -0
  477. package/docs/tr/cli/index.md +6 -1
  478. package/docs/tr/cli/infra.md +162 -0
  479. package/docs/tr/cli/init.md +24 -1
  480. package/docs/tr/dictionary/html.md +173 -5
  481. package/docs/tr/dictionary/markdown.md +263 -1
  482. package/docs/tr/intlayer_with_analog.md +23 -1
  483. package/docs/tr/intlayer_with_angular_19.md +24 -1
  484. package/docs/tr/intlayer_with_angular_21.md +24 -1
  485. package/docs/tr/intlayer_with_astro.md +24 -1
  486. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  487. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  488. package/docs/tr/intlayer_with_astro_react.md +26 -1
  489. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  490. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  491. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  492. package/docs/tr/intlayer_with_remix_3.md +22 -1
  493. package/docs/tr/self_hosting.md +410 -234
  494. package/docs/uk/benchmark/nextjs.md +13 -13
  495. package/docs/uk/benchmark/solid.md +5 -5
  496. package/docs/uk/benchmark/svelte.md +4 -4
  497. package/docs/uk/benchmark/tanstack.md +14 -13
  498. package/docs/uk/benchmark/vue.md +5 -5
  499. package/docs/uk/chrome_extension.md +130 -0
  500. package/docs/uk/cli/index.md +6 -1
  501. package/docs/uk/cli/infra.md +162 -0
  502. package/docs/uk/cli/init.md +24 -1
  503. package/docs/uk/dictionary/html.md +173 -5
  504. package/docs/uk/dictionary/markdown.md +263 -1
  505. package/docs/uk/intlayer_with_analog.md +23 -1
  506. package/docs/uk/intlayer_with_angular_19.md +24 -1
  507. package/docs/uk/intlayer_with_angular_21.md +24 -1
  508. package/docs/uk/intlayer_with_astro.md +24 -1
  509. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  510. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  511. package/docs/uk/intlayer_with_astro_react.md +26 -1
  512. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  513. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  514. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  515. package/docs/uk/intlayer_with_remix_3.md +22 -1
  516. package/docs/uk/self_hosting.md +413 -238
  517. package/docs/vi/benchmark/nextjs.md +13 -13
  518. package/docs/vi/benchmark/solid.md +5 -5
  519. package/docs/vi/benchmark/svelte.md +4 -4
  520. package/docs/vi/benchmark/tanstack.md +14 -13
  521. package/docs/vi/benchmark/vue.md +5 -5
  522. package/docs/vi/chrome_extension.md +130 -0
  523. package/docs/vi/cli/index.md +6 -1
  524. package/docs/vi/cli/infra.md +162 -0
  525. package/docs/vi/cli/init.md +24 -1
  526. package/docs/vi/dictionary/html.md +173 -5
  527. package/docs/vi/dictionary/markdown.md +263 -1
  528. package/docs/vi/intlayer_with_analog.md +23 -1
  529. package/docs/vi/intlayer_with_angular_19.md +24 -1
  530. package/docs/vi/intlayer_with_angular_21.md +24 -1
  531. package/docs/vi/intlayer_with_astro.md +24 -1
  532. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  533. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  534. package/docs/vi/intlayer_with_astro_react.md +26 -1
  535. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  536. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  537. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  538. package/docs/vi/intlayer_with_remix_3.md +22 -1
  539. package/docs/vi/self_hosting.md +408 -234
  540. package/docs/zh/benchmark/nextjs.md +13 -13
  541. package/docs/zh/benchmark/solid.md +5 -5
  542. package/docs/zh/benchmark/svelte.md +4 -4
  543. package/docs/zh/benchmark/tanstack.md +14 -13
  544. package/docs/zh/benchmark/vue.md +5 -5
  545. package/docs/zh/chrome_extension.md +130 -0
  546. package/docs/zh/cli/index.md +6 -1
  547. package/docs/zh/cli/infra.md +162 -0
  548. package/docs/zh/cli/init.md +24 -1
  549. package/docs/zh/dictionary/html.md +172 -5
  550. package/docs/zh/dictionary/markdown.md +262 -1
  551. package/docs/zh/intlayer_with_analog.md +23 -1
  552. package/docs/zh/intlayer_with_angular_19.md +24 -1
  553. package/docs/zh/intlayer_with_angular_21.md +24 -1
  554. package/docs/zh/intlayer_with_astro.md +24 -1
  555. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  556. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  557. package/docs/zh/intlayer_with_astro_react.md +26 -1
  558. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  559. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  560. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  561. package/docs/zh/intlayer_with_remix_3.md +22 -1
  562. package/docs/zh/self_hosting.md +410 -237
  563. package/legal/ar/privacy_notice.md +9 -3
  564. package/legal/de/privacy_notice.md +9 -3
  565. package/legal/en/privacy_notice.md +10 -3
  566. package/legal/en-GB/privacy_notice.md +9 -3
  567. package/legal/es/privacy_notice.md +9 -3
  568. package/legal/fr/privacy_notice.md +9 -3
  569. package/legal/hi/privacy_notice.md +9 -3
  570. package/legal/id/privacy_notice.md +9 -3
  571. package/legal/it/privacy_notice.md +9 -3
  572. package/legal/ja/privacy_notice.md +9 -3
  573. package/legal/ko/privacy_notice.md +9 -3
  574. package/legal/pl/privacy_notice.md +9 -3
  575. package/legal/pt/privacy_notice.md +9 -3
  576. package/legal/ru/privacy_notice.md +9 -3
  577. package/legal/tr/privacy_notice.md +9 -3
  578. package/legal/uk/privacy_notice.md +9 -3
  579. package/legal/vi/privacy_notice.md +9 -3
  580. package/legal/zh/privacy_notice.md +9 -3
  581. package/package.json +1 -1
  582. package/src/generated/docs.entry.ts +40 -40
  583. package/docs/ar/roadmap.md +0 -321
  584. package/docs/de/roadmap.md +0 -322
  585. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  586. package/docs/en/roadmap.md +0 -325
  587. package/docs/en-GB/roadmap.md +0 -322
  588. package/docs/es/roadmap.md +0 -322
  589. package/docs/fr/roadmap.md +0 -322
  590. package/docs/hi/roadmap.md +0 -322
  591. package/docs/id/roadmap.md +0 -325
  592. package/docs/it/roadmap.md +0 -322
  593. package/docs/ja/roadmap.md +0 -322
  594. package/docs/ko/roadmap.md +0 -322
  595. package/docs/pl/roadmap.md +0 -325
  596. package/docs/pt/roadmap.md +0 -322
  597. package/docs/ru/roadmap.md +0 -322
  598. package/docs/tr/roadmap.md +0 -325
  599. package/docs/uk/roadmap.md +0 -325
  600. package/docs/vi/roadmap.md +0 -325
  601. package/docs/zh/roadmap.md +0 -322
@@ -1,231 +1,472 @@
1
1
  ---
2
2
  createdAt: 2026-06-30
3
- updatedAt: 2026-06-30
4
- title: इंटलेयर को सेल्फ-होस्ट करना
5
- description: एक ही कमांड से अपने स्वयं के इंफ्रास्ट्रक्चर पर एक पूर्ण इंटलेयर इंस्टेंस चलाएँ। इंटलेयर क्लाउड अकाउंट की कोई आवश्यकता नहीं है।
3
+ updatedAt: 2026-09-21
4
+ title: Intlayer सेल्फ-होस्टिंग
5
+ description: "अपने स्वयं के बुनियादी ढांचे पर Intlayer चलाएं: एक डेस्कटॉप ऐप, एकल ऑल-इन-वन Docker कंटेनर, या एक स्केलेबल Docker Compose स्टैक के रूप में। किसी Intlayer Cloud खाते की आवश्यकता नहीं है।"
6
6
  keywords:
7
- - Self-Hosting
7
+ - सेल्फ-होस्टिंग
8
8
  - Docker
9
9
  - Docker Compose
10
+ - डेस्कटॉप ऐप
10
11
  - Intlayer
11
12
  - CMS
12
- - Installation
13
- - Infrastructure
13
+ - इंस्टॉलेशन
14
+ - इंफ्रास्ट्रक्चर
14
15
  slugs:
15
16
  - doc
16
17
  - self-hosting
17
18
  author: aymericzip
18
19
  ---
19
20
 
20
- # इंटलेयर को सेल्फ-होस्ट करना
21
+ # Intlayer सेल्फ-होस्टिंग
21
22
 
22
- Intlayer आपके स्वयं के infrastructure पर चल सकता है। कोई Intlayer Cloud खाता आवश्यक नहीं है। एक single all-in-one Docker image dashboard, API, और स्थानीय datastores (Redis और MinIO) को bundle करता है जिसकी इसे आवश्यकता है, [s6-overlay](https://github.com/just-containers/s6-overlay) द्वारा supervised।
23
+ Intlayer आपके अपने बुनियादी ढांचे पर चल सकता है, किसी Intlayer Cloud खाते की आवश्यकता नहीं है। तीन सेटअप उपलब्ध हैं, जो सभी एक ही इंस्टॉलर (`install.sh`, Windows पर `install.ps1`, या `npx intlayer init infra`) द्वारा प्रबंधित होते हैं:
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** | **प्रति सेवा एक कंटेनर**, प्रत्येक डेटास्टोर को प्रबंधित सेवा से बदला जा सकता है | प्रोडक्शन, स्केलिंग, प्रबंधित डेटाबेस |
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
+ तीनों इमेज एक ही [`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
- इंस्टॉलर Docker की जांच करता है (इसे इंस्टॉल करने की पेशकश करते हुए), `intlayer.env` फ़ाइल लिखता है जिसमें आपके सीक्रेट पहले से ही जेनरेट हो चुके होते हैं, और इमेज को पुल करता है। फिर यह आपको अपनी क्रेडेंशियल भरने के लिए कहता है और `docker run` कमांड प्रिंट करता है — [क्विक स्टार्ट](#quick-start) देखें।
66
+ </Tab>
67
+ <Tab label="Windows" value="windows">
31
68
 
32
- इंस्टॉलर एक `docker-compose.yml` और एक `.env` डाउनलोड करता है, आवश्यक सीक्रेट्स को स्वतः जेनरेट करता है, और `docker compose up -d` के साथ सभी कंटेनरों को शुरू करता है।
69
+ In PowerShell:
33
70
 
34
- ## विषय-सूची
71
+ ```powershell
72
+ $env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
73
+ ```
35
74
 
36
- <TOC/>
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) द्वारा की जाती है, जिसमें प्रत्येक डेटास्टोर एक ही वॉल्यूम पर बना रहता है।
39
95
 
40
96
  ```
41
97
  ┌─────────────────────────────┐
42
98
  browser ──────▶ │ app (TanStack Start) :3000│ ──┐
43
- └─────────────────────────────┘ │ VITE_BACKEND_URL
99
+ (localhost) └─────────────────────────────┘ │ VITE_BACKEND_URL (baked at build)
44
100
  ┌─────────────────────────────┐ │
45
101
  │ backend (Fastify/Bun) :3100│ ◀─┘
46
102
  └──────────────┬──────────────┘
47
- ┌──────────┬─────────┼──────────┬───────────┐
48
- ▼ ▼ ▼ ▼ ▼
49
- mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium
50
- (1-node RS) (S3 API) (SMTP) (in-image)
51
- minio:9001 mailpit:8025
52
- (console) (web 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
- क्रोमियम (Puppeteer स्क्रीनशॉट जनरेशन के लिए उपयोग किया जाता है) बैकएंड इमेज के अंदर बंडल किया गया है - किसी अलग कंटेनर की आवश्यकता नहीं है।
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` → प्रतिकृति-सेट आरंभ, `minio` → बकेट निर्माण, फिर `backend`, फिर `app`), और सेवाएं समाप्त होने पर पुनरारंभ होती हैं, इसलिए पहला बूट स्वचालित रूप से ठीक हो जाता है।
56
119
 
57
- ## त्वरित शुरुआत
120
+ ### पूर्वापेक्षाएँ
58
121
 
59
- 1. जांचता है कि `docker` और `docker compose` मौजूद हैं या नहीं।
60
- 2. `docker-compose.yml` और `.env.example` को `./intlayer/` में डाउनलोड करता है।
61
- 3. यदि कोई `.env` मौजूद नहीं है, तो उदाहरण कॉपी करता है और `openssl rand` के माध्यम से `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID`, और `S3_SECRET_ACCESS_KEY` के लिए रैंडम सीक्रेट्स जेनरेट करता है।
62
- 4. `docker compose pull` + `docker compose up -d` चलाता है।
63
- 5. URL प्रिंट करता है: डैशबोर्ड `:3000`, API `:3100`, ईमेल UI `:8025`, MinIO कंसोल `:9001`।
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 रिले।
64
125
 
65
- स्टैक के चालू होने के बाद, **http://localhost:3000** खोलें और अपना पहला अकाउंट बनाएँ।
126
+ ### 1. इंस्टॉल करें
66
127
 
67
- ## क्विक स्टार्ट
128
+ उत्पन्न `BETTER_AUTH_SECRET` और `S3_SECRET_ACCESS_KEY` के साथ `./intlayer.env` लिखता है और `intlayer/cms-all:latest` खींचता है।
68
129
 
69
- ### 1. इंस्टॉलर चलाएँ
130
+ <Tabs group="os">
131
+ <Tab label="macOS / Linux" value="unix">
70
132
 
71
133
  ```sh
72
- 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
73
144
  ```
74
145
 
75
- यह Docker इंस्टॉल है और चल रहा है, यह सत्यापित करता है, `./intlayer.env` को `BETTER_AUTH_SECRET` और `S3_SECRET_ACCESS_KEY` के साथ पहले से ही जेनरेट किए गए लिखता है, और इमेज को पुल करता है। यह कंटेनर शुरू नहीं करता है — बैकएंड आपके डेटाबेस क्रेडेंशियल्स के बिना बूट नहीं कर सकता।
146
+ </Tab>
147
+ <Tab label="Intlayer CLI" value="cli">
76
148
 
77
- इंस्टॉलर को फिर से चलाना सुरक्षित है: एक मौजूदा `intlayer.env` को कभी भी ओवरराइट नहीं किया जाता है, इसलिए यह अपग्रेड पथ के रूप में दोहरी भूमिका निभाता है।
149
+ CLI इंस्टॉलर चलाता है जो अन्य टैब में दिखाए गए `docker run …` कमांड को प्रिंट करता है। मेलर को कॉन्फ़िगर करने के बाद इसे अपने टर्मिनल में पेस्ट करें।
78
150
 
79
- ### 2. अपनी साख भरें
151
+ </Tab>
152
+ </Tabs>
80
153
 
81
- `intlayer.env` खोलें और `TODO` से चिह्नित मानों को पूरा करें:
154
+ ### 2. मेलर कॉन्फ़िगर करें
155
+
156
+ `intlayer.env` खोलें और Resend **या** SMTP भरें (विवरण के लिए [ग्लोबल मेलर](#global-mailer) देखें):
82
157
 
83
158
  ```sh fileName="intlayer.env"
84
- DB_ID=<atlas-user>
85
- DB_MDP=<atlas-password>
86
- DB_CLUSTER=<cluster>.xxxxx.mongodb.net
159
+ # Option A: Resend
87
160
  RESEND_API_KEY=<your-resend-key>
88
- ```
89
161
 
90
- फाइल में वैकल्पिक सुविधाओं के लिए comment किए गए ब्लॉक भी हैं — [SMTP mailer](#global-mailer), `OPENAI_API_KEY`, और OAuth providers। जो आपको चाहिए उसे uncomment करें।
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
+ ```
91
169
 
92
- > फाइल को `docker run --env-file` द्वारा पढ़ा जाता है, जो quotes को strip नहीं करता और `=` के बाद सब कुछ को मान के रूप में मानता है। bare values लिखें, और comments को उनकी अपनी lines पर रखें।
170
+ ### 3. चलाएं
93
171
 
94
- ### 3. कंटेनर शुरू करें
172
+ यह इंस्टॉलर द्वारा प्रिंट किया गया रन कमांड है:
95
173
 
96
- यह वह कमांड है जो इंस्टॉलर समाप्त होने पर प्रिंट करता है:
174
+ <Tabs group="os">
175
+ <Tab label="macOS / Linux" value="unix">
97
176
 
98
177
  ```sh
99
178
  docker run -d --name intlayer \
100
179
  --restart unless-stopped \
101
- -p 3000:3000 \
102
- -p 3100:3100 \
103
- -p 9000:9000 \
104
- -p 9001:9001 \
180
+ -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
105
181
  -v intlayer-data:/data \
106
182
  --env-file ./intlayer.env \
107
- ghcr.io/aymericzip/intlayer-selfhost:latest
183
+ intlayer/cms-all:latest
108
184
  ```
109
185
 
110
- फिर **http://localhost:3000** खोलें। पहली बूट डेटास्टोर को initialize करती है, इसलिए इसे एक मिनट दें।
186
+ </Tab>
187
+ <Tab label="Windows" value="windows">
111
188
 
112
- > डैशबोर्ड `localhost` पर सर्व किया जाता है। [Limitations](#limitations) देखें — कस्टम डोमेन प्रकाशित image द्वारा समर्थित नहीं हैं।
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
196
+ ```
113
197
 
114
- ### इंस्टॉलर सेटिंग्स
198
+ </Tab>
199
+ <Tab label="Intlayer CLI" value="cli">
200
+
201
+ CLI इंस्टॉलर चलाता है जो अन्य टैब में दिखाए गए `docker run …` कमांड को प्रिंट करता है। मेलर को कॉन्फ़िगर करने के बाद इसे अपने टर्मिनल में पेस्ट करें।
202
+
203
+ </Tab>
204
+ </Tabs>
205
+
206
+ **http://localhost:3000** खोलें और [प्रथम-रन सेटअप](#first-run-setup) का पालन करें। पहला बूट प्रतिकृति सेट और बकेट को इनिशियलाइज़ करता है, इसलिए इसे एक मिनट का समय दें।
207
+
208
+ ### बैकअप और अपग्रेड
209
+
210
+ सभी स्थिति `intlayer-data` वॉल्यूम (`/data/mongo`, `/data/redis`, `/data/minio`) में रखी जाती है।
211
+
212
+ ```sh
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 /
220
+ ```
221
+
222
+ अपग्रेड करने के लिए, इंस्टॉलर को फिर से चलाएं (यह नवीनतम इमेज खींचता है और `intlayer.env` रखता है), फिर `docker rm -f intlayer` चलाएं और स्टार्ट कमांड को फिर से चलाएं। बंडल किए गए के बजाय प्रबंधित MongoDB का उपयोग करने के लिए, `intlayer.env` में `MONGODB_URI` सेट करें।
223
+
224
+ </Tab>
225
+ <Tab label="Docker Compose" value="compose">
226
+
227
+ एक निजी Compose नेटवर्क पर प्रति सेवा एक कंटेनर। डैशबोर्ड और 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` | Chromium के साथ `:3100` पर 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">
281
+
282
+ In PowerShell:
283
+
284
+ ```powershell
285
+ $env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
286
+ ```
287
+
288
+ Or by hand:
289
+
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
+ ```
303
+
304
+ </Tab>
305
+ </Tabs>
115
306
 
116
- इंस्टॉलर कुछ environment variables को पढ़ता है। क्योंकि यह `sh` में piped है, उन्हें `curl` के बजाय shell में pass करें:
307
+ ### 2. मेलर कॉन्फ़िगर करें
308
+
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
+ रिपॉजिटरी क्लोन से, एक ओवरराइड के साथ दो 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
+ ### बैकअप और अपग्रेड
117
351
 
118
352
  ```sh
119
- curl -fsSL https://intlayer.org/install.sh | INTLAYER_ENV_FILE=./config/intlayer.env 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 start intlayer
357
+
358
+ # Upgrade, volumes are kept
359
+ docker compose pull && docker compose up -d
120
360
  ```
121
361
 
122
- | Variable | Default | Description |
123
- | ------------------------- | --------------------------------------------- | ------------------------------- |
124
- | `INTLAYER_IMAGE` | `ghcr.io/aymericzip/intlayer-selfhost:latest` | खींचने के लिए Image |
125
- | `INTLAYER_ENV_FILE` | `./intlayer.env` | env file लिखने के लिए जगह |
126
- | `INTLAYER_CONTAINER_NAME` | `intlayer` | Container का नाम |
127
- | `INTLAYER_DATA_VOLUME` | `intlayer-data` | `/data` पर mounted named volume |
128
- | `INTLAYER_APP_PORT` | `3000` | dashboard के लिए Host port |
129
- | `INTLAYER_API_PORT` | `3100` | API के लिए Host port |
130
- | `INTLAYER_S3_PORT` | `9000` | MinIO S3 API के लिए Host port |
131
- | `INTLAYER_CONSOLE_PORT` | `9001` | MinIO console के लिए Host port |
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
+ ```
132
372
 
133
- > चार port variables केवल `docker run` command में printed mapping के **host** side को बदलते हैं। प्रकाशित image में `http://localhost:3000`, `http://localhost:3100` और `http://localhost:9000` build time पर dashboard bundle में compiled हैं, इसलिए उन्हें remapping करने से browser पुराने ports की ओर इशारा करता है। जब तक आप अपना खुद का image बिल्ड नहीं कर रहे हैं, तब तक defaults को रखें — [Limitations](#limitations) देखें।
373
+ ```powershell
374
+ $env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
375
+ ```
134
376
 
135
- ## पहली बार सेटअप
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 |
136
391
 
137
- एक नए instance (खाली डेटाबेस) पर, डैशबोर्ड खोलने से आप **`/init`** पृष्ठ पर रीडायरेक्ट हो जाते हैं:
392
+ > पोर्ट चर मैपिंग के केवल **होस्ट** पक्ष को बदलते हैं। प्रकाशित इमेज में `http://localhost:3000`, `http://localhost:3100` और `http://localhost:9000` डैशबोर्ड बंडल में संकलित होते हैं, इसलिए जब तक आप अपनी खुद की इमेज नहीं बनाते, तब तक डिफ़ॉल्ट रखें, [सीमाएँ](#limitations) देखें।
138
393
 
139
- 1. पहला खाता बनाएँ। क्योंकि users collection खाली है, यह खाता स्वचालित रूप से **super admin** को प्रचारित किया जाता है।
140
- 2. एक सत्यापन ईमेल भेजा जाता है (Resend के माध्यम से)। ईमेल सत्यापन **अनिवार्य** है — यही कारण है कि `RESEND_API_KEY` को शुरू करने से पहले सेट किया जाना चाहिए।
141
- 3. ईमेल में लिंक पर क्लिक करें, फिर साइन इन करें।
394
+ ## प्रथम-रन सेटअप
142
395
 
143
- एक बार admin मौजूद हो जाने पर, `/init` मानक साइन-इन पृष्ठ पर रीडायरेक्ट करता है।
396
+ एक नए इंस्टेंस (खाली डेटाबेस) पर डैशबोर्ड खोलने पर स्वचालित रूप से **`/init`** पर पुनर्निर्देशित किया जाएगा:
144
397
 
145
- ## सेवाएँ
398
+ 1. पहला खाता बनाएं। चूंकि उपयोगकर्ता संग्रह खाली है, इसलिए यह खाता स्वचालित रूप से **सुपर एडमिन** में पदोन्नत हो जाता है।
399
+ 2. आपके Resend या SMTP रिले के माध्यम से एक सत्यापन ईमेल भेजा जाता है। ईमेल सत्यापन **अनिवार्य** है, यही कारण है कि शुरू करने से पहले एक मेलर कॉन्फ़िगर किया जाना चाहिए।
400
+ 3. ईमेल में दिए गए लिंक पर क्लिक करें और साइन इन करें।
146
401
 
147
- | सर्विस | इमेज | होस्ट पोर्ट(s) | उद्देश्य |
148
- | ----------- | ------------------------------------ | ------------------------------ | --------------------------------------------------- |
149
- | **app** | `apps/app/Dockerfile` से निर्मित | `3000` | TanStack Start डैशबोर्ड (CMS UI) |
150
- | **backend** | `apps/backend/Dockerfile` से निर्मित | `3100` | Fastify REST API (`/health` एंडपॉइंट) |
151
- | **mongo** | `mongo:7` | आंतरिक | सिंगल-नोड रेप्लिका सेट (`rs0`) |
152
- | **redis** | `redis:7-alpine` | आंतरिक | जॉब क्यू (BullMQ) और कैशिंग (ioredis) |
153
- | **minio** | `minio/minio` | `9000` (S3), `9001` (कंसोल) | अवतार और स्क्रीनशॉट के लिए S3-संगत ऑब्जेक्ट स्टोरेज |
154
- | **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (वेब UI) | लोकल ट्रांजैक्शनल ईमेल सिंक |
402
+ एक बार व्यवस्थापक मौजूद होने के बाद, `/init` सामान्य साइन-इन पृष्ठ पर पुनर्निर्देशित करता है।
155
403
 
156
- > MinIO पोर्ट `9000` ब्राउज़र द्वारा पहुँच योग्य होना चाहिए क्योंकि अपलोड किए गए एसेट (अवतार, स्क्रीनशॉट) सीधे `S3_PUBLIC_URL=http://localhost:9000/intlayer` से लोड होते हैं।
404
+ ## पर्यावरण चर
157
405
 
158
- ## Environment variables
406
+ दोनों Docker मोड [`docker/selfhost/.env.template`](https://github.com/aymericzip/intlayer/blob/main/docker/selfhost/.env.template) से उत्पन्न एक ही फ़ाइल (कंटेनर के लिए `intlayer.env`, Compose के लिए `.env`) पढ़ते हैं।
159
407
 
160
408
  ### आवश्यक
161
409
 
162
- | Variable | Example | Description |
163
- | ---------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
164
- | `DB_ID` | `intlayer` | MongoDB Atlas user |
165
- | `DB_MDP` | _(your password)_ | MongoDB Atlas password |
166
- | `DB_CLUSTER` | `cluster0.xxxxx.mongodb.net` | MongoDB Atlas cluster host (used in the `mongodb+srv://` URI) |
167
- | `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
168
- | `S3_SECRET_ACCESS_KEY` | _(generated)_ | Secret for the bundled MinIO |
169
- | `RESEND_API_KEY` | _(your key)_ | Transactional email via Resend. Required for first-run setup unless you configure a global SMTP mailer (see [Global mailer](#global-mailer)) |
170
-
171
- ### आवश्यक (स्वतः जेनरेटेड या प्रॉम्प्टेड)
172
-
173
- | वेरिएबल | उदाहरण | विवरण |
174
- | ---------------------- | ----------------------------------------------- | -------------------------------------------------- |
175
- | `NODE_ENV` | `production` | रनटाइम एनवायरनमेंट |
176
- | `PORT` | `3100` | बैकएंड लिसनिंग पोर्ट |
177
- | `BACKEND_URL` | `http://localhost:3100` | बैकएंड API का पब्लिक URL |
178
- | `APP_URL` | `http://localhost:3000` | डैशबोर्ड का पब्लिक URL |
179
- | `DOMAIN` | `localhost` | कुकी डोमेन |
180
- | `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | पूर्ण MongoDB कनेक्शन URI |
181
- | `REDIS_URL` | `redis://redis:6379` | Redis कनेक्शन URL |
182
- | `BETTER_AUTH_SECRET` | _(जेनरेटेड)_ | सेशन साइनिंग के लिए 32-बाइट सीक्रेट |
183
- | `MAIL_PROVIDER` | `smtp` | मेल ट्रांसपोर्ट: `smtp` या `resend` |
184
- | `MAIL_SMTP_HOST` | `mailpit` | SMTP होस्टनेम (मेलपिट कंटेनर नाम) |
185
- | `MAIL_SMTP_PORT` | `1025` | SMTP पोर्ट |
186
- | `MAIL_FROM` | `Intlayer <no-reply@localhost>` | प्रेषक पता |
187
- | `S3_ENDPOINT` | `http://minio:9000` | S3-संगत एंडपॉइंट |
188
- | `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | ब्राउज़र एसेट लोडिंग के लिए पब्लिक URL |
189
- | `S3_BUCKET_NAME` | `intlayer` | बकेट नाम |
190
- | `S3_ACCESS_KEY_ID` | _(जेनरेटेड)_ | MinIO एक्सेस की |
191
- | `S3_SECRET_ACCESS_KEY` | _(जेनरेटेड)_ | MinIO सीक्रेट की |
192
- | `VITE_BACKEND_URL` | `http://localhost:3100` | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया बैकएंड URL |
193
- | `VITE_DOMAIN` | `localhost` | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया डोमेन |
194
-
195
- ### Optional (features degrade gracefully when absent)
196
-
197
- | Variable | Feature |
198
- | -------------------------------------------------------- | ----------------------------------------- |
199
- | `OPENAI_API_KEY` | AI-assisted translation and content audit |
200
- | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Billing and subscription management |
201
- | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
202
- | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
203
- | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
204
- | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
205
-
206
- ### वैकल्पिक (अनुपस्थिति में फीचर धीरे-धीरे खराब हो जाते हैं)
207
-
208
- डिफ़ॉल्ट रूप से, सभी transactional ईमेल `RESEND_API_KEY` का उपयोग करके Resend के माध्यम से भेजे जाते हैं। Self-hosted deployments इसके बजाय **प्रत्येक** ईमेल — non-organization ईमेल जैसे कि password resets और magic links सहित — को environment variables के साथ कॉन्फ़िगर किए गए global mailer के माध्यम से route कर सकते हैं।
209
-
210
- `MAIL_PROVIDER` को सेट करें इसे सक्रिय करने के लिए। जब यह सेट नहीं है, तो डिफ़ॉल्ट Resend mailer का उपयोग किया जाता है।
211
-
212
- | वेरिएबल | फीचर |
213
- | -------------------------------------------------------- | ----------------------------------------------------------------------------- |
214
- | `OPENAI_API_KEY` | AI-सहायता प्राप्त अनुवाद और कंटेंट ऑडिट |
215
- | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | बिलिंग और सब्सक्रिप्शन प्रबंधन |
216
- | `RESEND_API_KEY` | रीसेंड के माध्यम से ट्रांजैक्शनल ईमेल (सेट होने पर मेलपिट को ओवरराइड करता है) |
217
- | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth लॉगिन |
218
- | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth लॉगिन |
219
- | `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth लॉगिन |
220
- | `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth लॉगिन |
221
- | `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | LinkedIn OAuth लॉगिन |
222
- | `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Atlassian OAuth लॉगिन |
223
-
224
- > प्राधिकार: एक संगठन का अपना mailer (**Organization** dashboard से कॉन्फ़िगर किया गया) global mailer को प्राथमिकता देता है, जो बदले में default Resend key को प्राथमिकता देता है।
225
-
226
- ## अपने इंटलेयर प्रोजेक्ट को कनेक्ट करना
227
-
228
- एक बार जब स्टैक चल रहा हो, तो अपने प्रोजेक्ट को `intlayer.org` के बजाय सेल्फ-होस्टेड बैकएंड और डैशबोर्ड पर पॉइंट करें।
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 |
445
+
446
+ ### ग्लोबल मेलर
447
+
448
+ पासवर्ड रीसेट और मैजिक लिंक जैसे गैर-संगठन ईमेल सहित सभी लेन-देन संबंधी ईमेल दो वैश्विक ट्रांसपोर्ट में से एक से होकर गुजरते हैं:
449
+
450
+ - **Resend**: `RESEND_API_KEY` का उपयोग करके।
451
+ - **SMTP**: `MAIL_SMTP_*` चरों का उपयोग करके। जैसे ही `MAIL_SMTP_HOST` सेट होता है, SMTP का उपयोग किया जाता है और `RESEND_API_KEY` को अनदेखा कर दिया जाता है।
452
+
453
+ `MAIL_PROVIDER` केवल तभी आवश्यक होता है जब दोनों कॉन्फ़िगर होने पर किसी एक ट्रांसपोर्ट को बाध्य करना हो (उदाहरण के लिए SMTP होस्ट मौजूद होने पर Resend रखने के लिए `MAIL_PROVIDER=resend`)।
454
+
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 |
464
+
465
+ > प्राथमिकता क्रम: किसी संगठन का अपना मेलर (**संगठन** डैशबोर्ड से कॉन्फ़िगर किया गया) ग्लोबल मेलर को ओवरराइड करता है, और ग्लोबल मेलर डिफ़ॉल्ट Resend कुंजी को ओवरराइड करता है।
466
+
467
+ ## अपने Intlayer प्रोजेक्ट को कनेक्ट करना
468
+
469
+ एक बार स्टैक चलने के बाद, अपने प्रोजेक्ट को `intlayer.org` के बजाय अपने सेल्फ-होस्टेड बैकएंड और डैशबोर्ड की ओर इंगित करने के लिए कॉन्फ़िगर करें।
229
470
 
230
471
  ### प्रोजेक्ट कॉन्फ़िगरेशन
231
472
 
@@ -238,23 +479,23 @@ const config: IntlayerConfig = {
238
479
  clientSecret: process.env.INTLAYER_CLIENT_SECRET,
239
480
 
240
481
  /**
241
- * सेल्फ-होस्टेड CMS डैशबोर्ड का URL।
242
- * डिफ़ॉल्ट: https://app.intlayer.org
482
+ * URL of the self-hosted CMS dashboard.
483
+ * Default: https://app.intlayer.org
243
484
  */
244
- cmsURL: process.env.INTLAYER_CMS_URL, // उदाहरण के लिए http://localhost:3000
485
+ cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
245
486
 
246
487
  /**
247
- * सेल्फ-होस्टेड बैकएंड API का URL।
248
- * डिफ़ॉल्ट: https://back.intlayer.org
488
+ * URL of the self-hosted backend API.
489
+ * Default: https://back.intlayer.org
249
490
  */
250
- backendURL: process.env.INTLAYER_BACKEND_URL, // उदाहरण के लिए http://localhost:3100
491
+ backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
251
492
  },
252
493
  };
253
494
 
254
495
  export default config;
255
496
  ```
256
497
 
257
- अपने प्रोजेक्ट के `.env` में एनवायरनमेंट वेरिएबल सेट करें:
498
+ Set the environment variables in your project's `.env`:
258
499
 
259
500
  ```sh
260
501
  INTLAYER_CMS_URL=http://localhost:3000
@@ -263,7 +504,7 @@ INTLAYER_CLIENT_ID=<your-client-id>
263
504
  INTLAYER_CLIENT_SECRET=<your-client-secret>
264
505
  ```
265
506
 
266
- अपने सेल्फ-होस्टेड डैशबोर्ड में `http://localhost:3000/projects` पर **प्रोजेक्ट्स → एक्सेस कीज़** के अंतर्गत एक्सेस क्रेडेंशियल बनाएँ।
507
+ अपने सेल्फ-होस्टेड डैशबोर्ड में **प्रोजेक्ट्स → एक्सेस कुंजियाँ** (`http://localhost:3000/projects`) पर एक्सेस क्रेडेंशियल बनाएं।
267
508
 
268
509
  ### `@intlayer/api` SDK
269
510
 
@@ -284,84 +525,17 @@ const cms = createIntlayerCMS({
284
525
  const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
285
526
  ```
286
527
 
287
- ## अपग्रेड करना
288
-
289
- `./intlayer/` डायरेक्टरी के अंदर से मैन्युअल रूप से अपग्रेड करने के लिए:
290
-
291
- ```sh
292
- docker compose pull
293
- docker compose up -d
294
- ```
295
-
296
- ## बैकअप और रीस्टोर
297
-
298
- सभी स्थायी डेटा तीन नामित डॉकर वॉल्यूम में रहते हैं।
299
-
300
- ### बैकअप
301
-
302
- ```sh
303
- docker run --rm \
304
- -v intlayer_mongo-data:/data \
305
- -v "$(pwd)":/backup \
306
- busybox tar czf /backup/mongo-data.tar.gz /data
307
-
308
- docker run --rm \
309
- -v intlayer_redis-data:/data \
310
- -v "$(pwd)":/backup \
311
- busybox tar czf /backup/redis-data.tar.gz /data
312
-
313
- docker run --rm \
314
- -v intlayer_minio-data:/data \
315
- -v "$(pwd)":/backup \
316
- busybox tar czf /backup/minio-data.tar.gz /data
317
- ```
318
-
319
- ### रीस्टोर
320
-
321
- ```sh
322
- docker run --rm \
323
- -v intlayer_mongo-data:/data \
324
- -v "$(pwd)":/backup \
325
- busybox tar xzf /backup/mongo-data.tar.gz -C /
326
-
327
- # redis-data और minio-data के लिए दोहराएँ
328
- ```
329
-
330
- ## सीमाएं
331
-
332
- - **MongoDB बाहरी (Atlas) होना चाहिए।** बैकएंड केवल `mongodb+srv://` पर कनेक्ट करता है (जो `DB_ID` / `DB_MDP` / `DB_CLUSTER` से बनाया गया है), इसलिए एक सादा `mongodb://host:27017` — कंटेनर के अपने बंडल किए गए `mongod` सहित — का उपयोग नहीं किया जा सकता है। एक MongoDB Atlas क्लस्टर प्रदान करें।
333
- - **कोई कस्टम डोमेन नहीं।** सभी ब्राउज़र-सामने वाले `VITE_*` URLs बिल्ड टाइम पर ऐप में इनलाइन किए जाते हैं, और प्रकाशित इमेज `localhost` मानों के साथ आती है। डैशबोर्ड को `http://localhost:3000` पर एक्सेस किया जाना चाहिए; इसे एक सार्वजनिक डोमेन पर सर्व करने के लिए इमेज को लक्ष्य URLs के साथत: फिर से बनाने की आवश्यकता होगी और इसे तुरंत समर्थित नहीं किया जाता है।
334
- - **ईमेल को एक काम करने वाले मेलर की आवश्यकता है।** पहली बार सेटअप ईमेल सत्यापन को लागू करता है, इसलिए या तो `RESEND_API_KEY` या एक [global SMTP mailer](#global-mailer) (`MAIL_PROVIDER=smtp` + `MAIL_SMTP_*`) को कॉन्फ़िगर किया जाना चाहिए। पहले एडमिन साइन इन करने के बाद, प्रत्येक संगठन डैशबोर्ड से अपना स्वयं का SMTP या Resend मेलर भी कॉन्फ़िगर कर सकता है।
335
-
336
- ## समस्या निवारण
337
-
338
- ### पहली शुरुआत में बैकएंड क्रैश-लूप करता है
339
-
340
- बैकएंड शुरू होने से पहले MongoDB और Redis स्वस्थ होने चाहिए। कंपोज़ फ़ाइल `condition: service_healthy` के साथ `depends_on` का उपयोग करती है। यदि आप बार-बार बैकएंड रीस्टार्ट देखते हैं, तो जांचें कि `mongo` और `redis` हेल्थचेक पास हो गए हैं या नहीं:
341
-
342
- ```sh
343
- docker compose ps
344
- docker compose logs mongo
345
- docker compose logs redis
346
- ```
347
-
348
- लॉग के शीर्ष के पास `MongoDB connection error` खोजें।
349
-
350
- ### ईमेल नहीं भेजा जा रहा है
351
-
352
- डिफ़ॉल्ट रूप से, सभी आउटबाउंड ईमेल मेलपिट द्वारा कैप्चर किए जाते हैं। भेजे गए संदेशों को देखने के लिए `http://localhost:8025` खोलें। वास्तविक ईमेल भेजने के लिए, `.env` में `MAIL_PROVIDER=resend` और `RESEND_API_KEY=<your-key>` सेट करें, फिर बैकएंड को रीस्टार्ट करें:
528
+ ## सीमाएँ
353
529
 
354
- ### MinIO बकेट गायब है
355
-
356
- यदि `minio-init` वन-शॉट सर्विस नहीं चली (या MinIO के तैयार होने से पहले चली), तो बकेट को मैन्युअल रूप से बनाएँ:
357
-
358
- ```sh
359
- docker compose run --rm minio-init
360
- ```
530
+ - **कोई कस्टम डोमेन और कोई पोर्ट रीमैपिंग नहीं।** सभी ब्राउज़र-सामना करने वाले `VITE_*` URL निर्माण के समय डैशबोर्ड में इनलाइन होते हैं, और प्रकाशित इमेज (और डेस्कटॉप ऐप) `localhost` / Intlayer Cloud मानों के साथ आते हैं। डैशबोर्ड को `http://localhost:3000` पर, API को `:3100` पर और MinIO को `:9000` पर एक्सेस किया जाना चाहिए। इसे सार्वजनिक डोमेन पर होस्ट करना, या डेस्कटॉप ऐप को सेल्फ-होस्टेड बैकएंड पर इंगित करना, लक्ष्य URL के साथ पुनर्निर्माण की आवश्यकता होती है (`docker/selfhost/Dockerfile` पर `--build-arg VITE_BACKEND_URL=… VITE_SITE_URL=… VITE_DOMAIN=…` के साथ, या `docker-compose.build.yml` के माध्यम से) और यह डिफ़ॉल्ट रूप से समर्थित नहीं है।
531
+ - **ईमेल के लिए एक कार्यशील मेलर की आवश्यकता होती है।** प्रथम-रन सेटअप ईमेल सत्यापन लागू करता है, इसलिए या तो `RESEND_API_KEY` या [SMTP रिले](#global-mailer) (`MAIL_SMTP_*`) कॉन्फ़िगर किया जाना चाहिए। पहले एडमिन के साइन इन करने के बाद, प्रत्येक संगठन डैशबोर्ड से अपना स्वयं का SMTP या Resend मेलर भी कॉन्फ़िगर कर सकता है।
532
+ - **डेस्कटॉप ऐप को अपने एम्बेडेड सर्वर को शुरू करने के लिए मशीन पर Node.js की आवश्यकता होती है।**
361
533
 
362
- ## उपयोगी लिंक
534
+ ## उपयोगी लिंक्स
363
535
 
364
- - [इंटलेयर सीएमएस डॉक्यूमेंटेशन](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
536
+ - [Intlayer CMS दस्तावेज़](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md)
365
537
  - [कॉन्फ़िगरेशन संदर्भ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/configuration.md)
366
- - [सीएमएस SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
367
- - [Docker Image (aymercizip/intlayer-selfhost)](https://hub.docker.com/repository/docker/aymercizip/intlayer-selfhost/general)
538
+ - [CMS SDK: `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/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`