<?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-04-15T22:23:02Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.5</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_%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>