AppStore 应用商店 - 全平台离线部署

发布时间:2026/7/30 15:00:45

AppStore 应用商店 - 全平台离线部署
零依赖、开箱即用的应用商店系统支持 Windows / Linux / 飞牛NAS 三平台离线部署一、项目简介AppStore 是一款类似火绒应用商店的轻量级应用分发平台包含前端用户端分类浏览、搜索、下载应用管理后台应用管理、批量操作、多分类、用户管理、图标自动提取服务端Node.js Express SQLite无需额外安装数据库系统架构AppStore ├── 前端 (HTML/CSS/JS) │ ├── 用户端 (public/index.html) │ └── 管理后台 (public/admin/index.html) ├── 服务端 (Node.js Express) │ ├── REST API (src/app.js) │ ├── SQLite 数据库 (db/appstore.db) │ └── 文件上传 (uploads/) └── 运行时 ├── Windows: node.exe (自带) ├── Linux: node 二进制 (自带) └── NAS: Docker 镜像 (自带)二、部署包一览平台文件大小格式WindowsAppStore-Windows.zip~40MBZIPLinuxAppStore-Linux.tar.gz~60MBtar.gz飞牛NASAppStore-NAS.tar.gz~66MBtar.gz各包内容说明Windows 包runtime/- Node.js v22.22.3 运行时含 npm/npxserver/- 完整服务端代码 node_modulesstart.bat- 一键启动脚本README.md- 部署说明Linux 包runtime/- Node.js v22.22.3 Linux x64 运行时server/- 完整服务端代码 node_modules含 Linux 原生 better-sqlite3 模块start.sh- 启动/安装脚本支持 systemd 服务NAS 包appstore-nas.tar- Docker 镜像文件含完整运行环境start.sh- Docker 部署脚本docker-compose.yml- Docker Compose 配置文件三、Windows 平台部署3.1 系统要求Windows 10/11 64位端口 3000 未被占用解压工具系统自带3.2 部署步骤步骤 1解压将AppStore-Windows.zip解压到任意目录例如D:\AppStore。步骤 2启动双击start.bat出现如下界面即表示启动成功 AppStore 应用商店服务 Windows 离线版 ​ [启动] Node.js 版本: v22.22.3 ​ [启动] 服务即将启动按 CtrlC 停止... [访问] http://localhost:3000 [后台] http://localhost:3000/admin/ [账号] admin / admin123 步骤 3访问用户端http://localhost:3000管理后台http://localhost:3000/admin/默认账号admin / admin123步骤 4停止在命令行窗口按CtrlC停止服务。3.3 常见问题排查问题 1出现大量 不是内部或外部命令 错误现象启动时显示大量乱码命令名最后提示node 不是内部或外部命令原因start.bat使用了chcp 65001UTF-8设置代码页但 CMD 在某些环境下对 UTF-8 编码的批处理文件解析不稳定导致中文被错误解析为命令。解决确认使用的是 GBK/ANSI 编码的start.bat文件大小约 900 字节不是 1100 字节如果仍有问题手动修改 CMD 代码页chcp 936 start.bat问题 2提示 找不到模块 srcpp.js现象启动后显示Error: Cannot find module ...\srcpp.js实际应为app.js原因start.bat中src\app.js的反斜杠被错误编码。在 GBK 编码中\的编码是0x5C。如果编码错误如0x07反斜杠会变成其他字符导致路径拼接错误。解决用文本编辑器打开start.bat检查最后一行的路径是否为src\app.js如果显示为乱码如srcapp.js或src[乱码]app.js重新写入正确的反斜杠正确写法用 PowerShell 修复$bat Get-Content start.bat -Encoding Default $bat $bat -replace src.*?app\.js, src\app.js $bat | Set-Content start.bat -Encoding Default问题 3端口 3000 被占用现象启动时报错Error: listen EADDRINUSE: address already in use :::3000解决查找占用端口的进程netstat -ano | findstr :3000终止进程taskkill /PID PID /F或者修改服务端端口编辑server/src/app.js中的PORT变量四、Linux 平台部署4.1 系统要求Linux x86_64CentOS 7 / Ubuntu 18.04 / Debian 10glibc 2.17 或更高版本端口 3000 未被占用4.2 部署步骤步骤 1上传并解压# 上传 AppStore-Linux.tar.gz 到服务器 # 解压 tar -xzf AppStore-Linux.tar.gz cd AppStore-Linux步骤 2赋予执行权限chmod x start.sh chmod x runtime/bin/node步骤 3启动前台模式./start.sh步骤 4安装为 systemd 服务推荐生产环境# 安装服务 ./start.sh install ​ # 启动服务 sudo ./start.sh start ​ # 查看状态 sudo systemctl status appstore ​ # 设置开机自启 sudo systemctl enable appstore4.3 常见问题问题 1glibc 版本过低导致 better-sqlite3 加载失败现象启动时报错Error: /lib64/libc.so.6: version GLIBC_2.28 not found解决cd server ../runtime/bin/npm rebuild better-sqlite3问题 2权限不足现象Permission denied或无法绑定端口解决# 使用 root 或 sudo 运行 sudo ./start.sh ​ # 或者修改端口为非特权端口1024五、飞牛NAS (fnOS) 平台部署5.1 系统要求飞牛NAS (fnOS) 系统Docker 已安装fnOS 应用中心自带可用存储空间 500MB5.2 部署步骤步骤 1上传并解压# 上传 AppStore-NAS.tar.gz 到 NAS # 解压 tar -xzf AppStore-NAS.tar.gz cd AppStore-NAS步骤 2一键部署chmod x start.sh ./start.sh脚本会自动加载 Docker 镜像appstore-nas.tar创建数据目录uploads/、db/、logs/启动容器并映射端口步骤 3访问用户端http://NAS的IP:3000管理后台http://NAS的IP:3000/admin/5.3 自定义端口PORT8080 ./start.sh5.4 管理命令./start.sh stop # 停止容器 ./start.sh remove # 停止并删除容器 ​ # Docker 原生命令 docker logs -f appstore-server # 查看日志 docker restart appstore-server # 重启 docker exec -it appstore-server sh # 进入容器5.5 Docker Compose可选docker compose up -d # 启动 docker compose down # 停止 docker compose logs -f # 查看日志六、管理后台使用6.1 登录访问http://IP:3000/admin/使用默认账号登录用户名admin密码admin1236.2 核心功能功能说明应用管理新增/编辑/删除应用支持批量删除分类管理多分类标签一个应用可归多个分类用户管理管理员账号增删改查、重置密码图标自动提取上传 .exe/.msi 自动提取图标文件上传支持 .exe/.msi/.zip/.7z 及图片6.3 数据持久化所有数据保存在本地目录数据类型存储位置升级时保留数据库server/db/appstore.db是应用图标uploads/icons/是安装包uploads/packages/是日志logs/可选升级时保留db/和uploads/目录即可保留全部数据。七、系统功能特性应用商店前端分类浏览、搜索、一键下载管理后台完整的 CRUD 操作、批量删除多分类支持应用可归属多个分类组图标自动提取上传 Windows 安装包自动解析图标下载文件名保持与上传文件名一致全部应用导航始终可返回全部列表会话管理基于 express-session24小时有效期日志系统access.log / app.log / error.log 分类记录八、技术栈层级技术后端框架Express.js数据库SQLite (better-sqlite3)会话管理express-session文件上传Multer日志Morgan 自定义 Logger前端纯 HTML/CSS/JS零依赖运行时Node.js v22.22.3九、总结本文介绍了 AppStore 应用商店在三平台Windows/Linux/飞牛NAS的完整离线部署方案。核心设计原则零依赖自带 Node.js 运行时无需系统安装开箱即用解压后一键启动数据持久化本地文件存储升级不丢数据跨平台统一代码三平台独立打包部署过程中最常见的问题是 Windows 下的编码问题记住批处理文件使用 GBK 编码反斜杠使用0x5C。如有问题欢迎在评论区交流效果图1. 用户下载界面2. 管理员后台:下载地址https://download.csdn.net/download/Gyingxm/93199420

