06
2024
08
13:41:41

Serv00搭建各种服务(四)



Bingo(暂时无法正常使用)

先放行一个端口。在 Panel 中进入 File manager 选项卡,点击左侧的 My Files 进入你的用户根目录,找到 .profile文件,右键选择 View/Edit > Choose other >Source Editor 进行编辑,在最末加上以上两行并保存:


BASH

alias node='node20'

alias npm='npm20'


应用更改:


BASH

source ~/.profile


先新建一个目录用于存放 Bingo 的相关文件,进入目录后执行下述操作。


下载源码:

BASH

git clone https://github.com/weaigc/bingo


进入源码所在目录:

BASH

cd bingo


安装依赖:

BASH

npm20 install


下载build好的 .next资源:


BASH

wget -O next.tar.gz https://pan.saika.free.hr/d/local/next.tar.gz && tar -xzvf next.tar.gz && rm next.tar.gz

添加环境变量文件:


BASH

cp .env.example .env


接着在 Panel 中进入 File manager 选项卡,进入Bingo 源码所在的目录,找到 server.js文件,右键选择 View/Edit > Choose other >Source Editor 进行编辑,修改第7行中的端口为你放行的端口。再编辑 .env文件,添加你的 BING_HEADER。


测试启动:

BASH

npm20 run start

确定运行没有问题后,按 Ctrl+c即可停止运行。


使用pm2启动并管理:

BASH

pm2 start npm --name bingo -- run start



Refresh-gpt-chat


用来对接 ninja、warpgpt 等能够使用 access_Token 作为 API Key 请求 GPT 的工具,以使用永久有效期的 Refresh_token 来获取更好的体验。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                       Value

Domain                                                 xxx.USERNAME.serv00.net(也可以把原有的 USERNAME.serv00.net 删掉后重新添加)

Website Type                                         proxy

Proxy Target l                                        ocalhost

Proxy URL                                             留空

Proxy port                                            你准备用来部署 Refresh-gpt-chat 的端口

Use HTPPS                                           False

DNS support                                         True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                                                 Domain

Generate Let’s Encrypted certificate                           与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


接着 SSH 登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载 refresh-gpt-chat

wget -O refresh-gpt-chat.jar https://github.com/Yanyutin753/refresh-gpt-chat/releases/download/v0.0.3/refresh-gpt-chat-0.0.3-SNAPSHOT.jar


使用 pm2 启动:

BASH

pm2 start java19 --name refresh-gpt-chat -- -jar refresh-gpt-chat.jar --server.port=端口 --server.servlet.context-path=/ --getAccessTokenUrl=https://你的ninja地址/auth/refresh_token --chatUrl=https://你的ninja地址/v1/chat/completions


再套域名,接下来就可以直接使用 https://你套的域名/v1/chat/completions/ 当作API端点,使用 refresh_token 做 API_Keys ,使用 ChatGPT 了。


然后在 one-api 中添加自定义渠道, Base URL 填写你 https://你套的域名,模型填入你的 refresh_token 对应的账号所支持的模型,如果和我一样手持大把 3.5 的账号想用来做 API 用,可以选择全部 GPT3.5 的相关模型,然后在 模型重定向中填入以下内容:


JSON

{

  "gpt-3.5-turbo-0301": "gpt-3.5-turbo",

  "gpt-3.5-turbo-0613": "gpt-3.5-turbo",

  "gpt-3.5-turbo-16k": "gpt-3.5-turbo",

  "gpt-3.5-turbo-16k-0613": "gpt-3.5-turbo",

  "gpt-3.5-turbo-1106": "gpt-3.5-turbo",

  "gpt-3.5-turbo-instruct": "gpt-3.5-turbo"

}

密钥填写你的 refresh_token即可,如果你有多个账号,可以将批量勾选上,然后一行写一个 refresh_token。


同样的,你还可以使用 Cloudflared 隧道添加域名,而不选择使用 Proxy 。


Gpt4-copilot-java

支持 cocopilot 的 ccu 和 copilot 的 ghu 调用 copilot 转 GPT-4 的接口转换工具。 Java 写的,可以在 Serv00 运行。


目前更推荐这个方法:lvguanjun/copilot-to-chatgpt4

比起 Gpt4-copilot-java 更轻量更强大。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                            Value

Domain                                                      xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                      proxy

Proxy Target                                                      localhost

Proxy URL                                                      留空

Proxy port                                                      你准备用来部署 Gpt4-copilot-java 的端口

Use HTPPS                                                      False

DNS support                                                      True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                          Domain

Generate Let’s Encrypted certificate       与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


接着 SSH 登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载 fat jar 包

RELEASE_INFO=$(curl -s "https://api.github.com/repos/Yanyutin753/gpt4-copilot-java-sh/releases/latest")

JAR_DOWNLOAD_URL=$(echo "$RELEASE_INFO" | jq -r '.assets[] | select(.name|test(".jar$")) | .browser_download_url')

curl -L -o gpt4-copilot-java.jar "$JAR_DOWNLOAD_URL"


