container-superposition 0.1.1

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 (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,125 @@
1
+ #!/bin/bash
2
+ # ngrok setup script
3
+
4
+ set -e
5
+
6
+ echo "🌐 Setting up ngrok..."
7
+
8
+ # Install ngrok using official apt repository (provides signed packages)
9
+ echo "📦 Installing ngrok from official repository..."
10
+
11
+ # Add ngrok's GPG key and repository
12
+ curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
13
+ | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
14
+
15
+ echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
16
+ | sudo tee /etc/apt/sources.list.d/ngrok.list
17
+
18
+ # Update and install
19
+ sudo apt-get update -qq
20
+ sudo apt-get install -y ngrok
21
+
22
+ # Verify installation
23
+ if command -v ngrok &> /dev/null; then
24
+ echo "✓ ngrok installed: $(ngrok version)"
25
+ else
26
+ echo "✗ ngrok installation failed"
27
+ exit 1
28
+ fi
29
+
30
+ # Create sample ngrok configuration
31
+ mkdir -p "$HOME/.config/ngrok"
32
+ if [ ! -f "$HOME/.config/ngrok/ngrok.yml" ]; then
33
+ cat > "$HOME/.config/ngrok/ngrok.yml" << 'EOF'
34
+ # ngrok configuration file
35
+ # Visit https://dashboard.ngrok.com/get-started/your-authtoken to get your authtoken
36
+ # Then run: ngrok config add-authtoken YOUR_TOKEN
37
+
38
+ version: "2"
39
+
40
+ # Uncomment and set your authtoken
41
+ # authtoken: YOUR_AUTHTOKEN_HERE
42
+
43
+ # Region (us, eu, ap, au, sa, jp, in)
44
+ region: us
45
+
46
+ # Console UI settings
47
+ console_ui: true
48
+ console_ui_color: transparent
49
+
50
+ # Log settings
51
+ log_level: info
52
+ log_format: json
53
+ log: /tmp/ngrok.log
54
+
55
+ # Tunnel definitions
56
+ tunnels:
57
+ # HTTP tunnel example
58
+ web:
59
+ proto: http
60
+ addr: 3000
61
+ # Optional: custom subdomain (requires paid plan)
62
+ # subdomain: myapp
63
+ # Optional: custom domain (requires paid plan)
64
+ # hostname: myapp.example.com
65
+ # Optional: basic auth
66
+ # auth: "user:password"
67
+ # Optional: inspect traffic
68
+ inspect: true
69
+
70
+ # HTTPS tunnel example
71
+ api:
72
+ proto: http
73
+ addr: 8080
74
+ inspect: true
75
+
76
+ # TCP tunnel example (databases, SSH, etc.)
77
+ database:
78
+ proto: tcp
79
+ addr: 5432
80
+
81
+ # TLS tunnel example
82
+ secure:
83
+ proto: tls
84
+ addr: 443
85
+
86
+ # Webhook endpoints for event notifications (requires paid plan)
87
+ # webhooks:
88
+ # - name: "webhook-handler"
89
+ # url: "https://example.com/ngrok-events"
90
+ # events:
91
+ # - "tunnel_started"
92
+ # - "tunnel_stopped"
93
+ EOF
94
+ echo "✓ Sample ngrok.yml created at ~/.config/ngrok/ngrok.yml"
95
+ fi
96
+
97
+ # Create sample helper scripts
98
+ mkdir -p "$HOME/.local/bin" 2>/dev/null || true
99
+
100
+ cat > "$HOME/.local/bin/ngrok-web" << 'EOF'
101
+ #!/bin/bash
102
+ # Quick script to expose local web server
103
+
104
+ PORT=${1:-3000}
105
+ echo "🌐 Exposing localhost:${PORT} via ngrok..."
106
+ ngrok http ${PORT}
107
+ EOF
108
+
109
+ chmod +x "$HOME/.local/bin/ngrok-web" 2>/dev/null || true
110
+
111
+ echo "✓ ngrok setup complete"
112
+ echo ""
113
+ echo "⚠️ IMPORTANT: Authenticate ngrok before use"
114
+ echo " 1. Sign up at https://dashboard.ngrok.com/signup"
115
+ echo " 2. Get your authtoken from https://dashboard.ngrok.com/get-started/your-authtoken"
116
+ echo " 3. Run: ngrok config add-authtoken YOUR_TOKEN"
117
+ echo ""
118
+ echo "💡 Quick start:"
119
+ echo " ngrok http 3000 # Expose localhost:3000"
120
+ echo " ngrok http 8080 --subdomain myapp # Custom subdomain (paid)"
121
+ echo " ngrok tcp 22 # Expose SSH"
122
+ echo " ngrok start web # Start named tunnel from config"
123
+ echo ""
124
+ echo "📚 Configuration: ~/.config/ngrok/ngrok.yml"
125
+ echo "🔍 Web interface: http://localhost:4040"
@@ -0,0 +1,192 @@
1
+ # Node.js Overlay
2
+
3
+ Adds Node.js LTS with TypeScript, modern tooling, and customizable global packages.
4
+
5
+ ## Features
6
+
7
+ - **Node.js LTS** (currently 20.x)
8
+ - **Package Managers:** npm (built-in), pnpm (via global-packages.txt)
9
+ - **VS Code Extensions:**
10
+ - ESLint (dbaeumer.vscode-eslint)
11
+ - Prettier (esbenp.prettier-vscode)
12
+ - npm Intellisense (christian-kohler.npm-intellisense)
13
+ - **Automatic install:** Runs `npm install` on container creation
14
+ - **Global Packages:** Configured via `global-packages.txt`
15
+
16
+ ## Customizing Global Packages
17
+
18
+ The overlay includes a customizable `global-packages.txt` file in `.devcontainer/`:
19
+
20
+ **`.devcontainer/global-packages.txt`:**
21
+
22
+ ```
23
+ # Node.js Global Packages
24
+ # Format: one package per line, with optional version
25
+ # Example: typescript@5.3.0
26
+
27
+ # pnpm - Fast package manager
28
+ pnpm
29
+
30
+ # Add your custom global packages here
31
+ typescript
32
+ ts-node
33
+ nodemon
34
+ eslint
35
+ prettier
36
+ ```
37
+
38
+ ### Version Pinning
39
+
40
+ Pin specific versions using `@`:
41
+
42
+ ```
43
+ typescript@5.3.0
44
+ pnpm@8.10.0
45
+ eslint@8.50.0
46
+ ```
47
+
48
+ **Rebuild container** after editing to install new packages.
49
+
50
+ ## Common Global Packages
51
+
52
+ ### Development Tools
53
+
54
+ - `pnpm` - Fast, disk-efficient package manager
55
+ - `typescript` - TypeScript compiler
56
+ - `ts-node` - TypeScript execution engine
57
+ - `tsx` - Modern TypeScript runner
58
+
59
+ ### Process Management
60
+
61
+ - `nodemon` - Auto-restart on file changes
62
+ - `pm2` - Production process manager
63
+ - `concurrently` - Run multiple commands
64
+
65
+ ### Code Quality
66
+
67
+ - `eslint` - JavaScript linter
68
+ - `prettier` - Code formatter
69
+ - `@biomejs/biome` - All-in-one toolchain
70
+
71
+ ### Build & Bundle
72
+
73
+ - `vite` - Modern build tool
74
+ - `esbuild` - Fast bundler
75
+ - `webpack-cli` - Webpack command line
76
+
77
+ ### Testing
78
+
79
+ - `vitest` - Fast test runner
80
+ - `jest` - Testing framework
81
+
82
+ ## Project Structure
83
+
84
+ Works with:
85
+
86
+ - **package.json** - Project dependencies
87
+ - **package-lock.json** (npm)
88
+ - **pnpm-lock.yaml** (pnpm)
89
+ - **yarn.lock** (yarn)
90
+
91
+ ## Automatic Setup
92
+
93
+ On container creation:
94
+
95
+ 1. ✅ Installs global packages from `global-packages.txt`
96
+ 2. ✅ Runs `npm install` (if package.json exists)
97
+ 3. ✅ Verifies installations
98
+
99
+ ## Common Workflows
100
+
101
+ ### Using pnpm
102
+
103
+ ```bash
104
+ pnpm install # Install dependencies
105
+ pnpm add express # Add dependency
106
+ pnpm run dev # Run dev script
107
+ ```
108
+
109
+ ### TypeScript Development
110
+
111
+ ```bash
112
+ # Global tools approach
113
+ npm install -g typescript ts-node
114
+ tsc --init
115
+ ts-node src/index.ts
116
+
117
+ # Local tools approach (recommended)
118
+ npm install --save-dev typescript ts-node
119
+ npx tsc --init
120
+ npx ts-node src/index.ts
121
+ ```
122
+
123
+ ### Running Multiple Processes
124
+
125
+ With `concurrently` installed globally:
126
+
127
+ ```bash
128
+ concurrently "npm run api" "npm run web"
129
+ ```
130
+
131
+ ## Package Manager Choice
132
+
133
+ ### npm (Default)
134
+
135
+ - ✅ Built-in, no setup
136
+ - ✅ Widely compatible
137
+ - ❌ Slower, larger node_modules
138
+
139
+ ### pnpm (Recommended)
140
+
141
+ - ✅ Fast, efficient disk usage
142
+ - ✅ Strict dependency resolution
143
+ - ✅ Workspace support
144
+ - ⚠️ Some compatibility edge cases
145
+
146
+ ### yarn
147
+
148
+ - Add to `global-packages.txt`: `yarn`
149
+
150
+ ## Best Practices
151
+
152
+ 1. **Prefer local over global** - Use `devDependencies` in package.json
153
+ 2. **Lock file** - Commit package-lock.json / pnpm-lock.yaml
154
+ 3. **Use `.nvmrc`** or `engines` in package.json for Node version
155
+ 4. **scripts in package.json** - Better than global commands
156
+
157
+ ## Troubleshooting
158
+
159
+ ### Package not found after adding to global-packages.txt
160
+
161
+ Rebuild the container:
162
+
163
+ - **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
164
+
165
+ ### pnpm vs npm conflict
166
+
167
+ Choose one and stick with it. Delete the other's lock file.
168
+
169
+ ### Node version mismatch
170
+
171
+ Check `.nvmrc` or `package.json` engines field matches container Node version.
172
+
173
+ ### Want to use different Node version?
174
+
175
+ Update `devcontainer.patch.json`:
176
+
177
+ ```json
178
+ {
179
+ "features": {
180
+ "ghcr.io/devcontainers/features/node:1": {
181
+ "version": "18" // or "20", "21", etc.
182
+ }
183
+ }
184
+ }
185
+ ```
186
+
187
+ ## Related Overlays
188
+
189
+ - **postgres** - PostgreSQL for Node.js apps
190
+ - **redis** - Session storage, caching
191
+ - **playwright** - E2E testing
192
+ - **codex** - Alternative with pnpm + .codex mount
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "build-essential",
6
+ "apk": "build-base"
7
+ },
8
+ "ghcr.io/devcontainers/features/node:1": {
9
+ "version": "lts",
10
+ "nodeGypDependencies": true,
11
+ "installYarnUsingApt": true
12
+ }
13
+ },
14
+ "customizations": {
15
+ "vscode": {
16
+ "extensions": [
17
+ "dbaeumer.vscode-eslint",
18
+ "esbenp.prettier-vscode",
19
+ "christian-kohler.npm-intellisense"
20
+ ],
21
+ "settings": {
22
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
23
+ "editor.codeActionsOnSave": {
24
+ "source.fixAll.eslint": "explicit"
25
+ },
26
+ "[typescript]": {
27
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
28
+ },
29
+ "[javascript]": {
30
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
31
+ }
32
+ }
33
+ }
34
+ },
35
+ "remoteEnv": {
36
+ "PATH": "${containerEnv:HOME}/.local/share/pnpm:${containerEnv:HOME}/.npm-global/bin:${containerEnv:PATH}"
37
+ },
38
+ "forwardPorts": [3000, 8080],
39
+ "portsAttributes": {
40
+ "3000": {
41
+ "label": "Dev Server",
42
+ "onAutoForward": "openBrowser"
43
+ },
44
+ "8080": {
45
+ "label": "Web App",
46
+ "onAutoForward": "notify"
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,16 @@
1
+ # Node.js Global Packages
2
+ # Customize this file to add or remove globally installed npm packages
3
+ # Format: one package per line, with optional version
4
+ # Example: typescript@5.3.0
5
+
6
+ # pnpm - Fast, disk space efficient package manager
7
+ pnpm
8
+
9
+ # Add your custom global packages here
10
+ # Common examples:
11
+ # typescript
12
+ # ts-node
13
+ # nodemon
14
+ # pm2
15
+ # eslint
16
+ # prettier
@@ -0,0 +1,14 @@
1
+ id: nodejs
2
+ name: Node.js
3
+ description: Node.js LTS with TypeScript and tooling
4
+ category: language
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - language
11
+ - nodejs
12
+ - javascript
13
+ - typescript
14
+ ports: []
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+ # Node.js setup script - Install global npm packages
3
+
4
+ set -e
5
+
6
+ # Extract overlay name from script filename (setup-<overlay>.sh -> <overlay>)
7
+ OVERLAY_NAME=$(basename "$0" | sed 's/setup-//;s/\.sh$//')
8
+
9
+ echo "📦 Installing Node.js global packages..."
10
+
11
+ # Read packages from configuration file if it exists
12
+ if [ -f ".devcontainer/global-packages-${OVERLAY_NAME}.txt" ]; then
13
+ echo "📦 Installing packages from global-packages-${OVERLAY_NAME}.txt..."
14
+
15
+ packages=()
16
+ while IFS= read -r line || [ -n "$line" ]; do
17
+ # Skip comments and empty lines
18
+ [[ "$line" =~ ^#.*$ ]] && continue
19
+ [[ -z "$line" ]] && continue
20
+
21
+ packages+=("$line")
22
+ done < ".devcontainer/global-packages-${OVERLAY_NAME}.txt"
23
+
24
+ if [ ${#packages[@]} -gt 0 ]; then
25
+ echo " Installing: ${packages[*]}"
26
+ npm install -g "${packages[@]}"
27
+ fi
28
+ else
29
+ # Fallback to pnpm only
30
+ echo "📦 Installing pnpm (default)..."
31
+ npm install -g pnpm
32
+ fi
33
+
34
+ # Verify pnpm installation (if included)
35
+ if command -v pnpm &> /dev/null; then
36
+ echo "✓ pnpm installed successfully: $(pnpm --version)"
37
+ fi
38
+
39
+ # Install project dependencies if package.json exists
40
+ if [ -f "package.json" ]; then
41
+ echo "📦 Installing project dependencies..."
42
+ npm install || true
43
+ echo "✓ Project dependencies installed"
44
+ fi
45
+
46
+ echo "✓ Node.js setup complete"
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+ # Verification script for Node.js overlay
3
+ # Confirms Node.js and npm are installed
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying Node.js overlay..."
8
+ echo ""
9
+
10
+ # Check node is installed
11
+ echo "1️⃣ Checking Node.js..."
12
+ if command -v node &> /dev/null; then
13
+ node --version
14
+ echo " ✅ Node.js found"
15
+ else
16
+ echo " ❌ Node.js not found"
17
+ exit 1
18
+ fi
19
+
20
+ # Check npm is installed
21
+ echo ""
22
+ echo "2️⃣ Checking npm..."
23
+ if command -v npm &> /dev/null; then
24
+ npm --version
25
+ echo " ✅ npm found"
26
+ else
27
+ echo " ❌ npm not found"
28
+ exit 1
29
+ fi
30
+
31
+ echo ""
32
+ echo "✅ Node.js overlay verification complete"
@@ -0,0 +1,9 @@
1
+ # OpenTelemetry Collector version
2
+ OTEL_COLLECTOR_VERSION=latest
3
+
4
+ # OpenTelemetry Collector ports
5
+ OTEL_GRPC_PORT=4317
6
+ OTEL_HTTP_PORT=4318
7
+ OTEL_METRICS_PORT=8888
8
+ OTEL_EXPORTER_PORT=8889
9
+ OTEL_HEALTH_PORT=13133