<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Long</id>
	<title>md5.pw - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Long"/>
	<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Long"/>
	<updated>2026-05-06T17:17:00Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://md5.pw/index.php?title=%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E5%9F%BA%E6%9C%AC%E9%98%B2%E7%81%AB%E5%A2%99%E8%A7%84%E5%88%99%E5%8F%8A%E5%85%A5%E7%AB%99/%E5%87%BA%E7%AB%99%E7%AD%96%E7%95%A5&amp;diff=1646</id>
		<title>搬瓦工VPS基本防火墙规则及入站/出站策略</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E5%9F%BA%E6%9C%AC%E9%98%B2%E7%81%AB%E5%A2%99%E8%A7%84%E5%88%99%E5%8F%8A%E5%85%A5%E7%AB%99/%E5%87%BA%E7%AB%99%E7%AD%96%E7%95%A5&amp;diff=1646"/>
		<updated>2026-03-18T04:30:25Z</updated>

		<summary type="html">&lt;p&gt;Long：​搬瓦工VPS基本防火墙规则及入站/出站策略&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;当你的 VPS 刚刚安装好操作系统并连上网络时，它就像是一个四面漏风的房间。互联网上的任何一台机器，都可以尝试连接你服务器上的所有端口。每天都有无数的自动化扫描脚本在网络上游荡，寻找那些没有关好门的服务器进行暴力破解或恶意入侵。&lt;br /&gt;
&lt;br /&gt;
在下面的文章中，我们将抛开复杂的网络理论，手把手教你建立一套基于&#039;&#039;&#039;“默认拒绝（Default Deny）”&#039;&#039;&#039;原则的基础防火墙策略。我们将使用 Ubuntu 和 Debian 系统中最简单好用的 UFW（Uncomplicated Firewall）工具来进行实战。&lt;br /&gt;
----&lt;br /&gt;
== 一、 什么是“默认拒绝”与出入站策略？ ==&lt;br /&gt;
在动手敲命令之前，我们需要先理清防火墙的两个基本方向：入站（Inbound/Incming）和出站（Outbound/Outgoing）。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;入站（Incoming）：&#039;&#039;&#039; 外界的电脑主动发起请求，想要进入你的服务器。比如，你在浏览器里输入服务器的 IP 来访问你的面板，这就是入站流量。&lt;br /&gt;
* &#039;&#039;&#039;出站（Outgoing）：&#039;&#039;&#039; 你的服务器主动发起请求，想要访问外界的网络。比如，你在服务器里使用 &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; 下载一个安装包，或者 Docker 自动去拉取一个镜像，这就是出站流量。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;防火墙的最高黄金准则就是：默认拒绝所有入站，允许所有出站。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
意思是：&lt;br /&gt;
&lt;br /&gt;
# 除了我明确批准放行的端口（比如 SSH 登录端口、特定的业务端口），其他任何外部机器想连进来，防火墙一律直接丢弃请求，连报错都不回。&lt;br /&gt;
# 服务器内部的软件想要访问外网下载东西，完全自由，防火墙不加阻拦。&lt;br /&gt;
&lt;br /&gt;
这种策略能把服务器的暴露面降到最低，把复杂性降到最低。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 二、 安装 UFW ==&lt;br /&gt;
在 Ubuntu 和 Debian 系统中，底层真正的防火墙叫 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;nftables&amp;lt;/code&amp;gt;，但它们的语法极其复杂，反人类。因此，我们使用 UFW（Uncomplicated Firewall，简单防火墙）。它是一个前端工具，能把复杂的规则转化为人类能看懂的简单英语命令。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. 安装 UFW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
通过 SSH 连上你的服务器，执行以下命令安装 UFW：&lt;br /&gt;
 apt update&lt;br /&gt;
 apt &#039;&#039;&#039;install&#039;&#039;&#039; ufw -y&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:B87c11cc.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. 查看当前状态&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