测试运行:

BASH

# 把PORT改为自己放行的端口,最后的server.servlet.context-path参数可以改成自己喜欢的尾缀

java19 -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/


测试没有问题之后,按 Ctrl+c即可停止运行。


使用 pm2 启动并管理:


BASH

pm2 start java19 --name gpt4-copilot-java -- -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/

始皇的公车:ghu_ThisIsARealFreeCopilotKeyByCoCopilot (已失效)


免费公车白嫖请求示例:

BASH

curl --location 'http(s)://ip:port_or_URL/cocopilot/v1/chat/completions' 

--header 'Content-Type: application/json' 

--header 'Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot' 

--data '{

"model": "gpt-4",

"messages": [{"role": "user", "content": "鲁迅打周树人"}]

}'

同样的,你还可以使用 Cloudflared 隧道添加域名,而不选择使用 Proxy 。



Zfile

首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                               Value

Domain                                                      xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                      proxy

Proxy Target                                                      localhost

Proxy URL                                                      留空

Proxy port                                                      你准备用来部署 Zfile 的端口

Use HTPPS                                                      False

DNS support                                                      True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                              Domain

Generate Let’s Encrypted certificate        与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


接着 SSH 登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载 fat jar 包

wget --no-check-certificate -O zfile.jar https://c.jun6.net/ZFILE/zfile-release.jar


测试运行:

BASH

java19 -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=$PWD/logs --zfile.db.path=$PWD/zfile --server.port=PORT

记得把端口改成自己的。测试没有问题之后,按 Ctrl+c即可停止运行。


使用pm2启动并管理:

BASH

pm2 start java19 --name zfile -- -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=$PWD/logs --zfile.db.path=$PWD/zfile --server.port=PORT


同样的,你还可以使用 Cloudflared 隧道添加域名,而不选择使用 Proxy 。


Halo

慎重部署,内存会超100%,不知道会不会封号


halo 自从升级 2.0 版本开始,很长时间内都没有提供构筑好的 jar 包,甚至于在GitHub上都出现了第三方的,使用 GitHub workflow 自动化构筑 jar 包的仓库。但是,自从2.12.0-alpha.1版本开始,halo 的官方仓库又开始提供构筑好的 jar 包了,刚好这些天在玩 Serv00 ,遂尝试部署了一下,成功。现记录一下:


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                         Value

Domain                                                      xxx.USERNAME.serv00.net(也可以把原有的 USERNAME.serv00.net 删掉后重新添加)

Website Type                                                      proxy

Proxy Target                                                      localhost

Proxy URL                                                       留空

Proxy port                                                      你准备用来部署 Halo 的端口

Use HTPPS                                                      False

DNS support                                                      True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                            Domain

Generate Let’s Encrypted certificate        与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


并在 MySQL 选项卡中中新建 MySQL 数据库,用于填入接入 Halo 。


接着 SSH 登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载jar包

release_info=$(curl -s https://api.github.com/repos/halo-dev/halo/releases/latest)

jar_url=$(echo "$release_info" | jq -r '.assets[] | select(.name | endswith(".jar")) | .browser_download_url')

curl -L "$jar_url" -o halo.jar


在 halo.jar 所在路径下新建 .halo2 文件夹,进入其中,新建文件 application.yaml 然后并配置其内容:

BASH

# 新建文件夹

mkdir -p .halo2

# 新建并填入配置

cat > .halo2/application.yaml << EOF

server:

  port: 你在面板中放行的端口

  # Response data gzip.

  compression:

    enabled: false

spring:

  #sql:

  #  init.platform: mysql

  r2dbc:

    url: r2dbc:pool:mysql://数据库地址:3306/数据库名

    username: 数据库用户名

    password: 数据库密码

halo:

  # Your admin client path is https://your-domain/{admin-path}

  admin-path: admin

  # memory or level

  cache: level

EOF




在 halo.jar 所在路径下新建 run.sh 运行脚本:

BASH

cat > run.sh << EOF

#!/bin/bash

export HALO_WORK_DIR="$PWD/.halo2"

export HALO_EXTERNAL_URL="https://你的域名"

exec java17 -server -Xms128m -Xmx256m -jar -Duser.timezone=Asia/Shanghai $PWD/halo.jar --spring.config.additional-location=$PWD/.halo2/application.yaml

EOF



测试运行:


BASH

chmod +x run.sh && ./run.sh


确定运行没有问题后,按 Ctrl+c即可停止运行。


使用pm2管理运行:


BASH

chmod +x run.sh && pm2 start ./run.sh --name halo

同样的,你还可以使用 Cloudflared 隧道添加域名,而不选择使用 Proxy 。


Go-proxy-bingai

这个仓库是 Bingo 的前身,当初玩 Replit 时我便有在使用,只可惜作者早已弃坑,所以当初我才找到了当时还能用的 Bingo 使用。


在 Bingo 也长期未更新,无法正常使用的如今,我的目光转向了另一个二改仓库。Harry-zklcdc 维护的 Go-proxy-bingai 的分支仓库目前还能够正常使用。而且在与开发者反馈了几个 bug 之后,开发者都会花时间认真复现,并快速修复,其体验实在是不错。


虽然原仓库的 Release 中并未提供 FreeBSD 系统适用的二进制文件,但是我们能够自己构建。我已经构建了一份放在这篇博客底部的QQ群的群文件中。

我写了一个仓库用于自动化构建 FreeBSD 版本的 go-proxy-bingai ,可以从我的仓库下载使用。 

作者已经开始提供 FreeBSD 的构建,故我的仓库已经存档。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                                         Value

Domain                                                                         xxx.USERNAME.serv00.net(也可以把原有的 USERNAME.serv00.net 删掉后重新添加)

Website Type                                                                         proxy

Proxy Target                                                                         localhost

Proxy URL                                                                         留空

Proxy port                                                                         你准备用来部署 Go-proxy-bingai 的端口

Use HTPPS                                                                         False

DNS support                                                                         True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                                         Domain

Generate Let’s Encrypted certificate                     与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)



