11个版本
0.3.0 | 2023年12月29日 |
---|---|
0.2.16 | 2022年2月11日 |
0.2.15 | 2021年11月13日 |
0.2.14 | 2021年9月24日 |
0.2.7 | 2021年7月30日 |
#9 in #ipv4-address
每月 39 次下载
250KB
1.5K SLoC
innisfree
一个辅助自托管的工具。通过公网IPv4地址公开您的计算机上的本地服务。
为什么?
我维护的大多数数据都是本地的,在我家中,或者在其他我控制的机器上。将这些信息上传到云服务器并不总是有意义。首先,它不私密:云提供商可以直接访问我上传的所有文件。其次,如果我有很多数据,例如音乐收藏,将所有这些数据上传到云上以便远程访问既昂贵又低效。
我主要只想获得一个与我运行的服务绑定的IP地址。我不想在DNS记录中公布我的家庭IP。我不想在我家的路由器上打开端口以允许流量进入。
工作原理
当你运行innisfree up
时,程序会执行以下步骤
- 检查
DIGITALOCEAN_API_TOKEN
环境变量,以便访问DigitalOcean云提供商。 - 在本地生成密钥对,用于SSH和Wireguard的受信任连接。
- 创建一个新的云服务器,配置了这些密钥对。
- 在您的本地计算机和服务器之间建立Wireguard连接。
- 在服务器上配置nginx,将服务器的公网IP流量转发到您在本地运行的选择服务(默认为
8080/TCP,443/TCP
)。 - 如果指定了
--dest-ip
,配置本地代理将流量从本地Wireguard接口转发到另一个本地服务。当本地服务运行在除了localhost之外的地址上时很有用。
安装
此仓库的发布页面上有可用的deb包。您可以直接从源安装
# Build a deb package and install it locally
make install
需求
- 仅限Linux。即使二进制文件可以在macOS上编译,但Wireguard的用户空间实现仍在开发中。
- Wireguard。对于大多数现代Linux发行版,它默认安装。值得注意的是,Debian稳定版Buster 10缺少它,但在buster-backports仓库中可用。运行
innisfree doctor
检查您的机器是否支持。 - 一个 DigitalOcean 云账户,用于创建服务器。
用法
USAGE:
innisfree [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
doctor Run checks to evaluate platform support
help Prints this message or the help of the given subcommand(s)
ip Display IPv4 address for cloud node
proxy Start process to forward traffic, assumes tunnel already up
ssh Open interactive SSH shell on cloud node
up Create new innisfree tunnel
作为服务运行
deb软件包附带systemd配置文件。要使用它,为服务选择一个唯一的名称(例如 minikube
),并确保您的API令牌已导出
cat /etc/systemd/system/innisfree\@minikube.service.d/override.conf
[Service]
Environment="DIGITALOCEAN_API_TOKEN=<REDACTED>"
# Override any settings from the shipped service
User=conorsch
ExecStart=
ExecStart=/bin/bash -c "innisfree up --floating-ip 1.2.3.4 --dest-ip $(minikube ip) -p 443/TCP --name k8s"
上面的配置将代理连接到本地的minikube安装。
这个名字有什么含义?
它来自 叶芝的诗
我现在将起身,去往Innisfree,
在那里建一个小屋,用粘土和柳枝做成
我将拥有九排豆田,蜂箱为蜜蜂而设;
我将独自生活在蜜蜂喧闹的林中。
这个想法是在互联网的背景下,我的家已经是“蜜蜂喧闹的林中”:我不需要将所有我的数据上传到云计算的喧嚣中。只需给我一个IP,我就可以与其他人共享数据,这就足够了。
许可证
AGPLv3
依赖关系
~23–42MB
~687K SLoC