自建订阅转换:Run subconverter on Azure App Service

Estimated reading time: 1 minute

Note:

Beginning June 1, 2024, all newly created App Service apps will have the option to create a unique default hostname with a naming convention of <app-name>-<random-hash>.<region>.azurewebsites.net. The names of existing apps will not change.

For more information, refer to Unique Default Hostname for App Service Resource.

概述

Subconverter是一款开源于GitHub的实用工具,可以轻松地将Surge、V2Ray、SS等等常用协议的订阅互相转换,使得我们可以轻松将订阅添加到舒适自己使用的客户端软件,避免某些提供商不提供想要协议订阅的烦恼。支持容器化运行且官方提供Docker镜像。

而Azure App Service 是一种基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。可以使用自己喜欢的语言进行开发,无论是 .NET、.NET Core、Java、Node.js、PHP 还是 Python。应用程序可在基于 Windows 和 Linux 的环境中轻松运行和扩展。

App Service将 Microsoft Azure 的强大功能添加到应用程序,例如安全性、负载均衡、自动缩放和自动管理。此外,还可以利用其 DevOps 功能,例如从 Azure DevOps、GitHub、Docker Hub 和其他源持续部署、包管理、过渡环境、自定义域和 TLS/SSL 证书。

总而言之,可以简单理解为(触发运行式/可持续运行)一个容器。而且App Service的F1服务计划为始终免费,参见下表:

Free PlanCoresRAMStoragePay as you go
F1
Free
Shared
(60 CPU minutes / day)
1 GB1.00 GB$0

部署步骤

前提条件

  • 已验证银行卡的Azure账户(是否过免费体验期均可)

Note:

如果没有合适的银行卡完成注册,可求助淘宝虚拟卡或自行搜索其他虚拟卡平台(注意稳定性和声誉,建议即充即用,防止被骗)。

国内发行的Visa/Mastercard借记卡同样可以用于注册(如:中国银行长城跨境通万事达世界卡(即莫奈卡))

步骤一:创建Azure App Service

  1. 登录Azure门户: 打开Azure门户并使用您的Azure账号登录。
  2. 创建资源组
    • 在左侧导航栏中选择“资源组”,点击“添加”并填写资源组的名称和区域,点击“查看 + 创建”。
    • *进阶替代:打开Azure CLI,选择bash,输入:az group create --name subconverter-rg --location eastasia
  3. 创建App Service
    • 在左侧导航栏中选择“创建资源”。
    • 搜索“App Service”,点击“创建”。
    • 填写应用服务的基本信息,如订阅、资源组、名称和发布类型(选择Docker)。
    • *进阶替代:Azure CLI输入:
      • az appservice plan create --name subconverter-plan --resource-group subconverter-rg --sku F1 --is-linux
      • az webapp create --resource-group subconverter-rg --plan subconverter-plan --name subconverter-app --deployment-container-image-name tindy2013/subconverter:latest

步骤二:配置Docker容器

  1. 设置Docker镜像
    • 在创建App Service的过程中,选择“Docker”选项卡。
    • 选择“单容器”并在“镜像和标签”中填写subconverter的Docker镜像信息,例如tindy2013/subconverter:latest
    • *第三步使用进阶替代的跳过此步
  2. 配置环境变量
    • 在“配置”选项卡中,添加必要的环境变量。例如,SUBCONVERTER_PORT设置为25500(或其他端口)。
    • *进阶替代:Azure CLI输入:az webapp config appsettings set --resource-group subconverter-rg --name subconverter-app --settings PORT=25500

步骤三:部署并验证

  1. 部署应用
    • 检查所有设置,点击“创建”。
    • 部署过程可能需要几分钟。部署完成后,导航到您的App Service应用。
    • *步骤二使用进阶替代的跳过此步
  2. 验证部署
    • 在Azure门户中,找到您的App Service并点击"Browse"("浏览")以打开应用,如图:Italian Trulli
    • *进阶替代:Azure Cloud Shell输入:az webapp show --resource-group subconverter-rg --name subconverter-app --query defaultHostName --output tsv 并复制并打开所输出的*.azurewebsites.net,HTTPS应是默认启用的。

步骤四:配置和使用

通过输入不同格式的订阅链接,验证转换结果是否符合预期。

https://<你的App Service名称>.azurewebsites.net/sub?target=<目标协议>&url=<源订阅链接>(&emoji=false&list=true&sort=false&udp=false&tfo=false&scv=false&append_type=false&fdn=false&new_name=true) 众多参数可参照文档选用

常见问题

为什么一直黑屏?/要很久才能打开?/为什么断断续续能用?

App Service F1计划不支持持续运行,故其运行是触发式的,有访问请求时启动容器,数分钟(可自行设置)无活动自动停止运行,直到下一次收到访问请求。而每次启动容器都需要时间,故需要等待,如果超过了软件的超时时长,可隔15s左右再试一次。

这是Azure的广告吗?为什么要选用App Service?

你可能已经注意到了,App Service会分配 *.azurewebsites.net 的子域名,而这类公共服务域名是绝对不会被GFW完全阻断的;而且App Service F1是据微软所称是永久免费的。

Leave a Reply

Your email address will not be published. Required fields are marked *