你好,收割机!你好,收割机!
首页
收割机
通用教程
首页
收割机
通用教程
  • 收割机

    • 00. 收割机简介
    • 01. 安装部署
    • 02. 站点管理
    • 03. 下载器与种子
    • 05. 自行适配
    • 06. 使用指南
    • 08. 通知配置
    • 07. 常见问题
    • 09. 用户协议与隐私政策
  • 通用教程

    • 01. 阿里云盘
    • 02. 百度 OCR
    • 03. CookieCloud
    • 04. Django 密码错误处理
    • 05. Tailscale 内网互访
    • 06. Telegram 机器人
    • 07. 各种 NAS 进入容器命令行
    • 08. 常用内网穿透

安装部署

Compose生成

📦
镜像与网络
🗄️
数据库
🔑
授权信息
⚙️
运行参数
📁
数据目录
📡
下载器路径映射
1
镜像与网络
2
数据库
3
授权信息
4
运行参数
5
数据目录
6
下载器路径映射
镜像与网络 选择 Docker 镜像源和版本,国内用户建议选择加速源

选择第三方加速源可提升拉取速度

latest 为稳定版,dev 为开发版

主机模式性能最佳;桥接模式需手动映射端口

主机模式为 GO_WEB_PORT,桥接模式为宿主机映射端口

📄 docker-compose.yml
services:
  go-harvest:
    restart: unless-stopped
    image: newptools/go-harvest:latest
    container_name: go-harvest
    network_mode: host
    volumes:
      - ./db:/app/db
      - ./sites:/app/sites
      - ./icons:/app/icons
    environment:
      - EMAIL=
      - TOKEN=
      - GO_WEB_PORT=5173
      - AUTO_UPDATE=true
      - GIT_PROXY=https://gh-proxy.org/
      - HARVEST_CRON_RANDOM_DELAY_MAX=30m
      - HARVEST_DB_LOG_RETENTION_DAYS=15
      - HARVEST_SCHEDULE_RELOAD_INTERVAL=2m
      - REDIS_SERVER_PORT=6379

1. 项目简介

Go Harvest 是 Harvest 的 GoFrame 重写版本,面向 PT 站点管理、签到、数据抓取、种子搜索、下载器管理、辅种、通知和自动化任务。

当前主要功能:

  • WebUI 页面和 REST API。
  • SQLite / PostgreSQL 初始化。
  • 用户登录、JWT 鉴权、Swagger UI。
  • 我的站点管理、站点配置管理、站点数据抓取、签到、搜索。
  • qBittorrent / Transmission 下载器管理和种子控制。
  • 种子推送、批量推送、辅种、种子迁移。
  • 计划任务、手动任务、任务结果记录。
  • 通知推送和消息历史。
  • TMDB / 豆瓣查询。
  • 旧版数据导入、数据备份导入导出。
  • 主程序、站点配置、WebUI 更新。
  • 服务器状态、服务状态、实时日志。

2. 推荐部署方式

推荐使用 Docker 镜像运行。镜像内包含:

  • Go Harvest 主程序。
  • Redis,可在未配置外置 Redis 时由容器内部启动。
  • 内置站点配置和 WebUI 静态文件。

2.1 SQLite 单容器部署

SQLite 是最简单的部署方式,只需要一个 Go Harvest 容器。建议在项目目录下创建 docker-compose.yml 和 .env,然后通过 .env 管理敏感配置和端口。

完整 docker-compose.yml 示例:

services:
  harvest:
    image: newptools/go-harvest:latest
    container_name: go-harvest
    restart: unless-stopped
