皮肤站是什么?其实官网就有皮肤站,在正版用户选择正版的登录后,MC客户端就会到官方皮肤站内下载用户的皮肤。 而外置登录,就是用户在没有正版账号的情况下,使用自己的账号验证,达到用户验证的目的。

本文方案

适用于:

  • Java版本Minecraft:包括Spigot、官方版本Minecraft、Forge等。

皮肤站

本文使用blessing-skin-server作为皮肤站,是LittleSkin的开源社区版本。

实现效果:

用户角色管理

用户皮肤管理

用户皮肤管理

选择皮肤激活

选择皮肤激活

你还可以安装很多插件,实现:邀请码注册、外置登录等等功能: 丰富的插件

最终效果

最后实现的效果是搭建一个网站,用户可以注册账号,并登录系统进行皮肤的上传、下载以及激活皮肤为角色皮肤。 皮肤站和外置登录配合,就可以达到和正版登录一样的效果:

  • 允许用户注册账号
  • 允许用户上传和自定义自己游戏皮肤

获取服务器

这里以雨云服务器为主

前往官网:https://www.rainyun.com优惠码:vip5r 获取注册福利

image-20240306212709663

进入总览 | 雨云 (rainyun.com)后点击云服务器

image-20240306212901452

然后点击购买云服务器

image-20240306213003480

选择合适的服务器配置,可以先进行试用后再决定购买,同时雨云支持七天无理由退款

image-20240306213430501

选择好配置后可以直接预安装APP,你也可以不预装就单装系统,自行选择好部署方案就行

image-20240309031210280

预安装APP的话操控服务器的面板下面会出现这个,访问外网面板地址就可以进入宝塔了,然后下面username就是账号,密码password

image-20240309031501429

同时!雨云15000人技术交流社区,学习交流,畅所欲言,遇见技术和真知 定期发布活动和白嫖福利

部署方案

准备工具

  • LEMP环境:
    • Linux服务器:Debian、CentOS都可以。极其不推荐使用Windows Server。
    • Nginx/Apache:推荐使用NNginx环境
    • MySQL/MariaDB:可以使用Linux服务器自己搭建,也可以直接买现成的。
    • PHP:PHP版本推荐7以上,本文使用PHP8(最新皮肤站需要PHP8)
  • Minecraft服务器端

宝塔搭建

宝塔搭建Ngiinx、PHP和MariaDB/MySQL很简单,可视化搭建:

image-20240309032147519

PHP函数

宝塔是默认禁用了一些皮肤站需要的函数,我们需要前往软件商城进行开放

image-20240309032530686

需要启用的函数:

  • symlink
  • readlink
  • putenv
  • realpath

并安装扩展:fileinfo扩展

image-20240309032608421

搭建BlessingSkin

如果不懂怎么创建一个网站可以前往:朽丘博 - 支配生命,享受生活 (koxiuqiu.cn)

创建好站点,开始操作,其中:

  • 域名:有域名解析到服务器,则填域名;否则,就填IP。
  • PHP版本:选择PHP7.4、8.x(6.0以上版本Blessing需要使用PHP8.x)

之后,进入网站根目录,下载并解压最新版本的BlessingSkin(自己开梯子访问,或者是找人帮你吧)

image-20240309032909888

