小石榴图文社区 - 绿联 NAS 一键部署教程

准备工作

1. 绿联 NAS 安装 Git(如果没有)

SSH 进 NAS:

ssh 你的NAS用户名@你的NAS局域网IP

安装 git:

sudo apt-get update && sudo apt-get install -y git

第一步:下载项目

cd /volume1/docker
git clone https://github.com/ZTMYO/XiaoShiLiu
cd XiaoShiLiu

第二步:创建 .env 配置文件

提示:配置文件中的密码请自行设置,服务器 IP 改成你绿联 NAS 的局域网 IP。

cat > /volume1/docker/XiaoShiLiu/.env << 'EOF'
# 数据库配置
DB_HOST=mysql
DB_USER=自定义用户名
DB_PASSWORD=自定义密码
DB_NAME=xiaoshiliu
DB_PORT=3306
DB_PORT_EXTERNAL=51237

# JWT配置(自定义密钥)
JWT_SECRET=自定义密钥字符串
JWT_EXPIRES_IN=7d
REFRESH_TOKEN_EXPIRES_IN=30d

# 上传配置
IMAGE_MAX_SIZE=10mb
VIDEO_MAX_SIZE=100mb
IMAGE_UPLOAD_STRATEGY=local
VIDEO_UPLOAD_STRATEGY=local
LOCAL_UPLOAD_DIR=uploads
LOCAL_BASE_URL=http://你的NAS局域网IP:27890
VIDEO_UPLOAD_DIR=uploads/videos
VIDEO_COVER_DIR=uploads/covers

# API配置
API_BASE_URL=http://你的NAS局域网IP:27890

# 邮件配置(不需要验证)
EMAIL_ENABLED=false

# IP属地查询
IP_LOCATION_PRIMARY_API=https://api.pearktrue.cn/api/ip/details
IP_LOCATION_PRIMARY_TIMEOUT=10000
IP_LOCATION_BACKUP_API=https://api.pearktrue.cn/api/ip/high
IP_LOCATION_BACKUP_TIMEOUT=5000

# 前端构建
VITE_API_BASE_URL=http://你的NAS局域网IP:27890/api

# 服务端口(不常用端口)
FRONTEND_PORT=34521
BACKEND_PORT=27890

NODE_ENV=production
EOF

第三步:修改 docker-compose.yml

提示:把 你的NAS局域网IP 全部替换成你绿联 NAS 的局域网 IP(如 192.168.x.x)

name: xiaoshiliu

services:
  mysql:
    image: mysql:8.0
    container_name: xiaoshiliu-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME:-xiaoshiliu}
      MYSQL_USER: ${DB_USER:-xiaoshiliu_user}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      TZ: Asia/Shanghai
    ports:
      - "${DB_PORT_EXTERNAL:-51237}:3306"
    volumes:
      - mysql_data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    networks:
      - xiaoshiliu-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

  backend:
    build:
      context: ./express-project
      dockerfile: Dockerfile
    container_name: xiaoshiliu-backend
    restart: unless-stopped
    environment:
      NODE_ENV: production
      PORT: 3001
      DB_HOST: mysql
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      DB_NAME: ${DB_NAME:-xiaoshiliu}
      DB_PORT: 3306
      JWT_SECRET: ${JWT_SECRET}
      API_BASE_URL: http://你的NAS局域网IP:27890
      IMAGE_UPLOAD_STRATEGY: local
      VIDEO_UPLOAD_STRATEGY: local
      LOCAL_BASE_URL: http://你的NAS局域网IP:27890
      TZ: Asia/Shanghai
    ports:
      - "${BACKEND_PORT:-27890}:3001"
    volumes:
      - backend_uploads:/app/uploads
    networks:
      - xiaoshiliu-network
    depends_on:
      mysql:
        condition: service_healthy

  frontend:
    build:
      context: ./vue3-project
      dockerfile: Dockerfile
    container_name: xiaoshiliu-frontend
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
    ports:
      - "${FRONTEND_PORT:-34521}:80"
    networks:
      - xiaoshiliu-network
    depends_on:
      - backend

volumes:
  mysql_data:
  backend_uploads:

networks:
  xiaoshiliu-network:

第四步:处理镜像(关键步骤)

4.1 如果 NAS 已有 node 镜像,tag 一下:

sudo docker tag 已有镜像名:latest node:18-alpine

4.2 修改 frontend Dockerfile:

sed -i 's/nginx:alpine/nginx:stable-alpine-perl/g' /volume1/docker/XiaoShiLiu/vue3-project/Dockerfile

第五步:启动服务

cd /volume1/docker/XiaoShiLiu
sudo docker compose up -d

等待构建完成(约 5-10 分钟)。


第六步:初始化数据库

提示:密码换成你在 .env 里设置的密码。

sudo docker exec -i xiaoshiliu-mysql mysql -u你的用户名 -p你的密码 xiaoshiliu < /volume1/docker/XiaoShiLiu/express-project/scripts/init-database.sql

重启后端:

sudo docker restart xiaoshiliu-backend

第七步:访问和配置

服务 地址
前端地址 http://你的NAS局域网IP:34521
后端地址 http://你的NAS局域网IP:27890
后台管理 前端地址 + /admin 路径

注册账号:打开前端地址直接注册(不需要邮箱验证)


常见问题

Q:npm install 很慢?

A:配置 Docker 镜像加速 - 绿联 NAS 的 Docker 应用 → 镜像 → 设置 → 加速器配置,添加 https://docker.1ms.run

Q:mysql 启动失败?

A:不要挂载 init.sql,按第六步手动导入即可。

Q:注册后无法登录管理后台?

A:把用户名写入 admin 表:

sudo docker exec -i xiaoshiliu-mysql mysql -u你的用户名 -p你的密码 xiaoshiliu -e "UPDATE admin SET username='你的用户名' WHERE id=1;"

项目信息

项目 信息
名称 小石榴图文社区
GitHub github.com/ZTMYO/XiaoShiLiu
类型 开源社区平台
费用 免费开源
消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息