#    env_file: # 使用.env管理环境变量的将这三行打开
#      - path: ./db/.env
#        required: false
    environment:
      TZ: ${TZ:-Asia/Shanghai}
      LOGGER_LEVEL: ${LOGGER_LEVEL:-info}

      # 启动授权校验必填。EMAIL 也可写成 DJANGO_SUPERUSER_EMAIL。
      EMAIL: ${EMAIL}
      TOKEN: ${TOKEN}

      # 对外访问端口(WebUI / API / Swagger 均通过此端口)。
      GO_WEB_PORT: ${GO_WEB_PORT:-5173}

      # 运行资源和并发设置。
      HARVEST_MEMORY_LIMIT: ${HARVEST_MEMORY_LIMIT:-}
      HARVEST_GOGC: ${HARVEST_GOGC:-80}
      HARVEST_SITE_TASK_CONCURRENCY: ${HARVEST_SITE_TASK_CONCURRENCY:-5}
      HARVEST_DOWNLOADER_TASK_CONCURRENCY: ${HARVEST_DOWNLOADER_TASK_CONCURRENCY:-2}
      HARVEST_DOWNLOADER_STATUS_CONCURRENCY: ${HARVEST_DOWNLOADER_STATUS_CONCURRENCY:-3}
      HARVEST_WS_STATUS_CONCURRENCY: ${HARVEST_WS_STATUS_CONCURRENCY:-3}
      HARVEST_PUSH_DOWNLOAD_CONCURRENCY: ${HARVEST_PUSH_DOWNLOAD_CONCURRENCY:-2}
      HARVEST_DB_LOG_RETENTION_DAYS: ${HARVEST_DB_LOG_RETENTION_DAYS:-15}

      # 留空时使用容器内置 Redis;配置后使用外置 Redis。
      CACHE_REDIS_CONNECTION: ${CACHE_REDIS_CONNECTION:-}
      REDIS_SERVER_PORT: ${REDIS_SERVER_PORT:-6379}
      REDIS_MAXMEMORY: ${REDIS_MAXMEMORY:-128mb}
      REDIS_MAXMEMORY_POLICY: ${REDIS_MAXMEMORY_POLICY:-allkeys-lru}

      # GitHub 资源代理,用于站点配置、WebUI、Release 更新等。
      GIT_PROXY: ${GIT_PROXY:-https://gh-proxy.org/}
    ports:
      - "5173:${GO_WEB_PORT:-5173}"
    volumes:
      # 配置、SQLite 数据库、日志、媒体文件。
      - ./db:/app/db
      # 自定义站点配置。
      - ./sites:/app/sites
      # 下载器相关目录。
      - ./downloaders:/downloaders
      # 图标目录,供 WebUI 或接口访问站点/应用图标。
      - ./db/icons:/icons
    healthcheck:
      test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:${GO_WEB_PORT:-5173}/api.json >/dev/null" ]
      interval: 20s
      timeout: 5s
      retries: 10
      start_period: 30s

.env 示例:

TZ=Asia/Shanghai
LOGGER_LEVEL=info

# 授权信息,启动时会请求远端授权接口校验。
EMAIL=your-email@example.com
TOKEN=your-auth-token

# 对外访问端口。
GO_WEB_PORT=5173

# 并发和资源控制。
HARVEST_GOGC=80
HARVEST_SITE_TASK_CONCURRENCY=5
HARVEST_DOWNLOADER_TASK_CONCURRENCY=2
HARVEST_DOWNLOADER_STATUS_CONCURRENCY=3
HARVEST_WS_STATUS_CONCURRENCY=3
HARVEST_PUSH_DOWNLOAD_CONCURRENCY=2
HARVEST_DB_LOG_RETENTION_DAYS=15

# 缓存。留空使用容器内置 Redis。
CACHE_REDIS_CONNECTION=
REDIS_SERVER_PORT=6379
REDIS_MAXMEMORY=128mb
REDIS_MAXMEMORY_POLICY=allkeys-lru

# GitHub 资源代理。
GIT_PROXY=https://gh-proxy.org/

启动:

mkdir -p db/icons sites downloads downloaders
docker compose up -d

Compose 会自动读取当前目录下的 .env。如果 .env 不在当前目录,可以显式指定:

docker compose --env-file /path/to/.env up -d

默认访问地址:

  • WebUI: http://127.0.0.1:5173
  • 初始化页面: http://127.0.0.1:5173/setup
  • Swagger UI: http://127.0.0.1:5173/swagger
  • OpenAPI JSON: http://127.0.0.1:5173/api.json

默认挂载目录:

  • ./db:/app/db,配置、数据库、日志、媒体文件。
  • ./sites:/app/sites,用户自定义站点配置。
  • ./downloaders:/downloaders,下载器相关目录。
  • ./db/icons:/icons,图标目录。建议放在 db/icons 下,便于随数据目录一起备份和迁移。

SQLite 数据库初始化时固定使用:

/app/db/data.sqlite3

2.2 PostgreSQL 部署

如果希望使用 PostgreSQL,可以在 SQLite 单容器 Compose 基础上增加 PostgreSQL 服务。完整示例:

services:
  go-harvest-postgres:
    image: postgres:17-alpine
    container_name: go-harvest-postgres
    restart: unless-stopped
    environment:
      TZ: ${TZ:-Asia/Shanghai}
      POSTGRES_DB: ${POSTGRES_DB:-goharvest}
      POSTGRES_USER: ${POSTGRES_USER:-goharvest}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-goharvest}
      POSTGRES_PORT: ${POSTGRES_PORT:-5432}
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\"" ]
      interval: 2s
      timeout: 3s
      retries: 30
      start_period: 2s

  go-harvest:
    image: newptools/go-harvest:latest
    container_name: go-harvest
    restart: unless-stopped
    depends_on:
      go-harvest-postgres:
        condition: service_healthy