安装完成后，UFW 默认是关闭的。你可以查一下它的状态：&lt;br /&gt;
 &#039;&#039;&#039;ufw status&#039;&#039;&#039;&lt;br /&gt;
终端会输出：&amp;lt;code&amp;gt;Status: inactive&amp;lt;/code&amp;gt;（状态：不活跃）。先不要急着开启它，我们必须先设定好规则。&lt;br /&gt;
[[File:B87c11c1.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 三、 配置默认策略与SSH端口 ==&lt;br /&gt;
接下来我们就正式开始设置。这一步非常关键，顺序绝对不能错。错了的话，可能会导致你与服务器之间的连接直接被切断。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. 设置全局默认策略&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
告诉防火墙，以后遇到没有明确规定的流量，默认按照下面的规则办：&lt;br /&gt;
 # 默认拒绝所有入站连接&lt;br /&gt;
 ufw default deny incoming&lt;br /&gt;
 &lt;br /&gt;
 # 默认允许所有出站连接&lt;br /&gt;
 ufw default allow outgoing&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:B87c11c2.png|center|thumb|1000x1000px]]&lt;br /&gt;
&#039;&#039;&#039;2. 极度重要：放行你的 SSH 端口&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
既然你设置了“默认拒绝所有入站”，如果你现在立刻把防火墙开启，防火墙会连你当前的 SSH 连接一起切断。你就会把自己彻底锁在服务器外面。&lt;br /&gt;
&lt;br /&gt;
因此，在开启防火墙之前，&#039;&#039;&#039;必须先放行 SSH 端口&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
如果你使用的是默认的 22 端口，执行：&lt;br /&gt;
 ufw allow 22/tcp&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:B87c11c3.png|center|thumb|1000x1000px]]&lt;br /&gt;
如果你已经将 SSH 端口改成了其他数字（比如 38422），那就放行你的自定义端口：&lt;br /&gt;
&lt;br /&gt;
 ufw allow 38422/tcp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. 正式启动防火墙&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
确认 SSH 端口已经放行后，输入以下命令激活防火墙：&lt;br /&gt;
 ufw enable&amp;lt;/code&amp;gt;&lt;br /&gt;
