nodebbs 0.0.9 → 0.1.0

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.
@@ -61,14 +61,13 @@
61
61
  "flags": {
62
62
  "env": {
63
63
  "char": "e",
64
- "description": "部署环境 (production, lowmem, basic)",
64
+ "description": "部署环境 (production, lowmem)",
65
65
  "name": "env",
66
66
  "hasDynamicHelp": false,
67
67
  "multiple": false,
68
68
  "options": [
69
69
  "production",
70
- "lowmem",
71
- "basic"
70
+ "lowmem"
72
71
  ],
73
72
  "type": "option"
74
73
  },
@@ -97,6 +96,56 @@
97
96
  "backup.js"
98
97
  ]
99
98
  },
99
+ "db:import": {
100
+ "aliases": [],
101
+ "args": {},
102
+ "description": "导入数据库 (PostgreSQL)",
103
+ "flags": {
104
+ "env": {
105
+ "char": "e",
106
+ "description": "部署环境 (production, lowmem)",
107
+ "name": "env",
108
+ "hasDynamicHelp": false,
109
+ "multiple": false,
110
+ "options": [
111
+ "production",
112
+ "lowmem"
113
+ ],
114
+ "type": "option"
115
+ },
116
+ "file": {
117
+ "char": "f",
118
+ "description": "SQL 备份文件路径",
119
+ "name": "file",
120
+ "required": true,
121
+ "hasDynamicHelp": false,
122
+ "multiple": false,
123
+ "type": "option"
124
+ },
125
+ "yes": {
126
+ "char": "y",
127
+ "description": "跳过确认提示",
128
+ "name": "yes",
129
+ "allowNo": false,
130
+ "type": "boolean"
131
+ }
132
+ },
133
+ "hasDynamicHelp": false,
134
+ "hiddenAliases": [],
135
+ "id": "db:import",
136
+ "pluginAlias": "nodebbs",
137
+ "pluginName": "nodebbs",
138
+ "pluginType": "core",
139
+ "strict": true,
140
+ "enableJsonFlag": false,
141
+ "isESM": true,
142
+ "relativePath": [
143
+ "dist",
144
+ "commands",
145
+ "db",
146
+ "import.js"
147
+ ]
148
+ },
100
149
  "db:push": {
101
150
  "aliases": [],
102
151
  "args": {},
@@ -104,14 +153,13 @@
104
153
  "flags": {
105
154
  "env": {
106
155
  "char": "e",
107
- "description": "部署环境 (production, lowmem, basic)",
156
+ "description": "部署环境 (production, lowmem)",
108
157
  "name": "env",
109
158
  "hasDynamicHelp": false,
110
159
  "multiple": false,
111
160
  "options": [
112
161
  "production",
113
- "lowmem",
114
- "basic"
162
+ "lowmem"
115
163
  ],
116
164
  "type": "option"
117
165
  }
@@ -139,14 +187,13 @@
139
187
  "flags": {
140
188
  "env": {
141
189
  "char": "e",
142
- "description": "部署环境 (production, lowmem, basic)",
190
+ "description": "部署环境 (production, lowmem)",
143
191
  "name": "env",
144
192
  "hasDynamicHelp": false,
145
193
  "multiple": false,
146
194
  "options": [
147
195
  "production",
148
- "lowmem",
149
- "basic"
196
+ "lowmem"
150
197
  ],
151
198
  "type": "option"
152
199
  }
@@ -174,14 +221,13 @@
174
221
  "flags": {
175
222
  "env": {
176
223
  "char": "e",
177
- "description": "部署环境 (production, lowmem, basic)",
224
+ "description": "部署环境 (production, lowmem)",
178
225
  "name": "env",
179
226
  "hasDynamicHelp": false,
180
227
  "multiple": false,
181
228
  "options": [
182
229
  "production",
183
- "lowmem",
184
- "basic"
230
+ "lowmem"
185
231
  ],
186
232
  "type": "option"
187
233
  }
@@ -209,14 +255,13 @@
209
255
  "flags": {
210
256
  "env": {
211
257
  "char": "e",
212
- "description": "部署环境 (production, lowmem, basic)",
258
+ "description": "部署环境 (production, lowmem)",
213
259
  "name": "env",
214
260
  "hasDynamicHelp": false,
215
261
  "multiple": false,
216
262
  "options": [
217
263
  "production",
218
- "lowmem",
219
- "basic"
264
+ "lowmem"
220
265
  ],
221
266
  "type": "option"
222
267
  }
@@ -244,14 +289,13 @@
244
289
  "flags": {
245
290
  "env": {
246
291
  "char": "e",
247
- "description": "部署环境 (production, lowmem, basic)",
292
+ "description": "部署环境 (production, lowmem)",
248
293
  "name": "env",
249
294
  "hasDynamicHelp": false,
250
295
  "multiple": false,
251
296
  "options": [
252
297
  "production",
253
- "lowmem",
254
- "basic"
298
+ "lowmem"
255
299
  ],
256
300
  "type": "option"
257
301
  }
@@ -279,14 +323,13 @@
279
323
  "flags": {
280
324
  "env": {
281
325
  "char": "e",
282
- "description": "部署环境 (production, lowmem, basic)",
326
+ "description": "部署环境 (production, lowmem)",
283
327
  "name": "env",
284
328
  "hasDynamicHelp": false,
285
329
  "multiple": false,
286
330
  "options": [
287
331
  "production",
288
- "lowmem",
289
- "basic"
332
+ "lowmem"
290
333
  ],
291
334
  "type": "option"
292
335
  }
@@ -314,14 +357,13 @@
314
357
  "flags": {
315
358
  "env": {
316
359
  "char": "e",
317
- "description": "部署环境 (production, lowmem, basic)",
360
+ "description": "部署环境 (production, lowmem)",
318
361
  "name": "env",
319
362
  "hasDynamicHelp": false,
320
363
  "multiple": false,
321
364
  "options": [
322
365
  "production",
323
- "lowmem",
324
- "basic"
366
+ "lowmem"
325
367
  ],
326
368
  "type": "option"
327
369
  }
@@ -349,14 +391,13 @@
349
391
  "flags": {
350
392
  "env": {
351
393
  "char": "e",
352
- "description": "部署环境 (production, lowmem, basic)",
394
+ "description": "部署环境 (production, lowmem)",
353
395
  "name": "env",
354
396
  "hasDynamicHelp": false,
355
397
  "multiple": false,
356
398
  "options": [
357
399
  "production",
358
- "lowmem",
359
- "basic"
400
+ "lowmem"
360
401
  ],
361
402
  "type": "option"
362
403
  }
@@ -411,7 +452,7 @@
411
452
  "rebuild": {
412
453
  "aliases": [],
413
454
  "args": {},
414
- "description": "重新构建并启动服务 (start --build)",
455
+ "description": "拉取最新镜像并重启服务 (Update & Restart)",
415
456
  "flags": {},
416
457
  "hasDynamicHelp": false,
417
458
  "hiddenAliases": [],
@@ -436,14 +477,13 @@
436
477
  "flags": {
437
478
  "env": {
438
479
  "char": "e",
439
- "description": "部署环境 (production, lowmem, basic)",
480
+ "description": "部署环境 (production, lowmem)",
440
481
  "name": "env",
441
482
  "hasDynamicHelp": false,
442
483
  "multiple": false,
443
484
  "options": [
444
485
  "production",
445
- "lowmem",
446
- "basic"
486
+ "lowmem"
447
487
  ],
448
488
  "type": "option"
449
489
  }
@@ -471,14 +511,13 @@
471
511
  "flags": {
472
512
  "env": {
473
513
  "char": "e",
474
- "description": "部署环境 (production, lowmem, basic)",
514
+ "description": "部署环境 (production, lowmem)",
475
515
  "name": "env",
476
516
  "hasDynamicHelp": false,
477
517
  "multiple": false,
478
518
  "options": [
479
519
  "production",
480
- "lowmem",
481
- "basic"
520
+ "lowmem"
482
521
  ],
483
522
  "type": "option"
484
523
  }
@@ -506,14 +545,13 @@
506
545
  "flags": {
507
546
  "env": {
508
547
  "char": "e",
509
- "description": "部署环境 (production, lowmem, basic)",
548
+ "description": "部署环境 (production, lowmem)",
510
549
  "name": "env",
511
550
  "hasDynamicHelp": false,
512
551
  "multiple": false,
513
552
  "options": [
514
553
  "production",
515
- "lowmem",
516
- "basic"
554
+ "lowmem"
517
555
  ],
518
556
  "type": "option"
519
557
  }
@@ -541,14 +579,13 @@
541
579
  "flags": {
542
580
  "env": {
543
581
  "char": "e",
544
- "description": "部署环境 (production, lowmem, basic)",
582
+ "description": "部署环境 (production, lowmem)",
545
583
  "name": "env",
546
584
  "hasDynamicHelp": false,
547
585
  "multiple": false,
548
586
  "options": [
549
587
  "production",
550
- "lowmem",
551
- "basic"
588
+ "lowmem"
552
589
  ],
553
590
  "type": "option"
554
591
  }
@@ -576,14 +613,13 @@
576
613
  "flags": {
577
614
  "env": {
578
615
  "char": "e",
579
- "description": "部署环境 (production, lowmem, basic)",
616
+ "description": "部署环境 (production, lowmem)",
580
617
  "name": "env",
581
618
  "hasDynamicHelp": false,
582
619
  "multiple": false,
583
620
  "options": [
584
621
  "production",
585
- "lowmem",
586
- "basic"
622
+ "lowmem"
587
623
  ],
588
624
  "type": "option"
589
625
  }
@@ -611,23 +647,23 @@
611
647
  "flags": {
612
648
  "env": {
613
649
  "char": "e",
614
- "description": "部署环境 (production, lowmem, basic)",
650
+ "description": "部署环境 (production, lowmem)",
615
651
  "name": "env",
616
652
  "hasDynamicHelp": false,
617
653
  "multiple": false,
618
654
  "options": [
619
655
  "production",
620
- "lowmem",
621
- "basic"
656
+ "lowmem"
622
657
  ],
623
658
  "type": "option"
624
659
  },
625
- "build": {
626
- "char": "b",
627
- "description": "重新构建并启动服务 (跳过健康检查和数据初始化)",
628
- "name": "build",
629
- "allowNo": false,
630
- "type": "boolean"
660
+ "tag": {
661
+ "char": "t",
662
+ "description": "Image version tag (e.g. latest, v0.1.0)",
663
+ "name": "tag",
664
+ "hasDynamicHelp": false,
665
+ "multiple": false,
666
+ "type": "option"
631
667
  }
632
668
  },
633
669
  "hasDynamicHelp": false,
@@ -653,14 +689,13 @@
653
689
  "flags": {
654
690
  "env": {
655
691
  "char": "e",
656
- "description": "部署环境 (production, lowmem, basic)",
692
+ "description": "部署环境 (production, lowmem)",
657
693
  "name": "env",
658
694
  "hasDynamicHelp": false,
659
695
  "multiple": false,
660
696
  "options": [
661
697
  "production",
662
- "lowmem",
663
- "basic"
698
+ "lowmem"
664
699
  ],
665
700
  "type": "option"
666
701
  }
@@ -695,14 +730,13 @@
695
730
  },
696
731
  "env": {
697
732
  "char": "e",
698
- "description": "部署环境 (production, lowmem, basic)",
733
+ "description": "部署环境 (production, lowmem)",
699
734
  "name": "env",
700
735
  "hasDynamicHelp": false,
701
736
  "multiple": false,
702
737
  "options": [
703
738
  "production",
704
- "lowmem",
705
- "basic"
739
+ "lowmem"
706
740
  ],
707
741
  "type": "option"
708
742
  }
@@ -724,5 +758,5 @@
724
758
  ]
725
759
  }
726
760
  },
727
- "version": "0.0.9"
761
+ "version": "0.1.0"
728
762
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nodebbs",
3
3
  "description": "NodeBBS 论坛系统专业运维工具",
4
- "version": "0.0.9",
4
+ "version": "0.1.0",
5
5
  "author": "wengqianshan",
6
6
  "bin": {
7
7
  "nodebbs": "./bin/run.js"
@@ -1,120 +0,0 @@
1
- # 生产环境 Docker Compose 覆盖配置
2
- # 使用方式: docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
3
- # 本文件只包含与 docker-compose.yml 的差异部分
4
-
5
- services:
6
- # PostgreSQL 数据库 - 生产环境优化
7
- postgres:
8
- restart: always
9
- ports: [] # 生产环境不暴露端口到主机,只在内部网络访问
10
- environment:
11
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # 生产环境必须设置强密码
12
- healthcheck:
13
- interval: 30s
14
- timeout: 10s
15
- retries: 5
16
- start_period: 40s
17
- deploy:
18
- resources:
19
- limits:
20
- cpus: '1'
21
- memory: 512M
22
- reservations:
23
- cpus: '0.25'
24
- memory: 256M
25
- logging:
26
- driver: "json-file"
27
- options:
28
- max-size: "10m"
29
- max-file: "3"
30
-
31
- # Redis 缓存 - 生产环境优化
32
- redis:
33
- restart: always
34
- command: >
35
- redis-server
36
- --requirepass ${REDIS_PASSWORD}
37
- --appendonly yes
38
- --appendfsync everysec
39
- --maxmemory 256mb
40
- --maxmemory-policy allkeys-lru
41
- ports: [] # 生产环境不暴露端口到主机
42
- healthcheck:
43
- interval: 30s
44
- timeout: 10s
45
- retries: 5
46
- start_period: 20s
47
- deploy:
48
- resources:
49
- limits:
50
- cpus: '0.5'
51
- memory: 256M
52
- reservations:
53
- cpus: '0.1'
54
- memory: 128M
55
- logging:
56
- driver: "json-file"
57
- options:
58
- max-size: "10m"
59
- max-file: "3"
60
-
61
- # API 服务 - 生产环境优化
62
- api:
63
- restart: always
64
- environment:
65
- USER_CACHE_TTL: ${USER_CACHE_TTL:-300} # 生产环境缓存时间更长
66
- JWT_SECRET: ${JWT_SECRET} # 生产环境必须设置
67
- CORS_ORIGIN: ${CORS_ORIGIN} # 生产环境必须明确设置
68
- APP_URL: ${APP_URL} # 生产环境实际域名
69
- NODE_OPTIONS: "--max-old-space-size=512" # 限制 Node.js 内存使用
70
- volumes:
71
- - api_uploads:/app/apps/api/uploads # 生产环境不挂载源代码
72
- healthcheck:
73
- start_period: 60s
74
- deploy:
75
- resources:
76
- limits:
77
- cpus: '1'
78
- memory: 768M
79
- reservations:
80
- cpus: '0.3'
81
- memory: 384M
82
- logging:
83
- driver: "json-file"
84
- options:
85
- max-size: "20m"
86
- max-file: "5"
87
-
88
- # Web 前端服务 - 生产环境优化
89
- web:
90
- restart: always
91
- build:
92
- args:
93
- NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
94
- NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL}
95
- environment:
96
- NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
97
- NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL}
98
- NODE_OPTIONS: "--max-old-space-size=512" # 限制 Node.js 内存使用
99
- healthcheck:
100
- start_period: 60s
101
- deploy:
102
- resources:
103
- limits:
104
- cpus: '1'
105
- memory: 768M
106
- reservations:
107
- cpus: '0.3'
108
- memory: 384M
109
- logging:
110
- driver: "json-file"
111
- options:
112
- max-size: "20m"
113
- max-file: "5"
114
-
115
- # 网络 - 生产环境使用固定子网
116
- networks:
117
- nodebbs-network:
118
- ipam:
119
- config:
120
- - subnet: 172.28.0.0/16
@@ -1,14 +0,0 @@
1
- -- PostgreSQL 初始化脚本
2
- -- 这个脚本会在数据库首次创建时执行
3
-
4
- -- 创建扩展(如果需要)
5
- -- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
6
- -- CREATE EXTENSION IF NOT EXISTS "pg_trgm";
7
-
8
- -- 设置时区
9
- SET timezone = 'Asia/Shanghai';
10
-
11
- -- 数据库已由 POSTGRES_DB 环境变量创建
12
- -- 这里可以添加其他初始化 SQL
13
-
14
- \echo '数据库初始化完成'