#    env_file: # 使用.env管理环境变量的将这三行打开
#      - path: ./db/.env
#        required: false
    environment:
      TZ: ${TZ:-Asia/Shanghai}
      LOGGER_LEVEL: ${LOGGER_LEVEL:-info}

      # 启动授权校验必填。EMAIL 也可写成 DJANGO_SUPERUSER_EMAIL。
      EMAIL: ${EMAIL}
      TOKEN: ${TOKEN}

      GO_WEB_PORT: ${GO_WEB_PORT:-5173}

      HARVEST_MEMORY_LIMIT: ${HARVEST_MEMORY_LIMIT:-}
      HARVEST_GOGC: ${HARVEST_GOGC:-80}
      HARVEST_SITE_TASK_CONCURRENCY: ${HARVEST_SITE_TASK_CONCURRENCY:-5}
      HARVEST_DOWNLOADER_TASK_CONCURRENCY: ${HARVEST_DOWNLOADER_TASK_CONCURRENCY:-2}
      HARVEST_DOWNLOADER_STATUS_CONCURRENCY: ${HARVEST_DOWNLOADER_STATUS_CONCURRENCY:-3}
      HARVEST_WS_STATUS_CONCURRENCY: ${HARVEST_WS_STATUS_CONCURRENCY:-3}
      HARVEST_PUSH_DOWNLOAD_CONCURRENCY: ${HARVEST_PUSH_DOWNLOAD_CONCURRENCY:-2}
      HARVEST_DB_LOG_RETENTION_DAYS: ${HARVEST_DB_LOG_RETENTION_DAYS:-15}

      CACHE_REDIS_CONNECTION: ${CACHE_REDIS_CONNECTION:-}
      REDIS_SERVER_PORT: ${REDIS_SERVER_PORT:-6379}
      REDIS_MAXMEMORY: ${REDIS_MAXMEMORY:-128mb}
      REDIS_MAXMEMORY_POLICY: ${REDIS_MAXMEMORY_POLICY:-allkeys-lru}
      GIT_PROXY: ${GIT_PROXY:-https://gh-proxy.org/}
    ports:
      - "5173:${GO_WEB_PORT:-5173}"
    volumes:
      - ./db:/app/db
      - ./sites:/app/sites
      - ./downloaders:/downloaders
      - ./db/icons:/icons
    healthcheck:
      test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:${GO_WEB_PORT:-5173}/api.json >/dev/null" ]
      interval: 20s
      timeout: 5s
      retries: 10
      start_period: 30s

PostgreSQL .env 示例可在 SQLite .env 基础上追加:

POSTGRES_DB=goharvest
POSTGRES_USER=goharvest
POSTGRES_PASSWORD=change-me
POSTGRES_PORT=5432

启动:

mkdir -p db/icons sites downloads downloaders postgres-data
docker compose -f docker-compose.pgsql.yml up -d

如果使用自定义 .env 路径:

docker compose --env-file /path/to/.env -f docker-compose.pgsql.yml up -d

默认 PostgreSQL 环境变量:

POSTGRES_DB=goharvest
POSTGRES_USER=goharvest
POSTGRES_PASSWORD=goharvest
POSTGRES_PORT=5432

初始化页面中选择 PostgreSQL,并填写数据库地址、端口、库名、用户和密码。

使用上面的 Compose 时,初始化页面中 PostgreSQL 连接信息通常填写:

Host: go-harvest-postgres
Port: 5432
Database: goharvest
User: goharvest
Password: .env 中的 POSTGRES_PASSWORD

2.3 常用环境变量

容器启动常用环境变量:

TZ=Asia/Shanghai
LOGGER_LEVEL=info
EMAIL=your-email@example.com
TOKEN=your-auth-token
GO_WEB_PORT=5173
HARVEST_MEMORY_LIMIT=
HARVEST_GOGC=80
HARVEST_SITE_TASK_CONCURRENCY=5
HARVEST_DOWNLOADER_TASK_CONCURRENCY=2
HARVEST_DOWNLOADER_STATUS_CONCURRENCY=3
HARVEST_WS_STATUS_CONCURRENCY=3
HARVEST_PUSH_DOWNLOAD_CONCURRENCY=2
HARVEST_DB_LOG_RETENTION_DAYS=15
CACHE_REDIS_CONNECTION=
REDIS_SERVER_PORT=6379
REDIS_MAXMEMORY=128mb
REDIS_MAXMEMORY_POLICY=allkeys-lru
GIT_PROXY=https://gh-proxy.org/

说明:

  • EMAIL / TOKEN 是启动授权校验所需环境变量。EMAIL 也兼容 DJANGO_SUPERUSER_EMAIL。
  • GO_WEB_PORT 是对外访问端口(WebUI / API / Swagger 均通过此端口),默认 5173。
  • CACHE_REDIS_CONNECTION 存在时使用外置 Redis,例如 redis://192.168.1.10:6379/15。
  • CACHE_REDIS_CONNECTION 留空时,容器内部 Redis 会使用 REDIS_SERVER_PORT。
  • GIT_PROXY 用于站点配置、WebUI、Release 等 GitHub 资源访问代理。

3. docker-compose 部署教程

本教程以群晖 Container Manager 为例,其他 NAS(如飞牛)操作类似。

3.1 创建 compose 项目

  1. 在 File Station 的 docker 文件夹下创建 harvest 文件夹,在 harvest 下创建 db 文件夹(用于保存数据库和配置文件)

    img.pngimg_1.pngimg_2.pngimg_3.pngimg_4.png

  2. 打开 Container Manager,选择「项目」,新增,输入项目名称,选择项目文件夹(harvest)

    img_5.pngimg_6.png

3.2 配置 compose 脚本

  1. 选择创建 docker-compose.yml

    img_7.png

  2. 复制配置文件内容,粘贴到输入框。粘贴不了的刷新下网页,修改填写你的端口、授权码(EMAIL / TOKEN),以及网络模式。

    下载器文件夹的映射规则:冒号前面是本地文件夹,冒号后面是容器内路径。 下载器种子文件映射目录固定格式为 /downloaders/ 开头。如不需要辅种功能,下载器可以不映射。

    端口映射:所有对外访问均通过 GO_WEB_PORT 端口,默认 5173

    img_8.pngimg_9.pngimg_10.png

  3. 修改完成之后点击下一步,点击「完成」就会自动下载镜像并生成容器。

    img_11.pngimg_12.pngimg_13.pngimg_14.png

3.3 错误处理

  1. 如果容器启动失败,Exit Code 1,不要急,点击关闭。exit code 0 表示成功

    img_15.png

    1. 检查 EMAIL 和 TOKEN 是否正确

    2. 检查授权文件是否放到 db 文件夹

    3. 点击项目名称,进去之后会看到容器下面有一行红字,这里会显示缺少目录(例如 sites 文件夹)。到 harvest 文件夹下手动创建对应文件夹,然后重新启动容器。

      img_16.pngimg_17.pngimg_18.png

  2. 等待几分钟后,就可以通过 http://IP:端口映射出来的端口 访问 WebUI 了

    1. 首次访问会进入初始化页面,按提示填写信息
    2. 希望查看启动进度的可以点击容器名称,然后点右上角的操作 => 打开终端机 查看实时日志

    img_19.pngimg_20.pngimg_21.png

4. SSH Docker 管理

收割机 APP 的 SSH 仅用于 Docker 管理,因此需要用户具有 docker 权限,部分 NAS SSH 用户是没有 docker 权限的,需要自行添加。

4.1 群晖

  1. 界面添加

    1. 控制面板 => 用户与群组 => 用户群组 => 添加用户群组:docker

      img.png

    2. 用户账号 => 用户名 => 编辑 => 用户群组 => 勾选 docker

      img_1.png

    3. 保存

  2. 命令行添加

    1. 打开 SSH

      img_2.png

    2. SSH 登录群晖

    3. 添加用户组

      sudo synogroup --add docker
      
    4. 用户添加 docker 权限

      sudo synogroup --memberadd docker 用户名
      

      用户名替换为你的用户名

    5. 重启群晖

4.2 飞牛/极空间/绿联/UNAS

基于 Debian 的都可以如此操作

  1. 打开 SSH

    img_3.png

  2. SSH 登录 NAS

  3. 添加用户组,已存在会提示 already exists,不存在会提示添加成功

    sudo groupadd docker
    

    img_4.png

  4. 用户添加 docker 权限

    sudo usermod -aG docker 用户名
    

    用户名替换为你的用户名

  5. 重启 NAS

最近更新: 2026/7/6 01:50
Contributors: ngfchl
Prev
00. 收割机简介
Next
02. 站点管理