这是一个用于自动部署 mihomo 服务的 Go 库,支持 SSH 连接、文件传输、SSL 证书管理和服务启动。可以作为独立程序运行,也可以作为库被其他程序调用。
go get cnb.cool/accbot/trojan-deploy
package main
import (
"log"
trojandeploy "cnb.cool/accbot/trojan-deploy"
)
func main() {
// 创建配置
config := &trojandeploy.Config{
Host: "your-server-ip",
Port: "22",
User: "root",
Password: "your-password",
TrojanPort: "44344",
Domain: "your-domain-or-ip",
// CertPEM 和 KeyPEM 留空,将自动生成证书
}
// 创建部署器
deployer := trojandeploy.NewDeployer(config)
// 执行部署
if err := deployer.Deploy(); err != nil {
log.Fatalf("部署失败: %v", err)
}
}
如果不提供证书内容,程序会自动生成 3 年有效期的自签名证书:
config := &trojandeploy.Config{
Host: "your-server-ip",
Port: "22",
User: "root",
Password: "your-password",
TrojanPort: "44344",
Domain: "your-domain-or-ip",
// CertPEM 和 KeyPEM 留空,将自动生成证书
}
可以通过字符串传递自定义的 SSL 证书和私钥:
config := &trojandeploy.Config{
Host: "your-server-ip",
Port: "22",
User: "root",
Password: "your-password",
TrojanPort: "44344",
Domain: "your-domain",
CertPEM: `-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKoK/heBjcOuMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
...
-----END CERTIFICATE-----`,
KeyPEM: `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7VJTUt9Us8cKB
...
-----END PRIVATE KEY-----`,
}
程序会自动验证提供的证书:
main.go 中的配置参数go run main.go
参考上面的代码示例,导入库并创建配置和部署器即可。
部署配置结构体,包含所有必要的连接和部署参数。
mihomo 部署器,提供完整的部署功能。
创建新的部署器实例。
执行完整的部署流程,包括:
连接到远程服务器。
关闭连接。
| 参数 | 说明 | 示例 |
|---|---|---|
| Host | 服务器 IP 地址 | "192.168.1.100" |
| Port | SSH 端口 | "22" |
| User | SSH 用户名 | "root" |
| Password | SSH 密码 | "your-password" |
| TrojanPort | Trojan 服务端口 | "44344" |
| Domain | 域名或 IP(用于证书) | "example.com" |
| CertPEM | SSL 证书内容(可选) | PEM 格式字符串 |
| KeyPEM | SSL 私钥内容(可选) | PEM 格式字符串 |
部署成功后,所有文件将位于服务器的 ~/mihomo/ 目录:
mihomo - 可执行文件config.yaml - 配置文件cert.pem - SSL 证书key.pem - SSL 私钥mihomo.log - 运行日志