简单上手
添加站点
在Serv00面板添加你的站点域名,然后打开ssh登陆后进入你的域名目录下 public_html 目录
安装始皇newapi
release_info=$(curl -s https://api.github.com/repos/eggacheb/new-api-freebsd/releases/latest)
asset_url=$(echo "$release_info" | jq -r '.assets[] | select(.name != "source code") | .browser_download_url')
curl -L -o newapi "$asset_url" && chmod +x newapi
编写启动脚本
直接全选复制回车执行
cat > start.sh << EOF
#!/bin/sh
# 如果你有设置主题的需要,可以取消注释下一行,然后按照自己的需求设置。
# export THEME="berry"
export TIKTOKEN_CACHE_DIR="$PWD"
# 把下一行的 PORT 改为自己放行的端口
exec ./newapi --port PORT --log-dir ./logs
EOF
执行后赋权
chmod +x start.sh
运行程式
数据迁移:对于sqlite数据库,你可以直接复制 one-api.db 到你的域名目录下的 public_html 目录然后再启动
pm2 start ./start.sh --name newapi
或者添加应用到 ecosystem.config.js 后执行
module.exports = {
apps: [
{
name: 'newapi',
script: './start.sh',
cwd: '/home/$username/domains/$domain/public_html',
interpreter: 'bash'
},
}
运行后 pm2 save
保存新的应用状态
自动更新
在 ~/domains
目录下创建 update.py
update.py
#!/usr/local/bin/python
import os
import time
import requests
import subprocess
from datetime import datetime, timedelta
import logging
# 用户配置项
USERNAME = '你的用户名'
DOMAIN = '你的域名'
WORK_DIR = f'/home/{USERNAME}/domains/{DOMAIN}/public_html'
LOG_FILE = f'/home/{USERNAME}/domains/update.log'
GITHUB_PROJECT = 'eggacheb/new-api-freebsd'
logging.basicConfig(filename=LOG_FILE, level=logging.INFO, format='%(asctime)s %(levelname)s:%(message)s')
def update_service():
try:
# 获取最新版本信息
url = f"https://api.github.com/repos/{GITHUB_PROJECT}/releases/latest"
response = requests.get(url)
response.raise_for_status()
release = response.json()
asset_url = next((asset['browser_download_url'] for asset in release.get('assets', []) if asset['name'] != 'source code'), None)
if not asset_url:
logging.error("No asset URL found")
return
# 下载并准备新版本
subprocess.run(["curl", "-L", "-o", f"{WORK_DIR}/newapi_new", asset_url], check=True)
subprocess.run(["chmod", "+x", f"{WORK_DIR}/newapi_new"], check=True)
# 停止服务,更新,然后重启
subprocess.run([f"killall", "-u", f"{USERNAME}"], check=True)
subprocess.run(["mv", f"{WORK_DIR}/newapi_new", f"{WORK_DIR}/newapi"], check=True)
subprocess.run([f"/home/{USERNAME}/.npm-global/bin/pm2", "resurrect"], check=True)
# 更新版本信息
with open(f"{WORK_DIR}/read.me", "w") as file:
file.write(f"Version: {release['tag_name']}\n")
logging.info(f"Updated to version {release['tag_name']}")
except Exception as e:
logging.error(f"Error during update process: {e}")
def main():
while True:
now = datetime.now()
next_run = now.replace(hour=3, minute=0, second=0, microsecond=0)
if now >= next_run:
next_run += timedelta(days=1)
time.sleep((next_run - now).total_seconds())
update_service()
if __name__ == "__main__":
main()
编辑 ecosystem.config.js,添加新应用
{
name: 'update-newapi',
script: './update.py',
cwd: '/home/$username/domains',
interpreter: '/usr/local/bin/python'
},
申请开发者接入
访问 Connect页,依次点击 我的应用接入 - 申请新接入,参考下图填写
开启 LinuxDo 登录
访问你的 NewAPI 站点,管理员登录后(默认管理员账号root 密码123456),依次点击 设置 - 系统设置,下滑页面,先找到 配置登录注册,勾选 允许通过LINUXDO账户登录&注册
,然后继续下滑找到 配置 LINUX DO Oauth,填入 client-id 和 client-secrect,然后点击 保存LINUX DO OAuth设置即可
使用 LinuxDo 登录
访问你部署的NewAPI站点,右上角点击登录后,点击第三方登录下面的小企鹅图标即可使用 LinuxDo 认证登录了,再也不用担心小粉兔了
鸣谢
- 感谢 @serv00.net 提供的服务器:
https://serv00.net - 感谢 @Saika 提供的部署教程:
https://blog.rappit.site/2024/01/27/serv00_logs/#One-api - 感谢 @sketu 提供的域名:
https://wvw.p1ay.top - 感谢 @eggacheb 提供的freebsd编译仓库:
GitHub - eggacheb/new-api-freebsd: Automatically build New-API (FreeBSD version)