相关新闻

西门子200smart PLC脉冲除尘器控制程序详解

西门子200smart PLC脉冲除尘器控制程序详解

2026/7/30 15:00:45

1. 西门子200smart PLC脉冲除尘器程序解析在工业自动化领域,PLC(可编程逻辑控制器)作为核心控制设备,广泛应用于各类生产线的自动化控制。西门子200smart系列PLC以其稳定可靠的性能和友好的编程环境,成为中小型自动化项…

越华环保全周期合规管控平台:美丽蓝天申报全链路数字化架构

越华环保全周期合规管控平台:美丽蓝天申报全链路数字化架构

2026/7/30 15:00:45

一、技术痛点 / 背景 当前美丽蓝天项目申报已进入全流程监管阶段,传统 “先建设、后补材料” 的后置式人工申报模式存在显著技术短板,已无法匹配监管要求。 从技术架构视角看,传统模式属于碎片化、单点式的人工管理,缺乏全链路统一…

科颜氏高保湿面霜同源配方OEM:怎么才能做出不搓泥、复购率超7成的白牌爆款?

科颜氏高保湿面霜同源配方OEM:怎么才能做出不搓泥、复购率超7成的白牌爆款?

2026/7/30 15:00:44

跑实体店和私域的朋友,十个有九个都来问过高保湿面霜这玩意儿的代工到底怎么做。拿着样品过来,第一句话就是:“张总,帮我看看这个料,我感觉不对,上脸推不开,温度低点还发硬。”我一看&#xff0…

