1.打开docker desktop，打开 PowerShell 或 命令提示符（cmd），输入： cd D: cd D:\docker_project mkdir fqnovel cd fqnovel 2.部署fqnovel容器： VPS版本： docker run -d --name fqnovel --restart unless-stopped -p 9999:9999 ghcr.io/sffxzzp/fqnovel:latest Windows版本，下面是docker-compose.yml内容： services: fqnovel: image: ghcr.io/sffxzzp/fqnovel:latest container_name: fqnovel restart: unless-stopped ports: - "127.0.0.1:9999:9999" volumes: - ./data:/app/data docker compose up -d 3.输入如图网址，测试是否搭建成功： 也可以打开reqable，输入如图body，使用post方式测试是否搭建成功： 4.搭建成功后，创建如下json文件，打开书源（legado，阅读3.0），在书源管理中导入，注意替换具体的ip： [ { "bookSourceComment": "FQNovel-unidbg书源", "bookSourceGroup": "FQNovel", "bookSourceName": "FQNovel-unidbg", "bookSourceType": 0, "bookSourceUrl": "http://替换为搭建的IP:9999", "customOrder": 2, "enabled": true, "enabledCookieJar": true, "enabledExplore": true, "exploreUrl": "搜索::http://替换为搭建的IP:9999/api/fqsearch/books?query={{key}}&offset={{(page-1)*20}}&count=20", "header": "Content-Type: application/json\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "lastUpdateTime": 1754302417608, "respondTime": 180000, "ruleBookInfo": { "author": "$.data.author", "coverUrl": "$.data.coverUrl", "intro": "$.data.description", "kind": "$.data.category", "lastChapter": "$.data.lastChapterTitle", "name": "$.data.bookName", "tocUrl": "http://替换为搭建的IP:9999/api/fqsearch/directory/{{$.data.bookId}}\n \njava.put(\"book_id\", java.getString(\"$.data.bookId\"))\nresult\n ", "wordCount": "$.data.wordNumber" }, "ruleContent": { "content": "$.data.txtContent", "title": "$.data.title" }, "ruleExplore": { "author": "$.author", "bookList": "$.data.books[*]", "bookUrl": "http://替换为搭建的IP:9999/api/fqnovel/book/{{$.bookId}}", "coverUrl": "$.coverUrl", "intro": "$.description", "kind": "$.category", "lastChapter": "$.lastChapterTitle", "name": "$.bookName", "wordCount": "$.wordCount" }, "ruleSearch": { "author": "$.author", "bookList": "$.data.books[*]", "bookUrl": "http://替换为搭建的IP:9999/api/fqnovel/book/{{$.bookId}}", "coverUrl": "$.coverUrl", "intro": "$.description", "kind": "$.category", "lastChapter": "$.lastChapterTitle", "name": "$.bookName\n \n// 第一页时保存searchId\nif (java.get('current_page') == null || java.get('current_page') == '1') {\n var searchId = java.getString('$..searchId');\n if (searchId) {\n java.put('search_id', searchId);\n }\n}\nresult\n ", "wordCount": "$.wordCount" }, "ruleToc": { "chapterList": "$.data.item_data_list[*]", "chapterName": "$.title", "chapterUrl": "@js:\nsource.bookSourceUrl + `/api/fqnovel/chapter/${java.get(\"book_id\")}/${java.getString(\"$.item_id\")}`" }, "searchUrl": "http://替换为搭建的IP:9999/api/fqsearch/books?query={{key}}&offset={{(page-1)*20}}&count=20&tabType=3@js:\nvar currentPage = java.get('current_page') || '1';\njava.put('current_page', (parseInt(currentPage) + 1).toString());\nvar searchId = java.get('search_id');\nif (searchId && currentPage != '1') {\n result + '&searchId=' + encodeURIComponent(searchId);\n} else {\n result;\n}", "weight": 0 } ]