GTX690战术核显卡导弹 - 软件
type: channel
link: https://www.nekopara.uk/tag/%E8%BD%AF%E4%BB%B6/
items: 使用 EasyTier 自建服务器组网
items: 「NekoWebShow」让猫娘跃然于屏幕
items: 在Alpine Linux上部署Fiora私人在线聊天室
items: Alpine Linux 3.20 编译安装 ZeroTier
items: 本地Ollama跑LLM并接入QQBot
items: 自建Jellyfin私人媒体服务器，告别屌毛网易云！
items: Filebrowser终极个性化！
items: 为MCSManager设置Nginx反代实现Https访问

使用 EasyTier 自建服务器组网
type: item
date: 2025-08-24T16:37:00+08:00
description: EasyTier自建服务器组网教程之前有使用过 ZeroTier 进行校园网内网环境下设备穿透组网，但是发现并不是那么好用，自建服务器效果也不太好，官方服务器慢的要死。偶然的机会，听朋友介绍了 EasyTier ，试了一下确实不错，写一篇博客记录一下折腾过程。官方文档算比较完善了，看看自己也能搭建成功，如果你只是单纯想要自建一个服务器并且配置电脑进行连接组建虚拟局域网，不使用其他的功能，那就可以参考这篇教程。下载 EasyTier直接在官方的文档界面就可以下载，而且提供了Github加速，非常贴心。直接wget梭哈：cd /opt/ wget https://ghfast.top/https://github.com/EasyTier/EasyTier/releases/download/v2.4.2/easytier-linux-x86_64-v2.4.2.zip unzip easytier-linux-x86_64-v2.4.2.zip rm easytier-linux-x86_64-v2.4.2.zip cd easytier-linux-x86_64/配置 EasyTier 启动参数注意，请在root权限下运行 EasyTier ，因为创建 TUN 设备需要root权限。服务端配置在服务器端，开放11010端口的TCP和UDP防火墙连接许可。然后启动服务端：./easytier-core --private-mode true --network-name nekopara-uk --network-secret 3bbca7ed-a114-4821-b61f-f3b214af97da -i 10.6.6.1参数解释：--private-mode：启用私有模式--network-name：网络名称（可以理解为客户端连接时的用户名）--network-secret：连接的密钥，建议使用uuidgen命令生成UUID作为密码。-i：服务端IP地址网段，这里指定了10.6.6.1，那服务器给连接的节点分配的就是10.6.6.2-10.6.6.255这个个IP段。至此，服务端已经配置完毕，是不是很简单？启动后服务端会打印toml格式配置文件文本，可以复制出来方便后面指定配置文件启动：NekoHost:/data/easytier-linux-x86_64# ./easytier-core --private-mode true --network-name nekopara-uk --network-secret 3bbca7ed-a114-4821-b61f-f3b214af97da -i 10.6.6.1 Starting easytier from cli with config: ############### TOML ############### ipv4 = "10.6.6.1" listeners = [ "tcp://0.0.0.0:11010", "udp://0.0.0.0:11010", "wg://0.0.0.0:11011", "ws://0.0.0.0:11011/", "wss://0.0.0.0:11012/", ] rpc_portal = "0.0.0.0:0" tcp_whitelist = [] udp_whitelist = [] [network_identity] network_name = "nekopara-uk" network_secret = "3bbca7ed-a114-4821-b61f-f3b214af97da" [flags] private_mode = true ----------------------------------- 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: tcp://0.0.0.0:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: tcp://[::]:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener: udp://0.0.0.0:11010 2025-08-24 14:14:12: [82a75e04-d647-4538-a9a4-54edabe9f469] new listener added. listener:…

「NekoWebShow」让猫娘跃然于屏幕
type: item
date: 2025-08-03T15:13:00+08:00
description: 基于 E-mote 模型的动态猫娘展示与部署教程看门见山，先给一个展示地址看看效果：猫娘乐园角色E-mote图鉴Github Pages部署的纯静态版本：猫娘乐园角色E-mote图鉴这篇文章或许是最符合网站域名的文章之一？项目缘起很久之前，在我切换到Linux系统后，发现我之前最喜欢的猫娘乐园动态壁纸没办法在Linux上使用，然后根据那个第三方壁纸的相关信息，刨根问底发现了FreeMote这个开源项目，并且看到了他的Web段实现了Demo，就萌生了这个项目的想法了。但是碍于那时候技术能力和能分配的时间有限，于是这个想法就一直搁置了。最近不知道哪根经搭错了，突然就想把这个多年前的想法去实现，重新翻阅了相关的开源项目，借助AI，然后发现当时不能成功是疏漏了一些东西，于是打算再次去尝试实现。一开始的那几天天天碰壁，试了很多不同的方法都不行，但是，偶然的一次机会，我观察到提取的模型和解包的模型有相似之处，于是我就尝试从中间进行合成，没想到，真成功了！接下来的工作就顺风顺水了，但是就是很累人，要组织和转换每一个模型，八个猫娘，主要的六个猫娘还有好几套衣服，那个工作量是真的巨大啊！但是，如你所见，经过不懈努力，这个项目做出来了！接下来，请让我为你介绍——「NekoWebShow」开发技术路线简单来说，这个项目最核心的部分就是FreeMote-SDK，没有这个开源的项目，本项目也无法实现。本项目是在弄清楚FreeMote这套框架逻辑后，将从UlyssesWu制作出来的的猫娘乐园角色动态壁纸解包出来的模型转换为可以让FreeMote-SDK的WebGL驱动的pure.psb格式，然后将各个模型和对应的声音组织好，写一个用于切换不同角色的前端框架，这就是我所做的事情。前期的一部分开发工作记录，我已经写了一篇文章：试玩FreeMote，把二次元老婆搬上浏览器，感兴趣的可以去看看，这篇文章关注点是如何使用和部署。因为前端需要实现的功能比较简单，所以我是直接面向LLM编程了，没有使用其他框架。本来想用MDUI的，但是后面想想还是算了。在这里，要特别感谢嘉然小姐对本项目的支持，她帮助我解决了驱动库无法加载超过32MB的pure.psb文件问题。没有她的支持，部分角色衣服的模型就没办法正常展示出来了。项目分支说明项目有两个分支，一个是php版本，另一个是html版本。之前是只打算做php版本的，毕竟可以代码复用，减少文件数量和代码量，但是后面考虑到如果是本地部署起来做动态壁纸，还要再跑一个php-fpm有点太地狱了，于是就搞了html的版本，纯静态实现，本地只需要部署一个web服务器即可。不过按理来说应该是可以直接打开本地文件而不需要服务器的，但是不知道为什么firefox打开就是报错，显示被阻止，所以也只好设置一个服务器了。不过，后面我试了一下，使用KDE桌面的HTML Wallpaper插件，直接指定本地文件就像，不会有报错，也可以正常显示，估计只是firefox的限制（所以，要是这样就非常好了，本地设置成壁纸web服务器都省了。部署方法一：PHP环境部署首先，确保你有一台服务器，部署上web服务器和php环境，我这里选择nginx和php，采用的操作系统为Alpine Linux 3.20。apk add php php-fpm openssl nginx rc-update add php-fpm83 default rc-update add nginx default service php-fpm82 start service nginx start这样一通操作下来，我们的基本环境就有了。接下来就是配置一下默认页面的规则，当然这是可选项，你可以直接一股脑用默认直接http部署，但是我并不推荐，我认为还是设置个域名配合SSL证书比较好。设置默认匹配页面我们先来生成一个默认的SSL自签名证书用于没有匹配到域名时错误提示页面使用。mkdir -p /etc/nginx/ssl/ openssl genpkey -algorithm RSA -out /etc/nginx/ssl/selfsigned.key -pkeyopt rsa_keygen_bits:2048 openssl req -new -x509 -key /etc/nginx/ssl/selfsigned.key -out /etc/nginx/ssl/selfsigned.crt -days 365 -subj "/"这样子就生成了自签名证书，证书和密钥位置分别在/etc/nginx/ssl/selfsigned.crt和/etc/nginx/ssl/selfsigned.key然后，删除/etc/nginx/http.d/default.conf，再重新创建：rm /etc…

在Alpine Linux上部署Fiora私人在线聊天室
type: item
date: 2025-03-13T12:15:00+08:00
description: 我们都在被监控着众所周知，在现代的信息社会，想保持不被监控是非常困难的事情。由于种种原因，总有人会希望监控你。例如，某些视频平台（例如B站）为了提高视频推送准确度，不惜用各种手段刺探用户喜好，虽然我不好说是用了什么手段，因为没有调查就没有发言权，但是有我这种感受的人估计不在少数。我就有过类似的经历：在QQ群谈论一个事物（例如洋垃圾平台），然后打开B站首页给你推的就是刚刚你谈论过的平台相关的内容，细思极恐啊兄弟们！还有一些购物网站也会这样，为了分析用户喜好，也会想尽各种办法来刺探用户的兴趣。我也有过刚谈论完某个感兴趣的物品，淘宝或者闲鱼一打开就是相关内容。给人各种不爽。值得一提的是，在我们日常生活中，对个人隐私泄漏最严重的设备是——手机。手机也是我最鄙视的电子产品之一，尤其是现在国内手机厂商开始搞封闭，限制用户自己安装应用，非要从他们提供的如同公厕一般的垃圾应用商店去下载APP。无语至极！你想换个系统？或者删掉自带的垃圾应用（例如广告浏览器）？没门，新的国内安卓系统已经给你堵死了，解锁Bootloader更是不可能。既然都要封闭起来给用户喂屎，为什么我不选择应用商店环境更好的苹果？扯远了。。。那么，在现在这个信息化时代，还有没有办法说悄悄话呢？答案是肯定的，绝对有办法，而且方法很多。例如：用记事本写下相关的消息，然后使用约定好的密码加密压缩打包后发送。或者，如果有能力的，可以自己写一套简单的文本消息加密算法。而这次，我打算尝试搭建一个有趣的开源项目——FioraFiora是什么？Fiora是由碎碎酱使用node.js，react和socket.io打造的一款在线聊天室，可以自己托管运行，具有较高的隐私安全性。简单来说就有点类似与简单的QQ，但是服务是有你自己进行托管的。可以在一定程度上规避监控和审查。所以适合用来键（bushi不过这个项目似乎不再维护了，最后一次更新已经是两年前的2023年了，不过只是更新了Readme，代码最后一次更新已经是2022年了。。。Fiora的搭建项目的文档有详细的搭建教程和方法，至于为什么我还要写这篇博客，那是因为我遇到了一些问题，按照官方的搭建教程文档无法进行下去，所以再次整理总结经验。注意，本教程操作系统环境为Alpine Linux 3.20!搭建环境准备我们需要做的事情有：安装 Node.js安装 MongoDB安装 redis安装Node.js和redis比较简单，一条命令搞定：apk add redis npm nodejs但是，安装MongoDB就相对麻烦一点了，由于新版的Alpine将MongoDB移出了软件包列表，我们只能通过旧版的软件源安装。首先，编辑apk的软件源：nano /etc/apk/repositories添加Alpine 3.9的软件源：http://mirrors.ustc.edu.cn/alpine/v3.9/main http://mirrors.ustc.edu.cn/alpine/v3.9/community然后安装MongoDB：apk update apk add mongodb安装完成后，一定，一定，一定要删除掉刚刚添加的软件源，不然后期安装软件可能导致系统崩溃！！！然后启动相关服务：rc-update add mongodb default rc-update add redis default rc-service mongodb start rc-service redis start运行项目先克隆项目到本地：git clone https://github.com/yinxin630/fiora.git -b master然后安装yarn：npm install -g yarn安装项目依赖：yarn install注意，这一步可能会因为网络的原因报错，因为依赖在GitHub上面，GitHub国内访问经常不稳定，所以可能需要挂代理才能正常安装依赖。终端代理：export https_proxy=http://192.168.0.18:20171 export http_proxy=http://192.168.0.18:20171然后接下来就是一个意想不到的大坑：构建客户端代码：yarn build:web然后你就会喜提如下报错：localhost:/mnt/data/fiora# yarn build:web yarn run v1.22.22 $ npx lerna run build:web --stream lerna notice cli v4.0.0 lerna info versioning independent lerna info Executing command in 1 package: "yarn run build…

