目 录CONTENT

文章目录

马年祝福项目

JIN
JIN
2026-02-15 / 0 评论 / 0 点赞 / 5 阅读 / 0 字
广告 广告

本文将部署一个“2026 赛博马年祝福页”包含全屏黑客帝国流光特效、鼠标点击烟花

效果展示:

Capture2026-02-15-045750_ed.webp

6.2 和 第七大步 立🐎更新ing

一、加SWAP(新手忽略)

注意:此步骤新手可直接跳过,直接进行第二步

若服务器内存 ≤ 1G 可添加 swap虚拟内存,一般为内存的 1-2 倍即可

设置 SWAP 可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

填写18后,选择1,填写2048或者1024,然后回车


二、更新工具

2.1、切换到 root 用户
sudo -i
2.2、升级 packages
apt update -y
2.3、安装常用的工具
apt install wget curl sudo vim git -y

三、安装 Docker 环境(非大陆)

此步为非大陆vps安装docker的步骤,
大陆服务器的 三、四 步骤请划至最下面 1.7、补充

3.1、安装
wget -qO- get.docker.com | bash
3.2、查看 docker 版本
docker -v  
3.3、设置开机自动启动
systemctl enable docker  

四、安装 Docker-compose(非大陆)

4.1、安装 compose 插件
apt install docker-compose-plugin -y
4.2、查看版本
docker compose version  #查看 docker compose 版本
4.3、修改 Docker 配置(可选,新手忽略并跳过此步)

增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF
4.4、重启docker
systemctl restart docker

五、安装项目(赛博马年·特供版)

5.1、创建目录
mkdir -p /root/data/docker_data/horse_year
5.2、进入目录
cd /root/data/docker_data/horse_year
5.3、创建网络环境(关键)

为了防止出现 network not found 报错,我们需要先手动建立一个专用网络。

docker network create halo_network
5.4、编写网页源文件

这里我们将创建一个 index.html包含了:黑客帝国代码雨、自动打字机效果等等

nano index.html

