Files
pages/2022/11/29/free-server.html
2025-12-31 16:00:29 +00:00

375 lines
25 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>体验小白也会使用的免费容器云 | Mayx的博客</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="体验小白也会使用的免费容器云" />
<meta name="author" content="mayx" />
<meta property="og:locale" content="zh_CN" />
<meta name="description" content="Heroku虽然倒了但是我们还有更多的选择" />
<meta property="og:description" content="Heroku虽然倒了但是我们还有更多的选择" />
<meta property="og:site_name" content="Mayx的博客" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2022-11-29T00:00:00+08:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="体验小白也会使用的免费容器云" />
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
<meta name="yandex-verification" content="fc0e535abed800be" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2022-11-29T00:00:00+08:00","datePublished":"2022-11-29T00:00:00+08:00","description":"Heroku虽然倒了但是我们还有更多的选择","headline":"体验小白也会使用的免费容器云","mainEntityOfPage":{"@type":"WebPage","@id":"/2022/11/29/free-server.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2022/11/29/free-server.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="canonical" href="https://mabbs.github.io/2022/11/29/free-server.html" />
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
<link rel="stylesheet" href="/assets/css/style.css?v=1767196818" />
<!--[if !IE]> -->
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
<!-- <![endif]-->
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
<link rel="me" href="https://github.com/Mabbs" />
<script src="/assets/js/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
var lastUpdated = new Date("Thu, 01 Jan 2026 00:00:18 +0800");
var BlogAPI = "https://summary.mayx.eu.org";
</script>
<script src="/assets/js/main.js"></script>
<!--[if !IE]> -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-137710294-1');
</script>
<script src="/assets/js/instant.page.js" type="module"></script>
<!-- <![endif]-->
</head>
<body>
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript这不影响你的浏览但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer这不影响你的浏览但可能会有一些功能无法使用……</small></marquee><![endif]-->
<div class="wrapper">
<header class="h-card">
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
<p class="p-note">Mayx's Home Page</p>
<form action="/search.html">
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." />&#160;<input type="submit" value="搜索" />
</form>
<br />
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
<ul class="downloads">
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
</ul>
</header>
<section class="h-entry">
<small><time class="date dt-published" datetime="2022-11-29T00:00:00+08:00">29 November 2022</time> - 字数统计2368 - 阅读大约需要8分钟 - Hits: <span id="/2022/11/29/free-server.html" class="visitors">Loading...</span></small>
<h1 class="p-name">体验小白也会使用的免费容器云</h1>
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
<div id="outdate" style="display:none;">
<hr /><p>
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
</p>
</div>
<script>
daysold = Math.floor((new Date().getTime() - new Date("Tue, 29 Nov 2022 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
if (daysold > 90) {
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
}
</script>
<hr />
<b>AI摘要</b>
<p id="ai-output">这篇文章讲述了作者在Heroku不再提供免费容器云服务后发现了一家名为Koyeb的平台作为替代。Koyeb的特色在于可以直接部署Docker Hub上的项目无需安装复杂软件操作相对人性化。作者利用Koyeb部署了宝塔面板和VerySimple梯子服务而且还提到为了解决网站资源访问问题使用了Cloudflare Workers做反代。尽管免费作者认为Koyeb是个不错的临时选择但需要珍惜这种免费服务。</p>
<hr />
<ul><li><a href="#起因">起因</a></li><li><a href="#koyeb的体验">Koyeb的体验</a><ul><li><a href="#建站方法">建站方法</a></li><li><a href="#搭梯子的方法">搭梯子的方法</a></li></ul></li><li><a href="#感想">感想</a></li></ul>
<hr />
<main class="post-content e-content" role="main"><p>Heroku虽然倒了但是我们还有更多的选择<!--more--></p>
<h1 id="起因">
<a href="#起因"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 起因
</h1>
<p>从昨天开始Heroku就不再提供免费的容器云服务了虽然我有Github的学生包但是试了一下要绑银行卡就算了。不过虽然这么说我其实一次也没用过Heroku因为它要安装奇奇怪怪的软件用起来很不人性化。不过最近也正好需要一个服务器来供我测试那应该怎么办呢</p>
<h1 id="koyeb的体验">
<a href="#koyeb的体验"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> Koyeb的体验
</h1>
<p>后来我在寻找的时候找到了一家叫做<a href="https://www.koyeb.com/">Koyeb</a>的平台也是容器云还是免费的。用Github登录之后就可以使用了试了一下感觉很不错啊它和其他免费容器云最不一样的可能就是它能直接部署Docker Hub上的项目不用在Github上新建乱七八糟的仓库也不用安装乱七八糟的软件非常的人性化啊。 </p><p>
既然能部署Docker Hub的项目那可选择的余地就太大了我直接随便部署一个发行版就能当免费的VPS来用不过既然能直接部署了还是安点什么好吧……我想了想干脆安装个宝塔面板吧正好他们官方也提供了<a href="https://hub.docker.com/r/btpanel/baota">Docker镜像</a>直接部署就行另外为了正常访问需要映射8888端口另外为了方便访问网站还要映射一个80端口。不过它只给了一个地址所以如果要映射多个端口就只能设定路径……像我是给面板设定的根目录方便我配置至于网站嘛……之后再考虑吧这里我先填了一个<code class="language-plaintext highlighter-rouge">/app</code>的路径便于之后使用。 </p><p>
这样安装出来的面板直接根据镜像文档的说明就可以登录了不过登录之后会要求绑定手机号……我不太想整这个东西于是在网上找了个宝塔纯净版在Koyeb的Console里面执行</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl http://v7.hostcli.com/install/update6.sh|bash
</code></pre></div></div>
<p>运行之后就可以跳过绑定宝塔账号的步骤了还能安装企业版插件还是挺不错的。不过不知道是什么问题网页端的SSH好像用不了……这个建议使用frp等方式反代一下再用免费的frp服务器还是比较好找的。</p>
<h2 id="建站方法">
<a href="#建站方法"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 建站方法
</h2>
<p>因为之前已经映射了80端口所以直接用提供的链接就能打开之前建好的网站例如example.koyeb.app/app。不过对于有些网站来说有个问题那就是它的程序可能资源不允许在不是根目录的地方这样它读取文件的时候就会从宝塔面板的路径读取了然后就会出现例如404的错误。为了解决这个问题我想了一下干脆让Cloudflare Workers反代它吧理论上应该绑定域名然后在Cloudflare上配置重写规则应该也行所以就写了个简单的脚本</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">addEventListener</span><span class="p">(</span>
<span class="dl">"</span><span class="s2">fetch</span><span class="dl">"</span><span class="p">,</span><span class="nx">event</span> <span class="o">=&gt;</span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">url</span><span class="o">=</span><span class="k">new</span> <span class="nx">URL</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">request</span><span class="p">.</span><span class="nx">url</span><span class="p">);</span>
<span class="nx">url</span><span class="p">.</span><span class="nx">protocol</span><span class="o">=</span><span class="dl">"</span><span class="s2">https</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">url</span><span class="p">.</span><span class="nx">hostname</span><span class="o">=</span><span class="dl">"</span><span class="s2">example.koyeb.app</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">url</span><span class="p">.</span><span class="nx">pathname</span><span class="o">=</span><span class="dl">"</span><span class="s2">/app</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">event</span><span class="p">.</span><span class="nx">request</span><span class="p">.</span><span class="nx">url</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">request</span><span class="p">.</span><span class="nx">url</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">,</span><span class="mi">8</span><span class="p">),(</span><span class="nx">event</span><span class="p">.</span><span class="nx">request</span><span class="p">.</span><span class="nx">url</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">?</span><span class="dl">"</span><span class="p">).</span><span class="nx">indexOf</span><span class="p">(</span><span class="dl">'</span><span class="s1">?</span><span class="dl">'</span><span class="p">));</span>
<span class="kd">let</span> <span class="nx">request</span><span class="o">=</span><span class="k">new</span> <span class="nx">Request</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span><span class="nx">event</span><span class="p">.</span><span class="nx">request</span><span class="p">);</span>
<span class="nx">event</span><span class="p">.</span> <span class="nx">respondWith</span><span class="p">(</span>
<span class="nx">fetch</span><span class="p">(</span><span class="nx">request</span><span class="p">)</span>
<span class="p">)</span>
<span class="p">}</span>
<span class="p">)</span>
</code></pre></div></div>
<p>这样访问网站的时候就不会遇到404的情况了。不过这样做还有一个缺陷就是HTTP_HOST环境变量会是错的有些程序会读取它导致链接可能会出问题这种情况就只能通过修改fastcgi的环境变量配置文件来解决了……</p>
<h2 id="搭梯子的方法">
<a href="#搭梯子的方法"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 搭梯子的方法
</h2>
<p>一般租服务器,可能除了搭网站,就是搭梯子了。所以我想在建站的同时搭个梯子,正好网站也算是梯子的伪装了。 </p><p>
这次我搭梯子不想用v2ray了我想换个之前在Github上看到的一个重新实现的v2ray<a href="https://github.com/e1732a364fed/v2ray_simple">verysimple</a>据说速度比v2ray要快很多不过它用的那个toml我看的不是很明白因为之前配了<a href="/2022/11/16/tor.html">Tor</a><a href="/2022/11/23/i2p.html">i2p</a>,用到了路由功能,它这个路由功能……也没个文档,本来想给自己的服务器换一下,这看起来不知道怎么配就算了。不过在这个免费的测试机上不需要有那么多功能,只是当个普通梯子还是很简单的,而且它的配置文件能通过交互模式生成还挺有意思的。 </p><p>
像我的话配置文件很简单,就是这个样子:</p>
<div class="language-toml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[[listen]]</span>
<span class="py">tag</span> <span class="p">=</span> <span class="s">"my_proxy"</span>
<span class="py">host</span> <span class="p">=</span> <span class="s">"***"</span>
<span class="py">ip</span> <span class="p">=</span> <span class="s">"0.0.0.0"</span>
<span class="py">port</span> <span class="p">=</span> <span class="mi">8080</span>
<span class="py">xver</span> <span class="p">=</span> <span class="mi">0</span>
<span class="py">tls</span> <span class="p">=</span> <span class="kc">false</span>
<span class="py">path</span> <span class="p">=</span> <span class="s">"***"</span>
<span class="py">advancedLayer</span> <span class="p">=</span> <span class="s">"ws"</span>
<span class="py">protocol</span> <span class="p">=</span> <span class="s">"vless"</span>
<span class="py">uuid</span> <span class="p">=</span> <span class="s">"***"</span>
<span class="py">version</span> <span class="p">=</span> <span class="mi">0</span>
<span class="nn">[[dial]]</span>
<span class="py">port</span> <span class="p">=</span> <span class="mi">0</span>
<span class="py">xver</span> <span class="p">=</span> <span class="mi">0</span>
<span class="py">protocol</span> <span class="p">=</span> <span class="s">"direct"</span>
<span class="py">version</span> <span class="p">=</span> <span class="mi">0</span>
</code></pre></div></div>
<p>然后在我的网站的nginx里配置相应的路由</p>
<div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="n">location</span> /***{
<span class="n">proxy_set_header</span> <span class="n">X</span>-<span class="n">Original</span>-<span class="n">Host</span> $<span class="n">host</span>;
<span class="n">proxy_set_header</span> <span class="n">X</span>-<span class="n">Real</span>-<span class="n">IP</span> $<span class="n">remote_addr</span>;
<span class="n">proxy_set_header</span> <span class="n">X</span>-<span class="n">Forwarded</span>-<span class="n">For</span> $<span class="n">proxy_add_x_forwarded_for</span>;
<span class="n">proxy_set_header</span> <span class="n">Host</span> ***;
<span class="n">proxy_http_version</span> <span class="m">1</span>.<span class="m">1</span>;
<span class="n">proxy_set_header</span> <span class="n">Upgrade</span> $<span class="n">http_upgrade</span>;
<span class="n">proxy_set_header</span> <span class="n">Connection</span> <span class="s2">"Upgrade"</span>;
<span class="n">proxy_pass</span> <span class="n">http</span>://<span class="m">127</span>.<span class="m">0</span>.<span class="m">0</span>.<span class="m">1</span>:<span class="m">8080</span>;
}
</code></pre></div></div>
<p>就可以正常使用了试了一下效果还不错不知道这个流量是怎么算的Koyeb的面板上也没有关于流量费的介绍……难不成是不限流量</p>
<h1 id="感想">
<a href="#感想"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 感想
</h1>
<p>免费的东西虽好不过既然Heroku都被薅没了Koyeb这种小白都能免费用的容器云……只能说且用且珍惜了……</p></main>
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=Docker"><em>Docker</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E5%AE%B9%E5%99%A8"><em>容器</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E5%85%8D%E8%B4%B9"><em>免费</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2022-11-29-free-server.md">查看原始文件</a></span></small>
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
<p id="suggest-container">Loading...</p>
<script>
var suggest = $("#suggest-container");
$.get(BlogAPI + "/suggest?id=/2022/11/29/free-server.html&update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.empty();
var searchMap = {};
for (var i = 0; i < search.length; i++) {
searchMap[search[i].url] = search[i];
}
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
for (var j = 0; j < data.length; j++) {
var item = searchMap[data[j].id];
if (item) {
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
var contentPreview = item.content.substring(0, 100);
if (item.content.length > 100) {
contentPreview += "……";
}
link.hover(
function(e) {
tooltip.text($(this).data('content'))
.css({
top: e.pageY + 10,
left: e.pageX + 10
})
.show();
},
function() {
tooltip.hide();
}
).mousemove(function(e) {
tooltip.css({
top: e.pageY + 10,
left: e.pageX + 10
});
}).data('content', contentPreview);
suggest.append(link);
suggest.append(' - ' + item.date + '<br />');
}
}
});
} else {
suggest.html("暂无推荐文章……");
}
});
</script>
<br />
<div class="pagination">
<span class="prev">
<a href="/2022/11/23/i2p.html">
上一篇i2pd在服务器上的使用体验
</a>
</span>
<br />
<span class="next">
<a href="/2022/12/12/bt-s3-comp.html">
下一篇如何自定义宝塔亚马逊S3云存储插件的端点
</a>
</span>
</div>
<!--[if !IE]> -->
<link rel="stylesheet" href="/assets/css/gitalk.css">
<script src="/assets/js/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '36557aec4c3cb04f7ac6',
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '/2022/11/29/free-server', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->
</section>
<!--[if !IE]> -->
<div id="landlord" style="left:5px;bottom:0px;">
<div class="message" style="opacity:0"></div>
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
<div class="live_talk_input_body">
<form id="live_talk_input_form">
<div class="live_talk_input_name_body" >
<input type="checkbox" id="load_this" />
<input type="hidden" id="post_id" value="/2022/11/29/free-server.html" />
<label for="load_this">
<span style="font-size: 11px; color: #fff;">&#160;想问这篇文章</span>
</label>
</div>
<div class="live_talk_input_text_body">
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
</div>
</form>
</div>
<input name="live_talk" id="live_talk" value="1" type="hidden" />
<div class="live_ico_box" style="display:none;">
<div class="live_ico_item type_info" id="showInfoBtn"></div>
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
<div class="live_ico_item type_music" id="musicButton"></div>
<div class="live_ico_item type_youdu" id="youduButton"></div>
<div class="live_ico_item type_quit" id="hideButton"></div>
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
<input id="duType" value="douqilai" type="hidden" />
</div>
</div>
<div id="open_live2d">召唤伊斯特瓦尔</div>
<!-- <![endif]-->
<footer>
<p>
<small>Made with ❤ by Mayx<br />Last updated at 2026-01-01 00:00:18<br /> 总字数614622 - 文章数178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
</p>
</footer>
</div>
<script src="/assets/js/scale.fix.js"></script>
<!--[if !IE]> -->
<script src="/assets/js/main_new.js"></script>
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
<script src="/Live2dHistoire/live2d/js/message.js"></script>
<!-- <![endif]-->
</body>
</html>