养殖场鸡检测数据集VOC+YOLO格式1588张4类别

养殖场鸡检测数据集VOC+YOLO格式1588张4类别

2026/7/30 16:01:03

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1558标注数量(xml文件个数):1558标注数量(txt文件个数):1558标注类别…

Java 8 Stream 三种对象属性去重方案详解与实战对比

Java 8 Stream 三种对象属性去重方案详解与实战对比

2026/7/30 16:01:03

1. 项目概述与核心价值在日常的Java开发中&#xff0c;尤其是处理从数据库查询或外部接口获取的数据集合时&#xff0c;我们经常会遇到一个看似简单却容易踩坑的需求&#xff1a;如何对一个List<Object>根据对象的一个或多个属性进行去重。比如&#xff0c;你有一个用户列…

读取阀门开启与流量数据,拟合阀门流量特性曲线,判断阀门是否存在卡涩故障。

读取阀门开启与流量数据,拟合阀门流量特性曲线,判断阀门是否存在卡涩故障。

2026/7/30 16:01:03

阀门流量特性分析与卡涩故障诊断系统 —— 基于OOP的工业数据实战 "阀门是控制回路的手脚。手脚不灵便&#xff0c;脑子&#xff08;PID&#xff09;再聪明也白搭。" —— 哈尔滨工程大学《工业过程控制》课程核心警示 一、实际应用场景描述 在化工、电力、制药、水…

Midscene.js深度解析:基于视觉语言模型的跨平台AI自动化测试架构设计与性能优化实践

Midscene.js深度解析:基于视觉语言模型的跨平台AI自动化测试架构设计与性能优化实践

2026/7/30 16:01:03

Midscene.js深度解析&#xff1a;基于视觉语言模型的跨平台AI自动化测试架构设计与性能优化实践 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene.js是一…

SAP PI/PO HTTPS集成:Java信任链与SSL证书配置实战指南

SAP PI/PO HTTPS集成:Java信任链与SSL证书配置实战指南

2026/7/30 16:01:03

1. 项目概述&#xff1a;为什么SAP PI/PO的HTTPS集成总让人头疼&#xff1f; 如果你正在或曾经负责SAP PI&#xff08;Process Integration&#xff09;或PO&#xff08;Process Orchestration&#xff09;与外部系统通过HTTPS进行通信&#xff0c;那么“SSL证书”这个词大概率…

5分钟掌握全网资源下载:res-downloader跨平台下载神器终极指南

5分钟掌握全网资源下载:res-downloader跨平台下载神器终极指南

2026/7/30 15:51:02

5分钟掌握全网资源下载&#xff1a;res-downloader跨平台下载神器终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/30 9:53:22

目标&#xff1a;电脑作为RTSP 服务端&#xff0c;循环推送 H264/H265 视频流&#xff1b; RDK X5 通过 rtsp2display 拉流预览&#xff0c;完全不需要在开发板编译 live555。 提供两套成熟方案&#xff1a; ✅ 方案 A&#xff1a;FFmpeg&#xff08;最简单&#xff0c;优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/30 1:17:46

一、背景与测试方案 在实际项目交付中&#xff0c;PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及&#xff1a;多源PDF的文件流合并、页面级水印渲染&#xff08;含透明度混合与图层叠加&#xff09;、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/30 2:52:37

说实话&#xff0c;提到PDF拆分再压缩&#xff0c;我真是被折腾得够呛。 上个月公司年度合同归档&#xff0c;一份300多页的PDF总合同&#xff0c;需要按年份拆分成三个独立文件&#xff0c;再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单&#xff1f;先找个海…

粉笔直播课适合周末集中备考考生突破吗

粉笔直播课适合周末集中备考考生突破吗

2026/7/30 0:09:54

本文面向在职备考、工作日难以抽出整块时间、只能依靠周末集中复习的公考考生&#xff0c;围绕"该平台直播课是否适配周末集中备考节奏、能否支撑瓶颈突破"这一核心问题做客观拆解。文中数据来源于公开财报、官网公示价格、第三方投诉平台公开投诉及用户社区讨论&…

ThreadLocal(存取变量)实战获取当前登录的员工

ThreadLocal(存取变量)实战获取当前登录的员工

2026/7/30 0:09:54

注意AOP所应用的注解以及service方法上自定义的Log注解

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

2026/7/30 0:09:54

INAV飞控配置终极指南&#xff1a;从零到稳定飞行的完整解决方案 【免费下载链接】inav INAV: Navigation-enabled flight control software 项目地址: https://gitcode.com/gh_mirrors/in/inav INAV飞控配置是每个无人机爱好者必须掌握的核心技能&#xff0c;但很多新手…