公共API
如果你不准备搭建服务端和Web端, 可以选择使用我们的公开API, 并忽略以下教程中所有有关服务端和Web端部署的内容.
API URL | APP URL | secretKey | serverName | DATA FILE |
https://verify.nyaa.cf/api/ | https://verify.nyaa.cf/ | langualab_public | langualab | https://verify-db.nyaa.cf/ |
除官方提供的API, 你也可以选择使用第三方提供的API.
这些内容由第三方提供,我们不保证他们是安全的,请酌情使用.
API URL | APP URL | secretKey | serverName | DATA FILE |
https://mauth.blingwang.cn/api/ | https://mauth.blingwang.cn/ | MelonAuth_Blw | MelonAuth_Blw | https://mauth.blingwang.cn/db/ |
更新记录
2021-11-07: 增加数据库文件下载地址.
2021-10-01: 增加第三方公开API和文章内部分注释/描述.
2021-09-21: 更新新版Server Config样式.
Ⅰ.准备
MelonAuth 2 可以安装在BungeeCord/Bukkit环境上;
在部署 MelonAuth 2 前你需要确认满足以下条件:
(服务端指MA的一部分, 非Minecraft服务端.)
- 安装该插件的Minecraft服务器(BungeeCord/Bukkit等)可以连接外网;
- 任意一台可部署Web服务的服务器;
- 插件版本与服务端版本匹配.
1.下载所需文件
使用 MelonAuth 2 前,需要下载以下文件:
2021-09-20:
WebApp仓库暂未开放,你可以在此处下载已构建的版本;
Plugin仓库暂无Release,需自行构建,或前往此处下载Release.
2.部署Web环境
Web端需安装Nginx/Apache等类似程序(需支持Proxy)以及Java.
Ⅱ.部署
1.部署服务端
服务端用于验证码生成和完成验证.
将 MelonAuth 2 Server
放入任意目录, 使用Java直接运行.
java -jar MelonAuth2-Server.jar
关闭服务端并修改同目录下的 config.json
.
设置 clientKey
, queueKey
, proxyKey
, CORSList
.
其中 CORSList
为WebApp的地址;secretKey
, queueKey
, proxyKey
可随意设置(建议使用随机复杂类).
其他设置可按需修改;
Mojang API 相关修改需注意调用间隔限制;
数据库暂时仅支持 SQLite, 相关配置修改后不会生效.
secretKeyList
和 queueKeyList
格式.
标准格式应当为 "key:servername:ip"
.key
: secret/queue
, 可自行设置, secret
需与 Plugin API
中的配置一致.servername
: 服务器名称, 需与 Plugin API
中的配置一致.ip
: 服务器IP地址, 默认 .*
为允许任意IP, 可使用正则表达式指定连接API的服务器IP, 也可以添加多个规则, 例: secretkey:servername:rule1:rule2:rule3
.
{
"secretKeyList": [
"secretKey:servername:.*"
],
"queueKeyList": [
"queueKey:servername:.*"
],
"proxyKey": "proxyKey",
"CORSList": [
"https://verify.nyaa.cf/api/"
],
"databaseSettings": {
"type": "SQLite",
"sQLiteSettings": {
"synchronous": true,
"journalMode": "TRUNCATE"
},
"mySQLSettings": {
"host": "127.0.0.1",
"port": 3306,
"database": "",
"username": "",
"password": "",
"tablePrefix": "AuthV2_"
}
},
"skinBase": "./skins",
"lifetimeVerification": true,
"verificationLife": 31622400000,
"challengeLife": 1800000,
"challengeRegen": 900000,
"APIUsageSettings": {
"getCode": {
"limitPerCircle": 40,
"circleInMillisecond": 60000
},
"getStatus": {
"limitPerCircle": 40,
"circleInMillisecond": 60000
},
"getSkin": {
"limitPerCircle": 200,
"circleInMillisecond": 60000
},
"verify": {
"limitPerCircle": 40,
"circleInMillisecond": 60000
}
},
"clientAuthenticationFailed": {
"limitPerCircle": 1,
"circleInMillisecond": 60000
},
"workerThreads": 2,
"minimumLogRecordLevel": "fine",
"applicationOwner": "LanguaLab",
"applicationDescription": "MelonAuth 2 API"
}
配置完成后重新启动服务端
配置Nginx或其他程序的反代规则.
本服务端必须通过Proxy访问, 不可直接访问.
(此处暂时仅列出Nginx配置示例, 若您在其他服务上成功部署, 可将配置文件发送至 owo@cicini.moe
,我会标注来源后在此文章列出.)
请根据示例按自己的服务进行配置.
其中 proxy_pass
无需修改, 服务端端口为 11014
,如果想要修改此端口, 请访问 MelonAuth 2 Server
的GitHub页面根据README进行操作;proxyKey
应与服务端 config.json
中的 proxyKey
一致.
示例Ⅰ – 二级域名
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name verify-api.nyaa.cf;
ssl_certificate /etc/ssl/*.nyaa.cf/fullchain.cer;
ssl_certificate_key /etc/ssl/*.nyaa.cf/*.nyaa.cf.key;
location / {
proxy_pass http://127.0.0.1:11014;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host verify-api.nyaa.cf;
proxy_set_header Proxy-Authorization proxyKey;
}
}
示例Ⅱ – 二级目录
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name verify.nyaa.cf;
ssl_certificate /etc/ssl/*.devnet.work/fullchain.cer;
ssl_certificate_key /etc/ssl/*.devnet.work/*.devnet.work.key;
location /api/ {
#使用其他目录(例如/mc/verify/api/)均可, 只需要修改相关内容即可.
#host和rewrite均需对应.
rewrite /api/(.*) /$1 break;
proxy_pass http://127.0.0.1:11014;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host verify.nyaa.cf/api/;
proxy_set_header Proxy-Authorization proxyKey;
}
}
2.部署WebApp
下载 MelonAuth WebApp
(如果你想要将WebApp放入二级目录需自行构建);
将 MelonAuth WebApp
放入webroot,并新建 config.json
填写 api_prefix
和 footer_content
.
其中 api_prefix
为API地址, footer_content
为页脚信息.
{
"api_prefix": "https://verify.nyaa.cf/api/",
"footer_content": "© <a href='https://github.com/LanguaLab' target='_blank'>LanguaLab</a>."
}
补充: 为二级目录构建 WebApp
在 module.exports
下添加 publicPath: '/melonauth2/app/path',
如 publicPath: '/api',
.(多级目录均可)
示例:
let isVerified = false
module.exports = {
publicPath: '/api',
}
function pause (time = 1000) {
return new Promise(resolve => setTimeout(resolve, time))
}
3.部署插件
将 MelonAuth 2 Plugin API
放入 plugins
文件夹;
修改 config.json
的 apiURL
webappURL
serverName
secretKey
为对应值;
其中 secretKey
和 serverName
需与 MelonAuth 2 Server
的配置一致.
注意 secretKey
只需要填写 MelonAuth 2 Server
中 secretKey
的 key
部分.
{
"apiURL": "https://verify.nyaa.cf/api/",
"webappURL": "https://verify.nyaa.cf/",
"serverName": "serverName",
"secretKey": "yourKey",
"retryInterval": 1000
}
将 MelonAuth 2 Plugin
放入 plugins
文件夹;config.json
中为登入时提示内容;
变量:{VerificationCode}
: 验证码.{ExpireMinute}
: 验证码有效时限.{WebAppURL}
: WebApp地址.
提示内容可按自身需求更改.
中文示例:
{
"promptTexts": [
"&7———— &f您的账户需要认证 &7————",
"",
"&7在加入服务器之前,您需要证明您拥有此 Minecraft 账户的完全控制权。",
"&7您的认证编号是:",
"",
"&7> &f&l{VerificationCode} &7<",
"",
"&7请在 {ExpireMinute} 分钟内完成认证。",
"&7请访问 &n{WebAppURL}&r &7并跟随指引完成认证。"
],
"errorPrompt": [
"&7--- &验证异常 &7---",
"",
"&7由于服务端与验证服务器间的通讯出现了异常,您暂时无法登入游戏。",
"&7请稍候再试一次。",
"&7如果此消息持续出现,请联系服务器管理员。"
]
}
重启服务器并提示相关加载成功的信息即可使用.
Enabled plugin MelonAuth2-Plugin-API version **** by langua
Enabled plugin MelonAuth2-Plugin version **** by langua
4.常见问题
1.服务器启动时出现报错
[SEVERE] java.io.IOException: Server returned HTTP response code: 403 for URL: https://verify.nyaa.cf/api/auth/get/status/********-****-****-****-************
若API填写无误一般为 serverName
secretKey
填写错误, 注意 secretKey
只需要填写 MelonAuth 2 Server
中 secretKey
的 key
部分.