接着 SSH 登入,并进入刚刚你新建的域名目录下的 public_html 路径下:

BASH

# 下载可执行文件

release_info=$(curl -s https://api.github.com/repos/Harry-zklcdc/go-proxy-bingai/releases | jq -r '[.[] | select(.prerelease==false)][0]')

download_url=$(echo "$release_info" | jq -r '.assets[] | select(.name=="go-proxy-bingai-freebsd-amd64.tar.gz") | .browser_download_url')

curl -L "$download_url" -o go-proxy-bingai-freebsd-amd64.tar.gz&& tar -xzf go-proxy-bingai-freebsd-amd64.tar.gz && rm go-proxy-bingai-freebsd-amd64.tar.gz && chmod +x go-proxy-bingai



新建启动脚本:

BASH

cat > entrypoint.sh << EOF

#!/bin/bash

# 被注释的环境变量请根据自己的需求,按照原仓库的 wiki 中的介绍进行填入。

export BYPASS_SERVER="https://bypass.zklcdc.xyz"  # 作者本人的公共bypass服务,可用性未知。

# export Go_Proxy_BingAI_USER_TOKEN_1="xxx"

# export Go_Proxy_BingAI_USER_TOKEN_2="xxx"

# export USER_KievRPSSecAuth="xxx"

# export USER_RwBf="xxx"

# export USER_MUID="xxx"

# export APIKEY="sk-xxx"

# export BING_BASE_URL="https://www.bing.com"

# export SYDNEY_BASE_URL="https://sydney.bing.com"

# export HTTP_PROXY="http://172.17.0.1:18080"

# export HTTPS_PROXY="http://172.17.0.1:18080"

# export Go_Proxy_BingAI_AUTH_KEY="xxx"

# 请把下一行双引号中的内容替换成你放行的端口。

export PORT="xxx"

chmod +x go-proxy-bingai && exec ./go-proxy-bingai

EOF



运行:

BASH

# 测试运行

chmod +x entrypoint.sh && ./entrypoint.sh

# 使用 pm2 管理运行

pm2 start ./entrypoint.sh --name go-proxy-bingai


请注意,如果你需要使用其 web 功能,而不仅仅是 api 功能,请务必使用 https 访问,不然无法打开。你可以选择使用面板自带的 proxy 添加域名并申请 ssl 证书,亦或者直接使用 cloudflared 隧道。


同样的,你还可以使用 Cloudflared 隧道添加域名,而不选择使用 Proxy 。


Pentaract

不建议使用,目前 Bug 众多,而且对 Telegram 账号有一定要求,目前暂不清楚 Telegram 限制账号的评定标准。


可以自行构建或者使用使用我构建的成品。由于该应用需要使用具有超级管理员权限的 PostgreSQL ,故不可使用 Serv00 自带的 PostgreSQL ,需要远程连接。


编译成品下载地址:pentaract-freebsd_X64.tar.gz


前端构建简单,这里不再赘述,而且由于其 Dockerfile 内构建前端使用的是 Node.js 21 而目前 FreeBSD Port 最高只有 Node.js 20 ,故不推荐在 FreeBSD 上直接构建,可以使用 GItHub Actions 进行构建,或是自己在 Node.js 21 的环境下构建再复制,甚至干脆直接从作者预构建的 Docker 镜像内打包出来使用。(经过测试,使用 Nodejs20 构建也可以正常使用。)


Serv00 上的构建法:

BASH

# 切换 Node.js 版本为 Nodejs20

alias node=node20

alias npm=npm20

# 全局安装 pnpm

npm install -g pnpm

source ~/.bashrc

# 构建前端

pnpm install

VITE_API_BASE='/api' pnpm run build

# 移动构建产物到工作目录

mkdir -p ~/pentaract/ui && cp -R ./dist/* ~/pentaract/ui


后端的构建,可以使用 GItHub Actions ,或者本地 FreeBSD 虚拟机,甚至直接在 Serv00 上构建。这里记录一下在 Serv00 上构建的方法:

BASH

# 克隆仓库到 Serv00 上

git clone https://github.com/Dominux/Pentaract && cd Pentaract/pentaract

# 构建

LIBCLANG_PATH=/usr/local/llvm16/lib cpuset -l 0 cargo build --release

# 移动构建产物到工作目录

mkdir -p ~/pentaract && cp ./target/release/pentaract ~/pentaract/pentaract


然后去 supabase 注册一个免费的PostgreSQL ,记录下数据库的用户名、密码、数据库名、地址,用于后续填入环境变量。


接着在 ~/pentaract 路径下新建一个启动脚本,按照要求填入所有的环境变量:

BASH

cat > start.sh << EOF

#!/bin/bash

export PORT=xxxx

export WORKERS=4

export CHANNEL_CAPACITY=32

export SUPERUSER_EMAIL=xxxx@xxxx.com

export SUPERUSER_PASS=xxxx

export ACCESS_TOKEN_EXPIRE_IN_SECS=1800

export REFRESH_TOKEN_EXPIRE_IN_DAYS=14

export SECRET_KEY=xxx

export TELEGRAM_API_BASE_URL=https://api.telegram.org

export DATABASE_USER=xxxx

export DATABASE_PASSWORD=xxxx

export DATABASE_NAME=xxxx

export DATABASE_HOST=xxxx

export DATABASE_PORT=5432

chmod +x pentaract && exec ./pentaract

EOF



给启动脚本赋权:

BASH

chmod +x start.sh

前端的 index-22eec6d1.js 文件内的 http://localhost:8000 需要更改为 serv00 的 url 或者 ip:port 。你可以去文件管理中编辑,查找替换即可,也可以使用sed命令简单更改一下

 已经重新构建前端并替换,现无需此步。


测试运行:

BASH

./start.sh


使用 pm2 管理:

BASH

pm2 start ./start.sh --name pentaract



OneList


原作者似乎已经弃坑,故我的仓库没有做自动检测构建。但是体验还不错,有 Emby 既视感了,配合小雅的 Alist 岂不美哉。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                               Value

Domain                                                               xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                               proxy

Proxy Target                                                               localhost

Proxy URL                                                               留空

Proxy port                                                               你准备用来部署 OneList 的端口

Use HTPPS                                                               False

DNS support                                                               True



添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                               Domain

Generate Let’s Encrypted certificate          与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)



接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载 OneList

wget https://github.com/k0baya/onelist-freebsd/releases/download/v2.0.5/onelist

# 初始化配置

chmod +x onelist && ./onelist -run config


接着回到 Panel 中,进入File manager选项卡,进入 OneList 所在路径,可以看到一个名为 config.env 的文件,右键点击,选择View/Edit > Source Editor,进行编辑:

# 服务设置

# 注意要改为未被占用的端口

API_PORT=5245

FaviconicoUrl=https://wework.qpic.cn/wwpic/818353_fizV30xbQCGPQRP_1677394564/0

API_SECRET=fRVvjcNd11gYGI85StVaeCtPVSmJTRRE


# Env有两种模式,Debug及Release,主要用在数据库为mysql时候,需要注意修改Env环境和mysql密码对应

Env=Debug


# 管理员账户设置,用于初始化管理员账户

UserEmail=xxxx.@qq.com

UserPassword=xxxxx


# 数据库设置

DB_DRIVER=sqlite

DB_USER=root

DbName=onelist


# 如果上面DB_DRIVER类型为mysql,就需要正确填下以下参数

DB_PASSWORD_Debug=123456

DB_PASSWORD_Release=123456


# TheMovieDb Key

# 在https://www.themoviedb.org网站申请

KeyDb=22f10ca52f109158ac7fe064ebbcf697



你可以按照自己的需求配置端口、管理员账户、数据库。 MySQL 性能更好哦~



测试运行:


BASH

./onelist -run server

使用 pm2 管理:


BASH

pm2 start ./onelist -- -run server



WarpGPT


这个没什么多说的,可以使用 access_Token 作为 API Key 请求 ChatGPT 接口,也就是所谓的 chat2api 。配合前文的 Refresh-gpt-chat 就可以把永久有效期的 Refresh_token 作为 API Key 来使用,十分的好用。


源仓库没有 Release ,故作者的仓库没有做自动检测构建。如果有更新需求需要手动触发 workflow 。你有需要也可以自己fork一份然后手动触发 workflow 。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                               Value

Domain                                                               xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                               proxy

Proxy Target                                                               localhost

Proxy URL                                                               留空

Proxy port                                                               你准备用来部署 WarpGPT 的端口

Use HTPPS                                                               False

DNS support                                                               True



添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                               Domain

Generate Let’s Encrypted certificate           与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)



接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:

BASH

# 下载二进制文件

wget https://github.com/k0baya/warpgpt-freebsd/releases/download/latest/warpgpt && chmod +x warpgpt


添加启动脚本:

BASH

cat > start.sh << EOF

#!/bin/bash

export TMPDIR="$PWD"

chmod +x warpgpt && exec ./warpgpt

EOF



给启动脚本赋权:

BASH

chmod +x start.sh


配置环境变量:

BASH

cat > .env << EOF

proxy = "http://127.0.0.1:10809"   #代理地址 (选填)

port = 5000                        #程序运行端口

host = '127.0.0.1'                 #可访问ip,0.0.0.0允许所有ip

verify = false                     #是否对访问进行验证

auth_key = ""                      #若开启访问验证,则需要在Header中添加AuthKey字段,且值为auth_key的值才能访问 (选填)

arkose_must = false                #是否强行gpt3.5进行验证

OpenAI_HOST = "chat.openai.com"    #openai网页api接口地址 (选填)

openai_api_host = "api.openai.com" #openai官方api接口 (选填)

proxy_pool_url=""                  #ipidea代理池链接 (选填)

#示例http://api.proxy.ipidea.io/getProxyIp?num=10&return_type=json&lb=1&sb=0&flow=1&regions=us&protocol=http,根据访问频次设置num值

log_level = "debug"                #日志等级


redis_address = "127.0.0.1:6379"   #redis地址(若不开启代理池可选填)

redis_passwd = ""                  #redis密码

redis_db = 0                       #选择的redis数据库

EOF



如果有 redis 需求,可以查阅官方文档:Redis


使用 pm2 管理运行:

BASH

pm2 start bash --name warpgpt -- start.sh



Coze-discord-proxy

代理 Discord 对话 Coze-Bot ,实现以 API 形式请求 GPT4 模型,提供对话、文生图、图生文、知识库检索等功能。功能不多赘述,详细去源仓库查看。


同样的,作者写了一个用于构建 FreeBSD 版本的仓库。在这里感谢论坛用户 Reno 的测试,没有测试人员的测试,也不会有部署的过程记录了。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                                Value

Domain                                                                xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                                proxy

Proxy Target                                                                localhost

Proxy URL                                                                留空

Proxy port                                                                你准备用来部署 Coze-discord-proxy 的端口

Use HTPPS                                                                False

DNS support                                                                True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                                Domain

Generate Let’s Encrypted certificate            与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)



接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:


BASH

# 下载二进制文件

release_info=$(curl -s https://api.github.com/repos/k0baya/coze-discord-proxy-freebsd/releases/latest)

asset_url=$(echo "$release_info" | jq -r '.assets[] | select(.name != "source code") | .browser_download_url')

curl -L -o coze-discord-proxy "$asset_url" && chmod +x coze-discord-proxy



添加启动脚本:

BASH

cat > start.sh << EOF

#!/bin/bash

# 根据你的需求自行填入环境变量

export PORT="PORT"

export USER_AUTHORIZATION="XXXXXX"

export BOT_TOKEN="XXXXXX"

export GUILD_ID="XXXXXX"

export COZE_BOT_ID="XXXXXX"

export PROXY_SECRET="XXXXXX"

export CHANNEL_ID="XXXXXX"

export TZ="Asia/Shanghai"

export DATA_GYM_CACHE_DIR="$PWD"

chmod +x coze-discord-proxy && exec ./coze-discord-proxy

EOF


给启动脚本赋权:

BASH

chmod +x coze-discord-proxy



添加多机器人配置文件:

BASH

mkdir -p app/coze-discord-proxy/data/config

touch app/coze-discord-proxy/data/config/bot_config.json



然后回到 Panel 中,进入File manager选项卡,进入 bot_config.json 所在路径,右键点击它,选择View/Edit > Source Editor,进行编辑:


[

  {

    "proxySecret": "123", // 接口请求密钥(PROXY_SECRET)(注意:此密钥在环境变量PROXY_SECRET中存在时该Bot才可以被匹配到!)

    "cozeBotId": "12***************31", // coze托管的机器人ID

    "model": ["gpt-3.5","gpt-3.5-16k"], // 模型名称(数组格式)(与请求参数中的model对应,如请求中的model在该json中未匹配到则会抛出异常)

    "channelId": "12***************56"  // [可选]discord频道ID(机器人必须在此频道所在的服务器)(目前版本下该参数仅用来活跃机器人)

  },

  {

    "proxySecret": "456",

    "cozeBotId": "12***************64",

    "model": ["gpt-4","gpt-4-16k"],

    "channelId": "12***************78"

  },

  {

    "proxySecret": "789",

    "cozeBotId": "12***************12",

    "model": ["dall-e-3"],

    "channelId": "12***************24"

  }

]



使用 pm2 管理运行:

BASH

pm2 start bash --name coze-discord-proxy -- start.sh



Memos

一款开源、轻量级的笔记服务。轻松捕捉并分享您的精彩想法。


这个仓库比较难受的是,其在源码的这个位置强制要求其 gRPC 服务的端口为 Memos 监听端口+1,故这个应用需要占用两个端口,而且必须是两个连续的端口。


同样的,作者写了一个用于构建 FreeBSD 版本的仓库


首先在 Panel 中放行两个相邻的端口,接着按照下表 Add a New Website :


Key                                                                Value

Domain                                                                xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                                proxy

Proxy Target                                                                localhost

Proxy URL                                                                留空

Proxy port                                                                刚刚放行的两个相邻的端口中小的那一个

Use HTPPS                                                                False

DNS support                                                                True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                                Domain

Generate Let’s Encrypted certificate        与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)



接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:

BASH

API_URL="https://api.github.com/repos/k0baya/memos-binary/releases/latest"

DOWNLOAD_URL=$(curl -s $API_URL | jq -r ".assets[] | select(.name == \"memos-freebsd-amd64.tar.gz\") | .browser_download_url")

curl -L $DOWNLOAD_URL -o memos-freebsd-amd64.tar.gz

tar -xzvf memos-freebsd-amd64.tar.gz && rm memos-freebsd-amd64.tar.gz && chmod +x memos



关于运行,有两种方式进行:


① SQLite


如果选择使用 SQLite 作为数据库运行,则可以直接运行:

BASH

# 假定你的数据文件打算存储在 /home/username/domains/xxx.USERNAME.serv00.net/public_html/data

# 新建数据文件夹

mkdir -p /home/username/domains/xxx.USERNAME.serv00.net/public_html/data

# 测试运行

./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data

# 使用 pm2 管理

pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data


② 外接 MySQL / PostgreSQL

你可以使用面板自带的 MySQL / PostgreSQL 新建数据库,或者使用其他平台提供的远程数据库:

BASH

# 假定你的数据文件打算存储在 /home/username/domains/xxx.USERNAME.serv00.net/public_html/data

# 新建数据文件夹

mkdir -p /home/username/domains/xxx.USERNAME.serv00.net/public_html/data

# 测试运行(MySQL)(MySQL需要管理员权限,你可以选择远程连接)

./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver mysql --dsn mysql://root:password123@localhost:3306/mydb

# 测试运行(PostgreSQL)

./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver postgres --dsn postgresql://user:password123@localhost:5432/mydb?sslmode=disable

# 使用 pm2 管理(MySQL)(MySQL需要管理员权限,你可以选择远程连接)

pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver mysql --dsn mysql://root:password123@localhost:3306/mydb

# 使用 pm2 管理(PostgreSQL)

pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver postgres --dsn postgresql://user:password123@localhost:5432/mydb?sslmode=disable



Frps

内网穿透嘛,懂的都懂,这里只做服务端的部署记录,客户端可以查看 Frp 的官方文档自行配置。感谢群友的率先测试:youyi


首先在 Panel 中放行两个端口,接着按照下表 Add a New Website :


Key                                                             Value

Domain                                                            xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                                            proxy

Proxy Target                                                            localhost

Proxy URL                                                            留空

Proxy port                                                            你准备用来映射转发内网服务的端口

Use HTPPS                                                            False

DNS support                                                            True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                            Domain

Generate Let’s Encrypted certificate        与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


同样的,你可以设置多个域名使用 Proxy 指向同一个端口,在 Frpc 客户端配置中使用域名分发不同的服务。具体可以查阅官方文档。


接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下

BASH

release_info=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest)

download_url=$(echo "$release_info" | jq -r '.assets[] | select(.name | contains("freebsd_amd64.tar.gz")) | .browser_download_url')

curl -L "$download_url" -o frp_freebsd_amd64.tar.gz 

tar -xzvf frp_freebsd_amd64.tar.gz --strip-components=1

rm -rf frp_freebsd_amd64.tar.gz



接着编辑配置文件:

BASH

# 按照自己的实际情况和需求进行配置,这里只做最简单的http转发配置示例

cat > frps.toml << EOF

bindPort = 监听端口

vhostHTTPPort = 映射转发端口

auth.token = "密码"

EOF



运行:

BASH

pm2 start ./frps -- -c frps.toml


客户端配置示例:

TOML


serverAddr = "x.x.x.x"

serverPort = Frps 的监听端口

auth.token = "密码"


[[proxies]]

name = "web"

type = "http"

localPort = 80

customDomains = ["www.yourdomain.com"]


[[proxies]]

name = "web2"

type = "http"

localPort = 8080

customDomains = ["www.yourdomain2.com"]





Rclone

Rclone 是一款管理云存储文件的命令行程序。它功能丰富,可替代云供应商的网络存储界面。超过 70 种云存储产品支持 Rclone,包括 S3 对象存储、企业和消费者文件存储服务以及标准传输协议。


具体用法与配置请查阅其官方文档


如果你需要使用 Rclone 的 web ui ,你可以按照前文所述的大多数应用一样,先放行端口,添加域名,申请好 SSL 证书,并进入其目录下的 public_html 路径下再进行程序本体的下载部署。


下载最新版 Rclone:

BASH

release_info=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest)

download_url=$(echo "$release_info" | jq -r '.assets[] | select(.name | contains("-freebsd-amd64.zip")) | .browser_download_url')

curl -L "$download_url" -o rclone-freebsd-amd64.zip

outer_folder=$(unzip -l rclone-freebsd-amd64.zip | grep '/' | sed -n '1p' | sed 's#^.* \([^/]*\)/.*$#\1#')

unzip rclone-freebsd-amd64.zip

mv "$outer_folder"/* . && rm -rf "$outer_folder" rclone-freebsd-amd64.zip



经我测试,目前 v1.63.1 之后的版本的 FreeBSD 版的构建都有无法识别 mount 命令的问题,在我查阅其 issue —— #7432 、 #5843 后,确定这个 bug 已经好几个月没有修复了。所以我建议在此 bug 修复前,使用 v1.63.1 版本。


下载 v1.63.1 版本 Rclone :

BASH

curl -L https://github.com/rclone/rclone/releases/download/v1.63.1/rclone-v1.63.1-freebsd-amd64.zip -o rclone-freebsd-amd64.zip

outer_folder=$(unzip -l rclone-freebsd-amd64.zip | grep '/' | sed -n '1p' | sed 's#^.* \([^/]*\)/.*$#\1#')

unzip rclone-freebsd-amd64.zip

mv "$outer_folder"/* . && rm -rf "$outer_folder" rclone-freebsd-amd64.zip


配置 Rclone 的存储:

BASH

./rclone config


启动 web ui:

BASH

./rclone rcd --rc-web-gui --rc-user 用户名 --rc-pass 密码 --rc-addr :端口


pm2 管理 web ui:

BASH

pm2 start ./rclone -- rcd --rc-web-gui --rc-user 用户名 --rc-pass 密码 --rc-addr :端口



Cloudreve


Cloudreve 可助你即刻构建出兼备自用或公用的网盘服务,通过多种存储策略的支持、虚拟文件系统等特性实现灵活的文件管理体验。


同样的,我编写了一个用于自动化构建 FreeBSD 版本的 Cloudreve 的仓库:k0baya/cloudreve-freebsd 前后端分离构建,前端静态文件在 Cloudreve 本体同路径下的 static 文件夹内。


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                                     Value

Domain                                                    xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website                                                    Type proxy

Proxy Target                                                    localhost

Proxy URL                                                    留空

Proxy port                                                    你准备用来部署 Cloudreve 的端口

Use HTPPS                                                    False

DNS support                                                    True

添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                          Domain

Generate Let’s Encrypted certificate     与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:

BASH

release_info=$(curl -s https://api.github.com/repos/k0baya/cloudreve-freebsd/releases/latest)

download_url=$(echo "$release_info" | jq -r '.assets[] | select(.name | contains("freebsd-amd64.tar.gz")) | .browser_download_url')

curl -L "$download_url" -o cloudreve-freebsd-amd64.tar.gz 

tar -xzvf cloudreve-freebsd-amd64.tar.gz

rm -rf cloudreve-freebsd-amd64.tar.gz



Cloudreve 在首次启动时,会创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动时出现。如果您忘记初始管理员密码,需要删除同级目录下的 cloudreve.db ,重新启动主程序以初始化新的管理员账户。


Cloudreve 默认会监听 5212 端口。首次启动时,Cloudreve 会在同级目录下创建名为 conf.ini 的配置文件,你可以修改此文件进行一些参数的配置(比如端口),保存后需要重新启动 Cloudreve 生效。


一个完整的配置文件示例如下:


INI


[System]

; 运行模式

Mode = master

; 监听端口

Listen = :5212

; 是否开启 Debug

Debug = false

; Session 密钥, 一般在首次启动时自动生成

SessionSecret = 23333

; Hash 加盐, 一般在首次启动时自动生成

HashIDSalt = something really hard to guss

; 呈递客户端 IP 时使用的 Header

ProxyHeader = X-Forwarded-For


; SSL 相关

[SSL]

; SSL 监听端口

Listen = :443

; 证书路径

CertPath = C:\Users\i\Documents\fullchain.pem

; 私钥路径

KeyPath = C:\Users\i\Documents\privkey.pem


; 启用 Unix Socket 监听

[UnixSocket]

Listen = /run/cloudreve/cloudreve.sock

; 设置产生的 socket 文件的权限

Perm = 0666


; 数据库相关,如果你只想使用内置的 SQLite 数据库,这一部分直接删去即可

[Database]

; 数据库类型,目前支持 sqlite/mysql/mssql/postgres

Type = mysql

; MySQL 端口

Port = 3306

; 用户名

User = root

; 密码

Password = root

; 数据库地址

Host = 127.0.0.1

; 数据库名称

Name = v3

; 数据表前缀

TablePrefix = cd_

; 字符集

Charset = utf8mb4

; SQLite 数据库文件路径

DBFile = cloudreve.db

; 进程退出前安全关闭数据库连接的缓冲时间

GracePeriod = 30

; 使用 Unix Socket 连接到数据库

UnixSocket = false


; 从机模式下的配置

[Slave]

; 通信密钥

Secret = 1234567891234567123456789123456712345678912345671234567891234567

; 回调请求超时时间 (s)

CallbackTimeout = 20

; 签名有效期

SignatureTTL = 60


; 跨域配置

[CORS]

AllowOrigins = *

AllowMethods = OPTIONS,GET,POST

AllowHeaders = *

AllowCredentials = false

SameSite = Default

Secure = lse


; Redis 相关

[Redis]

Server = 127.0.0.1:6379

Password =

DB = 0


; 从机配置覆盖

[OptionOverwrite]

; 可直接使用 `设置名称 = 值` 的格式覆盖

max_worker_num = 50




你可以使用 vim 或者 Panel 中的 File manager 选项卡,进入 conf.ini 所在路径路径,右键点击,选择 View/Edit > Source Editor ,进行编辑。


修改完配置文件后,测试启动:

BASH

./cloudreve


使用 pm2 管理:

BASH

pm2 start ./cloudreve




PanIndex



一个简易的网盘目录列表。


同样的,作者编写了一个用于自动化构建 FreeBSD 版本的 PanIndex 的仓库:k0baya/panindex-freebsd


后台地址(默认):http://ip:port/admin

默认账号:admin

默认密码:PanIndex


首先在 Panel 中放行一个端口,接着按照下表 Add a New Website :


Key                                              Value

Domain                                              xxx.USERNAME.serv00.net(也可以把原有的USERNAME.serv00.net删掉后重新添加)

Website Type                                              proxy

Proxy Target                                              localhost

Proxy URL                                              留空

Proxy port                                              你准备用来部署 PanIndex 的端口

Use HTPPS                                              False

DNS support                                              True


添加完新站点后,继续点击上方的 Manage SSL certificates ,接着在出口 IP 的右侧点击 Manage ,再点击 Add certificate :


Type                                                                   Domain

Generate Let’s Encrypted certificate              与刚刚添加的站点域名保持一致(如果是原有的USERNAME.serv00.net ,可以省略此步)


接着SSH登入,并进入刚刚你新建的域名目录下的 public_html 路径下:

BASH

release_info=$(curl -s https://api.github.com/repos/k0baya/panindex-freebsd/releases/latest)

asset_url=$(echo "$release_info" | jq -r '.assets[] | select(.name != "source code") | .browser_download_url')

curl -L -o panindex "$asset_url" && chmod +x panindex



创建配置文件:

BASH

cat > config.json << EOF

{

  "host": "0.0.0.0",

  "port": 5238,

  "log_level": "info",

  "data_path": "",

  "cert_file": "",

  "key_file": "",

  "config_query": "",

  "db_type": "",

  "dsn": "",

  "ui": ""

}

EOF




数据库支持 sqlite (默认)、mysql、postgres ,如果需要接入 MySQL 或者 PostgreSQL ,请写成数据库链接的方式填入 dsn 。注意,如果是 Serv00 自带的 PostgreSQL ,请在数据库链接最末加上 ?sslmode=disable 以禁用 SSL 连接。


编写好配置文件后,测试运行:

BASH

./panindex -c=config.json



使用 pm2 管理:

BASH

pm2 start ./panindex -- -c=config.json





Artalk


似乎有几个群友在用这个,为方便查阅统一收录在本文,具体内容可以去群友的博客查看:




收尾工作

听说 Serv00 会不定时重启机器,所以我们把 pm2 添加开机自启,可以保证每次重启都能由 pm2 调动 Alist 和 Cloudflared 。

而且 Serv00 每三个月内必须要有一次登录面板或者 SSH 连接,不然会删号,也可以通过一个脚本解决问题,接下来我会详细说明。


自动续期

可以用青龙面板的自动任务定期登录SSH解决。在青龙面板中添加Linux依赖 sshpass,然后添加定时任务:名称随意,命令/脚本 sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit",定时规则 1 1 1 * *。这样就会每个月自动ssh连接一次,实现续期。


你还可以使用自身 SSH 自身的方式进行自动续期,操作如下:


进入一个自己喜欢的路径,使用 cat 命令新建 auto-renew.sh 脚本:

BASH

cat > auto-renew.sh << EOF

#!/bin/bash


while true; do

  sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 "exit" &

  sleep 259200  #30天为259200秒

done

EOF


记得把其中的密码、用户名、ssh的地址修改为你自己的。


给 auto-renew.sh添加可执行权限:

BASH

chmod +x auto-renew.sh



使用pm2启动:

BASH

pm2 start ./auto-renew.sh

这样就会每隔一个月自动执行一次SSH连接,自己SSH自己进行续期。


自动启动

听说 Serv00 的主机会不定时重启,所以需要添加自启任务。


在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务,Specify time 选择 After reboot,即为重启后运行。Form type 选择 Advanced,Command 写:


BASH

/home/你的用户名/.npm-global/bin/pm2 resurrect

记得把你的用户名改为你的用户名


添加完之后,在 SSH 窗口保存 pm2 的当前任务列表快照:

BASH

pm2 save

这样每次 serv00 不定时重启任务时,都能自动调用 pm2 读取保存的任务列表快照,恢复任务列表。

如果在保存了任务列表快照后又改变了任务 pm2 的任务列表,需要重新执行 pm2 save 以更新任务列表。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7437.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: