docker运行perplexica
序
本文主要研究一下如何用docker运行perplexica
步骤
git clone
git clone https://github.com/ItzCrazyKns/Perplexica.git
app.dockerfile
FROM docker.1ms.run/node:20.18.0-alpineARG NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001
ARG NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api
ENV NEXT_PUBLIC_WS_URL=${NEXT_PUBLIC_WS_URL}
ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}WORKDIR /home/perplexicaCOPY ui /home/perplexica/
RUN yarn config set registry 'https://registry.npmmirror.com'
RUN yarn install --frozen-lockfile --verbose
RUN yarn buildCMD ["yarn", "start"]
backend.dockerfile
FROM docker.1ms.run/node:18-slimWORKDIR /home/perplexicaCOPY src /home/perplexica/src
COPY tsconfig.json /home/perplexica/
COPY drizzle.config.ts /home/perplexica/
COPY package.json /home/perplexica/
COPY yarn.lock /home/perplexica/RUN mkdir /home/perplexica/data
RUN mkdir /home/perplexica/uploadsRUN yarn install --frozen-lockfile --network-timeout 600000
RUN yarn buildCMD ["yarn", "start"]
config.toml
[API_KEYS]
OPENAI = ""
GROQ = ""
ANTHROPIC = ""
GEMINI = ""[API_ENDPOINTS]
OLLAMA = "http://host.docker.internal:11434"
SEARXNG = "http://127.0.0.1:4000"[GENERAL]
PORT = 3_001
SIMILARITY_MEASURE = "cosine"
KEEP_ALIVE = "5m"
docker-compose.yaml
services:searxng:image: docker.1ms.run/searxng/searxng:latestvolumes:- ./searxng:/etc/searxng:rwports:- 4000:8080networks:- perplexica-networkrestart: unless-stoppedperplexica-backend:build:context: .dockerfile: backend.dockerfileimage: docker.1ms.run/itzcrazykns1337/perplexica-backend:mainenvironment:- SEARXNG_API_URL=http://host.docker.internal:4000- OLLAMA=http://host.docker.internal:11434depends_on:- searxngports:- 3001:3001volumes:- backend-dbstore:/home/perplexica/data- uploads:/home/perplexica/uploads- ./config.toml:/home/perplexica/config.toml# extra_hosts:# - 'host.docker.internal:host-gateway'networks:- perplexica-networkrestart: unless-stoppedperplexica-frontend:build:context: .dockerfile: app.dockerfileargs:- NEXT_PUBLIC_API_URL=http://host.docker.internal:3001/api- NEXT_PUBLIC_WS_URL=ws://host.docker.internal:3001image: itzcrazykns1337/perplexica-frontend:maindepends_on:- perplexica-backendports:- 3000:3000networks:- perplexica-networkrestart: unless-stoppednetworks:perplexica-network:volumes:backend-dbstore:uploads:
运行
docker-compose up
之后访问http://localhost:3000,如果是searxng则访问http://localhost:4000
小结
searxng目前国内能访问的就是bing和wolframalpha,研究了半天添加搜狗搜索没成功,可能需要代码定制。perplexica目前还没有找到如何定制知识库,只能每次搜索的时候上传一下相关文档。
doc
- AI 搜索工具 Perplexity 开源替代品: Perplexica
相关文章:
docker运行perplexica
序 本文主要研究一下如何用docker运行perplexica 步骤 git clone git clone https://github.com/ItzCrazyKns/Perplexica.gitapp.dockerfile FROM docker.1ms.run/node:20.18.0-alpineARG NEXT_PUBLIC_WS_URLws://127.0.0.1:3001 ARG NEXT_PUBLIC_API_URLhttp://127.0.0.1…...
15、Python面试题解析:列表推导式-条件推导与嵌套推导
1. 列表推导式简介 列表推导式(List Comprehension)是 Python 中一种简洁的创建列表的方式。它允许我们通过一行代码生成列表,通常比传统的 for 循环更简洁、更易读。 基本语法 [表达式 for 元素 in 可迭代对象]表达式:对元素的…...
uvm错误记录4
如下所示,奇怪的是penable莫名其妙的出X。可问题,我发送激励了。 仔细定位发现,39行用的是vif中的penable, 问题是都是赋值,却出现同时赋值多次,这是因为nonblocking和blocking同时触发导致的,因此…...
正则表达式(Regular expresssion)
正则表达式 匹配单次 . :匹配任意一个字符 [ ] :匹配[ ]里举例的任意一个字符 /d :匹配数字0-9 /D :匹配非数字 /s :匹配空白或tab建 /S :匹配非空白 /w :…...
React 中级教程
1. useState 与 setState 深入理解 import React, { useState } from react;const Counter = () => {const [count, setCount] = useState(0);const increment = () => {setCount(count + 1); // setState 会异步更新};return (<div><p>Count: {count}</…...
3dtiles——Cesium ion for Autodesk Revit Add-In插件
一、说明: Cesium已经支持3dtiles的模型格式转换; 可以从Cesium官方Aesset中上传gltf等格式文件转换为3dtiles; 也可以下载插件(例如revit-cesium插件)转换并自动上传到Cesium官方Aseet中。 Revit转3dtiles插件使用…...
高级 Conda 使用:环境导出、共享与优化
1. 引言 在 Conda 的基础包管理功能中,我们了解了如何安装、更新和卸载包。但对于开发者来说,如何更好地管理环境、导出环境配置、共享环境,以及如何优化 Conda 的使用效率,才是提高工作效率的关键。本篇博客将进一步深入 Conda …...
函数perror 和全局变量errno
#include <stdio.h> #include <errno.h> #include <fcntl.h>int main() {int fd open("nonexistent_file.txt", O_RDONLY);if (fd -1) {perror("Failed to open file");}return 0; }控制台有如下输出 Failed to open file: No such f…...
微信小程序的制作
制作微信小程序的过程大致可以分为几个步骤:从环境搭建、项目创建,到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前,你需要确保你已经完成了以下几个步骤: 注册微信小程序账号&…...
QT 异步编程之多线程
一、概述 1、在进行桌面应用程序开发的时候,假设应用程序在某些情况下需要处理比较复制的逻辑,如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事…...
人工智能之数学基础:线性子空间
本文重点 在前面的课程中,我们学习了线性空间,本文我们我们在此基础上学习线性子空间。在应用中,线性子空间的概念被广泛应用于信号处理、机器学习、图像处理等领域。 子空间的性质 子空间是线性空间的一部分,它需要满足下面的性质: 设V是数域F上的线性空间,W是V的一个…...
Proxmox 更新软件包数据库(TASK ERROR: command ‘apt-get update‘ failed: exit code 100)
1、连接自己报错的物理机Shell,编辑文件 vi /etc/apt/sources.list.d/pve-enterprise.list 2、注释文件的第一行在开头加上# 按I进入编辑模式后 开头添加# 然后shift: 输入wq或者wq!进行保存 3、注释后执行两个命令apt-get update 和 apt…...
Python--常见库与函数
二、Python常见库与函数 2.1 OS库 常用功能:文件/目录操作、路径管理、环境变量。 import os # 路径操作 abs_path os.path.abspath("data.txt") exists os.path.exists(abs_path) # 目录操作 os.mkdir("logs") # 创建目录(需处…...
算法——数学建模的十大常用算法
数学建模的十大常用算法在数学建模竞赛和实际问题解决中起着至关重要的作用。以下是这些算法的具体信息、应用场景以及部分算法的C语言代码示例(由于篇幅限制,这里只给出部分算法的简要代码或思路,实际应用中可能需要根据具体问题进行调整和扩…...
JVM——垃圾回收算法
目录 垃圾回收算法 评价标准: 标记-清除算法: 复制算法: 标记-整理算法: 分代GC: arthas查看分代之后的内存情况: 垃圾回收算法 java是如何实现垃圾回收的呢?简单来说,垃圾回…...
游戏APP如何通过精准广告策略实现广告变现收益增长?
不同类型的游戏APP合作AdSet聚合广告平台,量身定制广告变现方案,以提升变现收益的表现。#app广告变现 1、智能选择广告形式 基于用户的行为习惯,推荐优化广告格式,包括插屏广告、激励视频广告和Banner广告等,最大化广…...
服务器安全——日志分析和扫描
如何通过访问日志查询被攻击 扫描攻击 攻击日志 GET /index?sindex/%5Cthink%5CModule/Action/Param/$%7Bphpinfo()%7D HTTP/1.1", host: "主机", referrer: "主机sindex/\think\Module/Action/Param/${phpinfo()}" 攻击日志文件 .error.log sql注…...
vue3读取webrtc-stream 视频流
一.首先下载webrtc-stream,方便自己本地搭建视频流服务 https://download.csdn.net/download/cyw8998/90373521 解压后,启动命令 webrtc-streamer.exe -H 127.0.0.1:8020 二.vue3代码如下 <template><h1>video</h1><video id&…...
周考考题(学习自用)
1.查询student表中name叫张某的信息 select * from student where name张某; 2.写出char和varchar类型的区别 1)char存储固定长度的字符串,varchar存储可变长度的字符串(在实际长度的字符串上加上一个字节用于存储字符串长度)&a…...
ubuntu 22.04 安装vsftpd服务
先决条件,确保你已经配置好了存储库。 安装vsftpd 为了方便实验,我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…...
K-均值(K-means)聚类算法
K-均值(K-means)聚类算法是一种常用的无监督学习算法,用于将数据集分成 K 个簇(clusters)。该算法的基本思想是将数据点分为 K 个簇,使得每个数据点所属的簇内部的数据点之间的相似度最大化,而不…...
STM32F407通过FSMC扩展外部SRAM和NAND FLASH
1 扩展外部SRAM 1.1 地址情况 FSMC控制器的存储区分为4个区(Bank),每个区256MB。其中,Bank1可以用于连接SRAM、NOR FLASH、PSRAM,还可以连接TFT LCD。Bank1的地址范围是0x60000000~0x6FFFFFFF。Bank1又分为4个子区,每…...
AndroidStudio查看Sqlite和SharedPreference
1.查看Sqlite 使用App Inspection,这是个好东西 打开方式:View → Tool Windows → App Inspection 界面如图: App inspection不但可以看Sqlite还可以抓包network和background task连抓包工具都省了。 非常好使 2.查看sharedPreference 使…...
Elasticsearch:15 年来致力于索引一切,找到重要内容
作者:来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了!回顾过去 15 年的索引和搜索,并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章(带有标志性的…...
信呼OA办公系统sql注入漏洞分析
漏洞描述 信呼OA办公系统uploadAction存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。 环境搭建 源码下载地址:https://github.com/rainrocka/xinhu 下载后解压到本地网站根目录下,配置好数据库,然后安装即可 默认密…...
TDengine 客户端连接工具 taos-Cli
简介工具获取运行命令行参数 基础参数高级参数 数据导出/导入 数据导出数据导入 执行 SQL 脚本使用小技巧 TAB 键自动补全设置字符列显示宽度其它 错误代码表 简介 TDengine 命令行工具(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互最简…...
机器学习算法 - 随机森林之决策树初探(1)
随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一。 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了)。在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树。每个…...
原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表
对于大多数的开发者来言,看了很多文档可能遇见不到什么有用的,就算有用从文档上看,把代码复制到自己的本地大多数也是不能用的,非常浪费时间和学习成本, 尤其是three.js , cesium.js 这种难度较高ÿ…...
在 PyCharm 中接入deepseek的API的各种方法
在 PyCharm 中接入 DeepSeek 的 API,通常需要以下步骤: 1. 获取 DeepSeek API 密钥 首先,确保你已经在 DeepSeek 平台上注册并获取了 API 密钥(API Key)。如果没有,请访问 DeepSeek 的官方网站注册并申请 …...
Haskell语言的软件工程
Haskell语言的软件工程 引言 在软件工程的领域中,选择合适的编程语言是每个开发者都需要面对的重要决策。作为一种功能强大的函数式编程语言,Haskell凭借其独特的特性和优势逐渐在许多软件项目中占据一席之地。本文将深入探讨Haskell语言在软件工程中的…...
