【serv00系列教程】部署始皇NewAPI

简单上手

添加站点

在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 认证登录了,再也不用担心小粉兔了


鸣谢

230 Likes

太强了R佬

4 Likes

感谢分享!

2 Likes

感谢分享

9 Likes

牛的

1 Like

感谢分享

好东西

2 Likes

余额 $0.00

2 Likes

强,太厉害了

1 Like

很好的教程

1 Like

感谢分享

1 Like

大佬厉害

牛的:cow:

牛,有时间看看

佬太牛了

好啊,这下嘎嘎方便了 :tieba_024:

6 Likes

新用户注册没有额度,额度将在之后根据系统资源情况进行分配。

目前已为linuxdo_17至linuxdo_25的用户分配了使用额度。

2 Likes

太强了顶一个

1 Like

R佬什么工作啊

1 Like

教程太给力,及时正好送给我们小白啊

1 Like