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

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