进入后上传你下载好的压缩包,gz也是压缩包啊喂(#`O′),然后就是如图这样的

最后,到网站设置内:

  • 设置运行目录:/public
  • 添加伪静态

image-20240309033219536

伪静态:

1
2
3
location / {
try_files $uri $uri/ /index.php?$query_string;
}

然后就是这样的:

image-20240309033237392

之后,就可以访问网站了,直接访问你的域名或者是IP!

image-20240309033409008

记得创建好数据库!

image-20240309033527955

宝塔常见问题

Q:后续初始化时候,在填入数据库信息设置管理员后,出现500错误?

刷新页面。可能是宝塔的原因,实在不行重新安装部署一次

编译搭建

  • [ ] 三个小章节讲解

Nginx

编译安装复杂一些,首先我们下载Nginx的源码,这里我们下载1.20.1的源码,下载到Nginx的/usr/local/src内,并解压进入:

ssh操控进入后执行脚本

1
2
3
4
cd /usr/local/src
wget 'http://nginx.org/download/nginx-1.20.1.tar.gz'
tar -xf nginx-1.20.1.tar.gz
cd nginx-1.20.1

什么是sshj?♪(^∇^*)论如何快速了解建站 | 朽丘博 (koxiuqiu.cn)

image-20240309034001254

输入脚本回车就行

编译依赖

按需求,我们需要SSL、gzip、正则库等依赖,所以这里我们安装一下依赖(#和后面文章不要输入,一条条输入回车就行,这只是注释) Debian/Ubuntu系统:

1
2
3
4
5
6
7
8
# 安装GCC
sudo apt-get install build-essential
# 安装正则库
sudo apt-get install libpcre3 libpcre3-dev
# 安装gzip lib
sudo apt-get install zlib1g-dev
# 支持OpenSSL
sudo apt-get install openssl libssl-dev

CentOS系统:

1
2
3
4
5
6
# 安装GCC
sudo yum install gcc
# 安装正则库
sudo yum install pcre pcre-devel
# 支持OpenSSL
sudo yum -y install openssl openssl-devel

预编译

首先,我们想要把Nginx以www:www用户运行,所以我这里创建一个www用户,附属于www用户组:

1
2
3
4
5
6
7
8
# 创建一个www用户
sudo useradd www
# 创建一个www用户组
sudo groupadd www
# www用户归属于www用户组
sudo usermod -a -G www www

LIVECODESERVER

之后,开始预编译:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module

编译和安装

之后,我们开始编译和安装:

1
2
3
4
# 我服务器是四核,所以-j4
make -j4
# 编译完成,进行安装
make install

注册服务

如果你是用我的编译参数,那么需要创建一个日志目录:

1
2
# 创建日志目录
sudo mkdir /var/cache/nginx

为了之后更方便启动,我注册为服务:

1
vim /usr/lib/systemd/system/nginx.service

添加内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

最后进行启动即可

PHP

PHP会比较麻烦,主要是依赖问题,根据Blessing Skin安装指南,我们需要PHP支持:

  • OpenSSL
  • PDO
  • Mbstring
  • Tokenizer
  • GD
  • XML
  • Ctype
  • JSON
  • fileinfo
  • zip

主要是GD模块,需要很多额外参数,尤其是freetype参数,所以这里编译需要注意。

下载PHP源码

首先,还是和刚刚一样,我们需要下载PHP7.4的源码到/usr/local/src下:

1
2
3
4
5
# 当前为root用户
cd /usr/local/src
wget 'https://www.php.net/distributions/php-7.4.22.tar.gz'
tar -xf php-7.4.22.tar.gz
cd php-7.4.22

编译依赖

我们编译依赖很简单,需要支援Nginx和MariaDB/MySQL,同时支持gd等模块,所以: 如果你是Debian/Ubuntu:

1
2
3
4
5
6
7
8
9
10
11
12
# 安装pkg-config
sudo apt-get install pkg-config
# OpenSSL的支持
sudo apt-get install openssl libssl-dev
# SQL支持
sudo apt-get install libsqlite3-dev
# zlib
sudo apt-get install zlib1g-dev
# OpenSSL支持
sudo apt-get install libcurl4-openssl-dev
# GD辅助依赖
sudo apt-get install libpng-dev libjpeg-dev libonig-dev

之后,编译安装:libxml2freetype。 并把freetype编译安装地址下的lib/pkgconfig添加到pkg内,如:

1
2
#  Freetype
export PKG_CONFIG_PATH=/usr/local/freetype/lib/pkgconfig/

如果你是CentOS: 首先是编译安装oniguruma,并配置到pkg内,如:

1
2
#  Freetype
export PKG_CONFIG_PATH=/usr/local/freetype/lib/pkgconfig/

之后用软件包管理器安装:

1
2
3
4
5
6
7
8
9
10
# XML 库
sudo yum install libxml2 libxml2-devel
# 正则库
sudo yum install pcre pcre-devel
# SQL 库
sudo yum install sqlite3-devel
# 一些lib
sudo yum install libcurl-devel libpng-devel libjpeg-devel
# GD 依赖
sudo yum install freetype-devel

预编译

最后,我们看看预编译PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
./configure \
--prefix=/usr/local/php7 \
--with-curl \
--with-mysqli \
--with-openssl \
--with-pdo-mysql \
--with-jpeg \
--enable-gd \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-bcmath \
--enable-xml \
--with-zip \
--enable-mbstring \
--enable-sockets \
--with-zlib \
--enable-fileinfo \
--enable-exif \
--with-freetype

编译和安装

之后,我们开始编译和安装:

1
2
3
4
# 我服务器是四核,所以-j4
make -j4
# 编译完成,进行安装
make install

注册服务

如果你是用我的编译参数,那么需要PHP-FPM配置文件:

1
2
3
# 创建配置文件
sudo mv /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
sudo mv /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

为了之后更方便启动,我注册为服务:

1
sudo vim /usr/lib/systemd/system/php-fpm.service

添加内容:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=php-fpm
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/php7/sbin/php-fpm
PrivateTmp=true

[Install]
WantedBy=multi-user.target

最后启动即可!

MariaDB/MySQL

搭建BlessingSkin

首先,我们创建一个目录,作为网站目录:

1
2
3
4
mkdir /www/BlessingSkin -pv
cd /www/BlessingSkin

AWK

之后,下载BlessingSkin的发行版本,这里选择安装6.0.0-beta.3:

1
wget 'https://github.com/bs-community/blessing-skin-server/releases/download/6.0.0-beta.3/blessing-skin-server-6.0.0-beta.3.zip'

之后解压即可:

1
unzip blessing-skin-server-6.0.0-beta.3.zip

安装官网要求,需要重命名和初始化:

1
2
cp .env.example .env
/usr/local/php7/bin/php artisan key:generate

配置Nginx

当然,我们还要配置Nginx:

1
vim /usr/local/nginx/nginx.conf

查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
user  www;
worker_processes 1;
events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

gzip on;

server {
listen 80;
server_name localhost;
root /www/BlessingSkin/public;


location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}


# php-fpm配置
location ~ [^/]\.php(/|$){
# try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
}

提权&重载配置

刚刚我们都是用root用户直接修改文件,现在我们把网站目录权限移交给www:

1
chown www:www /www -R

最后,我们重载配置:

1
systemctl reload nginx

然后访问站点就可以成功部署

外置登录

使用外置登录,服务器的配置文件(server.properties)的online-mode记得设置为true,这是服务器的正版验证

直接下载我已经整合好的插件压缩包,下载:传送门

image-20240309035504746

把你下载的压缩包中的文件夹上传在这个目录中就行

image-20240309035553142

然后可以直接全部勾选,进行下一步

image-20240309035707077

然后红框内就是我们需要的API链接

其次,我们需要设置我们的 Java Minecraft服务器的启动命令,先下载最新版本的authlib-injector.jar,下载地址:

之后,我们回到我们Minecraft的启动界面,如果你之前的Minecraft服务器启动命令是:(例子)

1
java -jar -Xms1024M -Xmx5120M LoliServer-1.12.2server.jar

那么,加上authlib-injector验证就是:

1
java -jar -Xms1024M -Xmx5120M -javaagent:authlib-injector-1.1.39.jar=http://URL LoliServer-1.12.2server.jar

其中:

  • authlib-injector-1.1.39.jar:这个需要替换为你刚刚下载的authlib-injector版本。
  • \=http::为上文YggdrasilAPI地址。

接下来,我们到客户端上,就可以使用外置登录了,如果是PCL了,直接皮肤站一键添加

image-20240309040013738

如果是HMCL,我们到客户单上设置,以HCML为例,我们打开HMCL后,在登录里选择外置登录: image-20240309040134135

  • 验证服务器:我们的Yggdrasil API地址
  • 用户名:我们自己皮肤站上注册的用户
  • 密码:我们自己皮肤站上的账号密码

记得创建好角色

结尾小言

最后,如果你还有什么不懂的地方:

  • 懂得谦卑的人,不要张口就来
  • 懂得合理利用搜索引擎
  • 懂得不要一直伸手要

符合并且荔枝的,可以直接评论我求助!