ldc-shop(LDC商店)已加入Docker部署方式
LDC Shop 是一个基于 Next.js 16 构建的虚拟商品商店,支持 Linux DO Connect 登录和 Linux DO Credit EPay 支付。除了 Cloudflare Workers 版本外,现在也提供了 Docker 自托管版本,适合有 VPS 的用户部署。
Docker 版使用 SQLite 数据库,无需依赖任何第三方云服务,数据完全存储在本地。
前置条件
- 一台 VPS(Ubuntu / Debian / CentOS 均可)
- 已安装 Docker
- 一个域名(已解析到服务器 IP)
方式一:一键拉取镜像部署(推荐)
无需克隆代码,直接使用预构建的 Docker 镜像,支持 AMD64 和 ARM64 架构。
mkdir ldc-shop && cd ldc-shop
curl -fsSL https://raw.githubusercontent.com/chatgptuk/ldc-shop/main/_docker/pull-setup.sh -o setup.sh
chmod +x setup.sh
./setup.sh
脚本会交互式引导你完成所有配置:
╔══════════════════════════════════════╗
║ LDC Shop Docker 一键部署(拉取) ║
╚══════════════════════════════════════╝
━━━ 基础配置(必填)━━━
站点 URL(如 https://shop.example.com): https://your-domain.com
映射端口 [3000]: 3000
━━━ Linux DO Connect OAuth(必填)━━━
Client ID: your_client_id
Client Secret: ********************************
━━━ EPay 支付配置(必填)━━━
商户 ID: your_merchant_id
商户密钥: ********************************
━━━ 管理员配置 ━━━
管理员用户名(多个用逗号分隔) [admin]: your_username
━━━ GitHub OAuth(可选,回车跳过)━━━
GitHub Client ID:
GitHub Client Secret:
填写完毕后脚本自动生成 .env 和 docker-compose.yml,拉取镜像并启动容器。
方式二:自行构建镜像
适合需要修改源码或自定义的场景。
git clone https://github.com/chatgptuk/ldc-shop.git
cd ldc-shop/_docker
chmod +x setup.sh
./setup.sh
交互流程与方式一相同,区别是会在本地构建 Docker 镜像(首次构建约需 3~5 分钟)。
配置反向代理
容器启动后监听 3000 端口,需要配置反向代理才能通过域名访问。部署脚本会自动检测服务器环境并给出指引。
Nginx(适合宝塔面板用户)
如果你使用宝塔面板,操作步骤:
- 添加站点 → 域名填你的域名
- 设置 → 反向代理 → 目标 URL 填
http://127.0.0.1:3000 - 设置 → SSL → 申请 Let's Encrypt 证书
手动配置 Nginx:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:3000;
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_set_header X-Forwarded-Host $host;
}
}
Caddy(自动 HTTPS,零配置)
如果服务器上没有 Nginx,部署脚本会询问是否自动安装 Caddy。Caddy 会自动申请和续期 SSL 证书,配置极简:
your-domain.com {
reverse_proxy localhost:3000
}
环境变量说明
| 变量 | 必填 | 说明 |
|---|---|---|
APP_URL | 是 | 站点外部访问地址 |
NEXT_PUBLIC_APP_URL | 是 | 同 APP_URL,值保持一致 |
AUTH_SECRET | 是 | 随机字符串,脚本自动生成 |
OAUTH_CLIENT_ID | 是 | Linux DO Connect OAuth Client ID |
OAUTH_CLIENT_SECRET | 是 | Linux DO Connect OAuth Client Secret |
MERCHANT_ID | 是 | EPay 商户 ID |
MERCHANT_KEY | 是 | EPay 商户密钥 |
ADMIN_USERS | 是 | 管理员用户名,逗号分隔 |
GITHUB_ID | 否 | GitHub OAuth Client ID |
GITHUB_SECRET | 否 | GitHub OAuth Client Secret |
Telegram 通知、Bark 推送、邮件通知等可选功能在管理后台中配置,无需设置环境变量。
配置 GitHub 登录(可选)
- 访问 GitHub Developer Settings,点击 New OAuth App
- 填写信息:
- Application name:
LDC Shop - Homepage URL:
https://your-domain.com - Authorization callback URL:
https://your-domain.com/api/auth/callback/github
- Application name:
- 记录 Client ID,生成 Client Secret
- 编辑
.env文件,填入GITHUB_ID和GITHUB_SECRET - 重启容器:
docker compose down && docker compose up -d
常用运维命令
# 查看日志
docker compose logs -f
# 停止服务
docker compose down
# 修改 .env 后重启(不能用 docker restart)
docker compose down && docker compose up -d
# 更新镜像(方式一)
docker compose pull && docker compose up -d
# 重新构建(方式二)
docker compose up -d --build
# 备份数据
cp -r ./data ./data-backup-$(date +%Y%m%d)
与 Cloudflare Workers 版对比
| 对比项 | Cloudflare Workers | Docker 自托管 |
|---|---|---|
| 维护状态 | 持续更新 | 同步更新 |
| 数据库 | D1 免费 5GB | SQLite 无限制 |
| 部署要求 | 无需服务器 | 需要 VPS |
| 数据控制 | 存储在 Cloudflare | 完全本地掌控 |
| 冷启动 | 几乎无延迟 | 无冷启动 |
| 请求限制 | 10 万次/天 | 无限制 |
Docker 版适合希望数据完全自主掌控、或者已有 VPS 的用户。如果没有服务器,推荐使用 Cloudflare Workers 版本。