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 镜像,支持 AMD64ARM64 架构。

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:

填写完毕后脚本自动生成 .envdocker-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(适合宝塔面板用户)

如果你使用宝塔面板,操作步骤:

  1. 添加站点 → 域名填你的域名
  2. 设置 → 反向代理 → 目标 URL 填 http://127.0.0.1:3000
  3. 设置 → 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_IDLinux DO Connect OAuth Client ID
OAUTH_CLIENT_SECRETLinux DO Connect OAuth Client Secret
MERCHANT_IDEPay 商户 ID
MERCHANT_KEYEPay 商户密钥
ADMIN_USERS管理员用户名,逗号分隔
GITHUB_IDGitHub OAuth Client ID
GITHUB_SECRETGitHub OAuth Client Secret
Telegram 通知、Bark 推送、邮件通知等可选功能在管理后台中配置,无需设置环境变量。

配置 GitHub 登录(可选)

  1. 访问 GitHub Developer Settings,点击 New OAuth App
  2. 填写信息:
    • Application name: LDC Shop
    • Homepage URL: https://your-domain.com
    • Authorization callback URL: https://your-domain.com/api/auth/callback/github
  3. 记录 Client ID,生成 Client Secret
  4. 编辑 .env 文件,填入 GITHUB_IDGITHUB_SECRET
  5. 重启容器: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 免费 5GBSQLite 无限制
部署要求无需服务器需要 VPS
数据控制存储在 Cloudflare完全本地掌控
冷启动几乎无延迟无冷启动
请求限制10 万次/天无限制

Docker 版适合希望数据完全自主掌控、或者已有 VPS 的用户。如果没有服务器,推荐使用 Cloudflare Workers 版本。

Previous Post
No Comment
Add Comment
comment url