在 nano 中粘贴以下HTML全部代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>2026 System Override</title>
    <style>
        body { margin: 0; overflow: hidden; background: #000; color: #0F0; font-family: 'Courier New', monospace; }
        canvas { display: block; }
        #overlay {
            position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
            text-align: center; z-index: 10; pointer-events: none; width: 100%;
        }
        h1 { font-size: 4rem; text-shadow: 0 0 20px #0F0; margin: 0; }
        p { font-size: 1.5rem; color: #fff; text-shadow: 0 0 10px #fff; margin-top: 20px; }
        .geng { color: #ff0055; font-weight: bold; font-size: 2rem; animation: shake 0.5s infinite; }
        @keyframes shake { 0% { transform: translate(1px, 1px); } 50% { transform: translate(-1px, -1px); } 100% { transform: translate(1px, -1px); } }
    </style>
</head>
<body>
<canvas id="c"></canvas>
<div id="overlay">
    <h1 id="title">SYSTEM HACKED...</h1>
    <p id="msg"></p>
</div>

<script>
// --- 1. 黑客帝国代码雨 (装X核心) ---
var c = document.getElementById("c");
var ctx = c.getContext("2d");
c.width = window.innerWidth;
c.height = window.innerHeight;
var chinese = "马到成功2026OFFER全拿代码无BUG不挂科发财暴富早日退休";
chinese = chinese.split("");
var font_size = 14;
var columns = c.width/font_size; 
var drops = [];
for(var x=0; x<columns; x++) drops[x] = 1;

function draw() {
    ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
    ctx.fillRect(0, 0, c.width, c.height);
    ctx.fillStyle = "#0F0"; // 黑客绿
    ctx.font = font_size + "px arial";
    for(var i=0; i<drops.length; i++) {
        var text = chinese[Math.floor(Math.random()*chinese.length)];
        ctx.fillText(text, i*font_size, drops[i]*font_size);
        if(drops[i]*font_size > c.height && Math.random() > 0.975) drops[i] = 0;
        drops[i]++;
    }
}
setInterval(draw, 33);

// --- 2. 自动打字机效果 (文案区) ---
const titleEl = document.getElementById('title');
const msgEl = document.getElementById('msg');
const mainTitle = "⚠️ 2026 马年警告 ⚠️";
// 这里修改你的祝福语,支持HTML标签
const messages = [
    "正在加载新年运势...",
    "检测到【绝世好运】...",
    "以前是以前,现在是变态...",
    "不是,哥们,<span class='geng'>我踏马来了!</span>", // 你的虎哥梗
    "祝你:代码一写就通,考研一战成硕!",
    "发疯文学载入中:马年不努力,只能开夏利?错!",
    "马年不摆烂,地球也就是个巨大的草台班子!"
];

let msgIndex = 0;
function typeWriter(text, element, callback) {
    let i = 0;
    element.innerHTML = "";
    let timer = setInterval(() => {
        if (i < text.length) {
            // 处理HTML标签不被打断
            if(text.charAt(i) === '<') {
                let tagEnd = text.indexOf('>', i);
                element.innerHTML += text.substring(i, tagEnd+1);
                i = tagEnd + 1;
            } else {
                element.innerHTML += text.charAt(i);
                i++;
            }
        } else {
            clearInterval(timer);
            if(callback) setTimeout(callback, 2000);
        }
    }, 100);
}

// 启动逻辑
setTimeout(() => {
    titleEl.innerText = mainTitle;
    titleEl.style.color = "#ff0055"; // 换个骚粉色
  
    function playNextMsg() {
        if(msgIndex < messages.length) {
            typeWriter(messages[msgIndex], msgEl, playNextMsg);
            msgIndex++;
        } else {
            msgIndex = 3; // 循环播放梗
            playNextMsg();
        }
    }
    playNextMsg();
}, 2000);

// --- 3. 屏幕自适应 ---
window.onresize = function() {
    c.width = window.innerWidth;
    c.height = window.innerHeight;
};
</script>
</body>
</html>

Ctrl+O 回车保存,按 Ctrl+X 退出。

5.5、配置 docker-compose
nano docker-compose.yml
5.6、nano输入:
services:
  horse-site:
    image: nginx:alpine
    container_name: horse_2026
    restart: always
    ports:
      - "8888:80"  # 外部访问端口,可修改
    volumes:
      - ./index.html:/usr/share/nginx/html/index.html
    networks:
      - halo_network

networks:
  halo_network:
    external: true
5.7、启动项目(防报错版)

为了防止 Docker 服务未启动导致报错,我们先强制唤醒 Docker,再启动项目。

systemctl enable docker && systemctl start docker && docker compose up -d
5.8、完成

此时打开浏览器,访问 http://你的vps的ip:8888

效果展示:

  • 背景:黑客帝国代码雨,滚动播放“暴富”、“OFFER”、“不挂科”。
  • 弹幕:屏幕中央自动打字,播放“我踏马来了”等
5.9、如何修改文案(装X指南)

如果想改祝福语,无需重启,只需执行:

nano index.html

找到 const messages = [...] 修改中文内容,保存后刷新网页即刻生效。


六、域名访问

通过ip+端口让别人访问,总担心隐私泄露?可以通过反向代理后让别人直接通过你的域名访问你的网站

比如我的名字叫rckin我就可以购买一个 rckin.com 的域名,别人点击一下就能访问了,也不用担心ip暴露

6.1、购买域名

推荐前往namesilo 购买,点击链接购买我可以拿到一点分成,感谢各位小伙伴的支持

购买教程:点击链接滑动到视频第3步即可:哔哩哔哩YouTube

6.2、域名托管到cloud flare

等待更新ing(看视频)

6.3、安装 NPM

购买完域名和让域名在全球传播之后,我们终于可以回到Ubuntu了

现在开始安装 Nginx Proxy Manager 进行反向代理

6.3.1、创建文件夹目录
mkdir -p /root/data/docker_data/npm
6.3.2、进入文件夹
cd /root/data/docker_data/npm
6.3.3、配置
nano docker-compose.yml
6.3.4、nano输入:
services:
  app:
    image: jc21/nginx-proxy-manager:2.11.3 #如需升级,请手动修改版本号并重新 docker compose pull
    restart: unless-stopped
    ports:
      - '80:80'  # 保持默认即可,不建议修改左侧的80
      - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 保持默认即可,不建议修改左侧的443
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

💡 Nano 编辑器小贴士:

  • 粘贴内容: 在终端点击鼠标右键,或使用快捷键 Shift + Insert
  • 保存修改:Ctrl + O,然后按 Enter 确认文件名。
  • 退出编辑器:Ctrl + X
  • 注意: 如果你对文件做了改动,退出时会询问是否保存,输入 y (Yes) 即可。
6.3.5、配置启动
docker compose up -d
6.3.6、浏览器访问

此时我们就可以通过浏览器 http://改为你的vps的ip:81 访问 NPM 面板了

⚠️ 补充(小白暂时别看这句话):生产环境建议不要长期对公网暴露 81 管理端口,域名配置完成后可关闭,可将'81:81'改为'127.0.0.1:81:81',后续访问NPM可通过走 SSH 隧道:ssh -L 81:127.0.0.1:81 root@你的VPS_IP,然后再浏览器http://localhost:81 。


七、开始反向代理

通过 http://你的vps的ip:81 访问你的NPM面板后

7.1、登录

默认登录账号密码:

默认Email:       admin@example.com    #记得改
默认Password:    changeme             #记得改

7.2、添加代理主机

7.3、添加域名,开启ip代理

7.4、启动https协议,添加证书

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区