开源实例之Expose 前言 本篇介绍使用 Expose 实现内网穿透。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 Expose 介绍 Expose is a tunnel application that allows you to share your local sites and applications with others on the internet. It is open source, written in PHP and the best alternative to ngrok for PHP developers. Expose 用 PHP 语言编写,功能与 ngrok 类似。 仓库地址:https://github.com/beyondcode/expose 官网地址:https://expose.dev Expose 部署 环境安装 需要先安装 PHP 8.1+... 2023-02-27
开源实例之rathole 前言 本篇介绍使用 rathole 实现内网穿透。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 rathole 介绍 A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok, can help to expose the service on the device behind the NAT to the Internet, via a server with a public IP. rathole 支持配置文件热重载(hot reload),动态修改端口转发服务。作者宣称,rathole 在高并发情况下比 frp 表现更好,能提供更大的带宽,内存占用更少。 仓库地址:https://githu... 2023-02-27
开源实例之bore 前言 本篇介绍使用 bore 实现内网穿透。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 bore 介绍 A modern, simple TCP tunnel in Rust that exposes local ports to a remote server, bypassing standard NAT connection firewalls. bore 是用 Rust 语言编写的极简的现代隧道应用,使用非常方便。 仓库地址:https://github.com/ekzhang/bore bore 部署 以下是部署示例,其中 192.168.56.10 扮演公网 ip,192.168.56.11 扮演内网 ip。 安装应用 本地安装: apt install cargo cargo install bore-cli 或者用官方 Docker 镜像部署: docke... 2023-02-26
开源实例之WireGuard 前言 本篇介绍 WireGuard 及其用于内网穿透的实例。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 WireGuard 介绍 WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running o... 2023-02-25
开源实例之ngrok 前言 在内网穿透的专题里,必须有 ngrok 的名字,它有广泛的知名度和众多的衍生品。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 ngrok 介绍 ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service. ngrok captures and analyzes all traffic over the tunnel for later inspection and replay. ngrok 是一个使用go语言编写的反向代理软件,可以在公共端和本地 web 服务之间建立安全通道,捕获和分析所有通道上的流量。 ngrok 1.x 开源,但存在严重问题,已不再维护;ngrok 2.x 是商业软件,未开源,但提供一定... 2023-02-25
开源实例之FastTunnel 前言 本篇介绍用 FastTunnel 搭建 ssh、web 内网穿透的方法。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 FastTunnel介绍 FastTunnel是一款高性能跨平台内网穿透工具,使用它可以实现将内网服务暴露到公网供自己或任何人访问。与其他穿透工具不同的是,FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架。可以通过引用FastTunnel.Core的nuget包构建出自己的穿透应用,并针自己所需的业务扩展功能。 GitHub:https://github.com/FastTunnel/FastTunnel Gitee:https://gitee.com/Hgui/FastTunnel 文档地址:https://docs.suidao.io 项目官网:https://suidao.io(提供测试体验) 值得一提的是,FastTunn... 2023-02-22
开源实例之NPS 前言 本篇介绍用 NPS 搭建 ssh、web 内网穿透的方法。了解什么是内网穿透可以参考《开源实例之frp》一文中的介绍。 NPS介绍 NPS is a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal. NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等,并带有功能强大的web管理端。 NPS 比 frp 多了 web 管理后台,配置更加方便,不必每次修改都重启服务。 仓库地址:https://github.com/ehang-io/nps... 2023-02-22
开源实例之免费通配符SSL证书 前言 本篇介绍部署免费通配符SSL证书,开启 HTTPS 的方法。 背景知识 HTTPS HTTPS(Hypertext Transfer Protocol Secure)协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。 通配符SSL证书 通配符SSL证书用于为一个域名及其所有一级子域名启用SSL加密。例如 example.com 的通配符SSL证书,可以用于自身和 *.example.com 形式的所有子域名。 创建和部署 安装软件 使用acme.sh免费创建、续订单域名SSL证书。以 Debian 系统为例,root 安装: sudo su curl https://get.acme.sh -s | sh -s 重新打开 ssh,执行acme.sh --v... 2023-02-22
开源实例之免费单域名SSL证书 前言 本篇介绍部署免费单域名SSL证书,开启 HTTPS 的方法。 背景知识 HTTPS HTTPS(Hypertext Transfer Protocol Secure)协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。 单域名SSL证书 单域名SSL证书用于为一个域名启用SSL加密,可以是顶级域名,也可以是二级域名。例如 example.com 和 a.example.com 需要两个独立的单域名证书。 特殊情况是 www 和不带 www(例如 example.com 和 www.example.com)可以共用一个单域名证书。 创建和部署 安装软件 使用Let's Encrypt软件免费创建、续订单域名SSL证书。以 Debian 系统为例,安装方法: s... 2023-02-22
开源实例之Docker健康检查 前言 本篇介绍通过 Docker 健康检查(HEALTHCHECK)来实现严格顺序启动,以及可用性判断。 应用场景 假设一个 web 应用需要运行多个容器,容器之间存在依赖关系。这就有两个问题,一是如何保证容器的启动顺序,二是如何监控 web 应用已经整体完成启动。 举例来说,MongoDB 管理工具mongo-express实例需要运行两个容器:MongoDB 容器和 Node.js 容器。需要先启动 MongoDB(含数据),再启动 Node.js(含项目程序),最终 web 暴露在 8081 端口。 一般解决方案 按照一般方案,用depends_on来控制容器启动顺序,根据 http 请求端口返回状态来判断是否启动完成。docker-compose.yml 如下: version: '2.4' services: mongodb: image: dujunio/mongo... 2023-02-21