一个基于 Node.js 和 Express 框架的 HTML 代码分享工具,支持多种内容类型的在线分享和预览。
- 多格式支持: 支持 HTML、Markdown、SVG、Mermaid 图表等多种内容类型
- 在线预览: 实时渲染和预览分享的内容
- 密码保护: 支持为分享的内容设置密码保护
- 多级权限系统: 支持普通用户和管理员两种权限级别
- 管理后台: 完整的管理界面,支持页面管理和统计
- 语法高亮: 内置代码语法高亮功能
- 用户认证: 可选的用户认证系统
- 响应式设计: 支持桌面和移动设备访问
- 数据持久化: 使用 SQLite 数据库存储数据
- 会话管理: 基于文件的会话存储
- 后端: Node.js, Express.js
- 模板引擎: EJS
- 数据库: SQLite3
- 前端: HTML5, CSS3, JavaScript
- 图表渲染: Mermaid.js
- Markdown解析: Marked.js
- 代码高亮: Highlight.js
- Node.js 16.x 或更高版本
- Windows 10/11, macOS, 或 Linux
- 至少 512MB 可用内存
- 至少 100MB 可用磁盘空间
Docker 部署
-
克隆项目
git clone https://github.com/EEEricG/quickshare.git cd quickshare -
启动服务
docker-compose up -d
-
查看日志
docker-compose logs -f
-
访问应用
http://localhost:8888
-
构建镜像
docker build -t html-go-express . -
创建数据卷
docker volume create html-go-data
-
运行容器
docker run -d \ --name html-go-express \ -p 8888:8888 \ -v html-go-data:/usr/src/app/data \ -e NODE_ENV=production \ -e AUTH_ENABLED=true \ -e AUTH_PASSWORD=your_password \ --restart unless-stopped \ html-go-express
| 变量名 | 默认值 | 说明 |
|---|---|---|
NODE_ENV |
development |
运行环境 (development/production/test) |
PORT |
5678 |
应用端口 |
HOST |
localhost |
监听地址 (设置为 0.0.0.0 允许外部访问) |
AUTH_ENABLED |
false |
是否启用认证功能 |
AUTH_PASSWORD |
admin123 |
登录密码(向后兼容,作为管理员密码) |
ADMIN_PASSWORD |
admin123 |
管理员密码(完全权限) |
USER_PASSWORD |
user123 |
普通用户密码(只能发布HTML) |
复制 env.example 为 .env 并根据需要修改:
NODE_ENV=production
PORT=8888
HOST=0.0.0.0
AUTH_ENABLED=true
AUTH_PASSWORD=your_secure_admin_password
ADMIN_PASSWORD=your_secure_admin_password
USER_PASSWORD=your_secure_user_password系统支持两种用户类型,提供不同的功能权限:
- ✅ 登录系统
- ✅ 创建和分享HTML/Markdown/SVG/Mermaid内容
- ✅ 设置密码保护
- ❌ 无法看到管理页面按钮
- ❌ 无法访问管理功能
- ✅ 所有普通用户权限
- ✅ 访问管理页面
- ✅ 查看所有页面列表和统计信息
- ✅ 查看受保护页面的访问密码
- ✅ 删除任意页面(单个或批量)
- ✅ 管理系统设置
- 访问应用: 在浏览器中打开
http://localhost:8888 - 登录: 如果启用了认证,使用配置的密码登录
- 使用管理员密码:获得完全权限,可以看到管理页面按钮
- 使用普通用户密码:只能创建和分享内容
- 创建分享: 在主页面粘贴或上传您的代码内容
- 设置保护: 可选择为内容设置密码保护
- 分享链接: 获取生成的分享链接
- 管理内容: 管理员可以通过管理页面查看和管理所有内容
- HTML: 完整的 HTML 文档或代码片段
- Markdown: 标准 Markdown 语法
- SVG: 可缩放矢量图形
- Mermaid: 流程图、序列图、类图等
POST /api/pages/create
Content-Type: application/json
{
"htmlContent": "your content here",
"isProtected": true
}GET /view/:id?password=your_password获取页面列表
GET /api/admin/pages?page=1&limit=10&search=keyword删除单个页面
DELETE /api/admin/pages/:id批量删除页面
POST /api/admin/pages/batch-delete
Content-Type: application/json
{
"ids": ["page_id_1", "page_id_2"]
}获取统计信息
GET /api/admin/stats-
安装 PM2
npm install -g pm2
-
创建配置文件 (
ecosystem.config.js)module.exports = { apps: [{ name: 'html-go-express', script: 'app.js', env: { NODE_ENV: 'production', PORT: 8888, AUTH_ENABLED: true, AUTH_PASSWORD: 'your_password' }, max_memory_restart: '1G', instances: 1, exec_mode: 'fork' }] };
-
启动服务
pm2 start ecosystem.config.js pm2 save pm2 startup
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}- 安装 Docker Desktop
- 确保 Docker Desktop 正在运行
-
克隆项目
git clone <repository-url> cd quickshare
-
使用 Docker Compose 部署
# 构建并启动服务 docker-compose up -d --build # 查看服务状态 docker-compose ps # 查看实时日志 docker-compose logs -f html-go-express
-
访问应用
- 打开浏览器访问:
http://localhost:8888 - 默认登录密码:
admin123
- 打开浏览器访问:
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 更新应用
git pull
docker-compose up -d --build
# 查看容器状态
docker-compose ps
# 进入容器
docker-compose exec html-go-express sh
# 查看数据卷
docker volume ls
docker volume inspect quickshare_html-go-data如需自定义配置,可以修改 docker-compose.yml:
version: '3.8'
services:
html-go-express:
build:
context: .
dockerfile: Dockerfile
container_name: html-go-express
restart: unless-stopped
ports:
- "8888:8888"
volumes:
- html-go-data:/usr/src/app/data
- html-go-sessions:/usr/src/app/sessions
- html-go-db:/usr/src/app/db
environment:
- NODE_ENV=production
- PORT=8888
- AUTH_ENABLED=true
- AUTH_PASSWORD=your_secure_admin_password # 向后兼容
- ADMIN_PASSWORD=your_secure_admin_password # 管理员密码
- USER_PASSWORD=your_secure_user_password # 普通用户密码
- HOST=0.0.0.0
networks:
- html-go-network
volumes:
html-go-data:
driver: local
html-go-sessions:
driver: local
html-go-db:
driver: local
networks:
html-go-network:
driver: bridge- 修改默认密码: 务必修改默认的认证密码
- 权限分离: 普通用户和管理员密码应该不同,确保权限隔离
- 强密码策略: 使用复杂的密码,特别是管理员密码
- 定期更换密码: 建议定期更换认证密码
- 使用 HTTPS: 生产环境建议配置 SSL/TLS
- 防火墙配置: 合理配置防火墙规则
- 定期备份: 定期备份数据库和会话文件
- 更新依赖: 定期更新 Node.js 依赖包
- 权限审计: 定期检查用户权限和访问日志
- 管理员权限: 谨慎分配管理员权限,避免权限滥用
- 内存限制: 应用启动时设置了内存限制
--max-old-space-size=1024 - 语法高亮: 大文件自动禁用语法高亮以提升性能
- 会话存储: 使用文件存储会话,减少内存占用
- 静态资源: 建议使用 CDN 或反向代理处理静态资源
-
端口被占用
# Windows netstat -ano | findstr :8888 taskkill /PID <进程ID> /F # Linux/macOS lsof -i :8888 kill -9 <进程ID>
-
权限问题
- 确保对项目目录有读写权限
- Windows 用户可能需要以管理员身份运行
-
依赖安装失败
npm cache clean --force rm -rf node_modules package-lock.json npm install
-
Docker 问题
# 清理 Docker 缓存 docker system prune -a # 重新构建镜像 docker-compose build --no-cache
- ✨ 新增多级权限系统,支持普通用户和管理员两种权限
- ✨ 新增完整的管理后台界面
- ✨ 管理员可以查看所有页面列表和统计信息
- ✨ 管理员可以查看受保护页面的访问密码
- ✨ 支持单个和批量删除页面功能
- ✨ 新增页面标题提取和显示功能
- 🔧 优化了用户认证流程和权限控制
- 🔧 改进了数据库结构,添加了title字段
- 📚 完善了文档和配置说明
- ✨ 添加了密码保护功能
- ✨ 支持多种内容类型(HTML、Markdown、SVG、Mermaid)
- ✨ 改进了用户界面和体验
- 🔧 优化了代码检测和渲染逻辑
- 🐳 完善了Docker部署支持
查看 开发经验.md 了解详细的开发历程和优化记录。
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 ISC 许可证 - 查看 LICENSE 文件了解详情。
如遇到问题,请检查:
- Node.js 版本是否符合要求
- 防火墙和网络配置
- 文件权限设置
- 系统资源使用情况
快速链接