Alpine Linux 3.20 编译安装 ZeroTier
type: item
date: 2025-02-25T20:36:00+08:00
description: 为Alpine Linux 3.20 编译安装ZeroTier没有ZeroTier软件包！由于我云服务器使用的是Alpine Linux来最大程度节省资源用于实际服务，而ZeroTier官方没有给出Alpine Linux的安装包，所以要用点野路子才能安装上。使用官方的安装脚本 Be Like:Neko_SG:~# curl -s https://install.zerotier.com | bash *** ZeroTier Service Quick Install for Unix-like Systems *** Tested OSes / distributions: *** MacOS (10.13+) (just installs ZeroTier One.pkg) *** Debian Linux (7+) *** RedHat/CentOS Linux (6+) *** Fedora Linux (16+) *** SuSE Linux (12+) *** Mint Linux (20+) *** Kali Linux (2024.1+) *** Supported architectures vary by OS / distribution. We try to support *** every system architecture supported by the target. *** Please report problems by opening a GitHub issue or Pull Request at: *** https://github.com/zerotier/install.zerotier.com *** Please include the content of `/etc/os-release` for your distribution. *** Detecting Linux Distribution *** Unknown or unsupported distribution! Aborting. 想从包管理器安装 Be Like:Neko_SG:~# apk add zerotier fetch https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz ERROR: unable to select packages: zerotier (no such package): required by: world[zerotier] Neko_SG:~# apk add zerotier-one ERROR: unable to select packages: zerotier-one (no such package): required by: world[zerotier-one] Neko_SG:~# apk search zerotier Neko_SG:~# 一个思路是去用别的发行版的软件包，解包提取二进制文件。但是由于Alpine Linux是用的C语言库是musl而不是libc，大部分发行版用点都是libc，所以不一定可以兼容。还有一个办法，那就相当硬核了，自己编译后，安装。这个方法肯定会遇到很多技术上的问题，所以也是最有挑战性的一条路子，但是，我还是决定开干。下载源代码之所以可以这么玩，是因为ZeroTier是开源的。 开源大法好！先创建一个用于干活的文件夹，然后直接从Github的Release下载源代码：mkdir /data/zerotier cd /data/zerotier wget https://github.com/zerotier/ZeroTierOne/archive/refs/tags/1.14.2.zip unzip 1.14.2.zip cd ZeroTierOne-1.14.2/准备相关环境进行编译因为Alpine Linux是轻量发行版，所以缺失的库很多，需要自己手动装。我也是边报错边安装，搞了好久。我的版本是Alpine Linux 3.20，以下是需要安装的软件包：apk add util-linux pkgconfig openssl-dev libffi cargo linux-headers g++ gcc make进行编译进入源代码目录，执行：make -j$(nproc)如果没有报错，一个会顺利在目录生成一个zero…