系统会弹出一句警告：&amp;lt;code&amp;gt;Command may disrupt existing ssh connections. Proceed with operation (y|n)?&amp;lt;/code&amp;gt;（此命令可能会中断现有的 SSH 连接，是否继续？）。 因为我们上一步已经放行了端口，所以大胆输入 &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; 并回车。&lt;br /&gt;
[[File:B87c11c4.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
提示 &amp;lt;code&amp;gt;Firewall is active and enabled on system startup&amp;lt;/code&amp;gt;，说明防火墙已成功启动，并且每次服务器重启都会自动运行。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 四、纯 IP + 端口的精准放行策略 ==&lt;br /&gt;
在我们的日常部署中，为了追求极致的简单、高效和稳定，我们往往不需要去搞复杂的反向代理（不再需要把所有流量都挤到 80 和 443 端口）。&lt;br /&gt;
&lt;br /&gt;
最原生的方式就是：&#039;&#039;&#039;跑一个服务，分配一个端口，防火墙放行一个端口，直接用 IP+端口 访问。 这种架构故障点最少&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
== 1. 常见业务的放行规则 ==&lt;br /&gt;
假设你在服务器上用 Docker 部署了一个 博客，你把它映射到了宿主机的 &amp;lt;code&amp;gt;8090&amp;lt;/code&amp;gt; 端口。你只需要告诉防火墙，允许外界访问这个端口即可。&lt;br /&gt;
 &#039;&#039;&#039;ufw&#039;&#039;&#039; allow 8090/tcp&amp;lt;/code&amp;gt;&lt;br /&gt;
执行完毕后，你就可以直接在浏览器里通过 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://你的服务器IP:8090&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 来访问面板了。&lt;br /&gt;
&lt;br /&gt;
再比如，你部署了nginx proxy manager，映射在 81 端口：&lt;br /&gt;
 &#039;&#039;&#039;ufw&#039;&#039;&#039; allow 81/tcp&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:B87c11c5.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== 2. TCP 与 UDP 的区别 ==&lt;br /&gt;
在放行端口时，你可能会注意到后面带着 &amp;lt;code&amp;gt;/tcp&amp;lt;/code&amp;gt;。 网络传输主要有两种协议：TCP（稳定、面向连接，网页浏览多用此协议）和 UDP（速度快、不保证送达，视频流、游戏多用此协议）。&lt;br /&gt;
&lt;br /&gt;
* 绝大多数的 Web 面板、数据库，都只需要放行 TCP。&lt;br /&gt;
* 如果你不写协议，直接输入 &amp;lt;code&amp;gt;ufw allow 3001&amp;lt;/code&amp;gt;，UFW 会默认同时放行 TCP 和 UDP。为了安全起见，我们建议只放行需要的协议（加上 &amp;lt;code&amp;gt;/tcp&amp;lt;/code&amp;gt;）。&lt;br /&gt;
&lt;br /&gt;
== 3. 如何知道自己需要放行哪些端口？ ==&lt;br /&gt;
很多新手跟着教程复制了 Docker 部署命令，启动成功了，但网页打不开，也不知道该去防火墙放行哪个端口。&lt;br /&gt;
&lt;br /&gt;
你可以使用 &amp;lt;code&amp;gt;ss&amp;lt;/code&amp;gt; 命令来查看服务器当前到底有哪些端口正在监听（等待外部连接）：&lt;br /&gt;
 &#039;&#039;&#039;ss -tulnp&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
这个命令会列出所有正在运行的程序以及它们占用的端口。找到你的程序名称（比如 docker-proxy），看看它对应的 &amp;lt;code&amp;gt;Local Address:Port&amp;lt;/code&amp;gt; 是多少，然后在 UFW 里把那个端口放行即可。（因为是新机器，没有运行其他服务，所以只有SSH的22端口正在监听）&lt;br /&gt;
[[File:B87c11c656.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 五、 查看、删除与进阶规则 ==&lt;br /&gt;
防火墙规则不是一成不变的。当你卸载了某个面板，对应的端口也应该及时关闭，做到“用完即焚”。&lt;br /&gt;
&lt;br /&gt;
== 1. 查看带编号的规则列表 ==&lt;br /&gt;
想要管理规则，最好的方法是给每条规则打上编号，这样看得很清楚：&lt;br /&gt;
 &#039;&#039;&#039;ufw status numbered&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
终端会输出类似这样的列表：&lt;br /&gt;
      &#039;&#039;&#039;To&#039;&#039;&#039;                         Action      &#039;&#039;&#039;From&#039;&#039;&#039;&lt;br /&gt;
      --                         ------      ----&lt;br /&gt;
 [ 1] 38422/tcp                  ALLOW IN    Anywhere&lt;br /&gt;
 [ 2] 3001/tcp                   ALLOW IN    Anywhere&lt;br /&gt;
 [ 3] 38422/tcp (v6)             ALLOW IN    Anywhere (v6)&lt;br /&gt;
 [ 4] 3001/tcp (v6)              ALLOW IN    Anywhere (v6)&amp;lt;/code&amp;gt;&lt;br /&gt;
你会发现，你输入一条规则，UFW 会自动帮你生成 IPv4 和 IPv6（带有 v6 字样）两条规则，非常省心。&lt;br /&gt;
&lt;br /&gt;
== 2. 精准删除规则 ==&lt;br /&gt;
如果你不再使用 Uptime Kuma 了，想要关闭 3001 端口。只需要根据上面列表的编号进行删除。&lt;br /&gt;
&lt;br /&gt;
我们要删除第 2 条规则：&lt;br /&gt;
 ufw &#039;&#039;&#039;delete&#039;&#039;&#039; 2&amp;lt;/code&amp;gt;&lt;br /&gt;
输入 &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; 确认。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意：&#039;&#039;&#039; 删除了第 2 条之后，原本的第 3 条、第 4 条规则的编号会自动向前递补。所以如果你要继续删除，请一定要重新运行 &amp;lt;code&amp;gt;ufw status numbered&amp;lt;/code&amp;gt; 查看最新的编号，不要盲目删除，以免误删了 SSH 端口规则。&lt;br /&gt;
&lt;br /&gt;
== 3. 进阶技能：防暴力破解的 Limit 规则 ==&lt;br /&gt;
你的 SSH 端口虽然改了，但如果真的被黑客扫到了，对方一直用密码字典疯狂尝试登录，会消耗服务器大量的 CPU 资源。&lt;br /&gt;
&lt;br /&gt;
UFW 提供了一个非常简单的限流功能。你可以把之前放行 SSH 的 &amp;lt;code&amp;gt;allow&amp;lt;/code&amp;gt; 规则，改为 &amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; 规则。&lt;br /&gt;
&lt;br /&gt;
假设你的 SSH 端口是 38422：&lt;br /&gt;
 ufw limit 38422/tcp&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; 规则的意思是：允许正常连接，但如果同一个 IP 地址在 30 秒内尝试连接超过 6 次，防火墙就会直接把这个 IP 拉黑一段时间。这对于防范自动化的暴力破解脚本极其有效。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 六、 常见问题：为什么 UFW 放行了端口，我还是连不上？ ==&lt;br /&gt;
这是新手最容易碰到的难题。你在系统里执行了 &amp;lt;code&amp;gt;ufw allow 3001/tcp&amp;lt;/code&amp;gt;，显示操作成功，但网页就是死活打不开。&lt;br /&gt;
&lt;br /&gt;
如果你遇到了这种情况，原因几乎只有一个：&#039;&#039;&#039;你的服务器外面，还有一层防火墙&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
现在很多云服务商为了安全，会在网页控制台里提供一个 &#039;&#039;&#039;“安全组（Security Group）”&#039;&#039;&#039; 或 &#039;&#039;&#039;“外部防火墙”&#039;&#039;&#039; 功能。 这层外部防火墙位于你的 VPS 操作系统之外。外部的请求想要到达你的服务器，必须先经过服务商的安全组，然后才能到达你系统内部的 UFW。&amp;lt;blockquote&amp;gt;注意：搬瓦工给予用户极高的自由度，故没有设置安全组。所以不会出现这一问题。但这里还是提出来，毕竟技多不压身。下次如果你遇到这类问题你就知道要去哪里查看并解决。&amp;lt;/blockquote&amp;gt;排查逻辑：&lt;br /&gt;
&lt;br /&gt;
# 确认系统内部的 UFW 已经放行了该端口。&lt;br /&gt;
# 登录你购买 VPS 的服务商网页后台，找到“网络安全”、“防火墙”或“安全组”设置卡片。&lt;br /&gt;
# 在网页后台同样添加一条入站规则，放行对应的 TCP 端口。&lt;br /&gt;
&lt;br /&gt;
只有当“外部安全组”和“内部 UFW”都对该端口亮了绿灯，你的流量才能真正通行无阻。&lt;br /&gt;
----&lt;br /&gt;
掌握了以上基于 UFW 的默认拒绝与纯 IP+端口放行策略，你的服务器在互联网中就已经具备了极强的自保能力。你不需要去配置复杂的拦截策略，只要守住“不认识的端口坚决不开”这条底线，就能屏蔽掉 99% 的无差别攻击。&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c656.png&amp;diff=1645</id>
		<title>File:B87c11c656.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c656.png&amp;diff=1645"/>
		<updated>2026-03-18T04:28:10Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B87c11c656&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c5.png&amp;diff=1644</id>
		<title>File:B87c11c5.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c5.png&amp;diff=1644"/>
		<updated>2026-03-18T04:27:47Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B87c11c5&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c4.png&amp;diff=1643</id>
		<title>File:B87c11c4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c4.png&amp;diff=1643"/>
		<updated>2026-03-18T04:27:21Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B87c11c4&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c3.png&amp;diff=1642</id>
		<title>File:B87c11c3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c3.png&amp;diff=1642"/>
		<updated>2026-03-18T04:26:54Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B87c11c3&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c2.png&amp;diff=1641</id>
		<title>File:B87c11c2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c2.png&amp;diff=1641"/>
		<updated>2026-03-18T04:26:14Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11c1.png&amp;diff=1640</id>
		<title>File:B87c11c1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11c1.png&amp;diff=1640"/>
		<updated>2026-03-18T04:25:50Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B87c11c1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:B87c11cc.png&amp;diff=1639</id>
		<title>File:B87c11cc.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:B87c11cc.png&amp;diff=1639"/>
		<updated>2026-03-18T04:24:47Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E6%90%AD%E5%BB%BAUptime_Kuma%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8A%B6%E6%80%81%E7%9B%91%E6%8E%A7&amp;diff=1313</id>
		<title>如何在搬瓦工VPS搭建Uptime Kuma服务器状态监控</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E6%90%AD%E5%BB%BAUptime_Kuma%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8A%B6%E6%80%81%E7%9B%91%E6%8E%A7&amp;diff=1313"/>
		<updated>2026-01-31T06:45:41Z</updated>

		<summary type="html">&lt;p&gt;Long：​如何部署服务器状态监控—— uptime kuma&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uptime Kuma 是一款开源、高颜值的自托管监控工具。它界面美观，功能强大，支持 HTTP(s) / TCP / Ping / DNS 等多种监控方式。&lt;br /&gt;
&lt;br /&gt;
下面将演示如何在一台全新的 搬瓦工 Linux 服务器上，使用 Docker 快速部署一套属于自己的监控系统。&lt;br /&gt;
&lt;br /&gt;
== 一、 环境准备 ==&lt;br /&gt;
&lt;br /&gt;
在开始之前，请确保你已经准备好了以下内容：&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;服务器&#039;&#039;&#039;：一台安装了 Linux 系统的 VPS（推荐 Debian 10+ 或 Ubuntu 20.04+）。&lt;br /&gt;
* &#039;&#039;&#039;工具&#039;&#039;&#039;：SSH 客户端（本文使用windows 11 自带的 PowerShell 进行演示，命令是通用的，你也可以选择其他SSH客户端）。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 二、 服务器初始化与更新 ==&lt;br /&gt;
&lt;br /&gt;
首先，使用 SSH 连接到你的服务器。为了保证软件的兼容性和安全性，我们先对系统软件包进行更新。&lt;br /&gt;
&lt;br /&gt;
以下命令适用于 Debian 和 Ubuntu 系统：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 切换到 root 用户（如果当前不是 root，建议执行此步）&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
# 更新软件包列表并升级已安装的软件&lt;br /&gt;
apt update -y &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
# 安装必要的常用工具（curl, wget, nano编辑器, git）&lt;br /&gt;
apt install curl wget nano git -y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:0ff5fe52.png|center|thumb|600x600px]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 三、 安装 Docker 环境 ==&lt;br /&gt;
&lt;br /&gt;
我们将使用 Docker 官方的安装脚本，这是最快、最标准的安装方式。&lt;br /&gt;
&lt;br /&gt;
=== 1. 一键安装 Docker ===&lt;br /&gt;
&lt;br /&gt;
执行以下命令，系统会自动识别架构并安装最新版的 Docker 引擎：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -fsSL https://get.docker.com | bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:7cd2.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
=== 2. 启动 Docker 并设置开机自启 ===&lt;br /&gt;
&lt;br /&gt;
安装完成后，执行以下命令启动 Docker 服务并设置为开机自自动运行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. 安装 Docker Compose ===&lt;br /&gt;
&lt;br /&gt;
为了运行后续的配置文件，我们需要安装 Docker Compose 独立工具。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# 下载 Docker Compose 二进制文件&lt;br /&gt;
curl -L &amp;quot;https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)&amp;quot; -o /usr/local/bin/docker-compose&lt;br /&gt;
&lt;br /&gt;
# 赋予可执行权限&lt;br /&gt;
chmod +x /usr/local/bin/docker-compose&lt;br /&gt;
&lt;br /&gt;
# 验证安装是否成功（出现版本号即为成功）&lt;br /&gt;
docker-compose --version&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:354.png|center|thumb|600x600px]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 四、 部署 Uptime Kuma ==&lt;br /&gt;
&lt;br /&gt;
环境配置好后，我们开始正式部署 Uptime Kuma。&lt;br /&gt;
&lt;br /&gt;
=== 1. 创建项目目录 ===&lt;br /&gt;
&lt;br /&gt;
为了方便管理，我们将所有文件放在专门的目录中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 创建目录&lt;br /&gt;
mkdir -p /root/data/docker_data/uptime-kuma&lt;br /&gt;
&lt;br /&gt;
# 进入目录&lt;br /&gt;
cd /root/data/docker_data/uptime-kuma&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:D90.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
=== 2. 创建配置文件 ===&lt;br /&gt;
&lt;br /&gt;
使用 &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; 编辑器创建并编辑 &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; 文件：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano docker-compose.yml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
将以下代码块完整复制并粘贴到编辑器中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &#039;3.3&#039;&lt;br /&gt;
&lt;br /&gt;
services:&lt;br /&gt;
  uptime-kuma:&lt;br /&gt;
    image: louislam/uptime-kuma&lt;br /&gt;
    container_name: uptime-kuma&lt;br /&gt;
    volumes:&lt;br /&gt;
      - ./uptime-kuma-data:/app/data&lt;br /&gt;
    ports:&lt;br /&gt;
      - 3001:3001&lt;br /&gt;
    restart: always&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;操作提示：&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# 粘贴完成后，按 &amp;lt;code&amp;gt;Ctrl + O&amp;lt;/code&amp;gt; 保存文件。&lt;br /&gt;
# 按 &amp;lt;code&amp;gt;Enter&amp;lt;/code&amp;gt; 确认文件名。&lt;br /&gt;
# 按 &amp;lt;code&amp;gt;Ctrl + X&amp;lt;/code&amp;gt; 退出编辑器。&lt;br /&gt;
[[File:D3ca340.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. 启动容器 ===&lt;br /&gt;
&lt;br /&gt;
在当前目录下执行以下命令启动服务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker compose up -d&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
等待几秒钟，当看到 &amp;lt;code&amp;gt;Creating uptime-kuma ... done&amp;lt;/code&amp;gt; 字样时，说明部署成功。&lt;br /&gt;
[[File:77ef4b7.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 五、 放行防火墙端口（重要） ==&lt;br /&gt;
&lt;br /&gt;
由于我们直接通过 IP + 端口访问，必须确保服务器的防火墙放行了 &#039;&#039;&#039;3001&#039;&#039;&#039; 端口。（这里已VPS安装了ufw防火墙为例）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ufw allow 3001/tcp&lt;br /&gt;
ufw reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 六、 访问与设置 ==&lt;br /&gt;
&lt;br /&gt;
=== 1. 初始化设置 ===&lt;br /&gt;
&lt;br /&gt;
打开浏览器，在地址栏输入：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;http://你的服务器IP:3001&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例如：&amp;lt;code&amp;gt;http://192.168.1.100:3001&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 第一次访问会要求创建管理员账号。&lt;br /&gt;
* 语言选择“中文”，设置好用户名和密码，点击 &#039;&#039;&#039;创建&#039;&#039;&#039;。&lt;br /&gt;
[[File:94d4d.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
=== 2. 开始使用 ===&lt;br /&gt;
&lt;br /&gt;
进入仪表盘后，点击左上角的 &#039;&#039;&#039;“添加监控项”&#039;&#039;&#039; 即可开始监控。&lt;br /&gt;
&lt;br /&gt;
你可以用来监控：&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;网站状态&#039;&#039;&#039;（HTTP/HTTPS）：监控网站是否可以正常访问。&lt;br /&gt;
* &#039;&#039;&#039;服务器存活&#039;&#039;&#039;（Ping）：监控服务器是否在线。&lt;br /&gt;
* &#039;&#039;&#039;端口状态&#039;&#039;&#039;（TCP Port）：监控特定的服务端口（如 SSH 的 22 端口）是否通畅。&lt;br /&gt;
[[File:011a6.png|center|thumb|600x600px]]&lt;br /&gt;
至此，一个属于你自己的服务器监控面板就搭建完成了！&lt;br /&gt;
[[File:A5e4.png|center|thumb|600x600px]]&lt;br /&gt;
[[File:124gdf.png|center|thumb|600x600px]]&lt;br /&gt;
&lt;br /&gt;
== 七、最后 ==&lt;br /&gt;
如果后面有想过通过域名进行访问，可以看同站里的 &#039;&#039;&#039;NPM&#039;&#039;&#039; 安装教学&#039;&#039;&#039;。&#039;&#039;&#039;&lt;br /&gt;
[[Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:124gdf.png&amp;diff=1312</id>
		<title>File:124gdf.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:124gdf.png&amp;diff=1312"/>
		<updated>2026-01-31T06:42:44Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;23&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:A5e4.png&amp;diff=1311</id>
		<title>File:A5e4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:A5e4.png&amp;diff=1311"/>
		<updated>2026-01-31T06:25:43Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:011a6.png&amp;diff=1310</id>
		<title>File:011a6.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:011a6.png&amp;diff=1310"/>
		<updated>2026-01-31T06:25:22Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:94d4d.png&amp;diff=1309</id>
		<title>File:94d4d.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:94d4d.png&amp;diff=1309"/>
		<updated>2026-01-31T06:24:10Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;43&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:77ef4b7.png&amp;diff=1308</id>
		<title>File:77ef4b7.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:77ef4b7.png&amp;diff=1308"/>
		<updated>2026-01-31T06:22:56Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;12&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:D3ca340.png&amp;diff=1307</id>
		<title>File:D3ca340.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:D3ca340.png&amp;diff=1307"/>
		<updated>2026-01-31T06:22:11Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;12&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:D90.png&amp;diff=1306</id>
		<title>File:D90.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:D90.png&amp;diff=1306"/>
		<updated>2026-01-31T06:21:44Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;41&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:034b9.png&amp;diff=1305</id>
		<title>File:034b9.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:034b9.png&amp;diff=1305"/>
		<updated>2026-01-31T06:21:12Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;14&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:354.png&amp;diff=1304</id>
		<title>File:354.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:354.png&amp;diff=1304"/>
		<updated>2026-01-31T06:19:37Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;12&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:7cd2.png&amp;diff=1303</id>
		<title>File:7cd2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:7cd2.png&amp;diff=1303"/>
		<updated>2026-01-31T06:18:06Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;45&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:0ff5fe52.png&amp;diff=1302</id>
		<title>File:0ff5fe52.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:0ff5fe52.png&amp;diff=1302"/>
		<updated>2026-01-31T06:17:00Z</updated>

		<summary type="html">&lt;p&gt;Long：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Long</name></author>
	</entry>
</feed>