# Nas-webnet **Repository Path**: mayisuix/nasnet2 ## Basic Information - **Project Name**: Nas-webnet - **Description**: 使用一台中央服务器即可搭建由多台nas组成的网络,通过中央服务器可实现文件在每个nas中的分享 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-12 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 服务端部署文件清单 ## 方式一: Docker Compose 部署 (推荐) ### 必需文件 ``` nasnet/ ├── docker-compose.yml # Docker Compose 配置文件 ├── .env # 环境变量配置 (从 .env.example 复制并修改) ├── Dockerfile.api # API 服务器 Docker 镜像 ├── Dockerfile.relay # Relay 服务器 Docker 镜像 ├── Dockerfile.agent # Node Agent Docker 镜像 (可选) ├── go.mod # Go 模块依赖 ├── go.sum # Go 模块校验和 ├── migrations/ # 数据库迁移文件 │ └── 001_init_schema.sql ├── cmd/ # 命令行程序入口 │ ├── api-server/ │ │ └── main.go │ ├── relay-server/ │ │ └── main.go │ └── node-agent/ │ └── main.go └── internal/ # 内部包 ├── auth/ │ ├── handlers.go │ ├── models.go │ └── service.go ├── database/ │ └── db.go ├── files/ │ ├── handlers.go │ ├── models.go │ └── service.go ├── middleware/ │ ├── auth.go │ ├── cors.go │ └── ratelimit.go ├── nodes/ │ ├── handlers.go │ ├── models.go │ └── routes.go ├── shares/ │ ├── handler.go │ ├── models.go │ └── service.go ├── relay/ │ ├── handler.go │ └── stats.go ├── downloader/ │ └── downloader.go └── scanner/ └── scanner.go ``` ### 上传步骤 ```bash # 1. 打包项目 (在本地执行) cd nasnet tar -czf nasnet-server.tar.gz \ docker-compose.yml \ Dockerfile.* \ .env.example \ go.mod \ go.sum \ migrations/ \ cmd/ \ internal/ # 2. 上传到服务器 scp nasnet-server.tar.gz user@server:/opt/ # 3. 在服务器上解压 ssh user@server cd /opt tar -xzf nasnet-server.tar.gz cd nasnet # 4. 配置环境变量 cp .env.example .env nano .env # 修改密码和密钥 # 5. 启动服务 docker-compose up -d ``` ### 最小化部署 (仅上传必需文件) 如果想减小上传文件大小,可以只上传以下文件: ```bash # 创建最小化部署包 tar -czf nasnet-minimal.tar.gz \ docker-compose.yml \ Dockerfile.api \ Dockerfile.relay \ .env.example \ go.mod \ go.sum \ migrations/ \ cmd/api-server/ \ cmd/relay-server/ \ internal/ ``` --- ## 方式二: 手动部署 (编译后上传二进制文件) ### 必需文件 ``` nasnet/ ├── bin/ │ ├── api-server # 编译好的 API 服务器 (Linux 可执行文件) │ └── relay-server # 编译好的 Relay 服务器 (Linux 可执行文件) ├── migrations/ │ └── 001_init_schema.sql # 数据库初始化脚本 └── .env # 环境变量配置 ``` ### 编译步骤 (在本地执行) ```bash # 为 Linux 服务器编译 cd nasnet # 编译 API 服务器 GOOS=linux GOARCH=amd64 go build -o bin/api-server-linux ./cmd/api-server # 编译 Relay 服务器 GOOS=linux GOARCH=amd64 go build -o bin/relay-server-linux ./cmd/relay-server # 打包 tar -czf nasnet-binary.tar.gz \ bin/api-server-linux \ bin/relay-server-linux \ migrations/ \ .env.example ``` ### 上传步骤 ```bash # 1. 上传到服务器 scp nasnet-binary.tar.gz user@server:/opt/ # 2. 在服务器上解压 ssh user@server cd /opt tar -xzf nasnet-binary.tar.gz mkdir -p nasnet mv bin migrations .env.example nasnet/ cd nasnet # 3. 配置环境变量 cp .env.example .env nano .env # 4. 设置可执行权限 chmod +x bin/api-server-linux chmod +x bin/relay-server-linux # 5. 启动服务 (使用 systemd 或直接运行) ./bin/api-server-linux & ./bin/relay-server-linux & ``` --- ## 方式三: Git 部署 (推荐用于开发环境) ### 前提条件 - 服务器上已安装 Git 和 Go 1.21+ ### 部署步骤 ```bash # 1. 在服务器上克隆代码 ssh user@server cd /opt git clone https://github.com/yourusername/nasnet.git cd nasnet # 2. 配置环境变量 cp .env.example .env nano .env # 3. 编译 go build -o bin/api-server ./cmd/api-server go build -o bin/relay-server ./cmd/relay-server # 4. 启动服务 docker-compose up -d # 或手动启动 ./bin/api-server & ./bin/relay-server & ``` --- ## 不需要上传的文件 以下文件/目录不需要上传到服务器: ``` .git/ # Git 仓库 (除非使用 Git 部署) .gitignore bin/*.exe # Windows 可执行文件 data/ # 本地测试数据 *.log # 日志文件 .env # 本地环境变量 (包含敏感信息) node_modules/ # 如果有前端项目 *.test # 测试文件 coverage/ # 测试覆盖率报告 ``` --- ## 安全注意事项 ### 1. 环境变量文件 **绝对不要上传包含真实密码的 .env 文件!** 正确做法: ```bash # 上传 .env.example 作为模板 scp .env.example user@server:/opt/nasnet/ # 在服务器上创建并编辑 .env ssh user@server cd /opt/nasnet cp .env.example .env nano .env # 设置生产环境的密码和密钥 ``` ### 2. 文件权限 ```bash # 设置正确的文件权限 chmod 600 .env # 只有所有者可读写 chmod 755 bin/api-server-linux # 可执行文件 chmod 755 bin/relay-server-linux chmod 644 docker-compose.yml # 配置文件只读 ``` ### 3. 敏感文件检查 上传前检查是否包含敏感信息: ```bash # 检查是否包含密码、密钥等 grep -r "password\|secret\|token" . --exclude-dir=.git ``` --- ## 快速部署脚本 ### deploy.sh (本地执行) ```bash #!/bin/bash # 快速部署脚本 SERVER="user@your-server.com" DEPLOY_PATH="/opt/nasnet" echo "==> 打包项目..." tar -czf nasnet-deploy.tar.gz \ docker-compose.yml \ Dockerfile.* \ .env.example \ go.mod \ go.sum \ migrations/ \ cmd/ \ internal/ echo "==> 上传到服务器..." scp nasnet-deploy.tar.gz $SERVER:$DEPLOY_PATH/ echo "==> 在服务器上部署..." ssh $SERVER << 'EOF' cd /opt/nasnet tar -xzf nasnet-deploy.tar.gz rm nasnet-deploy.tar.gz # 如果 .env 不存在,从模板创建 if [ ! -f .env ]; then cp .env.example .env echo "请编辑 .env 文件设置密码和密钥" fi # 启动服务 docker-compose up -d echo "==> 部署完成!" docker-compose ps EOF echo "==> 清理本地临时文件..." rm nasnet-deploy.tar.gz ``` 使用方法: ```bash chmod +x deploy.sh ./deploy.sh ``` --- ## 文件大小参考 - **完整源码包**: ~5-10 MB (包含所有 Go 源码) - **最小化部署包**: ~3-5 MB (仅必需文件) - **二进制部署包**: ~50-70 MB (编译后的可执行文件) - **Docker 镜像**: ~100-200 MB (首次构建) --- ## 常见问题 **Q: 是否需要上传 go.mod 和 go.sum?** A: 如果使用 Docker 部署,需要。如果上传编译好的二进制文件,不需要。 **Q: 是否需要上传 .git 目录?** A: 不需要,除非你想在服务器上使用 Git 管理代码。 **Q: 数据库文件需要上传吗?** A: 不需要。PostgreSQL 数据库会在 Docker 容器中自动创建,或者在服务器上手动安装。 **Q: 如何更新服务器上的代码?** A: 重新打包并上传,然后执行 `docker-compose down && docker-compose up -d` 重启服务。 **Q: 如何备份服务器上的数据?** A: 使用 `docker-compose exec postgres pg_dump` 备份数据库,定期下载到本地。