本地Ollama跑LLM并接入QQBot
type: item
date: 2025-02-10T21:30:00+08:00
description: 速通Golang后的想法前段时间我处于个人兴趣目的速通了Golang的基础知识，然后就想要干些什么玩一下，想到了我QQ群里面有一个Bot还在苟活，于是有点想改造一下。机器人使用的是ZeroBot-Plugin，项目是在Github开源的，使用的是Go语言编写，这下专业对口了。正好前几天折腾LLM本地部署，尝试了一下Ollama部署各种模型，觉得挺好玩的。然后想试试看NAS上的E3-1220v2能不能跑得动。一开始为选的1.5B的超小模型，跑起来速度挺快的，于是提高难度，用了3B的模型，速度变慢了，但是还行。试了一下回答的质量，感觉简单放群里面当个玩具还是可以的。最后，我选择的模型是Qwen2.5 3B。部署Ollama去Ollama的官网下载就行，对于Linux也有安装脚本。但是我还是更喜欢自己手动部署和管理。下载Ollama前往Github的Ollama项目界面，进入Release页面根据你的实际情况进行下载。我下载的是ollama-linux-amd64.tgz设置参数运行由于Ollama默认会把相关的文件放在你用户文件夹的.ollama文件夹下，一旦下大模型，系统盘将会爆炸。如果你Linux把/home放到了单独的数据分区或者你系统盘足够大就当我没说。我们需要改一下这个默认的目录，方法很简单，就是在当前目录文件夹新建一个用于放置数据的文件夹，然后设置环境变量指定HOME的目录：export HOME=./data/ ./bin/ollama serve把以上保持为run.sh放在Ollama的目录下，然后再在目录创建一个data文件夹，运行即可把相关文件保存在data文件夹中而不会放到你的Home目录。此时，Ollama已经启动了。测试Ollama接下来，就可以按照官方给的参数运行模型了。进入bin/目录，直接运行Ollama即可。例如运行Qwen5.2 3B模型：./ollama run qwen2.5:3b等待模型下载完成就可以运行了。爆改ZeroBot-Plugin在仔细品读代码后，我感觉好像也不是特别难，于是为就想试一下自己写一个插件来调用Ollama进行聊天。设置插件首先，下载ZeroBot-Plugin的源代码，建议是去Github的Release里面下。我用的是1.7.8版本，后面的版本似乎会有内存泄漏问题，而且相应变慢了，也不知道修了没有，反正一年前我用1.8.X的时候是这样的。下面就是插件的代码了，放到plugin/nekochat目录下，其中nekochat文件夹要自己创建。然后在nekochat文件夹创建一个nekochat.go文件：package nekochat import ( "bytes" "encoding/json" "net/http" //"github.com/FloatTech/imgfactory" ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" ) var ( // 定义固定的前两条消息作为范例对话 fixedMessages = []Message{ { Role: "user", Content: "从现在开始你是猫娘，名字是亚托莉，要以猫娘的方式说话和思考问题。", }, { Role: "assistant", Content: "好的喵～，主人！ ୧(๑•̀⌄•́๑)૭ 亚托莉酱知道了，有什么需要本喵帮忙呢？", }, } // 使用固定消息初始化ChatContext context = NewChatContext(fixedMessages) //默认选择通义千问2.5 3B模型 model_choose = "qwen2.5:3b" ) // 定义最大消息数为11，但是前两条消息是固定的范例对话 const maxMessages = 12 // ChatContext 结构体用于保存聊天的上下文信息 type ChatContext struct { messages []Message // 消息列表，每个元素是一个 Message 结构体 } // Message 结构体表示一条消息，包含角色（如 user 或 assistant）和内容 type Message struct { Role string `json:"role"` // 角色字段，如 "user" 或 "assistant" Content string `json:"content"` // 内容字段，实际的消息文本 } /…

自建Jellyfin私人媒体服务器，告别屌毛网易云！
type: item
date: 2025-01-18T19:24:00+08:00
description: 起因∶网易云无故被封促进我自建媒体库的原因，是因为网易云乱封号，两次把我的号给封了。理由居然是——播放数据异常真就是，想封你，随便编个理由，直接就封。纯脑残！其实之前我就有点想搞媒体服务器了，但是由于我看番都是用种子下载看番，而且番剧看一次也就过去了，我觉得也没用留着的必要。毕竟番剧的一话，1080P 60帧，都要差不多1GB了，看番多的话，文件破TB级那是轻轻松松。这次封号，算是坚定了我的想法。我觉得国内互联网公司绝大部分都是狗屎，让人无语。其实是2024年10月封的号，但是我2025年1月才开始折腾媒体服务器。因为之前都在学校，课业繁忙，乐的要死，因为整理音乐库费时费力，所以我打算放假再搞。事实证明我的想法是对的，我前前后后整理了快一个星期，整理了绝大部分，但是还有相当一部分歌曲还没整理。太累了，让我歇歇。目前已经整理了1300+首歌，文件夹已经90G+了。。。为什么选择了Jellyfin？免费，开源。开源，开源，开源，还是他妈的开源！我是支持GNU自由软件运动的人，自然更倾向于使用开源的解决方案，尤其是使用GPL协议的开源软件。顺带一提，我主力操作系统早就已经换成GNU/Linux了。部署Jellyfin下载Jellyfin直接前往官方网页下载即可，我用的最新版，目前是10.10.3。下载链接：repo.jellyfin.org/?path=/server/linux/latest-stable下载FFmpeg由于我服务器使用的是AlmaLinux8.10，是服务器发行版，其自带的FFmpeg比较老，新版的Jellyfin并不兼容。虽然可以通过yum包管理器直接安装对应版本的Jellyfin，并且不会出现兼容问题。但是旧版的Jellyfin并没有歌词支持，对我来说比较蛋疼，因为我主要想做的就是歌曲的媒体服务器。我下载的是7.0.2版本的，这种的话，我更倾向于使用最新版的前一个稳定版。下载地址：ffmpeg.org/releases/ffmpeg-7.0.2.tar.xz自定义环境变量，以使用自定义的ffmpeg我的做法是，把FFmpeg和Jellyfin解压后，分别放到了不同的文件夹，然后在根目录文件夹放了一个启动脚本。以下是启动脚本的内容：#!/bin/bash # 定义FFmpeg二进制文件所在的路径 FFMPEG_PATH="./ffmpeg/bin" # 将FFmpeg路径添加到PATH环境变量的最前面 export PATH="$FFMPEG_PATH:$PATH" # 启动Jellyfin ./jellyfin/jellyfin脚本保存为run.sh，然后再：chmod +x ./run.sh试一下执行这个脚本，看看Jellyfin有没有启动成功，如果启动成功后就完事了。配置Jellyfin初始化配置打开浏览器，输入服务器对应的ip+8096端口，例如：127.0.0.1:8096按照指引，设置用户名和密码。这部过于简单，有手就行，不多赘述。配置HTTPS访问这个Jellyfin比较特别，需要使用pfx证书，而不是常见的pem+key的证书组合。我们需要把pem和key证书转成pfx格式。下面是一个shell脚本，可以便利当前目录的pem+key证书，并且转换为pfx证书放到当前目录的pfx_cert/文件夹内：#!/bin/bash # 定义输出目录 OUTPUT_DIR="pfx_cert" # 创建输出目录（如果它不存在） mkdir -p "$OUTPUT_DIR" # 遍历所有的 .key 文件 for key in *.key; do # 获取不带扩展名的文件名 base_name="${key%.key}" # 检查对应的 .pem 文件是否存在 if [[ -f "${base_name}.pem" ]]; then echo "正在处理 $base_name..." # 转换为 PFX 格式 openssl pkcs12 -export \ -out "${OUTPUT_DIR}/${base_name}.pfx" \ -inkey "$key" \ -in "${base_name}.pem" \ -certfile le-chain.pem echo "已生成 ${OUTPUT_DIR}/${base_name}.pfx" else echo "警告：找不到与 $key 对应的 .pem 文件" fi done把以上内容保存到to_pfx.sh，然后：chmod +x ./to_pfx.sh ./to_pfx.sh当要求输入密码的时候，直接回车，不设置密码。在Jellyfin设置证书，选择得到的pfx证书文件。记得勾上强制HTTPS和允许远程连接保存后，重启Jellyfin，应该就可以通…

Filebrowser终极个性化！
type: item
date: 2024-12-27T16:16:00+08:00
description: Filebroswer的优点为什么选择Filebroswer呢？原因不外乎就是以下几点∶支持https实时同步文件目录更改，更新及时不需要数据库界面美观友好管理方便支持多用户支持分享文件可以定制界面而最后这一点，也为后面进行美化奠定了基础。前置准备为了保证操作的环境相同，如果你是按照这篇教程来，记得选择File Browser 2.28.0。FileBrowser的基本配置，可以参考我之前的文章：个性化Filebrowser界面，NAS也要Kawaii~~~!个性化Filebrowser你可以快速把我预设的文件下载后直接解压到Filebrowser所在文件夹，修改替换背景图，完成个性化。文件目录结构长这样：├── filebrowser ├── filebrowser.db └── style ├── custom.css ├── favicon.ico ├── img │ ├── background.jpg │ ├── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── mstile-70x70.png │ │ └── safari-pinned-tab.svg │ ├── login.jpg │ ├── logo.svg │ └── lolicon.ttf └── manifest.json 4 directories, 21 files其中，最重要的配置文件就是custom.css了。这个文件决定了全局的外观。style文件夹我已经打包好了：style.7z下载回去，解压到程序的目录按照下图设置即可看到效果：下面是设置完成后的效果，我设置的是粉色主题的，稍微搭配一点蓝色：登陆页面：主界面：多选文件：复制文件对话框：移动文件对话框：删除文件对话框：切换不同的显示方式：下载文件对话框：上传文件对话框：文件信息对话框：搜索界面：设置界面：上传文件界面：CSS文件内容和解释custom.css文件内容这个文件定义了几乎全部的样式，文件内容如下： /** 页面字体 */ @font-face { font-family: 'cute'; src: local('cute'), local('cute'), url(/static/img/lolicon.ttf) format('truetype'); } * { font-family: "cute", sans-serif; } /** 加载动画 */ .spinner > div { background-color: #ff5f77; backdrop-filter: blur(6px); background-color: orangered\0; /* IE 样式 */ } /** 普通文字、字体图标颜色 */ .action, #listing h2, #search .boxes h3, .card h3, .collapsible > label *, .dashboard p label, .message { color: #ff5f77; } /** 链接文字颜色 */ a { color: #ff5f77; backdrop-filter: blur(6px); } /** 输入框、表格标题文字颜色 */ #search.active i, #search.active input, table th { backdrop-filter: blur(6px); color: #ff5f77; } /** 主体、弹窗颜色 */ #loading, #login, #search.active #input, body, header, .ace-chrome .ace_gutter-active-line { background-image: url(/static/img/background.jpg); background-repeat: no-repeat; background-attachment: fixed; background-position: center center; background-…

为MCSManager设置Nginx反代实现Https访问
type: item
date: 2024-11-10T21:20:00+08:00
description: SELinux是个大坑！说在前面，本次折腾最大的绊脚石就是SELinux这个逼养的玩意，这玩意权限控制是自己一套的，例如，就算你给了Samba读写的目录777的权限，也一样会Permission Denied，如果是新手不知道的话，很容易在配置过程中红温。SELinux我肏你妈！！！但是，实际上SELinux可以给系统一套额外的安全防护，对于注重安全的用户来说还是很有必要的。所有，如果遇到了奇奇怪怪的Permission Denied，不妨试试看关掉SELinux，看看服务是否可以正常运行了。如果可以运行了，就设置SELinux的规则就好了。部署Nginx服务安装Nginxyum install nginx配置Nginx配置文件根据MCSManager的官方文档精神，需要创建一个Nginx配置文件来实现反向代理并加入TLS以实现Https。创建一个配置文件，位于：/etc/nginx/conf.d/，名字可以自己取。例如：nano /etc/nginx/conf.d/mcsm-proxy.conf然后填入以下内容：# MCSM面板端开启HTTPS反向代理 server { # 面板端公网HTTPS端口(可用多个listen监听多个端口) listen 2333 ssl http2; #IPV4 listen [::]:2333 ssl http2; #IPv6 # 开启HSTS 开启后将强制使用HTTPS连接面板并在取消此策略后持续一年除非在浏览器手动清除策略。 # 默认未开启，可取消注释开启. #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; # DNS服务器，仅在目标面板需要使用域名连接时需要。 resolver 8.8.8.8; # 自动重定向HTTP连接至HTTPS error_page 497 https://$host:$server_port$request_uri; proxy_hide_header Upgrade; location / { # 请求头 一般无需更改 proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; #目标面板的地址与端口。支持使用域名及https连接。 proxy_pass http://127.0.0.1:23333; # 支持反代 WebSocket proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 最大文件上传大小限制。设置0为不限制 client_max_body_size 0; # 关闭缓存 proxy_request_buffering off; proxy_buffering off; } # HTTPS 证书与私钥位置 ssl_certificate /etc/nginx/ssl/domain.crt; ssl_certificate_key /etc/nginx/ssl/domain.key; # 传输时默认开启gzip压缩 gzip on; # 传输时会被压缩的类型(应当依据文件压缩效果添加) gzip_types text/plain text/css application/javascript application/xml application/json; # 反向代理时，启用压缩 gzip_proxied any; # 传输时压缩等级，等级越高压缩消耗CPU越多，最高9级，通常5级就够了 gzip_comp_level 5; # 传输时大小达到1k才压缩，压缩小内容无意义 gzip_min_length 1k; # 支持协议、算法与超时时间等 一般无需更改 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; } # MCSM节点端开启HTTPS反向代理 server { # 节点 公网HTTPS端口(可用多个listen监听多个端口) listen 2444 ssl http2; #IP…