准备工作
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 |
| 类型 | 开源社区平台 |
| 费用 | 免费开源 |

.png)
-bpoi.png)
