Compare commits
16 Commits
dc28accf11
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbed3a3bf8 | ||
|
|
ced3b75a44 | ||
|
|
80a1839224 | ||
|
|
ecc5db8926 | ||
|
|
0c7361772d | ||
|
|
207bb12b65 | ||
|
|
277d65fe3e | ||
|
|
2636c5ca6b | ||
|
|
6c0651e1be | ||
|
|
e740e5f4fb | ||
|
|
41326c30b9 | ||
|
|
a829a427aa | ||
|
|
4631ac231c | ||
|
|
4a2bf4112b | ||
|
|
44cf0e5a35 | ||
|
|
05e6a4c7a5 |
@@ -1,8 +1,23 @@
|
|||||||
|
const { getBuildProfile } = require("./scripts/build-resource-profile.cjs");
|
||||||
|
|
||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
// Docker 部署支持
|
// Docker 部署支持
|
||||||
// output: 'standalone',
|
// output: 'standalone',
|
||||||
|
|
||||||
|
// 生产构建:parallelism 由 scripts/next-build.cjs 注入 NAVSPHERE_WEBPACK_PARALLELISM;直接 next build 则按机器自动算
|
||||||
|
webpack: (config, { dev }) => {
|
||||||
|
if (!dev) {
|
||||||
|
const fromEnv = process.env.NAVSPHERE_WEBPACK_PARALLELISM;
|
||||||
|
const n = fromEnv ? parseInt(fromEnv, 10) : NaN;
|
||||||
|
config.parallelism =
|
||||||
|
Number.isFinite(n) && n > 0
|
||||||
|
? n
|
||||||
|
: getBuildProfile().parallelism;
|
||||||
|
}
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
|
||||||
images: {
|
images: {
|
||||||
domains: [
|
domains: [
|
||||||
"dash.cloudflare.com",
|
"dash.cloudflare.com",
|
||||||
@@ -34,6 +49,43 @@ const nextConfig = {
|
|||||||
serverActions: {
|
serverActions: {
|
||||||
allowedOrigins: ["localhost", "navsphere.com", "*.hackrobot.cn"],
|
allowedOrigins: ["localhost", "navsphere.com", "*.hackrobot.cn"],
|
||||||
},
|
},
|
||||||
|
// 按需解析 barrel 导出,减轻构建时 AST/模块图压力
|
||||||
|
optimizePackageImports: [
|
||||||
|
"lucide-react",
|
||||||
|
"date-fns",
|
||||||
|
"recharts",
|
||||||
|
"@tanstack/react-table",
|
||||||
|
"@tanstack/react-query",
|
||||||
|
"@hello-pangea/dnd",
|
||||||
|
"@radix-ui/react-accordion",
|
||||||
|
"@radix-ui/react-alert-dialog",
|
||||||
|
"@radix-ui/react-aspect-ratio",
|
||||||
|
"@radix-ui/react-avatar",
|
||||||
|
"@radix-ui/react-checkbox",
|
||||||
|
"@radix-ui/react-collapsible",
|
||||||
|
"@radix-ui/react-context-menu",
|
||||||
|
"@radix-ui/react-dialog",
|
||||||
|
"@radix-ui/react-dropdown-menu",
|
||||||
|
"@radix-ui/react-hover-card",
|
||||||
|
"@radix-ui/react-label",
|
||||||
|
"@radix-ui/react-menubar",
|
||||||
|
"@radix-ui/react-navigation-menu",
|
||||||
|
"@radix-ui/react-popover",
|
||||||
|
"@radix-ui/react-progress",
|
||||||
|
"@radix-ui/react-radio-group",
|
||||||
|
"@radix-ui/react-scroll-area",
|
||||||
|
"@radix-ui/react-select",
|
||||||
|
"@radix-ui/react-separator",
|
||||||
|
"@radix-ui/react-slider",
|
||||||
|
"@radix-ui/react-slot",
|
||||||
|
"@radix-ui/react-switch",
|
||||||
|
"@radix-ui/react-tabs",
|
||||||
|
"@radix-ui/react-toast",
|
||||||
|
"@radix-ui/react-toggle",
|
||||||
|
"@radix-ui/react-toggle-group",
|
||||||
|
"@radix-ui/react-toolbar",
|
||||||
|
"@radix-ui/react-tooltip",
|
||||||
|
],
|
||||||
},
|
},
|
||||||
// 加在这句话就够了
|
// 加在这句话就够了
|
||||||
generateBuildId: async () => {
|
generateBuildId: async () => {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "node ./scripts/next-build.cjs",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
"clean": "rm -rf .next",
|
"clean": "rm -rf .next",
|
||||||
@@ -112,5 +112,6 @@
|
|||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
"crypto": false
|
"crypto": false
|
||||||
}
|
},
|
||||||
|
"packageManager": "pnpm@10.25.0+sha1.2cfb3ab644446565c127f58165cc76368c9c920b"
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
public/assets/blog.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/assets/images/blog.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/assets/images/creem.ico
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
public/assets/images/dsx.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/assets/images/logos/colocrossing.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/images/logos/proxy.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
public/assets/images/logos/ykk.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/assets/images/nomadcna.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/assets/images/nowpayments.ico
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/assets/images/proxy.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
public/assets/images/stripe.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/assets/images/xorpay.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
public/assets/images/zpay.ico
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/assets/proxy.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
@@ -9,157 +9,53 @@
|
|||||||
{
|
{
|
||||||
"id": "cbb3e3w3d-408b-41ba-9e9a-eww0444w30s3e3ff1122",
|
"id": "cbb3e3w3d-408b-41ba-9e9a-eww0444w30s3e3ff1122",
|
||||||
"title": "游民社区",
|
"title": "游民社区",
|
||||||
"icon": "Book",
|
"icon": "Users",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "9_1wqwq", "title": "nomadro", "href": "https://nomadro.com", "description": "出海导航", "icon": "/assets/images/nomadro2.png", "enabled": true },
|
||||||
"id": "9_1wqwq",
|
{ "id": "17590462851wqqw25", "title": "nomadlist", "href": "https://nomads.com?ref=https://nomadro.com", "description": "海外最大的数字游民社区", "icon": "/assets/images/nomadlist.png", "enabled": true },
|
||||||
"title": "nomadro",
|
{ "id": "17590462851wqqw22225", "title": "nomadcna", "href": "https://meetup.hackrobot.cn", "description": "国内数字游民社区", "icon": "/assets/images/nomadcna.jpg", "enabled": true }
|
||||||
"href": "https://nomadro.com",
|
|
||||||
"description": "中国数字游民社区",
|
|
||||||
"icon": "/assets/images/nomadro2.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17590462851wqqw25",
|
|
||||||
"title": "nomadlist",
|
|
||||||
"href": "https://nomads.com?ref=https://nomadro.com",
|
|
||||||
"description": "海外最大的数字游民社区",
|
|
||||||
"icon": "/assets/images/nomadlist.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e3w3d-408b-41ba-9e9a-eww0444w30s3e3ff",
|
"id": "cbb3e3w3d-408b-41ba-9e9a-eww0444w30s3e3ff",
|
||||||
"title": "工具箱",
|
"title": "工具箱",
|
||||||
"icon": "Book",
|
"icon": "Wrench",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "9_1", "title": "ChatGPT", "href": "https://chat.openai.com/", "description": "OpenAI开发的人工智能聊天机器人程序。", "icon": "/assets/images/logos/chatgpt.png", "enabled": true },
|
||||||
"id": "9_1",
|
{ "id": "1759046285125", "title": "Grok", "href": "https://grok.com/", "description": "Grok is a free AI assistant designed by xAI to maximize truth and objectivity.", "icon": "/assets/favicon_1759046289851.png", "enabled": true },
|
||||||
"title": "ChatGPT",
|
{ "id": "17364182wwww9ww6509", "title": "沉浸式翻译", "href": "https://immersivetranslate.com/?via=nomad-vps", "description": "双语翻译插件", "icon": "/assets/images/logos/trans.png", "enabled": false },
|
||||||
"href": "https://chat.openai.com/",
|
{ "id": "17364182wwww9wwww6509", "title": "奈飞小铺", "href": "https://ihezu.art/CZhn6c", "description": "代充值,外网账号合租平台", "icon": "/assets/images/naifei.png", "enabled": true }
|
||||||
"description": "OpenAI开发的人工智能聊天机器人程序。",
|
|
||||||
"icon": "/assets/images/logos/chatgpt.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1759046285125",
|
|
||||||
"title": "Grok",
|
|
||||||
"href": "https://grok.com/",
|
|
||||||
"description": "Grok is a free AI assistant designed by xAI to maximize truth and objectivity. Grok offers real-time search, image generation, trend analysis, and more.",
|
|
||||||
"icon": "/assets/favicon_1759046289851.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17364182wwww9ww6509",
|
|
||||||
"title": "沉浸式翻译",
|
|
||||||
"href": "https://immersivetranslate.com/?via=nomad-vps",
|
|
||||||
"description": "双语翻译插件",
|
|
||||||
"icon": "/assets/images/logos/trans.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17364182wwww9wwww6509",
|
|
||||||
"title": "奈飞小铺",
|
|
||||||
"href": "https://ihezu.art/CZhn6c",
|
|
||||||
"description": "代充值,外网账号合租平台",
|
|
||||||
"icon": "/assets/images/naifei.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e3w3d-408b-41ba-9e9a-eqqww0444w30s3e3ff",
|
"id": "cbb3e3w3d-408b-41ba-9e9a-eqqww0444w30s3e3ff",
|
||||||
"title": "美国手机号",
|
"title": "美国手机号",
|
||||||
"icon": "Book",
|
"icon": "Phone",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "1759046285124124ee25", "title": "1psim", "href": "https://1psim.com/7GARRL", "description": "低成本:2.5$/m,支持esim和实体卡(邮寄中国)", "icon": "/assets/images/1psim.png", "enabled": true },
|
||||||
"id": "1759046285124124ee25",
|
{ "id": "17364182wwww1241249ww6509", "title": "yesim", "href": "https://yesim.app/?partner_id=1948", "description": "美国手机号,3$/m", "icon": "/assets/images/yesim.png", "enabled": true },
|
||||||
"title": "1psim",
|
{ "id": "1412141241234235235345345", "title": "tello", "href": "https://tello.com/", "description": "最低5$/m,支持esim", "icon": "/assets/images/tello.png", "enabled": true },
|
||||||
"href": "https://1psim.com/7GARRL",
|
{ "id": "1412141241234235222235345345", "title": "9esim", "href": "https://www.9esim.com/?coupon=XIAOSHUANGERIC2", "description": "让任何手机支持esim,可写数据的SIM实体卡", "icon": "/assets/images/9esim.png", "enabled": true }
|
||||||
"description": "低成本:2.5$/m,支持esim和实体卡(邮寄中国)",
|
|
||||||
"icon": "/assets/images/1psim.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17364182wwww1241249ww6509",
|
|
||||||
"title": "yesim",
|
|
||||||
"href": "https://yesim.app/?partner_id=1948",
|
|
||||||
"description": "美国手机号,3$/m",
|
|
||||||
"icon": "/assets/images/yesim.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1412141241234235235345345",
|
|
||||||
"title": "tello",
|
|
||||||
"href": "https://tello.com/",
|
|
||||||
"description": "最低5$/m,支持esim",
|
|
||||||
"icon": "/assets/images/tello.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1412141241234235222235345345",
|
|
||||||
"title": "9esim",
|
|
||||||
"href": "https://www.9esim.com/?coupon=XIAOSHUANGERIC2",
|
|
||||||
"description": "让任何手机支持esim,可写数据的SIM实体卡",
|
|
||||||
"icon": "/assets/images/9esim.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e33d-408b-41ba-9e9a-e044432203e3ff",
|
"id": "cbb3e33d-408b-41ba-9e9a-e044432203e3ff",
|
||||||
"title": "金融收款",
|
"title": "金融收款",
|
||||||
"icon": "Book",
|
"icon": "Wallet",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "1736911347qwwq619", "title": "wise", "href": "https://wise.com/invite/amc/xiaoshuangh", "description": "线上开通境外银行账户(身份证即可)", "icon": "/assets/images/logos/wise.png", "enabled": true },
|
||||||
"id": "1736911347qwwq619",
|
{ "id": "qwqeeeweqwqwwq2", "title": "OKX交易所", "href": "https://okx.com/join/84999861", "description": "加密货币交易所", "icon": "/assets/images/logos/okx.png", "enabled": true },
|
||||||
"title": "wise",
|
{ "id": "1736418wqw296509", "title": "safepal (U卡)", "href": "https://www.safepal.com/zh-cn/", "description": "邀请码:104809 ,出海神卡,加密货币与法币转换", "icon": "/assets/images/logos/safepal.png", "enabled": true },
|
||||||
"href": "https://wise.com/invite/amc/xiaoshuangh",
|
{ "id": "1736418wqw296509222e3", "title": "paypal", "href": "https://py.pl/1tyAwY", "description": "出海收款必备,tiktok提现,佣金提现", "icon": "/assets/images/paypal.png", "enabled": true },
|
||||||
"description": "线上开通境外银行账户(身份证即可)",
|
{ "id": "1736418wqw29e3e36509", "title": "buy me coffee", "href": "https://www.buymeacoffee.com/invite/xiaoshuangi", "description": "赞助收款平台", "icon": "/assets/images/buymecoffee.png", "enabled": true }
|
||||||
"icon": "/assets/images/logos/wise.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "qwqeeeweqwqwwq2",
|
|
||||||
"title": "OKX交易所",
|
|
||||||
"href": "https://okx.com/join/84999861",
|
|
||||||
"description": "加密货币交易所",
|
|
||||||
"icon": "/assets/images/logos/okx.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1736418wqw296509",
|
|
||||||
"title": "safepal (U卡)",
|
|
||||||
"href": "https://www.safepal.com/zh-cn/",
|
|
||||||
"description": "邀请码:104809 ,出海神卡,加密货币与法币转换,可绑定微信/支付宝 apple pay国内消费",
|
|
||||||
"icon": "/assets/images/logos/safepal.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1736418wqw296509222e3",
|
|
||||||
"title": "paypal",
|
|
||||||
"href": "https://py.pl/1tyAwY",
|
|
||||||
"description": "出海收款必备,tiktok提现,佣金提现",
|
|
||||||
"icon": "/assets/images/paypal.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1736418wqw29e3e36509",
|
|
||||||
"title": "buy me coffee",
|
|
||||||
"href": "https://www.buymeacoffee.com/invite/xiaoshuangi",
|
|
||||||
"description": "赞助收款平台",
|
|
||||||
"icon": "/assets/images/buymecoffee.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -175,225 +71,90 @@
|
|||||||
"items": [],
|
"items": [],
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e0444304e2ff",
|
"id": "cbb3e323d-4w08wwqb-41ba-933e9a-e0444304e2ff",
|
||||||
"title": "vps服务器",
|
"title": "科学上网",
|
||||||
"icon": "Book",
|
"icon": "Server",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "1761724972q2ww3q32ss40", "title": "just my socks", "href": "https://justmysocks.net/members/aff.php?aff=12475", "description": "老牌网络代理服务", "icon": "/assets/images/logos/proxy.png", "enabled": true },
|
||||||
"id": "1761724972q2wwq32ss40",
|
{ "id": "1761724972qww332q3wwss240", "title": "Ykk Cloud", "href": "https://panel.ykkk.best/#/register?code=xYQebIgT", "description": "性价比高的网络加速服务", "icon": "/assets/images/logos/ykk.jpg", "enabled": true }
|
||||||
"title": "vultr",
|
]
|
||||||
"href": "https://www.vultr.com/?ref=8985003",
|
|
||||||
"description": "可按分钟计费的服务器 (可支付宝)",
|
|
||||||
"icon": "/assets/images/logos/vultr.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1761724972qwwq3wwss240",
|
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e0444304e2ff",
|
||||||
"title": "bandwagonhost",
|
"title": "vps服务器",
|
||||||
"href": "https://bandwagonhost.com/aff.php?aff=25463",
|
"icon": "Server",
|
||||||
"description": "针对中国线路优化的高质量vps服务商",
|
"description": "",
|
||||||
"icon": "/assets/images/logos/bandwagonhost.jpg",
|
"enabled": true,
|
||||||
"enabled": true
|
"items": [
|
||||||
},
|
{ "id": "1761724972q2wwq32ss40", "title": "vultr", "href": "https://www.vultr.com/?ref=8985003", "description": "可按分钟计费的服务器 (可支付宝)", "icon": "/assets/images/logos/vultr.png", "enabled": true },
|
||||||
{
|
{ "id": "1761724972qwwq3wwss240", "title": "bandwagonhost", "href": "https://bandwagonhost.com/aff.php?aff=25463", "description": "针对中国线路优化的高质量vps服务商", "icon": "/assets/images/logos/bandwagonhost.jpg", "enabled": true },
|
||||||
"id": "1761724972qwq3www2ss2w240",
|
{ "id": "1761724972qwq3www2ss2w240", "title": "RackNerd", "href": "https://my.racknerd.com/aff.php?aff=15630", "description": "最便宜的美国vps服务器", "icon": "/assets/images/logos/RackNerd.jpg", "enabled": true },
|
||||||
"title": "RackNerd",
|
{ "id": "1761724972qwwwwq3www2ss2w2ww40", "title": "腾讯云", "href": "https://curl.qcloud.com/BZZ2MBTN", "description": "腾讯服务器,国内速度快", "icon": "/assets/images/tengxunyun.png", "enabled": true },
|
||||||
"href": "https://my.racknerd.com/aff.php?aff=15630",
|
{ "id": "1761724972qwwwwq3www2ss2w240wee", "title": "阿里云", "href": "https://www.aliyun.com/minisite/goods?userCode=dii0ofzg", "description": "阿里巴巴旗下,vps服务器", "icon": "/assets/images/aliyun.jpg", "enabled": true },
|
||||||
"description": "最便宜的美国vps服务器",
|
{ "id": "1761724972colocrossing1846", "title": "colocrossing", "href": "https://cloud.colocrossing.com/aff.php?aff=1846", "description": "美国VPS服务商", "icon": "/assets/images/logos/colocrossing.png", "enabled": true }
|
||||||
"icon": "/assets/images/logos/RackNerd.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761724972qwwwwq3www2ss2w2ww40",
|
|
||||||
"title": "腾讯云",
|
|
||||||
"href": "https://curl.qcloud.com/BZZ2MBTN",
|
|
||||||
"description": "腾讯服务器,国内速度快",
|
|
||||||
"icon": "/assets/images/tengxunyun.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761724972qwwwwq3www2ss2w240wee",
|
|
||||||
"title": "阿里云",
|
|
||||||
"href": "https://www.aliyun.com/minisite/goods?userCode=dii0ofzg",
|
|
||||||
"description": "阿里巴巴旗下,vps服务器",
|
|
||||||
"icon": "/assets/images/aliyun.jpg",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e0444304wwe2ff",
|
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e0444304wwe2ff",
|
||||||
"title": "静态住宅ip",
|
"title": "静态住宅ip",
|
||||||
"icon": "Book",
|
"icon": "Network",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "iproyal-cheapwdqwessrqr", "title": "iproyal", "href": "https://iproyal.cn/?r=nomadro", "description": "静态住宅ip,出海必备", "icon": "/assets/images/logos/iproyal.jpg", "enabled": true },
|
||||||
"id": "iproyal-cheapwdqwessrqr",
|
{ "id": "1761724972qwq3wwwsss240", "title": "proxy-cheap", "href": "https://app.proxy-cheap.com/r/bmcMoY", "description": "便宜的的住宅ip", "icon": "/assets/images/logos/proxy-cheap.jpg", "enabled": true },
|
||||||
"title": "iproyal",
|
{ "id": "1761724972qwq3wwew22w2ss40", "title": "smartproxy", "href": "https://www.smartproxy.org/register/?invitation_code=7RXPLM", "description": "静态住宅ip服务商", "icon": "/assets/images/logos/smartproxy.jpg", "enabled": true }
|
||||||
"href": "https://iproyal.cn/?r=nomadro",
|
|
||||||
"description": "静态住宅ip,出海必备",
|
|
||||||
"icon": "/assets/images/logos/iproyal.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761724972qwq3wwwsss240",
|
|
||||||
"title": "proxy-cheap",
|
|
||||||
"href": "https://app.proxy-cheap.com/r/bmcMoY",
|
|
||||||
"description": "便宜的的住宅ip",
|
|
||||||
"icon": "/assets/images/logos/proxy-cheap.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761724972qwq3wwew22w2ss40",
|
|
||||||
"title": "smartproxy",
|
|
||||||
"href": "https://www.smartproxy.org/register/?invitation_code=7RXPLM",
|
|
||||||
"description": "静态住宅ip服务商",
|
|
||||||
"icon": "/assets/images/logos/smartproxy.jpg",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e044430ww4wwe2ff",
|
"id": "cbb3e323d-4w08wwqb-41ba-9e9a-e044430ww4wwe2ff",
|
||||||
"title": "住宅vps服务器",
|
"title": "住宅vps服务器",
|
||||||
"icon": "Book",
|
"icon": "Home",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "iproyal-cheapwdqweqqswwwwsrqr", "title": "lisa", "href": "https://lisahost.com/aff.php?aff=7566", "description": "住宅ip服务器,tiktok必备", "icon": "/assets/images/lisa.png", "enabled": true },
|
||||||
"id": "iproyal-cheapwdqweqqswwwwsrqr",
|
{ "id": "1761724972qwq3wwwssswwwwwqq240", "title": "voyracloud", "href": "https://www.voyracloud.com/?ref_code=2LJPRTE5", "description": "静态住宅ip服务器", "icon": "/assets/images/voyracloud.jpg", "enabled": true }
|
||||||
"title": "lisa",
|
|
||||||
"href": "https://lisahost.com/aff.php?aff=7566",
|
|
||||||
"description": "住宅ip服务器,tiktok必备",
|
|
||||||
"icon": "/assets/images/lisa.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761724972qwq3wwwssswwwwwqq240",
|
|
||||||
"title": "voyracloud",
|
|
||||||
"href": "https://www.voyracloud.com/?ref_code=2LJPRTE5",
|
|
||||||
"description": "静态住宅ip服务器",
|
|
||||||
"icon": "/assets/images/voyracloud.jpg",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e33d-408wwqb-41ba-9e9a-e0ss444304e2ff",
|
"id": "cbb3e33d-408wwqb-41ba-9e9a-e0ss444304e2ff",
|
||||||
"title": "硬件",
|
"title": "硬件",
|
||||||
"icon": "Book",
|
"icon": "Cpu",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "176172497qwqsaas3qq240", "title": "树莓派", "href": "https://uland.taobao.com/coupon/edetail?e=5hkWkiThOmClhHvvyUNXZfh8CuWt5YH5OVuOuRD5gLJMmdsrkidbOWBzzpT26idJPSbzO0ArF68ertbZl9wqRUbeJevxT02sHgNIxyFsmaMOsi2OxhyQb%2BhYUTTNN7GRRSHvQe2jOLZ9pbNCYX0I%2BPP%2BWUTgK%2F%2B0I%2BtaUgbudUxA%2B536asYsLWVfKa%2BhVnND4NyB1fwjO3bJLf667Yy8Q5jB6TX2HR3Qrq8LCw4Dujjqyaqc1rGLUwdQHHM8iY%2BUDMxLRSiIntldeBz90au3REAmOgZ0RtdnfeSBK3KXa0%2FA9snq37kKL6zL4bZ3EAS%2F2oYsLHTsIOxroXBFP6oz%2BA%3D%3D&traceId=213e032e17650447230113327e0c4f&union_lens=lensId%3APUB%401765044691%400b521400_0da4_19af4dca231_da77%400290EZjuZ2xbgOlH3NTYAyI%40eyJmbG9vcklkIjoyMDg3MTcxMDEwLCJzcG1CIjoiiX3BvcnRhbF92Ml90b29sX3NlbGVjdGlvbmxpc3RfZGV0YWlsX2luZGV4X2h0bSIsInNyY0Zsb29ySWQiiOiiI4MDY2NCJ9", "description": "无与伦比的ARM开发板", "icon": "/assets/images/logos/raspberrypi.png", "enabled": true },
|
||||||
"id": "176172497qwqsaas3qq240",
|
{ "id": "1761725q22qw040wwasdaw240", "title": "迷你主机", "href": "https://s.click.taobao.com/t?e=m%3D2%26s%3DCb1Quo%2F0Wb5w4vFB6t2Z2ueEDrYVVa64YUrQeSeIhnK53hKxp7mNFuhCZFSw9yq2woqx0EHqItb0JlhLk0Jl4eVWmNyHytKdTKJ80yOOA0Mtd0e5Ku7CIDk5ffgV5fRI1qrpxiwMoCNxc1AtbZGVS936JshS%2F%2FIdwgQgG5hIzyLNEPXytV9ALtCLThlbPuuZLb93Df8fOziGg7JVKZos%2BjLJJgRsfWlWtajntMnDLEHhuApO%2F8klJ62RdK%2B6%2FP7Z6k6s3rDgsC6jO9AJYjY8CXJ%2BwEVkOqHFPSJJXArlDuzso5nyPLY4NPiLqets6lIJ", "description": "具有性价比的X86小主机", "icon": "/assets/images/logos/lingke.jpg", "enabled": true },
|
||||||
"title": "树莓派",
|
{ "id": "1761725058wq2www2wasdasdq490", "title": "GPU显卡", "href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BATUJK1olXwEDUFZVCkkRC18IGloWWwALV19aAUonRzBQRQQlBENHFRxWFlVPRjtUBABAQlRcCEBdCUoUBWkBGFoSVAcdDRsBVXsQB29pbiZRKGMHKlclCEgVWghcGV91UQoyVW5dCUoWAmYPHl4RbTYCU24fZp-esLulkIK0yd6n5V1eOEonA2kPH1oQWQUFV19VCnsQA2Y4El0dWQ4LU1hBC00SCmcJK2slXjYFVFdJDjlWUXsOaWslXTYBZF5cCEoQAGoLH1kRQQYHV1lbAFcXBWgMGl4RXgUKUllYOEkWAmsBK2vL05J3IB9Uajl8UStqSz4dFQ9jitDJGTlnA2sPH0olImF5ECFaSU0VVAdNQDxuW09KFiw8SyljbW1jcih3JWNxNlwaS0hqWBhoX2sQbQEEVW4", "description": "AI时代的算力基础设施", "icon": "/assets/images/logos/nvidia.png", "enabled": true }
|
||||||
"href": "https://uland.taobao.com/coupon/edetail?e=5hkWkiThOmClhHvvyUNXZfh8CuWt5YH5OVuOuRD5gLJMmdsrkidbOWBzzpT26idJPSbzO0ArF68ertbZl9wqRUbeJevxT02sHgNIxyFsmaMOsi2OxhyQb%2BhYUTTNN7GRRSHvQe2jOLZ9pbNCYX0I%2BPP%2BWUTgK%2F%2B0I%2BtaUgbudUxA%2B536asYsLWVfKa%2BhVnND4NyB1fwjO3bJLf667Yy8Q5jB6TX2HR3Qrq8LCw4Dujjqyaqc1rGLUwdQHHM8iY%2BUDMxLRSiIntldeBz90au3REAmOgZ0RtdnfeSBK3KXa0%2FA9snq37kKL6zL4bZ3EAS%2F2oYsLHTsIOxroXBFP6oz%2BA%3D%3D&traceId=213e032e17650447230113327e0c4f&union_lens=lensId%3APUB%401765044691%400b521400_0da4_19af4dca231_da77%400290EZjuZ2xbgOlH3NTYAyI%40eyJmbG9vcklkIjoyMDg3MTcxMDEwLCJzcG1CIjoiiX3BvcnRhbF92Ml90b29sX3NlbGVjdGlvbmxpc3RfZGV0YWlsX2luZGV4X2h0bSIsInNyY0Zsb29ySWQiiOiiI4MDY2NCJ9",
|
|
||||||
"description": "无与伦比的ARM开发板",
|
|
||||||
"icon": "/assets/images/logos/raspberrypi.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761725q22qw040wwasdaw240",
|
|
||||||
"title": "迷你主机",
|
|
||||||
"href": "https://s.click.taobao.com/t?e=m%3D2%26s%3DCb1Quo%2F0Wb5w4vFB6t2Z2ueEDrYVVa64YUrQeSeIhnK53hKxp7mNFuhCZFSw9yq2woqx0EHqItb0JlhLk0Jl4eVWmNyHytKdTKJ80yOOA0Mtd0e5Ku7CIDk5ffgV5fRI1qrpxiwMoCNxc1AtbZGVS936JshS%2F%2FIdwgQgG5hIzyLNEPXytV9ALtCLThlbPuuZLb93Df8fOziGg7JVKZos%2BjLJJgRsfWlWtajntMnDLEHhuApO%2F8klJ62RdK%2B6%2FP7Z6k6s3rDgsC6jO9AJYjY8CXJ%2BwEVkOqHFPSJJXArlDuzso5nyPLY4NPiLqets6lIJ&union_lens=lensId%3APUB%401765045333%402132b1fd_1c3d_19af4e66cf5_803d%40023FsyHiQidsj2uxQQx7nG0q%40eyJmbG9vcklkIjo4MDY3NCwiic3BtQiiI6Il9wb3J0YWxfdjJfcGFnZXNfcHJvbW9fZ29vZHNfaW5kZXhfaHRtIiiwiic3JjRmxvb3JJZCI6IjgwNjc0In0ie%3BtkScm%3AselectionPlaza_site_4358_0_0_0_1_1765045333315118312977%3Bscm%3A1007.30148.329090.pub_search-item_bc6a828b-fed8-4167-a154-141ea950c553_",
|
|
||||||
"description": "具有性价比的X86小主机",
|
|
||||||
"icon": "/assets/images/logos/lingke.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761725058wq2www2wasdasdq490",
|
|
||||||
"title": "GPU显卡",
|
|
||||||
"href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BATUJK1olXwEDUFZVCkkRC18IGloWWwALV19aAUonRzBQRQQlBENHFRxWFlVPRjtUBABAQlRcCEBdCUoUBWkBGFoSVAcdDRsBVXsQB29pbiZRKGMHKlclCEgVWghcGV91UQoyVW5dCUoWAmYPHl4RbTYCU24fZp-esLulkIK0yd6n5V1eOEonA2kPH1oQWQUFV19VCnsQA2Y4El0dWQ4LU1hBC00SCmcJK2slXjYFVFdJDjlWUXsOaWslXTYBZF5cCEoQAGoLH1kRQQYHV1lbAFcXBWgMGl4RXgUKUllYOEkWAmsBK2vL05J3IB9Uajl8UStqSz4dFQ9jitDJGTlnA2sPH0olImF5ECFaSU0VVAdNQDxuW09KFiw8SyljbW1jcih3JWNxNlwaS0hqWBhoX2sQbQEEVW4",
|
|
||||||
"description": "AI时代的算力基础设施",
|
|
||||||
"icon": "/assets/images/logos/nvidia.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e33d-4w08wwqb-41ba-ww9e9a-e044430asd4e2ff",
|
"id": "cbb3e33d-4w08wwqb-41ba-ww9e9a-e044430asd4e2ff",
|
||||||
"title": "软件",
|
"title": "软件",
|
||||||
"icon": "Book",
|
"icon": "Terminal",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "3X-UIwqeqeasdasdqwe", "title": "3X-UI", "href": "https://github.com/MHSanaei/3x-ui", "description": "科学上网的正确姿势,仪表盘", "icon": "/assets/images/logos/3x.jpg", "enabled": true },
|
||||||
"id": "3X-UIwqeqeasdasdqwe",
|
{ "id": "wireground333qwrqrasdasdqrqrr", "title": "虚空终端mihomo", "href": "https://wiki.metacubex.one/config/", "description": "代理软件以及配置wiki", "icon": "/assets/images/mihomo.jpg", "enabled": true },
|
||||||
"title": "3X-UI",
|
{ "id": "176172505w8wq22wqasd490", "title": "frp", "href": "https://gofrp.org/zh-cn/docs/", "description": "高性能内网穿透", "icon": "/assets/images/logos/frp.png", "enabled": true },
|
||||||
"href": "https://github.com/MHSanaei/3x-ui",
|
{ "id": "wiregroundqwrqrasdasdqrqrr", "title": "wireguard", "href": "https://github.com/WireGuard/wireguard-go", "description": "P2P打洞组网", "icon": "/assets/images/wireguard.png", "enabled": true },
|
||||||
"description": "科学上网的正确姿势,仪表盘",
|
{ "id": "wireground22qwrqrasdasdqrqrr", "title": "lineageos (pi5)", "href": "https://konstakang.com/devices/rpi5/", "description": "树莓派的安卓:linageos", "icon": "/assets/images/logos/lineageos.webp", "enabled": true }
|
||||||
"icon": "/assets/images/logos/3x.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "wireground333qwrqrasdasdqrqrr",
|
|
||||||
"title": "虚空终端mihomo",
|
|
||||||
"href": "https://wiki.metacubex.one/config/",
|
|
||||||
"description": "代理软件以及配置wiki",
|
|
||||||
"icon": "/assets/images/mihomo.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "176172505w8wq22wqasd490",
|
|
||||||
"title": "frp",
|
|
||||||
"href": "https://gofrp.org/zh-cn/docs/",
|
|
||||||
"description": "高性能内网穿透",
|
|
||||||
"icon": "/assets/images/logos/frp.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "wiregroundqwrqrasdasdqrqrr",
|
|
||||||
"title": "wireguard",
|
|
||||||
"href": "https://github.com/WireGuard/wireguard-go",
|
|
||||||
"description": "P2P打洞组网",
|
|
||||||
"icon": "/assets/images/wireguard.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "wireground22qwrqrasdasdqrqrr",
|
|
||||||
"title": "lineageos (pi5)",
|
|
||||||
"href": "https://konstakang.com/devices/rpi5/",
|
|
||||||
"description": "树莓派的安卓:linageos",
|
|
||||||
"icon": "/assets/images/logos/lineageos.webp",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e3w3d-408b-41ba-9e922a-eww0444w30s3e3ff",
|
"id": "cbb3e3w3d-408b-41ba-9e922a-eww0444w30s3e3ff",
|
||||||
"title": "数码装备",
|
"title": "数码装备",
|
||||||
"icon": "Book",
|
"icon": "Smartphone",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "17364182wwww229ww6509", "title": "AI眼镜", "href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BATkJK1olXw8AXVxfCU8UA18IGloVWwcKXFlZDUgnRzBQRQQlBENHFRxWFlVPRjtUBABAQlRcCEBdCUoXBW4AE1wRWAUdDRsBVXtwXw1pZzNKAmZgFFwlYUh8UzVBZyZlUQoyVW5dCUoWAmYPHl4RbTYCU24fZpO9hbeBtYKjxt-jwInikZ-fjV8JK1sTWgIDUVtVAEkVA2w4HFscbQ8EXFpVAUwRH2wOHlIdXDYyZF1tD0seF2l6WgkBW3QyZF5tC3sXAm8AGFsVXAEBXEJdDUMVB24UG10SWQcHUVZbAE8fCl8KGloRVDYyitPtY0JrQAYIYj0dXGZKMVc5T5Was35jYlMVXQUTZAQOch9SZTMNbC9gIGdQJi5VCzkRSCpfWDUXVAJlDQoCbw1gcG9qRwYdHnYyUW5aDEgn", "description": "第一视角拍摄", "icon": "/assets/images/logos/glass.jpg", "enabled": true },
|
||||||
"id": "17364182wwww229ww6509",
|
{ "id": "djzroeoddsfssasaeefwe", "title": "运动相机", "href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BASgJK1olXDYCVV9eCE0UB28ME1slGVlaCgFtUQ5SQi0DBUVNGFJeSwUIFxlJX3EIGloWXQABUF5ZAEsIWipURmt3CFhXIQkpbChuRy8JGDpRJUJQDwkbBEcnAl8IGloUXA8FUVtZOHsXBF9edVsUXAcDVV1fDEonAl8IHVwRXAMGVVpaDEsUM2gIEmscWw4GXFdaDlcUBWoBE1olbTYBZFldAV8RcS5aD11nbTYCZF1tCEoXAmsNHl8UXQQeVF1ZDE0UH28OHF8UWAIDUVddCkgnAW4JH1IlbdiMwDxcaAJfBTlNTRpCBHpHLhyDht8GcR8BHFIUTDZ6NSMpYRJweWtBfAUXC2JyXBkpfTNRWi1mGV4UAlgENFpeDA13cRRcTAJLbQMyU1peOA", "description": "骑行记录仪", "icon": "/assets/images/logos/action.jpg", "enabled": true },
|
||||||
"title": "AI眼镜",
|
{ "id": "djzroeoddsfasaeefwe", "title": "无人机", "href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BASgJK1olXDYCVV9eAUIeB2YMH14lGVlaCgFtUQ5SQi0DBUVNGFJeSwUIFxlJX3EIGloWVA8LUFdZDE4IWipURmtCHHVEABsFVChPYRJAbVhlGRhbFRgLBEcnAl8IGloUXA8FUVtZOHsXBF9edVsUXAcDVV1fDEonAl8IHVwRXAMGVVdbC04VM2gIEmscWw4GXFdaDlcUBWoBE1olbTYBZFldAV8RcS5aD11nbTYCZF1tCEoXAmgLHlgRXgIeVFpfDU0UH28OHF8UWAIDUlteAUwnAW4JH1IlbdiMwCQvcipMBxJhfV9HGgF3FVaDht8GfxgBGVkRTDZUCjsVbzBTYRJbeRkWGG9WAx02D0JcUy5mGRNRFEJiUwgldStzfx1wTj1GbQMyU1peOA", "description": "天空视角", "icon": "/assets/images/logos/neo2.jpg", "enabled": true }
|
||||||
"href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BATkJK1olXw8AXVxfCU8UA18IGloVWwcKXFlZDUgnRzBQRQQlBENHFRxWFlVPRjtUBABAQlRcCEBdCUoXBW4AE1wRWAUdDRsBVXtwXw1pZzNKAmZgFFwlYUh8UzVBZyZlUQoyVW5dCUoWAmYPHl4RbTYCU24fZpO9hbeBtYKjxt-jwInikZ-fjV8JK1sTWgIDUVtVAEkVA2w4HFscbQ8EXFpVAUwRH2wOHlIdXDYyZF1tD0seF2l6WgkBW3QyZF5tC3sXAm8AGFsVXAEBXEJdDUMVB24UG10SWQcHUVZbAE8fCl8KGloRVDYyitPtY0JrQAYIYj0dXGZKMVc5T5Was35jYlMVXQUTZAQOch9SZTMNbC9gIGdQJi5VCzkRSCpfWDUXVAJlDQoCbw1gcG9qRwYdHnYyUW5aDEgn",
|
|
||||||
"description": "第一视角拍摄",
|
|
||||||
"icon": "/assets/images/logos/glass.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "djzroeoddsfssasaeefwe",
|
|
||||||
"title": "运动相机",
|
|
||||||
"href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BASgJK1olXDYCVV9eCE0UB28ME1slGVlaCgFtUQ5SQi0DBUVNGFJeSwUIFxlJX3EIGloWXQABUF5ZAEsIWipURmt3CFhXIQkpbChuRy8JGDpRJUJQDwkbBEcnAl8IGloUXA8FUVtZOHsXBF9edVsUXAcDVV1fDEonAl8IHVwRXAMGVVpaDEsUM2gIEmscWw4GXFdaDlcUBWoBE1olbTYBZFldAV8RcS5aD11nbTYCZF1tCEoXAmsNHl8UXQQeVF1ZDE0UH28OHF8UWAIDUVddCkgnAW4JH1IlbdiMwDxcaAJfBTlNTRpCBHpHLhyDht8GcR8BHFIUTDZ6NSMpYRJweWtBfAUXC2JyXBkpfTNRWi1mGV4UAlgENFpeDA13cRRcTAJLbQMyU1peOA",
|
|
||||||
"description": "骑行记录仪",
|
|
||||||
"icon": "/assets/images/logos/action.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "djzroeoddsfasaeefwe",
|
|
||||||
"title": "无人机",
|
|
||||||
"href": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BASgJK1olXDYCVV9eAUIeB2YMH14lGVlaCgFtUQ5SQi0DBUVNGFJeSwUIFxlJX3EIGloWVA8LUFdZDE4IWipURmtCHHVEABsFVChPYRJAbVhlGRhbFRgLBEcnAl8IGloUXA8FUVtZOHsXBF9edVsUXAcDVV1fDEonAl8IHVwRXAMGVVdbC04VM2gIEmscWw4GXFdaDlcUBWoBE1olbTYBZFldAV8RcS5aD11nbTYCZF1tCEoXAmgLHlgRXgIeVFpfDU0UH28OHF8UWAIDUlteAUwnAW4JH1IlbdiMwCQvcipMBxJhfV9HGgF3FVaDht8GfxgBGVkRTDZUCjsVbzBTYRJbeRkWGG9WAx02D0JcUy5mGRNRFEJiUwgldStzfx1wTj1GbQMyU1peOA",
|
|
||||||
"description": "天空视角",
|
|
||||||
"icon": "/assets/images/logos/neo2.jpg",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -407,117 +168,39 @@
|
|||||||
{
|
{
|
||||||
"id": "cbb3e33d-408b-41baww-9e9a-e04443w0qqasdas3e2ff",
|
"id": "cbb3e33d-408b-41baww-9e9a-e04443w0qqasdas3e2ff",
|
||||||
"title": "Tiktok",
|
"title": "Tiktok",
|
||||||
"icon": "Book",
|
"icon": "Video",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "176172497324wwasdaswqw2wqw0", "title": "Tiktok", "href": "https://www.tiktok.com/", "description": "全球直播平台", "icon": "/assets/images/logos/tiktok.png", "enabled": true },
|
||||||
"id": "176172497324wwasdaswqw2wqw0",
|
{ "id": "1761725058asdaqwewsdaqwq490", "title": "云手机", "href": "https://www.hackrobot.cn/", "description": "用开源硬件打造云手机", "icon": "/assets/images/logos/phone.png", "enabled": true },
|
||||||
"title": "Tiktok",
|
{ "id": "1761725058asdaqwwwewsdaqwq490", "title": "vcam虚拟摄像头", "href": "https://pan.baidu.com/s/1NW4GMGA3cxfUQNWZPD9vOg?pwd=live", "description": "xposed模块,替换摄像头视频流", "icon": "/assets/images/vcam.jpg", "enabled": true }
|
||||||
"href": "https://www.tiktok.com/",
|
|
||||||
"description": "全球直播平台",
|
|
||||||
"icon": "/assets/images/logos/tiktok.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"id": "1761725058asdaqwewsdaqwq490",
|
|
||||||
"title": "云手机",
|
|
||||||
"href": "https://www.hackrobot.cn/",
|
|
||||||
"description": "用开源硬件打造云手机",
|
|
||||||
"icon": "/assets/images/logos/phone.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761725058asdaqwwwewsdaqwq490",
|
|
||||||
"title": "vcam虚拟摄像头",
|
|
||||||
"href": "https://pan.baidu.com/s/1NW4GMGA3cxfUQNWZPD9vOg?pwd=live",
|
|
||||||
"description": "xposed模块,替换摄像头视频流",
|
|
||||||
"icon": "/assets/images/vcam.jpg",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e33d-408b-41baww-9e9a-e044430qqasdwwas3e2ff",
|
"id": "cbb3e33d-408b-41baww-9e9a-e044430qqasdwwas3e2ff",
|
||||||
"title": "Youtube",
|
"title": "Youtube",
|
||||||
"icon": "Book",
|
"icon": "Play",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "176172497324asdawqwsdswqwwqw0", "title": "Youtube", "href": "https://www.youtube.com/", "description": "全球最大的视频网站", "icon": "/assets/images/logos/youtube.png", "enabled": true },
|
||||||
"id": "176172497324asdawqwsdswqwwqw0",
|
{ "id": "17617250402qaqweqwsdasdadasdwq40", "title": "smmfollows", "href": "https://smmfollows.com/ref/dfugq", "description": "刷粉刷量平台", "icon": "/assets/images/logos/qqtube.png", "enabled": true },
|
||||||
"title": "Youtube",
|
{ "id": "17617250402qaqweqw33qerrsdasdadasdwq40", "title": "YouTube Studio Auto Dismiss", "href": "https://greasyfork.org/zh-CN/scripts/557378-youtube-studio-auto-dismiss", "description": "greasyfork(油猴脚本),无人直播辅助", "icon": "/assets/images/greasyfork.png", "enabled": true }
|
||||||
"href": "https://www.youtube.com/",
|
|
||||||
"description": "全球最大的视频网站",
|
|
||||||
"icon": "/assets/images/logos/youtube.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17617250402qaqweqwsdasdadasdwq40",
|
|
||||||
"title": "smmfollows",
|
|
||||||
"href": "https://smmfollows.com/ref/dfugq",
|
|
||||||
"description": "刷粉刷量平台",
|
|
||||||
"icon": "/assets/images/logos/qqtube.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17617250402qaqweqw33qerrsdasdadasdwq40",
|
|
||||||
"title": "YouTube Studio Auto Dismiss",
|
|
||||||
"href": "https://greasyfork.org/zh-CN/scripts/557378-youtube-studio-auto-dismiss",
|
|
||||||
"description": "greasyfork(油猴脚本),无人直播辅助",
|
|
||||||
"icon": "/assets/images/greasyfork.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cbb3e33d-408b-41baww-9e9a-e044430asdas3e2ff",
|
"id": "cbb3e33d-408b-41baww-9e9a-e044430asdas3e2ff",
|
||||||
"title": "web网站",
|
"title": "web网站",
|
||||||
"icon": "Book",
|
"icon": "Globe",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "176172497324asdasww0", "title": "namesilo", "href": "https://www.namesilo.com/?rid=3bd4047mc", "description": "注册域名网址", "icon": "/assets/images/logos/namesilo.jpg", "enabled": true },
|
||||||
"id": "176172497324asdasww0",
|
{ "id": "17617250402qasdasdwq40", "title": "aapanel", "href": "https://www.aapanel.com?referral_code=wcn04vez", "description": "宝塔面板", "icon": "/assets/images/logos/aapanel.png", "enabled": true },
|
||||||
"title": "namesilo",
|
{ "id": "1761725058asdasdaqwq490", "title": "cloudfare", "href": "https://www.cloudflare.com/", "description": "互联网基础节点", "icon": "/assets/images/logos/cloudflar.ico", "enabled": true },
|
||||||
"href": "https://www.namesilo.com/?rid=3bd4047mc",
|
{ "id": "1_1wqqwqwqwqw", "title": "Google Analytics", "href": "https://analytics.google.com/", "description": "Google分析网站流量统计服务", "icon": "/assets/images/logos/analytics.ico", "enabled": true },
|
||||||
"description": "注册域名网址",
|
{ "id": "1qwqwqwqqw_4", "title": "Google AdSense", "href": "https://www.google.com/adsense/", "description": "Google AdSense广告服务", "icon": "/assets/images/logos/gads.ico", "enabled": true }
|
||||||
"icon": "/assets/images/logos/namesilo.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17617250402qasdasdwq40",
|
|
||||||
"title": "aapanel",
|
|
||||||
"href": "https://www.aapanel.com?referral_code=wcn04vez",
|
|
||||||
"description": "宝塔面板",
|
|
||||||
"icon": "/assets/images/logos/aapanel.png",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761725058asdasdaqwq490",
|
|
||||||
"title": "cloudfare",
|
|
||||||
"href": "https://www.cloudflare.com/",
|
|
||||||
"description": "互联网基础节点",
|
|
||||||
"icon": "/assets/images/logos/cloudflar.ico",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1_1wqqwqwqwqw",
|
|
||||||
"title": "Google Analytics",
|
|
||||||
"href": "https://analytics.google.com/",
|
|
||||||
"description": "Google分析(Google Analytics)是一个由Google所提供的网站流量统计服务。",
|
|
||||||
"icon": "/assets/images/logos/analytics.ico",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1qwqwqwqqw_4",
|
|
||||||
"title": "Google AdSense",
|
|
||||||
"href": "https://www.google.com/adsense/",
|
|
||||||
"description": "Google AdSense广告服务。",
|
|
||||||
"icon": "/assets/images/logos/gads.ico",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -533,34 +216,58 @@
|
|||||||
{
|
{
|
||||||
"id": "cbb3e33d-408b-41baww-9e9a-e044ww43w0qqasdas3e2ff",
|
"id": "cbb3e33d-408b-41baww-9e9a-e044ww43w0qqasdas3e2ff",
|
||||||
"title": "软件",
|
"title": "软件",
|
||||||
"icon": "Book",
|
"icon": "Code",
|
||||||
"description": "",
|
"description": "",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{ "id": "176172497324wwasdaswwwqw2wqw0", "title": "OBS", "href": "https://pan.quark.cn/s/03e89f1bbc9b", "description": "免费开源的电脑客户端:录屏/推流直播", "icon": "/assets/images/obs.jpg", "enabled": true },
|
||||||
"id": "176172497324wwasdaswwwqw2wqw0",
|
{ "id": "17617250402qaqweqwsdaswwwwdwq40", "title": "ffmpeg", "href": "https://www.ffmpeg.org/download.html", "description": "命令行视频处理/推流工具,python自动化", "icon": "/assets/images/ffmpeg.jpg", "enabled": true },
|
||||||
"title": "OBS",
|
{ "id": "1761725058asdaqwewswwdaqwq490", "title": "SRS", "href": "https://ossrs.io/", "description": "开源直播服务器,拉流推流中转", "icon": "/assets/images/srs.png", "enabled": true }
|
||||||
"href": "https://obsproject.com/download",
|
]
|
||||||
"description": "免费开源的电脑客户端:录屏/推流直播",
|
|
||||||
"icon": "/assets/images/obs.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17617250402qaqweqwsdaswwwwdwq40",
|
|
||||||
"title": "ffmpeg",
|
|
||||||
"href": "https://www.ffmpeg.org/download.html",
|
|
||||||
"description": "命令行视频处理/推流工具,python自动化",
|
|
||||||
"icon": "/assets/images/ffmpeg.jpg",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1761725058asdaqwewswwdaqwq490",
|
|
||||||
"title": "SRS",
|
|
||||||
"href": "https://ossrs.io/",
|
|
||||||
"description": "开源直播服务器,拉流推流中转",
|
|
||||||
"icon": "/assets/images/srs.png",
|
|
||||||
"enabled": true
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"description": "",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5",
|
||||||
|
"title": "支付网关",
|
||||||
|
"icon": "CreditCard",
|
||||||
|
"items": [],
|
||||||
|
"subCategories": [
|
||||||
|
{
|
||||||
|
"id": "cbb3e33d-408b-41baww-9e9a-e044ww4qw3w0qqasdas3e2ff",
|
||||||
|
"title": "小微商户",
|
||||||
|
"icon": "Receipt",
|
||||||
|
"description": "",
|
||||||
|
"enabled": true,
|
||||||
|
"items": [
|
||||||
|
{ "id": "17617251203nowpayments3680795921", "title": "NOWPayments", "href": "https://account.nowpayments.io/create-account?link_id=3680795921", "description": "加密货币收款", "icon": "/assets/images/nowpayments.ico", "enabled": true },
|
||||||
|
{ "id": "17617251804creem2026", "title": "Creem", "href": "https://www.creem.io/", "description": "软件出海收款,税务合规", "icon": "/assets/images/creem.ico", "enabled": true },
|
||||||
|
{ "id": "17617253005stripe2026", "title": "Stripe", "href": "https://stripe.com/", "description": "全球在线支付", "icon": "/assets/images/stripe.ico", "enabled": true },
|
||||||
|
{ "id": "176172497324wwwwasdaswwwqw2wqw0", "title": "z-pay", "href": "https://z-pay.cn/?uid=22119", "description": "支持独角数卡-易支付", "icon": "/assets/images/zpay.ico", "enabled": true },
|
||||||
|
{ "id": "17617250402qaqwwweqwsdaswwwwdwq40", "title": "xorpay", "href": "https://xorpay.com?r=nomadro", "description": "支持收银台支付", "icon": "/assets/images/xorpay.ico", "enabled": true }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "6",
|
||||||
|
"title": "论坛社区",
|
||||||
|
"icon": "MessageSquare",
|
||||||
|
"items": [],
|
||||||
|
"subCategories": [
|
||||||
|
{
|
||||||
|
"id": "cbb3e33d-40wqq8b-41baww-9e9a-e044ww4qw3w0qqasdwwas3e2ff",
|
||||||
|
"title": "博客",
|
||||||
|
"icon": "FileText",
|
||||||
|
"description": "",
|
||||||
|
"enabled": true,
|
||||||
|
"items": [
|
||||||
|
{ "id": "176172497324wwwwasw3daqwqwswwwqw2wqw0", "title": "异度世界", "href": "https://blog.hackrobot.cn", "description": "独立博客,hugo搭建", "icon": "/assets/images/blog.jpg", "enabled": true },
|
||||||
|
{ "id": "176172497324wwwwasdaqwq44wswwwqw2wqw0", "title": "大师兄", "href": "https://dsx2016.com", "description": "AI实践", "icon": "/assets/images/dsx.jpg", "enabled": true }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
96
scripts/build-resource-profile.cjs
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
/**
|
||||||
|
* 构建时根据可用内存 / CPU 计算 heap 与 webpack.parallelism。
|
||||||
|
* 优先读取 cgroup 上限(Docker / K8s),避免误用宿主机总内存。
|
||||||
|
*
|
||||||
|
* 可手动覆盖:NAVSPHERE_HEAP_MB、NAVSPHERE_WEBPACK_PARALLELISM
|
||||||
|
*/
|
||||||
|
const os = require("os");
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
function readCgroupMemoryLimitBytes() {
|
||||||
|
try {
|
||||||
|
const v2 = "/sys/fs/cgroup/memory.max";
|
||||||
|
if (fs.existsSync(v2)) {
|
||||||
|
const s = fs.readFileSync(v2, "utf8").trim();
|
||||||
|
if (s && s !== "max") {
|
||||||
|
const n = parseInt(s, 10);
|
||||||
|
if (n > 0 && n < 1e15) return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const v1 = "/sys/fs/cgroup/memory/memory.limit_in_bytes";
|
||||||
|
if (fs.existsSync(v1)) {
|
||||||
|
const n = parseInt(fs.readFileSync(v1, "utf8"), 10);
|
||||||
|
const host = os.totalmem();
|
||||||
|
if (n > 0 && n < 1e15 && n <= host * 4) return n;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function effectiveTotalBytes() {
|
||||||
|
const cgroup = readCgroupMemoryLimitBytes();
|
||||||
|
const host = os.totalmem();
|
||||||
|
if (cgroup == null) return host;
|
||||||
|
return Math.min(cgroup, host);
|
||||||
|
}
|
||||||
|
|
||||||
|
function parsePositiveInt(name) {
|
||||||
|
const v = process.env[name];
|
||||||
|
if (v == null || v === "") return null;
|
||||||
|
const n = parseInt(v, 10);
|
||||||
|
return Number.isFinite(n) && n > 0 ? n : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBuildProfile() {
|
||||||
|
const total = effectiveTotalBytes();
|
||||||
|
const memMB = total / 1024 / 1024;
|
||||||
|
const cpus =
|
||||||
|
typeof os.availableParallelism === "function"
|
||||||
|
? os.availableParallelism()
|
||||||
|
: os.cpus().length;
|
||||||
|
|
||||||
|
const heapOverride = parsePositiveInt("NAVSPHERE_HEAP_MB");
|
||||||
|
const parOverride = parsePositiveInt("NAVSPHERE_WEBPACK_PARALLELISM");
|
||||||
|
|
||||||
|
// V8 堆:取「比例」与「为系统预留」二者中较小者,避免占满整机触发 OOM killer
|
||||||
|
const byRatio = memMB * 0.32;
|
||||||
|
const reserveMB = memMB < 1024 ? 180 : 220;
|
||||||
|
const byHeadroom = Math.max(0, memMB - reserveMB);
|
||||||
|
let heapMB = Math.floor(Math.min(byRatio, byHeadroom));
|
||||||
|
heapMB = Math.min(4096, Math.max(384, heapMB));
|
||||||
|
|
||||||
|
if (heapOverride != null) {
|
||||||
|
heapMB = Math.min(8192, heapOverride);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Webpack:内存或 CPU 偏低时保持 1;资源充足时适度提高(仍限制上限)
|
||||||
|
let parallelism = 1;
|
||||||
|
if (parOverride != null) {
|
||||||
|
parallelism = Math.min(8, parOverride);
|
||||||
|
} else {
|
||||||
|
if (memMB >= 1536 && cpus >= 2) {
|
||||||
|
parallelism = Math.min(4, Math.max(1, Math.floor(cpus / 2)));
|
||||||
|
}
|
||||||
|
if (memMB >= 4096 && cpus >= 4) {
|
||||||
|
parallelism = Math.min(6, Math.max(1, Math.floor(cpus * 0.75)));
|
||||||
|
}
|
||||||
|
if (memMB < 1200) {
|
||||||
|
parallelism = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
heapMB,
|
||||||
|
parallelism,
|
||||||
|
totalBytes: total,
|
||||||
|
cpus,
|
||||||
|
memMB: Math.round(memMB * 10) / 10,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getBuildProfile,
|
||||||
|
effectiveTotalBytes,
|
||||||
|
};
|
||||||
29
scripts/next-build.cjs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
const { spawnSync } = require("child_process");
|
||||||
|
const path = require("path");
|
||||||
|
const { getBuildProfile } = require("./build-resource-profile.cjs");
|
||||||
|
|
||||||
|
const profile = getBuildProfile();
|
||||||
|
const memHuman = `${profile.memMB}MB`;
|
||||||
|
const totalHuman = `${Math.round(profile.totalBytes / 1024 / 1024)}MB`;
|
||||||
|
console.log(
|
||||||
|
`[navsphere] build: heap=${profile.heapMB}MB parallelism=${profile.parallelism} cpus=${profile.cpus} mem≈${totalHuman} (${memHuman} effective)`
|
||||||
|
);
|
||||||
|
|
||||||
|
const nextBin = path.join(__dirname, "..", "node_modules", "next", "dist", "bin", "next");
|
||||||
|
const env = {
|
||||||
|
...process.env,
|
||||||
|
NAVSPHERE_WEBPACK_PARALLELISM: String(profile.parallelism),
|
||||||
|
};
|
||||||
|
|
||||||
|
const r = spawnSync(
|
||||||
|
process.execPath,
|
||||||
|
[`--max-old-space-size=${profile.heapMB}`, nextBin, "build"],
|
||||||
|
{
|
||||||
|
stdio: "inherit",
|
||||||
|
env,
|
||||||
|
cwd: path.join(__dirname, ".."),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
process.exit(r.status ?? 1);
|
||||||