<?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=IWwwwww</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=IWwwwww"/>
	<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/IWwwwww"/>
	<updated>2026-05-30T23:41:56Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E9%83%A8%E7%BD%B2_Surge_Snell_%E5%8D%8F%E8%AE%AE&amp;diff=1967</id>
		<title>在搬瓦工机器上使用 Docker 部署 Surge Snell 协议</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E9%83%A8%E7%BD%B2_Surge_Snell_%E5%8D%8F%E8%AE%AE&amp;diff=1967"/>
		<updated>2026-04-16T06:51:06Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​创建页面，内容为“== Snell 协议说明 == Snell 是 [https://nssurge.com Surge]团队开发的私有协议，相对来说，因为用户体量较小（仅 Surge 用户可用），所以拥有&amp;#039;&amp;#039;&amp;#039;更强的私密性和抗封锁性&amp;#039;&amp;#039;&amp;#039;。&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;对我而言，我会同时部署 HY2 和 Snell，当 HY2 因为长时间流量过大等原因被临时禁用时，Snell 则成为备用协议可正常使用。&amp;#039;&amp;#039;&amp;#039;  关于 HY2 的 Docker 部署模式请查看：在搬瓦工机器上…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Snell 协议说明 ==&lt;br /&gt;
Snell 是 [https://nssurge.com Surge]团队开发的私有协议，相对来说，因为用户体量较小（仅 Surge 用户可用），所以拥有&#039;&#039;&#039;更强的私密性和抗封锁性&#039;&#039;&#039;。&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;对我而言，我会同时部署 HY2 和 Snell，当 HY2 因为长时间流量过大等原因被临时禁用时，Snell 则成为备用协议可正常使用。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
关于 HY2 的 Docker 部署模式请查看：[[在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)]]&amp;lt;/blockquote&amp;gt;另外，由于是私有协议，所以建议使用 [https://nssurge.com Surge 官方客户端]进行使用。（有其他第三方工具使用破解的协议，但是支持的版本仅 v2, v3，Snell 最新版本为 v5）&lt;br /&gt;
&lt;br /&gt;
有关 Snell 的更多说明请查看：[https://kb.nssurge.com/surge-knowledge-base/zh/release-notes/snell#surge-mac-as-snell-proxy-server 官方文档]&lt;br /&gt;
&lt;br /&gt;
== Docker Compose 配置 ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;如果你的服务器使用了 iptables 之类的防火墙，&#039;&#039;&#039;需要你手动开启 6333 的 tcp 和 udp 端口, 以及 6334 的 tcp  端口&#039;&#039;&#039;。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 创建 docker-compose.yaml: ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;services:&lt;br /&gt;
  snell:&lt;br /&gt;
    image: lovechen/snell:latest&lt;br /&gt;
    container_name: snell&lt;br /&gt;
    ports:&lt;br /&gt;
      - &amp;quot;6333:6333/tcp&amp;quot;&lt;br /&gt;
      - &amp;quot;6333:6333/udp&amp;quot;&lt;br /&gt;
      - &amp;quot;6334:6334&amp;quot;&lt;br /&gt;
    volumes:&lt;br /&gt;
      - ./config:/app/config&lt;br /&gt;
    environment:&lt;br /&gt;
      - TZ=Asia/Singapore&lt;br /&gt;
    restart: always&amp;lt;/syntaxhighlight&amp;gt;进入根目录使用：&#039;&#039;&#039;docker compose up -d&#039;&#039;&#039; 即可启动 snell 协议&#039;&#039;&#039;。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== 查看访问密钥和配置信息： ====&lt;br /&gt;
启动完成后，使用 &#039;&#039;&#039;docker compose logs snell&#039;&#039;&#039; 查看配置，你会看到以下输出：&amp;lt;blockquote&amp;gt;&amp;lt;IPv4&amp;gt; 即为你的服务器 ipv4 地址&lt;br /&gt;
&lt;br /&gt;
&amp;lt;密钥&amp;gt; 则为该协议使用的密码&lt;br /&gt;
&lt;br /&gt;
可以看到有两个配置，直连和 Snell + ShadowTLS，由于 Snell v5 向下兼容 v4，所以如果你的 surge 没有购买最新的订阅（不支持 v5, 但&#039;&#039;&#039;支持 v4&#039;&#039;&#039;），&#039;&#039;&#039;可以使用直连配置&#039;&#039;&#039;。&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;logos&amp;quot;&amp;gt;&lt;br /&gt;
 ███████╗███╗   ██╗███████╗██╗     ██╗             ██╗        ███████╗██╗  ██╗ █████╗ ██████╗  ██████╗ ██╗    ██╗████████╗██╗     ███████╗&lt;br /&gt;
 ██╔════╝████╗  ██║██╔════╝██║     ██║             ██║        ██╔════╝██║  ██║██╔══██╗██╔══██╗██╔═══██╗██║    ██║╚══██╔══╝██║     ██╔════╝&lt;br /&gt;
 ███████╗██╔██╗ ██║█████╗  ██║     ██║        ████████████╗   ███████╗███████║███████║██║  ██║██║   ██║██║ █╗ ██║   ██║   ██║     ███████╗&lt;br /&gt;
 ╚════██║██║╚██╗██║██╔══╝  ██║     ██║        ╚════██╔════╝   ╚════██║██╔══██║██╔══██║██║  ██║██║   ██║██║███╗██║   ██║   ██║     ╚════██║&lt;br /&gt;
 ███████║██║ ╚████║███████╗███████╗███████╗        ██║        ███████║██║  ██║██║  ██║██████╔╝╚██████╔╝╚███╔███╔╝   ██║   ███████╗███████║&lt;br /&gt;
 ╚══════╝╚═╝  ╚═══╝╚══════╝╚══════╝╚══════╝        ╚═╝        ╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝  ╚═════╝  ╚══╝╚══╝    ╚═╝   ╚══════╝╚══════╝&lt;br /&gt;
                                                                                                                                Created by LOVE&lt;br /&gt;
==========================================================================================================================================&lt;br /&gt;
Snell + ShadowTLS Service&lt;br /&gt;
Program Version: 25.12.19&lt;br /&gt;
Snell Server Version: 5.0.1&lt;br /&gt;
Snell Protocol Version: 5&lt;br /&gt;
ShadowTLS Version: 0.2.25&lt;br /&gt;
ShadowTLS Protocol Version: 3&lt;br /&gt;
2026/04/01 19:07:03 使用已存在的Snell配置文件&lt;br /&gt;
&lt;br /&gt;
=== Snell + ShadowTLS 配置信息 ===&lt;br /&gt;
2026/04/01 19:07:03 正在启动 Snell 服务器...&lt;br /&gt;
2026/04/01 19:07:03 正在启动 ShadowTLS 服务器...&lt;br /&gt;
&lt;br /&gt;
1. Snell直连配置:&lt;br /&gt;
Proxy = snell, &amp;lt;IPv4&amp;gt;, 6333, psk = &amp;lt;密钥&amp;gt;, version = 5, reuse=true, tfo=true&lt;br /&gt;
&lt;br /&gt;
2. Snell + ShadowTLS配置:&lt;br /&gt;
Proxy = snell, &amp;lt;IPv4&amp;gt;, 6334, psk = &amp;lt;密钥&amp;gt;, version = 5, reuse=true, tfo=true, shadow-tls-password = &amp;lt;TLS_PASS&amp;gt;, shadow-tls-sni = www.apple.com, shadow-tls-version = 3&lt;br /&gt;
&lt;br /&gt;
服务已启动!&lt;br /&gt;
Snell端口: 6333&lt;br /&gt;
ShadowTLS端口: 6334&lt;br /&gt;
2026/04/01 19:07:03 服务已启动，按 Ctrl+C 退出&lt;br /&gt;
2026-04-01T11:07:03.922305Z  INFO shadow_tls: Start 32-thread Server with:&lt;br /&gt;
Listen address: 0.0.0.0:6334&lt;br /&gt;
Target address: 127.0.0.1:6333&lt;br /&gt;
TLS server address: (wildcard-sni:off)fallback-&amp;gt;www.apple.com:443&lt;br /&gt;
TCP_NODELAY: true&lt;br /&gt;
TCP_FASTOPEN:true&lt;br /&gt;
V3 Protocol: enabled(lossy)&lt;br /&gt;
2026-04-01 11:07:03.934855 [server_main] &amp;lt;NOTIFY&amp;gt; snell-server v5.0.1 (Nov 19 2025 09:57:07)&lt;br /&gt;
2026-04-01 11:07:03.934893 [server_main] &amp;lt;ERR&amp;gt; Unknown obfs type: none&lt;br /&gt;
2026-04-01 11:07:03.935028 [server_main] &amp;lt;NOTIFY&amp;gt; Effective IPv4 DNS: 127.0.0.11&lt;br /&gt;
2026-04-01 11:07:03.935048 [server_main] &amp;lt;NOTIFY&amp;gt; Start snell server on 0.0.0.0:6333&lt;br /&gt;
2026-04-01 11:07:03.935074 [server_main] &amp;lt;NOTIFY&amp;gt; TCP Fast Open enabled&lt;br /&gt;
2026-04-01 11:07:03.935083 [server_main] &amp;lt;NOTIFY&amp;gt; Start snell quic proxy server. Please confirm that both TCP and UDP inbound to port 6333 has been enabled.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Surge 配置示例 ==&lt;br /&gt;
按照上方的配置信息填写 Server (&#039;&#039;&#039;IPv4 地址&#039;&#039;&#039;)，Port 6333（&#039;&#039;&#039;如果使用的是 Snell + ShadowTLS 则为 6334&#039;&#039;&#039;)，PSK 即为密钥。&lt;br /&gt;
&lt;br /&gt;
Protocol Version 协议版本：v4 （如果你不支持 v5，则选择 v4 即可）。&lt;br /&gt;
&lt;br /&gt;
Connection Reuse 连接复用，建议勾选。&lt;br /&gt;
&lt;br /&gt;
TCP Fast Open 快速启用，建议勾选。&lt;br /&gt;
&lt;br /&gt;
如果你使用的是 Snell + ShadowTLS 配置，在下方 ShadowTLS Version 中选择对应版本填入配置即可。&lt;br /&gt;
[[File:Surge Snell 配置.png|thumb|Surge Snell 配置1]]&lt;br /&gt;
[[File:Surge Snell 配置2.png|thumb|Surge Snell 配置2]]&lt;br /&gt;
&lt;br /&gt;
== Docker Compose 合并 HY2 ==&lt;br /&gt;
如果你想将 snell 协议和 hy2 协议合并，参考如下配置：&amp;lt;blockquote&amp;gt;具体的 hy2 配置请查看：[[在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)]]&amp;lt;/blockquote&amp;gt;配置完成后使用 &#039;&#039;&#039;docker compose up -d&#039;&#039;&#039; 即可&#039;&#039;&#039;同时启用 snell 和 hy2 协议&#039;&#039;&#039;。（查看 snell 配置依然是 &#039;&#039;&#039;docker compose logs snell&#039;&#039;&#039;)。&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
services:&lt;br /&gt;
  snell:&lt;br /&gt;
    image: lovechen/snell:latest&lt;br /&gt;
    container_name: snell&lt;br /&gt;
    ports:&lt;br /&gt;
      - &amp;quot;6333:6333/tcp&amp;quot;&lt;br /&gt;
      - &amp;quot;6333:6333/udp&amp;quot;&lt;br /&gt;
      - &amp;quot;6334:6334&amp;quot;&lt;br /&gt;
    volumes:&lt;br /&gt;
      - ./config:/app/config&lt;br /&gt;
    environment:&lt;br /&gt;
      - TZ=Asia/Singapore&lt;br /&gt;
    restart: always&lt;br /&gt;
    &lt;br /&gt;
  hysteria:&lt;br /&gt;
    image: tobyxdd/hysteria:v2.7.1&lt;br /&gt;
    container_name: hysteria&lt;br /&gt;
    restart: unless-stopped&lt;br /&gt;
    network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
    volumes:&lt;br /&gt;
      - acme:/acme&lt;br /&gt;
      - ./hysteria.yaml:/etc/hysteria.yaml&lt;br /&gt;
      - ./ssl:/root/ssl&lt;br /&gt;
    logging:&lt;br /&gt;
      driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
      options:&lt;br /&gt;
        max-size: &amp;quot;1m&amp;quot;&lt;br /&gt;
        max-file: &amp;quot;3&amp;quot;&lt;br /&gt;
    command: [&amp;quot;server&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;/etc/hysteria.yaml&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Surge_Snell_%E9%85%8D%E7%BD%AE2.png&amp;diff=1966</id>
		<title>File:Surge Snell 配置2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Surge_Snell_%E9%85%8D%E7%BD%AE2.png&amp;diff=1966"/>
		<updated>2026-04-16T06:37:42Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Snell 配置2&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Surge_Snell_%E9%85%8D%E7%BD%AE.png&amp;diff=1965</id>
		<title>File:Surge Snell 配置.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Surge_Snell_%E9%85%8D%E7%BD%AE.png&amp;diff=1965"/>
		<updated>2026-04-16T06:34:05Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Snell 配置&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1964</id>
		<title>在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1964"/>
		<updated>2026-04-16T05:59:54Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​update insecure desc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前置条件： ==&lt;br /&gt;
安装 docker, docker-compose&lt;br /&gt;
&lt;br /&gt;
你可以在 md5.pw 中找到安装教程，此处不再赘述。&lt;br /&gt;
&lt;br /&gt;
== 核心： ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意：这里需要你的 ssl 证书，不建议使用自签名证书（可使用免费的 ssl 证书），根据官方描述：开启自签名证书需要使用 insecure: true，开启此功能会降低安全性，使连接易受中间人攻击。&lt;br /&gt;
&lt;br /&gt;
证书文件放置于同目录的 ssl 子目录下，包含：&#039;&#039;&#039;certificate.crt&#039;&#039;&#039; 和 &#039;&#039;&#039;certificate.key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
micro-warp为 hy2 提供出站流量分流（部分ip被滥用时，会导致访问页面频繁出现 CAPTCHATs 验证弹窗，可以使用 micro-warp(cf-warp) 进行分流以避免验证弹窗的问题。&lt;br /&gt;
&lt;br /&gt;
创建 hysteria2 服务端配置文件 hysteria.yaml:&lt;br /&gt;
&lt;br /&gt;
⚠️ 你需要修改 &#039;&#039;&#039;auth.password&#039;&#039;&#039;: &amp;lt;PASSWORD&amp;gt;，这是你的 hy2 连接密码。&lt;br /&gt;
&lt;br /&gt;
默认监听端口为 &#039;&#039;&#039;8899&#039;&#039;&#039;，如有需要可自行修改 listen，注意不要丢弃端口前的冒号 `:` 。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 hy2 帮你分流，你可以将 outbounds: 和 acl: 全部注释掉。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 创建 hysteria.yaml ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;# Full Server Config:&lt;br /&gt;
#   refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config&lt;br /&gt;
&lt;br /&gt;
listen: :8899&lt;br /&gt;
&lt;br /&gt;
# 这里的路径是 docker 容器中的路径，不需要修改&lt;br /&gt;
tls:&lt;br /&gt;
  cert: /root/ssl/certificate.crt&lt;br /&gt;
  key: /root/ssl/certificate.key&lt;br /&gt;
  sniGuard: disable&lt;br /&gt;
  # clientCA: client.crt&lt;br /&gt;
&lt;br /&gt;
#bandwidth:&lt;br /&gt;
#  up: 1 gbps&lt;br /&gt;
#  down: 1 gbps&lt;br /&gt;
&lt;br /&gt;
# 启用该配置后始终使用 BBR 拥堵算法&lt;br /&gt;
#ignoreClientBandwidth: true&lt;br /&gt;
&lt;br /&gt;
# ⚠️ 不启用 bandwidth 和 ignoreClientBandwidth 时&lt;br /&gt;
# 客户端如果也没有配置带宽，则默认使用 bbr，否则使用 brutal 且以客户端设置的带宽为准&lt;br /&gt;
  &lt;br /&gt;
#speedTest: false&lt;br /&gt;
&lt;br /&gt;
# 通过 API 查询流量统计信息&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config/#api-http&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Traffic-Stats-API/&lt;br /&gt;
# curl -H &#039;Authorization: secret&#039; http://ip:port/traffic&lt;br /&gt;
trafficStats:&lt;br /&gt;
  listen: :9998&lt;br /&gt;
  secret: hysteria2-traffic&lt;br /&gt;
&lt;br /&gt;
auth:&lt;br /&gt;
  type: password&lt;br /&gt;
  password: &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
masquerade:&lt;br /&gt;
  type: proxy&lt;br /&gt;
  proxy:&lt;br /&gt;
      url: https://bing.in&lt;br /&gt;
      rewriteHost: true&lt;br /&gt;
      insecure: false&lt;br /&gt;
&lt;br /&gt;
# 以下配置，如果没有使用 cloudflare warp 则无需开启&lt;br /&gt;
# ⚠️ 这里的名字不能使用 `-`，否则无法识别&lt;br /&gt;
outbounds:&lt;br /&gt;
  - name: cf_warp&lt;br /&gt;
    type: socks5&lt;br /&gt;
    socks5:&lt;br /&gt;
      addr: 127.0.0.1:40000&lt;br /&gt;
      # `username` &amp;amp; `password` is Optional&lt;br /&gt;
      #username: hackerman&lt;br /&gt;
      #password: Elliot Alderson&lt;br /&gt;
&lt;br /&gt;
# 这里的规则从上到下进行匹配&lt;br /&gt;
acl:&lt;br /&gt;
  inline:&lt;br /&gt;
    - cf_warp(geoip:cloudflare)&lt;br /&gt;
    - cf_warp(geoip:google)&lt;br /&gt;
    - direct(all)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 创建 docker-compose.yaml ======&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意，我们使用的是 microwarp, 而不是官方的 cf-warp。&lt;br /&gt;
&lt;br /&gt;
microwarp&amp;lt;ref&amp;gt;microwarp 详情见：https://github.com/ccbkkb/MicroWARP&amp;lt;/ref&amp;gt; 占用内存极低，按照官方说明常驻内存大约 10MB（官方的常驻内存约为 200MB），因此对搬瓦工的小内存机型（768MB RAM) 非常友好。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 cf-warp 作为出站流量，可以将其注释掉（需同步修改 hysteria.yaml 配置）。&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;services:&lt;br /&gt;
    # refer: https://github.com/apernet/hysteria&lt;br /&gt;
    hysteria:&lt;br /&gt;
        image: tobyxdd/hysteria:v2.7.1&lt;br /&gt;
        container_name: hysteria&lt;br /&gt;
        restart: unless-stopped&lt;br /&gt;
        network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
        # 如果不需要 microwarp，请注释掉 depends_on: 和 - microwarp&lt;br /&gt;
        depends_on:&lt;br /&gt;
            - microwarp&lt;br /&gt;
        volumes:&lt;br /&gt;
            - acme:/acme&lt;br /&gt;
            - ./hysteria.yaml:/etc/hysteria.yaml&lt;br /&gt;
            - ./ssl:/root/ssl&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot;&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot;&lt;br /&gt;
        command: [&amp;quot;server&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;/etc/hysteria.yaml&amp;quot;]&lt;br /&gt;
        &lt;br /&gt;
    # 如果不需要 microwarp 请直接删除&lt;br /&gt;
    # refer: https://github.com/ccbkkb/MicroWARP&lt;br /&gt;
    microwarp:&lt;br /&gt;
        image: ghcr.io/ccbkkb/microwarp:latest&lt;br /&gt;
        container_name: microwarp&lt;br /&gt;
        restart: always&lt;br /&gt;
        ports:&lt;br /&gt;
            - &amp;quot;127.0.0.1:40000:1080&amp;quot; # 标准的无密码 SOCKS5 端口，仅监听本机&lt;br /&gt;
        cap_add:&lt;br /&gt;
            - NET_ADMIN&lt;br /&gt;
            - SYS_MODULE&lt;br /&gt;
        sysctls:&lt;br /&gt;
            - net.ipv4.conf.all.src_valid_mark=1&lt;br /&gt;
        volumes:&lt;br /&gt;
            - ./warp-data:/etc/wireguard&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot; #单个日志文件最大 3MB&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot; # 最多保留 3个 日志&lt;br /&gt;
        # 额外配置，按需开启即可&lt;br /&gt;
        # environment:&lt;br /&gt;
            # - BIND_ADDR=0.0.0.0     # Bind address (default: 0.0.0.0)&lt;br /&gt;
            # - BIND_PORT=1080        # Custom SOCKS5 port (default: 1080)&lt;br /&gt;
            # - SOCKS_USER=admin      # Enable authentication (leave empty for no auth)&lt;br /&gt;
            # - SOCKS_PASS=123456     # Auth password&lt;br /&gt;
            # - ENDPOINT_IP=162.159.193.10:2408 # Custom WARP Endpoint IP (Bypass regional blocks)&lt;br /&gt;
&lt;br /&gt;
volumes:&lt;br /&gt;
    acme:&amp;lt;/syntaxhighlight&amp;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;即可成功启用 HY2。&lt;br /&gt;
&lt;br /&gt;
== 客户端配置 ==&lt;br /&gt;
服务器ip:端口（默认为 8899），密码为你自行配置的密码。&lt;br /&gt;
&lt;br /&gt;
举例（Surge）：&amp;lt;blockquote&amp;gt;Server 为 服务器 IP 地址&lt;br /&gt;
&lt;br /&gt;
Port 为端口号，如果你没有修改的话默认就是 8899&lt;br /&gt;
&lt;br /&gt;
Password 为你配置的密码&lt;br /&gt;
&lt;br /&gt;
⚠️ 注意：Skip Certificate Verification 需要开启[[File:Surge HY2 Proxy.png|thumb|Surge 配置 Hy2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;至此，已全部配置完成。&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[index.php?title=Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1960</id>
		<title>在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1960"/>
		<updated>2026-04-15T21:36:29Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前置条件： ==&lt;br /&gt;
安装 docker, docker-compose&lt;br /&gt;
&lt;br /&gt;
你可以在 md5.pw 中找到安装教程，此处不再赘述。&lt;br /&gt;
&lt;br /&gt;
== 核心： ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意：这里需要你的 ssl 证书，只能使用认证机构颁发的证书，可以使用免费的 ssl 证书，但是：不能使用自签名证书，无法通过验证&lt;br /&gt;
&lt;br /&gt;
证书文件放置于同目录的 ssl 子目录下，包含：&#039;&#039;&#039;certificate.crt&#039;&#039;&#039; 和 &#039;&#039;&#039;certificate.key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
micro-warp为 hy2 提供出站流量分流（部分ip被滥用时，会导致访问页面频繁出现 CAPTCHATs 验证弹窗，可以使用 micro-warp(cf-warp) 进行分流以避免验证弹窗的问题。&lt;br /&gt;
&lt;br /&gt;
创建 hysteria2 服务端配置文件 hysteria.yaml:&lt;br /&gt;
&lt;br /&gt;
⚠️ 你需要修改 &#039;&#039;&#039;auth.password&#039;&#039;&#039;: &amp;lt;PASSWORD&amp;gt;，这是你的 hy2 连接密码。&lt;br /&gt;
&lt;br /&gt;
默认监听端口为 &#039;&#039;&#039;8899&#039;&#039;&#039;，如有需要可自行修改 listen，注意不要丢弃端口前的冒号 `:` 。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 hy2 帮你分流，你可以将 outbounds: 和 acl: 全部注释掉。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 创建 hysteria.yaml ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;# Full Server Config:&lt;br /&gt;
#   refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config&lt;br /&gt;
&lt;br /&gt;
listen: :8899&lt;br /&gt;
&lt;br /&gt;
tls:&lt;br /&gt;
  cert: /root/ssl/certificate.crt&lt;br /&gt;
  key: /root/ssl/certificate.key&lt;br /&gt;
  sniGuard: disable&lt;br /&gt;
  # clientCA: client.crt&lt;br /&gt;
&lt;br /&gt;
#bandwidth:&lt;br /&gt;
#  up: 1 gbps&lt;br /&gt;
#  down: 1 gbps&lt;br /&gt;
&lt;br /&gt;
# 启用该配置后始终使用 BBR 拥堵算法&lt;br /&gt;
#ignoreClientBandwidth: true&lt;br /&gt;
&lt;br /&gt;
# ⚠️ 不启用 bandwidth 和 ignoreClientBandwidth 时&lt;br /&gt;
# 客户端如果也没有配置带宽，则默认使用 bbr，否则使用 brutal 且以客户端设置的带宽为准&lt;br /&gt;
  &lt;br /&gt;
#speedTest: false&lt;br /&gt;
&lt;br /&gt;
# 通过 API 查询流量统计信息&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config/#api-http&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Traffic-Stats-API/&lt;br /&gt;
# curl -H &#039;Authorization: secret&#039; http://ip:port/traffic&lt;br /&gt;
trafficStats:&lt;br /&gt;
  listen: :9998&lt;br /&gt;
  secret: hysteria2-traffic&lt;br /&gt;
&lt;br /&gt;
auth:&lt;br /&gt;
  type: password&lt;br /&gt;
  password: &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
masquerade:&lt;br /&gt;
  type: proxy&lt;br /&gt;
  proxy:&lt;br /&gt;
      url: https://bing.in&lt;br /&gt;
      rewriteHost: true&lt;br /&gt;
      insecure: false&lt;br /&gt;
&lt;br /&gt;
# 以下配置，如果没有使用 cloudflare warp 则无需开启&lt;br /&gt;
# ⚠️ 这里的名字不能使用 `-`，否则无法识别&lt;br /&gt;
outbounds:&lt;br /&gt;
  - name: cf_warp&lt;br /&gt;
    type: socks5&lt;br /&gt;
    socks5:&lt;br /&gt;
      addr: 127.0.0.1:40000&lt;br /&gt;
      # `username` &amp;amp; `password` is Optional&lt;br /&gt;
      #username: hackerman&lt;br /&gt;
      #password: Elliot Alderson&lt;br /&gt;
&lt;br /&gt;
# 这里的规则从上到下进行匹配&lt;br /&gt;
acl:&lt;br /&gt;
  inline:&lt;br /&gt;
    - cf_warp(geoip:cloudflare)&lt;br /&gt;
    - cf_warp(geoip:google)&lt;br /&gt;
    - direct(all)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 创建 docker-compose.yaml ======&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意，我们使用的是 microwarp, 而不是官方的 cf-warp。&lt;br /&gt;
&lt;br /&gt;
microwarp&amp;lt;ref&amp;gt;microwarp 详情见：https://github.com/ccbkkb/MicroWARP&amp;lt;/ref&amp;gt; 占用内存极低，按照官方说明常驻内存大约 10MB（官方的常驻内存约为 200MB），因此对搬瓦工的小内存机型（768MB RAM) 非常友好。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 cf-warp 作为出站流量，可以将其注释掉（需同步修改 hysteria.yaml 配置）。&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;services:&lt;br /&gt;
    # refer: https://github.com/apernet/hysteria&lt;br /&gt;
    hysteria:&lt;br /&gt;
        image: tobyxdd/hysteria:v2.7.1&lt;br /&gt;
        container_name: hysteria&lt;br /&gt;
        restart: unless-stopped&lt;br /&gt;
        network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
        # 如果不需要 microwarp，请注释掉 depends_on: 和 - microwarp&lt;br /&gt;
        depends_on:&lt;br /&gt;
            - microwarp&lt;br /&gt;
        volumes:&lt;br /&gt;
            - acme:/acme&lt;br /&gt;
            - ./hysteria.yaml:/etc/hysteria.yaml&lt;br /&gt;
            - ./ssl:/root/ssl&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot;&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot;&lt;br /&gt;
        command: [&amp;quot;server&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;/etc/hysteria.yaml&amp;quot;]&lt;br /&gt;
        &lt;br /&gt;
    # 如果不需要 microwarp 请直接删除&lt;br /&gt;
    # refer: https://github.com/ccbkkb/MicroWARP&lt;br /&gt;
    microwarp:&lt;br /&gt;
        image: ghcr.io/ccbkkb/microwarp:latest&lt;br /&gt;
        container_name: microwarp&lt;br /&gt;
        restart: always&lt;br /&gt;
        ports:&lt;br /&gt;
            - &amp;quot;127.0.0.1:40000:1080&amp;quot; # 标准的无密码 SOCKS5 端口，仅监听本机&lt;br /&gt;
        cap_add:&lt;br /&gt;
            - NET_ADMIN&lt;br /&gt;
            - SYS_MODULE&lt;br /&gt;
        sysctls:&lt;br /&gt;
            - net.ipv4.conf.all.src_valid_mark=1&lt;br /&gt;
        volumes:&lt;br /&gt;
            - ./warp-data:/etc/wireguard&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot; #单个日志文件最大 3MB&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot; # 最多保留 3个 日志&lt;br /&gt;
        # 额外配置，按需开启即可&lt;br /&gt;
        # environment:&lt;br /&gt;
            # - BIND_ADDR=0.0.0.0     # Bind address (default: 0.0.0.0)&lt;br /&gt;
            # - BIND_PORT=1080        # Custom SOCKS5 port (default: 1080)&lt;br /&gt;
            # - SOCKS_USER=admin      # Enable authentication (leave empty for no auth)&lt;br /&gt;
            # - SOCKS_PASS=123456     # Auth password&lt;br /&gt;
            # - ENDPOINT_IP=162.159.193.10:2408 # Custom WARP Endpoint IP (Bypass regional blocks)&lt;br /&gt;
&lt;br /&gt;
volumes:&lt;br /&gt;
    acme:&amp;lt;/syntaxhighlight&amp;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;即可成功启用 HY2。&lt;br /&gt;
&lt;br /&gt;
== 客户端配置 ==&lt;br /&gt;
服务器ip:端口（默认为 8899），密码为你自行配置的密码。&lt;br /&gt;
&lt;br /&gt;
举例（Surge）：&amp;lt;blockquote&amp;gt;Server 为 服务器 IP 地址&lt;br /&gt;
&lt;br /&gt;
Port 为端口号，如果你没有修改的话默认就是 8899&lt;br /&gt;
&lt;br /&gt;
Password 为你配置的密码&lt;br /&gt;
&lt;br /&gt;
⚠️ 注意：Skip Certificate Verification 需要开启[[File:Surge HY2 Proxy.png|thumb|Surge 配置 Hy2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;至此，已全部配置完成。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1959</id>
		<title>在 Ubuntu VPS 上快速编译 Swift Vapor Project</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1959"/>
		<updated>2026-04-15T21:31:09Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前置说明：&amp;lt;blockquote&amp;gt;正常情况下，使用 Docker 编译 Vapor 项目，Swift 的编译缓存是无法使用的，也就是说每次编译 Vapor 项目都需要在 Docker 中将 swift-package、whole compile 全走一遍，我的云服务器在未优化流程之前，每次可能需要耗费十分钟以上。&amp;lt;/blockquote&amp;gt;测试编译的机器配置：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ubuntu 24.04, 2GB RAM, 2 vCPU&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 原理 ==&lt;br /&gt;
Vapor 提供的 Dockerfile 文件是将项目的编译、复制等操作都放到了 Docker 容器中进行，而 Docker 容器无法缓存编译信息（意思是下次编译时无法获取到上次的编译缓存进行增量编译），所以每次都会全量一遍。&lt;br /&gt;
&lt;br /&gt;
而 Vapor 运行，只需要编译后的 Run 产物和一些必要的 Public、Resource 资源。&lt;br /&gt;
&lt;br /&gt;
依照这个思路，我们可以将 Vapor 的编译放置到机器上进行，编译完成后，将 Run 和 Public、Resource 资源拷贝进 Docker 中即可。&lt;br /&gt;
&lt;br /&gt;
安装 Swift 可参考： [https://md5.pw/index.php?title=在搬瓦工VPS上安装_Swift_和他的依赖 在搬瓦工VPS上安装 Swift 和他的依赖]&lt;br /&gt;
&lt;br /&gt;
该安装方式与 Swift Docker 保持一致，我正在使用该方式。&lt;br /&gt;
&lt;br /&gt;
== 更多披露 ==&lt;br /&gt;
&lt;br /&gt;
==== 在 Vapor 项目中新建一个 &amp;lt;code&amp;gt;fastDockerfile&amp;lt;/code&amp;gt;, 内容如下： ====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;因为是在机器上编译，所以这里只需要使用 -noble/-slim 最小的镜像进行打包即可&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# ================================&lt;br /&gt;
# Copy Resources Image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM ubuntu:24.04 AS build&lt;br /&gt;
&lt;br /&gt;
# Set up a build area&lt;br /&gt;
WORKDIR /build&lt;br /&gt;
&lt;br /&gt;
# Copy entire repo into container&lt;br /&gt;
COPY . .&lt;br /&gt;
&lt;br /&gt;
# Switch to the staging area&lt;br /&gt;
WORKDIR /staging&lt;br /&gt;
&lt;br /&gt;
# Copy main executable to staging area&lt;br /&gt;
COPY ./Run ./&lt;br /&gt;
&lt;br /&gt;
# Copy any resources from the public directory and views directory if the directories exist&lt;br /&gt;
# Ensure that by default, neither the directory nor any of its contents are writable.&lt;br /&gt;
RUN [ -d /build/Public ] &amp;amp;&amp;amp; { mv /build/Public ./Public &amp;amp;&amp;amp; chmod -R a-w ./Public; } || true&lt;br /&gt;
RUN [ -d /build/Resources ] &amp;amp;&amp;amp; { mv /build/Resources ./Resources &amp;amp;&amp;amp; chmod -R a-w ./Resources; } || true&lt;br /&gt;
&lt;br /&gt;
# ================================&lt;br /&gt;
# Run image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM swift:6.2.1-focal-slim&lt;br /&gt;
&lt;br /&gt;
# Create a vapor user and group with /app as its home directory&lt;br /&gt;
RUN useradd --user-group --create-home --system --skel /dev/null --home-dir /app vapor&lt;br /&gt;
&lt;br /&gt;
# Switch to the new home directory&lt;br /&gt;
WORKDIR /app&lt;br /&gt;
&lt;br /&gt;
# Copy built executable and any staged resources from builder&lt;br /&gt;
COPY --from=build --chown=vapor:vapor /staging /app&lt;br /&gt;
&lt;br /&gt;
# Ensure all further commands run as the vapor user&lt;br /&gt;
USER vapor:vapor&lt;br /&gt;
&lt;br /&gt;
# Let Docker bind to port 8080&lt;br /&gt;
EXPOSE 8080&lt;br /&gt;
&lt;br /&gt;
# Set Language Encoding&lt;br /&gt;
ENV LANG C.UTF-8&lt;br /&gt;
ENV LC_ALL C.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Start the Vapor service when the image is run, default to listening on 8080 in production environment&lt;br /&gt;
ENTRYPOINT [&amp;quot;./Run&amp;quot;]&lt;br /&gt;
CMD [&amp;quot;serve&amp;quot;, &amp;quot;--env&amp;quot;, &amp;quot;production&amp;quot;, &amp;quot;--hostname&amp;quot;, &amp;quot;0.0.0.0&amp;quot;, &amp;quot;--port&amp;quot;, &amp;quot;8080&amp;quot;]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;编写脚本 &amp;lt;code&amp;gt;fast_build.sh&amp;lt;/code&amp;gt;:&#039;&#039;&#039; ====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;请注意，调用脚本时需要提供镜像名称&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
local IMAGE_NAME=${1:-&amp;quot;custom-image:latest&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 fast building start&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# stop when happen error&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git pull&amp;quot;&lt;br /&gt;
git pull&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git submodule update --remote&amp;quot;&lt;br /&gt;
git submodule update --remote&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; swift build&amp;quot;&lt;br /&gt;
swift build -c release&lt;br /&gt;
&lt;br /&gt;
# move run to .&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; copy {Run} to ./Run&amp;quot;&lt;br /&gt;
cp .build/x86_64-unknown-linux-gnu/release/Run ./Run&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; docker build&amp;quot;&lt;br /&gt;
docker build -f fastDockerfile . -t $IMAGE_NAME&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; rm local ./Run&amp;quot;&lt;br /&gt;
rm -rf ./Run&lt;br /&gt;
&lt;br /&gt;
# redirect&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; sh redirect.main.sh&amp;quot;&lt;br /&gt;
docker-compose -f docker-compose.yml up -d&lt;br /&gt;
&lt;br /&gt;
# force clean &amp;lt;none&amp;gt; docker images&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; clean invalid images&amp;quot;&lt;br /&gt;
docker image rm -f $(docker images -f dangling=true -q)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; 🎉🎉🎉 all of done ~&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;🎉 OK&lt;br /&gt;
&lt;br /&gt;
== 验证 ==&lt;br /&gt;
验证工作，在服务器上快速编译时，使用 &amp;lt;pre&amp;gt;&lt;br /&gt;
bash fast_build.sh &amp;lt;镜像名称&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;例如：&amp;lt;pre&amp;gt;&lt;br /&gt;
bash fast_build.sh my-image:latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;该脚本将使用上次编译的缓存（因为是在机器上编译，而 Dockerfile 只是将机器上编译完成的产物打包成镜像），因此将增量编译时间缩短至 1 分钟以内，极小的改动仅需 3~8 秒即可完成。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1958</id>
		<title>在搬瓦工VPS上安装 Swift 和他的依赖</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1958"/>
		<updated>2026-04-15T21:18:53Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04 或 22.04（不建议使用更低的版本）&amp;lt;br&amp;gt;- RAM 内存 &amp;gt;= 2GB &amp;lt;br&amp;gt;- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
当RAM内存过低时容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382] &amp;lt;br&amp;gt;[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 2. 安装 ==&lt;br /&gt;
&lt;br /&gt;
==== 2.1 安装 Swift ====&lt;br /&gt;
&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ &lt;br /&gt;
    tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ ./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \ &lt;br /&gt;
    . &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
    hash -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
swiftly --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
输出版本号（类似: 1.1.1 ) 即为安装成功。&lt;br /&gt;
&lt;br /&gt;
==== 2.2 安装必要的一些依赖包 ====&lt;br /&gt;
依赖包的获取方式可以在官方提供的 Dockerfile 中查看：&lt;br /&gt;
&lt;br /&gt;
例如：[https://github.com/swiftlang/swift-docker/blob/main/6.3/ubuntu/24.04/Dockerfile ubuntu-24.04/Dockerfile]&lt;br /&gt;
&lt;br /&gt;
可以看到：&amp;lt;syntaxhighlight lang=&amp;quot;dockerfile&amp;quot;&amp;gt;&lt;br /&gt;
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true &amp;amp;&amp;amp; apt-get -q update &amp;amp;&amp;amp; \&lt;br /&gt;
    apt-get -q install -y \&lt;br /&gt;
    binutils \&lt;br /&gt;
    git \&lt;br /&gt;
    unzip \&lt;br /&gt;
    gnupg2 \&lt;br /&gt;
    libc6-dev \&lt;br /&gt;
    libcurl4-openssl-dev \&lt;br /&gt;
    libedit2 \&lt;br /&gt;
    libgcc-13-dev \&lt;br /&gt;
    libpython3-dev \&lt;br /&gt;
    libsqlite3-0 \&lt;br /&gt;
    libstdc++-13-dev \&lt;br /&gt;
    libxml2-dev \&lt;br /&gt;
    libncurses-dev \&lt;br /&gt;
    libz3-dev \&lt;br /&gt;
    pkg-config \&lt;br /&gt;
    tzdata \&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;这个就是我们需要安装的依赖包。直接复制在终端运行即可。&lt;br /&gt;
&lt;br /&gt;
运行完毕后，至此就已全部完成：Swift 安装以及必要依赖包安装。&lt;br /&gt;
[[index.php?title=Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1955</id>
		<title>在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1955"/>
		<updated>2026-04-15T19:53:37Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前置条件： ==&lt;br /&gt;
安装 docker, docker-compose&lt;br /&gt;
&lt;br /&gt;
你可以在 md5.pw 中找到安装教程，此处不再赘述。&lt;br /&gt;
&lt;br /&gt;
== 核心： ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意：这里需要你的 ssl 证书，只能使用认证机构颁发的证书，可以使用免费的 ssl 证书，但是：不能使用自签名证书，无法通过验证&lt;br /&gt;
&lt;br /&gt;
证书文件放置于同目录的 ssl 子目录下，包含：&#039;&#039;&#039;certificate.crt&#039;&#039;&#039; 和 &#039;&#039;&#039;certificate.key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
micro-warp为 hy2 提供出站流量分流（部分ip被滥用时，会导致访问页面频繁出现 CAPTCHATs 验证弹窗，可以使用 micro-warp(cf-warp) 进行分流以避免验证弹窗的问题。&amp;lt;/blockquote&amp;gt;创建 hysteria2 服务端配置文件 hysteria.yaml:&lt;br /&gt;
&lt;br /&gt;
⚠️ 你需要修改 &#039;&#039;&#039;auth.password&#039;&#039;&#039;: &amp;lt;PASSWORD&amp;gt;，这是你的 hy2 连接密码。&lt;br /&gt;
&lt;br /&gt;
默认监听端口为 &#039;&#039;&#039;8899&#039;&#039;&#039;，如有需要可自行修改 listen，注意不要丢弃端口前的冒号 `:` 。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 hy2 帮你分流，你可以将 outbounds: 和 acl: 全部注释掉。&lt;br /&gt;
&lt;br /&gt;
====== 创建 hysteria.yaml ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;# Full Server Config:&lt;br /&gt;
#   refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config&lt;br /&gt;
&lt;br /&gt;
listen: :8899&lt;br /&gt;
&lt;br /&gt;
tls:&lt;br /&gt;
  cert: /root/ssl/certificate.crt&lt;br /&gt;
  key: /root/ssl/certificate.key&lt;br /&gt;
  sniGuard: disable&lt;br /&gt;
  # clientCA: client.crt&lt;br /&gt;
&lt;br /&gt;
#bandwidth:&lt;br /&gt;
#  up: 1 gbps&lt;br /&gt;
#  down: 1 gbps&lt;br /&gt;
&lt;br /&gt;
# 启用该配置后始终使用 BBR 拥堵算法&lt;br /&gt;
#ignoreClientBandwidth: true&lt;br /&gt;
&lt;br /&gt;
# ⚠️ 不启用 bandwidth 和 ignoreClientBandwidth 时&lt;br /&gt;
# 客户端如果也没有配置带宽，则默认使用 bbr，否则使用 brutal 且以客户端设置的带宽为准&lt;br /&gt;
  &lt;br /&gt;
#speedTest: false&lt;br /&gt;
&lt;br /&gt;
# 通过 API 查询流量统计信息&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config/#api-http&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Traffic-Stats-API/&lt;br /&gt;
# curl -H &#039;Authorization: secret&#039; http://ip:port/traffic&lt;br /&gt;
trafficStats:&lt;br /&gt;
  listen: :9998&lt;br /&gt;
  secret: hysteria2-traffic&lt;br /&gt;
&lt;br /&gt;
auth:&lt;br /&gt;
  type: password&lt;br /&gt;
  password: &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
masquerade:&lt;br /&gt;
  type: proxy&lt;br /&gt;
  proxy:&lt;br /&gt;
      url: https://bing.in&lt;br /&gt;
      rewriteHost: true&lt;br /&gt;
      insecure: false&lt;br /&gt;
&lt;br /&gt;
# 以下配置，如果没有使用 cloudflare warp 则无需开启&lt;br /&gt;
# ⚠️ 这里的名字不能使用 `-`，否则无法识别&lt;br /&gt;
outbounds:&lt;br /&gt;
  - name: cf_warp&lt;br /&gt;
    type: socks5&lt;br /&gt;
    socks5:&lt;br /&gt;
      addr: 127.0.0.1:40000&lt;br /&gt;
      # `username` &amp;amp; `password` is Optional&lt;br /&gt;
      #username: hackerman&lt;br /&gt;
      #password: Elliot Alderson&lt;br /&gt;
&lt;br /&gt;
# 这里的规则从上到下进行匹配&lt;br /&gt;
acl:&lt;br /&gt;
  inline:&lt;br /&gt;
    - cf_warp(geoip:cloudflare)&lt;br /&gt;
    - cf_warp(geoip:google)&lt;br /&gt;
    - direct(all)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== 创建 docker-compose.yaml ======&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ 注意，我们使用的是 microwarp, 而不是官方的 cf-warp。microwarp&amp;lt;ref&amp;gt;microwarp 详情见：https://github.com/ccbkkb/MicroWARP&amp;lt;/ref&amp;gt; 占用内存极低，按照官方说明最小可为 880 KB 即可运行（官方约为 200MB）。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 cf-warp 作为出站流量，可以将其注释掉（需同步修改 hysteria.yaml 配置）。&amp;lt;/blockquote&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;services:&lt;br /&gt;
    # refer: https://github.com/apernet/hysteria&lt;br /&gt;
    hysteria:&lt;br /&gt;
        image: tobyxdd/hysteria:v2.7.1&lt;br /&gt;
        container_name: hysteria&lt;br /&gt;
        restart: unless-stopped&lt;br /&gt;
        network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
        depends_on:&lt;br /&gt;
            - microwarp&lt;br /&gt;
        volumes:&lt;br /&gt;
            - acme:/acme&lt;br /&gt;
            - ./hysteria.yaml:/etc/hysteria.yaml&lt;br /&gt;
            - ./ssl:/root/ssl&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot;&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot;&lt;br /&gt;
        command: [&amp;quot;server&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;/etc/hysteria.yaml&amp;quot;]&lt;br /&gt;
        &lt;br /&gt;
    # refer: https://github.com/ccbkkb/MicroWARP&lt;br /&gt;
    microwarp:&lt;br /&gt;
        image: ghcr.io/ccbkkb/microwarp:latest&lt;br /&gt;
        container_name: microwarp&lt;br /&gt;
        restart: always&lt;br /&gt;
        ports:&lt;br /&gt;
            - &amp;quot;127.0.0.1:40000:1080&amp;quot; # 标准的无密码 SOCKS5 端口，仅监听本机&lt;br /&gt;
        cap_add:&lt;br /&gt;
            - NET_ADMIN&lt;br /&gt;
            - SYS_MODULE&lt;br /&gt;
        sysctls:&lt;br /&gt;
            - net.ipv4.conf.all.src_valid_mark=1&lt;br /&gt;
        volumes:&lt;br /&gt;
            - ./warp-data:/etc/wireguard&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot; #单个日志文件最大 3MB&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot; # 最多保留 3个 日志&lt;br /&gt;
        # 额外配置，按需开启即可&lt;br /&gt;
        # environment:&lt;br /&gt;
            # - BIND_ADDR=0.0.0.0     # Bind address (default: 0.0.0.0)&lt;br /&gt;
            # - BIND_PORT=1080        # Custom SOCKS5 port (default: 1080)&lt;br /&gt;
            # - SOCKS_USER=admin      # Enable authentication (leave empty for no auth)&lt;br /&gt;
            # - SOCKS_PASS=123456     # Auth password&lt;br /&gt;
            # - ENDPOINT_IP=162.159.193.10:2408 # Custom WARP Endpoint IP (Bypass regional blocks)&lt;br /&gt;
&lt;br /&gt;
volumes:&lt;br /&gt;
    acme:&amp;lt;/syntaxhighlight&amp;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;即可成功启用 HY2。&lt;br /&gt;
&lt;br /&gt;
== 客户端配置 ==&lt;br /&gt;
服务器ip:端口（默认为 8899），密码为你自行配置的密码。&lt;br /&gt;
&lt;br /&gt;
举例（Surge）：&amp;lt;blockquote&amp;gt;Server 为 服务器 IP 地址&lt;br /&gt;
&lt;br /&gt;
Port 为端口号，如果你没有修改的话默认就是 8899&lt;br /&gt;
&lt;br /&gt;
Password 为你配置的密码&lt;br /&gt;
&lt;br /&gt;
⚠️ 注意：Skip Certificate Verification 需要开启[[File:Surge HY2 Proxy.png|thumb|Surge 配置 Hy2]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;至此，已全部配置完成。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1954</id>
		<title>在搬瓦工机器上使用 Docker 快速部署 Hysteria2 (HY2) 以及 cloudflare-warp (cf-warp)</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8_Docker_%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2_Hysteria2_(HY2)_%E4%BB%A5%E5%8F%8A_cloudflare-warp_(cf-warp)&amp;diff=1954"/>
		<updated>2026-04-15T19:48:36Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​创建页面，内容为“== 前置条件： == 安装 docker, docker-compose  你可以在 md5.pw 中找到安装教程，此处不再赘述。  == 核心： == &amp;lt;blockquote&amp;gt; ===== ⚠️ 注意：这里需要你的 ssl 证书，只能使用认证机构颁发的证书，可以使用免费的 ssl 证书，但是：不能使用自签名证书，无法通过验证 ===== 证书文件放置于同目录的 ssl 子目录下，包含：&amp;#039;&amp;#039;&amp;#039;certificate.crt&amp;#039;&amp;#039;&amp;#039; 和 &amp;#039;&amp;#039;&amp;#039;certificate.key&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前置条件： ==&lt;br /&gt;
安装 docker, docker-compose&lt;br /&gt;
&lt;br /&gt;
你可以在 md5.pw 中找到安装教程，此处不再赘述。&lt;br /&gt;
&lt;br /&gt;
== 核心： ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
===== ⚠️ 注意：这里需要你的 ssl 证书，只能使用认证机构颁发的证书，可以使用免费的 ssl 证书，但是：不能使用自签名证书，无法通过验证 =====&lt;br /&gt;
证书文件放置于同目录的 ssl 子目录下，包含：&#039;&#039;&#039;certificate.crt&#039;&#039;&#039; 和 &#039;&#039;&#039;certificate.key&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;创建 hysteria2 服务端配置文件 hysteria.yaml:&lt;br /&gt;
&lt;br /&gt;
⚠️ 你需要修改 &#039;&#039;&#039;auth.password&#039;&#039;&#039;: &amp;lt;PASSWORD&amp;gt;，这是你的 hy2 连接密码。&lt;br /&gt;
&lt;br /&gt;
默认监听端口为 &#039;&#039;&#039;8899&#039;&#039;&#039;，如有需要可自行修改 listen，注意不要丢弃端口前的冒号 `:` 。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 hy2 帮你分流，你可以将 outbounds: 和 acl: 全部注释掉。&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;# Full Server Config:&lt;br /&gt;
#   refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config&lt;br /&gt;
&lt;br /&gt;
listen: :8899&lt;br /&gt;
&lt;br /&gt;
tls:&lt;br /&gt;
  cert: /root/ssl/certificate.crt&lt;br /&gt;
  key: /root/ssl/certificate.key&lt;br /&gt;
  sniGuard: disable&lt;br /&gt;
  # clientCA: client.crt&lt;br /&gt;
&lt;br /&gt;
#bandwidth:&lt;br /&gt;
#  up: 1 gbps&lt;br /&gt;
#  down: 1 gbps&lt;br /&gt;
&lt;br /&gt;
# 启用该配置后始终使用 BBR 拥堵算法&lt;br /&gt;
#ignoreClientBandwidth: true&lt;br /&gt;
&lt;br /&gt;
# ⚠️ 不启用 bandwidth 和 ignoreClientBandwidth 时&lt;br /&gt;
# 客户端如果也没有配置带宽，则默认使用 bbr，否则使用 brutal 且以客户端设置的带宽为准&lt;br /&gt;
  &lt;br /&gt;
#speedTest: false&lt;br /&gt;
&lt;br /&gt;
# 通过 API 查询流量统计信息&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Full-Server-Config/#api-http&lt;br /&gt;
# refer: https://v2.hysteria.network/zh/docs/advanced/Traffic-Stats-API/&lt;br /&gt;
# curl -H &#039;Authorization: secret&#039; http://ip:port/traffic&lt;br /&gt;
trafficStats:&lt;br /&gt;
  listen: :9998&lt;br /&gt;
  secret: hysteria2-traffic&lt;br /&gt;
&lt;br /&gt;
auth:&lt;br /&gt;
  type: password&lt;br /&gt;
  password: &amp;lt;PASSWORD&amp;gt;&lt;br /&gt;
&lt;br /&gt;
masquerade:&lt;br /&gt;
  type: proxy&lt;br /&gt;
  proxy:&lt;br /&gt;
      url: https://bing.in&lt;br /&gt;
      rewriteHost: true&lt;br /&gt;
      insecure: false&lt;br /&gt;
&lt;br /&gt;
# 以下配置，如果没有使用 cloudflare warp 则无需开启&lt;br /&gt;
# ⚠️ 这里的名字不能使用 `-`，否则无法识别&lt;br /&gt;
outbounds:&lt;br /&gt;
  - name: cf_warp&lt;br /&gt;
    type: socks5&lt;br /&gt;
    socks5:&lt;br /&gt;
      addr: 127.0.0.1:40000&lt;br /&gt;
      # `username` &amp;amp; `password` is Optional&lt;br /&gt;
      #username: hackerman&lt;br /&gt;
      #password: Elliot Alderson&lt;br /&gt;
&lt;br /&gt;
# 这里的规则从上到下进行匹配&lt;br /&gt;
acl:&lt;br /&gt;
  inline:&lt;br /&gt;
    - cf_warp(geoip:cloudflare)&lt;br /&gt;
    - cf_warp(geoip:google)&lt;br /&gt;
    - direct(all)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 创建 docker-compose.yaml =====&lt;br /&gt;
⚠️ 注意，我们使用的是 microwarp, 而不是官方的 cf-warp。microwarp&amp;lt;ref&amp;gt;microwarp 详情见：https://github.com/ccbkkb/MicroWARP&amp;lt;/ref&amp;gt; 占用内存极低，按照官方说明最小可为 880 KB 即可运行（官方约为 200MB）。&lt;br /&gt;
&lt;br /&gt;
⚠️ 如果你不需要 cf-warp 作为出站流量，可以将其注释掉（需同步修改 hysteria.yaml 配置）。&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;services:&lt;br /&gt;
    # refer: https://github.com/apernet/hysteria&lt;br /&gt;
    hysteria:&lt;br /&gt;
        image: tobyxdd/hysteria:v2.7.1&lt;br /&gt;
        container_name: hysteria&lt;br /&gt;
        restart: unless-stopped&lt;br /&gt;
        network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
        depends_on:&lt;br /&gt;
            - microwarp&lt;br /&gt;
        volumes:&lt;br /&gt;
            - acme:/acme&lt;br /&gt;
            - ./hysteria.yaml:/etc/hysteria.yaml&lt;br /&gt;
            - ./ssl:/root/ssl&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot;&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot;&lt;br /&gt;
        command: [&amp;quot;server&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;/etc/hysteria.yaml&amp;quot;]&lt;br /&gt;
        &lt;br /&gt;
    # refer: https://github.com/ccbkkb/MicroWARP&lt;br /&gt;
    microwarp:&lt;br /&gt;
        image: ghcr.io/ccbkkb/microwarp:latest&lt;br /&gt;
        container_name: microwarp&lt;br /&gt;
        restart: always&lt;br /&gt;
        ports:&lt;br /&gt;
            - &amp;quot;127.0.0.1:40000:1080&amp;quot; # 标准的无密码 SOCKS5 端口，仅监听本机&lt;br /&gt;
        cap_add:&lt;br /&gt;
            - NET_ADMIN&lt;br /&gt;
            - SYS_MODULE&lt;br /&gt;
        sysctls:&lt;br /&gt;
            - net.ipv4.conf.all.src_valid_mark=1&lt;br /&gt;
        volumes:&lt;br /&gt;
            - ./warp-data:/etc/wireguard&lt;br /&gt;
        logging:&lt;br /&gt;
            driver: &amp;quot;json-file&amp;quot;&lt;br /&gt;
            options:&lt;br /&gt;
                max-size: &amp;quot;1m&amp;quot; #单个日志文件最大 3MB&lt;br /&gt;
                max-file: &amp;quot;3&amp;quot; # 最多保留 3个 日志&lt;br /&gt;
        # 额外配置，按需开启即可&lt;br /&gt;
        # environment:&lt;br /&gt;
            # - BIND_ADDR=0.0.0.0     # Bind address (default: 0.0.0.0)&lt;br /&gt;
            # - BIND_PORT=1080        # Custom SOCKS5 port (default: 1080)&lt;br /&gt;
            # - SOCKS_USER=admin      # Enable authentication (leave empty for no auth)&lt;br /&gt;
            # - SOCKS_PASS=123456     # Auth password&lt;br /&gt;
            # - ENDPOINT_IP=162.159.193.10:2408 # Custom WARP Endpoint IP (Bypass regional blocks)&lt;br /&gt;
&lt;br /&gt;
volumes:&lt;br /&gt;
    acme:&amp;lt;/syntaxhighlight&amp;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;即可成功启用 HY2。&lt;br /&gt;
&lt;br /&gt;
== 客户端配置 ==&lt;br /&gt;
服务器ip:端口（默认为 8899），密码为你自行配置的密码。&lt;br /&gt;
&lt;br /&gt;
举例（Surge）：&amp;lt;blockquote&amp;gt;Server 为 服务器 IP 地址&lt;br /&gt;
&lt;br /&gt;
Port 为端口号，如果你没有修改的话默认就是 8899&lt;br /&gt;
&lt;br /&gt;
Password 为你配置的密码&lt;br /&gt;
&lt;br /&gt;
⚠️ 注意：Skip Certificate Verification 需要开启&amp;lt;/blockquote&amp;gt;至此，已全部配置完成。&lt;br /&gt;
[[File:Surge HY2 Proxy.png|thumb]]&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Surge_HY2_Proxy.png&amp;diff=1953</id>
		<title>File:Surge HY2 Proxy.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Surge_HY2_Proxy.png&amp;diff=1953"/>
		<updated>2026-04-15T19:45:08Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Surge Hysterai2 (HY2) 配置&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1952</id>
		<title>在 Ubuntu VPS 上快速编译 Swift Vapor Project</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1952"/>
		<updated>2026-04-15T18:51:16Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前置说明：&amp;lt;blockquote&amp;gt;正常情况下，使用 Docker 编译 Vapor 项目，Swift 的编译缓存是无法使用的，也就是说每次编译 Vapor 项目都需要在 Docker 中将 swift-package、whole compile 全走一遍，我的云服务器在未优化流程之前，每次可能需要耗费十分钟以上。&amp;lt;/blockquote&amp;gt;测试编译的机器配置：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ubuntu 24.04, 2GB RAM, 2 vCPU&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 原理 ==&lt;br /&gt;
Vapor 提供的 Dockerfile 文件是将项目的编译、复制等操作都放到了 Docker 容器中进行，而 Docker 容器无法缓存编译信息（意思是下次编译时无法获取到上次的编译缓存进行增量编译），所以每次都会全量一遍。&lt;br /&gt;
&lt;br /&gt;
而 Vapor 运行，只需要编译后的 Run 产物和一些必要的 Public、Resource 资源。&lt;br /&gt;
&lt;br /&gt;
依照这个思路，我们可以将 Vapor 的编译放置到机器上进行，编译完成后，将 Run 和 Public、Resource 资源拷贝进 Docker 中即可。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;⚠️ 注意&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
编译机器的 Swift 安装路径最好与 Docker 中的 swift 安装路径保持一致，不然可能会导致 Docker 中运行时找不到动态库之类的情况。&lt;br /&gt;
&lt;br /&gt;
安装 Swift 可参考： [https://md5.pw/index.php?title=在搬瓦工VPS上安装_Swift_和他的依赖 在搬瓦工VPS上安装 Swift 和他的依赖]&lt;br /&gt;
&lt;br /&gt;
该安装方式与 Swift Docker 保持一致，我正在使用该方式。&lt;br /&gt;
&lt;br /&gt;
== 更多披露 ==&lt;br /&gt;
我在 Vapor 项目中新建了一个 &amp;lt;code&amp;gt;fastDockerfile&amp;lt;/code&amp;gt;, 内容如下：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# ================================&lt;br /&gt;
# Copy Resources Image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM ubuntu:24.04 AS build&lt;br /&gt;
&lt;br /&gt;
# Set up a build area&lt;br /&gt;
WORKDIR /build&lt;br /&gt;
&lt;br /&gt;
# Copy entire repo into container&lt;br /&gt;
COPY . .&lt;br /&gt;
&lt;br /&gt;
# Switch to the staging area&lt;br /&gt;
WORKDIR /staging&lt;br /&gt;
&lt;br /&gt;
# Copy main executable to staging area&lt;br /&gt;
COPY ./Run ./&lt;br /&gt;
&lt;br /&gt;
# Copy any resources from the public directory and views directory if the directories exist&lt;br /&gt;
# Ensure that by default, neither the directory nor any of its contents are writable.&lt;br /&gt;
RUN [ -d /build/Public ] &amp;amp;&amp;amp; { mv /build/Public ./Public &amp;amp;&amp;amp; chmod -R a-w ./Public; } || true&lt;br /&gt;
RUN [ -d /build/Resources ] &amp;amp;&amp;amp; { mv /build/Resources ./Resources &amp;amp;&amp;amp; chmod -R a-w ./Resources; } || true&lt;br /&gt;
&lt;br /&gt;
# ================================&lt;br /&gt;
# Run image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM swift:6.2.1-focal-slim&lt;br /&gt;
&lt;br /&gt;
# Create a vapor user and group with /app as its home directory&lt;br /&gt;
RUN useradd --user-group --create-home --system --skel /dev/null --home-dir /app vapor&lt;br /&gt;
&lt;br /&gt;
# Switch to the new home directory&lt;br /&gt;
WORKDIR /app&lt;br /&gt;
&lt;br /&gt;
# Copy built executable and any staged resources from builder&lt;br /&gt;
COPY --from=build --chown=vapor:vapor /staging /app&lt;br /&gt;
&lt;br /&gt;
# Ensure all further commands run as the vapor user&lt;br /&gt;
USER vapor:vapor&lt;br /&gt;
&lt;br /&gt;
# Let Docker bind to port 8080&lt;br /&gt;
EXPOSE 8080&lt;br /&gt;
&lt;br /&gt;
# Set Language Encoding&lt;br /&gt;
ENV LANG C.UTF-8&lt;br /&gt;
ENV LC_ALL C.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Start the Vapor service when the image is run, default to listening on 8080 in production environment&lt;br /&gt;
ENTRYPOINT [&amp;quot;./Run&amp;quot;]&lt;br /&gt;
CMD [&amp;quot;serve&amp;quot;, &amp;quot;--env&amp;quot;, &amp;quot;production&amp;quot;, &amp;quot;--hostname&amp;quot;, &amp;quot;0.0.0.0&amp;quot;, &amp;quot;--port&amp;quot;, &amp;quot;8080&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;然后编写了一个脚本 &amp;lt;code&amp;gt;fast_build.sh&amp;lt;/code&amp;gt;:&#039;&#039;&#039; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 fast building start&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# stop when happen error&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git pull&amp;quot;&lt;br /&gt;
git pull&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git submodule update --remote&amp;quot;&lt;br /&gt;
git submodule update --remote&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; swift build&amp;quot;&lt;br /&gt;
swift build -c release&lt;br /&gt;
&lt;br /&gt;
# move run to .&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; copy {Run} to ./Run&amp;quot;&lt;br /&gt;
cp .build/x86_64-unknown-linux-gnu/release/Run ./Run&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; docker build&amp;quot;&lt;br /&gt;
docker build -f fastDockerfile . -t your-vapor-project-name-on-docker:latest&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; rm local ./Run&amp;quot;&lt;br /&gt;
rm -rf ./Run&lt;br /&gt;
&lt;br /&gt;
# redirect&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; sh redirect.main.sh&amp;quot;&lt;br /&gt;
docker-compose -f docker-compose.yml up -d&lt;br /&gt;
&lt;br /&gt;
# force clean &amp;lt;none&amp;gt; docker images&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; clean invalid images&amp;quot;&lt;br /&gt;
docker image rm -f $(docker images -f dangling=true -q)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; 🎉🎉🎉 all of done ~&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;🎉 OK，最后在服务器上快速编译时，使用 `bash fast_build.sh` 即可使用上次编译的缓存，将编译时间缩短至 1 分钟以内。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1951</id>
		<title>在 Ubuntu VPS 上快速编译 Swift Vapor Project</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8_Ubuntu_VPS_%E4%B8%8A%E5%BF%AB%E9%80%9F%E7%BC%96%E8%AF%91_Swift_Vapor_Project&amp;diff=1951"/>
		<updated>2026-04-15T18:48:15Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​创建页面，内容为“前置说明：&amp;lt;blockquote&amp;gt;正常情况下，使用 Docker 编译 Vapor 项目，Swift 的编译缓存是无法使用的，也就是说每次编译 Vapor 项目都需要在 Docker 中将 swift-package、whole compile 全走一遍，我的云服务器在未优化流程之前，每次可能需要耗费十分钟以上。&amp;lt;/blockquote&amp;gt;测试编译的机器配置：  &amp;#039;&amp;#039;&amp;#039;Ubuntu 24.04, 2GB RAM, 2 vCPU&amp;#039;&amp;#039;&amp;#039;  == 原理 == Vapor 提供的 Dockerfile 文件是将项目的编…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前置说明：&amp;lt;blockquote&amp;gt;正常情况下，使用 Docker 编译 Vapor 项目，Swift 的编译缓存是无法使用的，也就是说每次编译 Vapor 项目都需要在 Docker 中将 swift-package、whole compile 全走一遍，我的云服务器在未优化流程之前，每次可能需要耗费十分钟以上。&amp;lt;/blockquote&amp;gt;测试编译的机器配置：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ubuntu 24.04, 2GB RAM, 2 vCPU&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 原理 ==&lt;br /&gt;
Vapor 提供的 Dockerfile 文件是将项目的编译、复制等操作都放到了 Docker 容器中进行，而 Docker 容器无法缓存编译信息（意思是下次编译时无法获取到上次的编译缓存进行增量编译），所以每次都会全量一遍。&lt;br /&gt;
&lt;br /&gt;
而 Vapor 运行，只需要编译后的 Run 产物和一些必要的 Public、Resource 资源。&lt;br /&gt;
&lt;br /&gt;
依照这个思路，我们可以将 Vapor 的编译放置到机器上进行，编译完成后，将 Run 和 Public、Resource 资源拷贝进 Docker 中即可。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;⚠️ 注意&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
编译机器的 Swift 安装路径最好与 Docker 中的 swift 安装路径保持一致，不然可能会导致 Docker 中运行时找不到动态库之类的情况。&lt;br /&gt;
&lt;br /&gt;
安装 Swift 可参考： [https://md5.pw/index.php?title=在搬瓦工VPS上安装_Swift_和他的依赖 在搬瓦工VPS上安装 Swift 和他的依赖]&lt;br /&gt;
&lt;br /&gt;
该安装方式与 Swift Docker 保持一致，我正在使用该方式。&lt;br /&gt;
&lt;br /&gt;
== 更多披露 ==&lt;br /&gt;
我在 Vapor 项目中新建了一个 &amp;lt;code&amp;gt;fastDockerfile&amp;lt;/code&amp;gt;, 内容如下：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# ================================&lt;br /&gt;
# Copy Resources Image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM ubuntu:24.04 AS build&lt;br /&gt;
&lt;br /&gt;
# Set up a build area&lt;br /&gt;
WORKDIR /build&lt;br /&gt;
&lt;br /&gt;
# Copy entire repo into container&lt;br /&gt;
COPY . .&lt;br /&gt;
&lt;br /&gt;
# Switch to the staging area&lt;br /&gt;
WORKDIR /staging&lt;br /&gt;
&lt;br /&gt;
# Copy main executable to staging area&lt;br /&gt;
COPY ./Run ./&lt;br /&gt;
&lt;br /&gt;
# Copy any resources from the public directory and views directory if the directories exist&lt;br /&gt;
# Ensure that by default, neither the directory nor any of its contents are writable.&lt;br /&gt;
RUN [ -d /build/Public ] &amp;amp;&amp;amp; { mv /build/Public ./Public &amp;amp;&amp;amp; chmod -R a-w ./Public; } || true&lt;br /&gt;
RUN [ -d /build/Resources ] &amp;amp;&amp;amp; { mv /build/Resources ./Resources &amp;amp;&amp;amp; chmod -R a-w ./Resources; } || true&lt;br /&gt;
&lt;br /&gt;
# ================================&lt;br /&gt;
# Run image&lt;br /&gt;
# ================================&lt;br /&gt;
FROM swift:6.2.1-focal-slim&lt;br /&gt;
&lt;br /&gt;
# Create a vapor user and group with /app as its home directory&lt;br /&gt;
RUN useradd --user-group --create-home --system --skel /dev/null --home-dir /app vapor&lt;br /&gt;
&lt;br /&gt;
# Switch to the new home directory&lt;br /&gt;
WORKDIR /app&lt;br /&gt;
&lt;br /&gt;
# Copy built executable and any staged resources from builder&lt;br /&gt;
COPY --from=build --chown=vapor:vapor /staging /app&lt;br /&gt;
&lt;br /&gt;
# Ensure all further commands run as the vapor user&lt;br /&gt;
USER vapor:vapor&lt;br /&gt;
&lt;br /&gt;
# Let Docker bind to port 8080&lt;br /&gt;
EXPOSE 8080&lt;br /&gt;
&lt;br /&gt;
# Set Language Encoding&lt;br /&gt;
ENV LANG C.UTF-8&lt;br /&gt;
ENV LC_ALL C.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Start the Vapor service when the image is run, default to listening on 8080 in production environment&lt;br /&gt;
ENTRYPOINT [&amp;quot;./Run&amp;quot;]&lt;br /&gt;
CMD [&amp;quot;serve&amp;quot;, &amp;quot;--env&amp;quot;, &amp;quot;production&amp;quot;, &amp;quot;--hostname&amp;quot;, &amp;quot;0.0.0.0&amp;quot;, &amp;quot;--port&amp;quot;, &amp;quot;8080&amp;quot;]&lt;br /&gt;
然后编写了一个脚本 fast_build.sh:&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 fast building start&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# stop when happen error&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git pull&amp;quot;&lt;br /&gt;
git pull&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; git submodule update --remote&amp;quot;&lt;br /&gt;
git submodule update --remote&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; swift build&amp;quot;&lt;br /&gt;
swift build -c release&lt;br /&gt;
&lt;br /&gt;
# move run to .&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; copy {Run} to ./Run&amp;quot;&lt;br /&gt;
cp .build/x86_64-unknown-linux-gnu/release/Run ./Run&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; docker build&amp;quot;&lt;br /&gt;
docker build -f fastDockerfile . -t your-vapor-project-name-on-docker:latest&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; rm local ./Run&amp;quot;&lt;br /&gt;
rm -rf ./Run&lt;br /&gt;
&lt;br /&gt;
# redirect&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; sh redirect.main.sh&amp;quot;&lt;br /&gt;
docker-compose -f docker-compose.yml up -d&lt;br /&gt;
&lt;br /&gt;
# force clean &amp;lt;none&amp;gt; docker images&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; clean invalid images&amp;quot;&lt;br /&gt;
docker image rm -f $(docker images -f dangling=true -q)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;🚀 &amp;gt; 🎉🎉🎉 all of done ~&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1950</id>
		<title>在搬瓦工VPS上安装 Swift 和他的依赖</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1950"/>
		<updated>2026-04-15T18:39:08Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04 &amp;lt;br&amp;gt;- RAM 内存 &amp;gt;= 2GB &amp;lt;br&amp;gt;- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
== 2. 失败案例参考 ==&lt;br /&gt;
否则容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382] &amp;lt;br&amp;gt;[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 3. 安装 ==&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ &lt;br /&gt;
    tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ ./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \ &lt;br /&gt;
    . &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
    hash -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
swiftly --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
输出版本号（类似: 1.1.1 ) 即为安装成功。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1949</id>
		<title>在搬瓦工VPS上安装 Swift 和他的依赖</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1949"/>
		<updated>2026-04-15T18:38:28Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04 &amp;lt;br&amp;gt;- RAM 内存 &amp;gt;= 2GB &amp;lt;br&amp;gt;- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
== 2. 失败案例参考 ==&lt;br /&gt;
否则容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382] &amp;lt;br&amp;gt;[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 3. 安装 ==&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ &lt;br /&gt;
    tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ ./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \ &lt;br /&gt;
    . &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
    hash -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
swiftly --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
输出版本号（类似: 1.1.1 ) 即为安装成功。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1948</id>
		<title>在搬瓦工VPS上安装 Swift 和他的依赖</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1948"/>
		<updated>2026-04-15T18:35:34Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04 &amp;lt;br&amp;gt;- RAM 内存 &amp;gt;= 2GB &amp;lt;br&amp;gt;- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
== 2. 失败案例参考 ==&lt;br /&gt;
否则容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382] &amp;lt;br&amp;gt;[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 3. 安装 ==&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ &lt;br /&gt;
    tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ ./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \ &lt;br /&gt;
    . &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
    hash -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;br&amp;gt;输入&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
swiftly --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
输出版本号（类似: 1.1.1 ) 即为安装成功。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1947</id>
		<title>在搬瓦工VPS上安装 Swift 和他的依赖</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E4%B8%8A%E5%AE%89%E8%A3%85_Swift_%E5%92%8C%E4%BB%96%E7%9A%84%E4%BE%9D%E8%B5%96&amp;diff=1947"/>
		<updated>2026-04-15T18:32:45Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​安装 Swift, Install Swift&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04 &amp;lt;br&amp;gt;&lt;br /&gt;
- RAM 内存 &amp;gt;= 2GB &amp;lt;br&amp;gt;&lt;br /&gt;
- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
== 2. 失败案例参考 ==&lt;br /&gt;
否则容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 3. 安装 ==&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&lt;br /&gt;
&lt;br /&gt;
```shell&lt;br /&gt;
&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \ ./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \ . &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \ hash -r&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;br&amp;gt;&lt;br /&gt;
输入 `swiftly --version` 输出版本号（类似: 1.1.1 ) 即为安装成功。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Talk:Contributors&amp;diff=1946</id>
		<title>Talk:Contributors</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Talk:Contributors&amp;diff=1946"/>
		<updated>2026-04-15T18:12:41Z</updated>

		<summary type="html">&lt;p&gt;IWwwwww：​使用搬瓦工VPS安装 Swift 和他的依赖包&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1. 前置要求 ==&lt;br /&gt;
&lt;br /&gt;
安装 Swift 并在服务器上进行编译要求 VPS:&lt;br /&gt;
&lt;br /&gt;
- Ubuntu 24.04  &amp;lt;br&amp;gt;&lt;br /&gt;
- RAM 内存 &amp;gt;= 2GB  &amp;lt;br&amp;gt;&lt;br /&gt;
- vCPU &amp;gt;= 2&lt;br /&gt;
&lt;br /&gt;
== 2. 失败案例参考 ==  &lt;br /&gt;
&lt;br /&gt;
否则容易出现编译失败，详情参考：&lt;br /&gt;
&lt;br /&gt;
[https://github.com/vapor/toolbox/issues/382 vapor/toolbox/issues/382]  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/vapor/vapor/issues/2722 vapor/vapor/issues/2772]&lt;br /&gt;
&lt;br /&gt;
== 3. 安装 ==&lt;br /&gt;
Swift 现在提供了一个便捷的安装工具（Swiftly）：&lt;br /&gt;
&lt;br /&gt;
```shell&lt;br /&gt;
&lt;br /&gt;
curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
tar zxf swiftly-$(uname -m).tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
./swiftly init --quiet-shell-followup &amp;amp;&amp;amp; \&lt;br /&gt;
. &amp;quot;${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
hash -r&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
安装完成后，使用 swiftly 查看: &amp;lt;br&amp;gt;&lt;br /&gt;
输入 `swiftly --version` 输出版本号即为安装成功。&lt;/div&gt;</summary>
		<author><name>IWwwwww</name></author>
	</entry>
</feed>