type
status
date
slug
summary
tags
category
icon
password
前不久,出于安全性和可观察性的考虑,将我的家庭个人服务器从Nginx Proxy Manager切换到了Traefik。经过这一段时间的使用,确实感觉配置起来比nginx更方便且灵活。而且通过Cloudflare Tunnel,可以轻松实现零成本的内网穿透。
🔭 前言
本文作为系列的第一篇,只做总体的介绍和展示,后续将会一步步完成以下全部服务的配置
- Traefik 反向代理,自动发现和管理服务
- CrowdSec 安全网关,拦截非法访问请求
- Grafana 日志和指标监控,跟踪并记录访问日志和服务指标
- Cloudflared 内网穿透,无需加端口号即可访问家庭服务器
这里先给大家看一下我在本地的服务部署架构:
最终实现Http请求经过cloudflare的代理转发到Traefik,再由Traefik路由到本地不同的Docker服务中。在这个过程中,客户端并不需要知道服务的具体端口号。而且我们不用再关心SSL证书问题。除了Http,还可以代理TCP或UDP流量,如SSH,RDP服务等。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcb622191-d4ff-459c-a587-f4a0767cf851%2FUntitled.png?table=block&id=fa770df8-13f8-438d-9800-fb4425ca0beb&t=fa770df8-13f8-438d-9800-fb4425ca0beb&width=1152&cache=v2)
顺便再提一下,使用Traefik的服务发现,我们在新增Docker服务的时候甚至不需要去配置Traefik,只需要在新的容器上加几个Label,就能实现全自动反代,非常方便。
📝 服务介绍
什么是Traefik?
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbf24097d-7101-416a-a163-b1ce0bc8416a%2FUntitled.webp?table=block&id=7974c305-3f45-41cc-9ba8-a7af7647e202&t=7974c305-3f45-41cc-9ba8-a7af7647e202&width=744.6666870117188&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F886382c1-85c9-4317-90d7-935963e64410%2FUntitled.avif?table=block&id=6508df84-a31d-4e3c-94ef-dcfcbee127d4&t=6508df84-a31d-4e3c-94ef-dcfcbee127d4&width=744.6666870117188&cache=v2)
什么是CrowdSec?
CrowdSec是一个开源的、轻量级的安全软件,可以防止暴力攻击、恶意扫描、恶意软件和热点攻击等各种常见的网络攻击。它有一个非常活跃的社区,提供了一个丰富的安全规则库,而且还可以集成到Traefik的中间件中,从而实现更加自动和智能的安全防护。
CrowdSec的意思是众安,简单来说,就是所有CrowdSec的用户会检测和记录来自互联网中的恶意攻击,并将攻击者的信息上传到公共IP库,其他CrowdSec用户就可以自动屏蔽来自该攻击者的请求。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F085031ac-ceb1-4aea-8e50-30df28d65c87%2FUntitled.png?table=block&id=027e147c-12e4-4143-b20b-6356450668dc&t=027e147c-12e4-4143-b20b-6356450668dc&width=1080&cache=v2)
什么是Grafana?
Grafana是一个开源的数据可视化和监控平台,可以将数据从各种来源汇聚到一个统一的界面中进行展示和分析。Grafana支持的数据源非常丰富,包括Prometheus、InfluxDB、Elasticsearch、MySQL等等,而且还可以通过插件的方式扩展更多的数据源和面板。
Grafana和ELK(Elasticsearch、Logstash、Kibana)都是用于日志监控和数据可视化的工具,但是它们的设计初衷和重点略有不同。Grafana更重视数据的展示和分析,而ELK更注重日志的收集、处理和搜索。ELK可以用于收集和处理大量的日志数据,而Grafana适用于各种数据源的可视化和监控。此外,ELK也可以通过插件的方式实现面板的可视化,但在这方面,Grafana仍然是一种更为流行和成熟的解决方案。
什么是Cloudflared?
Cloudflared是由Cloudflare开发的一款轻量级的内网穿透工具。通过Cloudflared,可以将内网服务无需暴露端口,直接通过Cloudflare的服务器来访问。这一过程不仅更加安全可靠,而且还可以避免由于端口映射和路由配置带来的麻烦和安全隐患。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fed5fafcc-283a-4977-b343-f45535608823%2FUntitled.png?table=block&id=1c71d98c-8b9c-4897-aa37-d4a18fab07ba&t=1c71d98c-8b9c-4897-aa37-d4a18fab07ba&width=1768&cache=v2)
📝 我的系统架构
总体架构图
Treafik作为API网关,代替了Nginx Proxy Manager的反向代理,并且可以实现SSL证书的无感管理及服务自动发现,无需给每一个服务配置vhost。而且可以方便的接入中间件,如CrowdSec、Authelia、securityHeaders、cloudflarewarp等。
Dashboard展示
![Traefik Dashboard](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F26dd99fd-19aa-4b60-8a74-07af9e73fe10%2FUntitled.png?table=block&id=eae59751-2a52-49fe-8b26-dcbb2f6b826a&t=eae59751-2a52-49fe-8b26-dcbb2f6b826a&width=2381&cache=v2)
![Unraid Dashboard](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F924606c4-e129-4f67-94d8-fe381d9c200c%2FUntitled.png?table=block&id=7679de17-c62a-46f1-85ad-ab023dbce859&t=7679de17-c62a-46f1-85ad-ab023dbce859&width=3840&cache=v2)
![Traefik监控](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F486c5e4c-5c43-4f9c-a486-90c18d37de4f%2FUntitled.png?table=block&id=869600db-ced2-4504-959b-fbf877d93523&t=869600db-ced2-4504-959b-fbf877d93523&width=3840&cache=v2)
![Explore - Loki - Grafana](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8c5ec742-aae2-4054-9783-1d132d639c49%2FUntitled.png?table=block&id=af05ba16-0257-43be-9634-10e09cfdd18c&t=af05ba16-0257-43be-9634-10e09cfdd18c&width=3838&cache=v2)
![Crowdsec Overview](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9e92f67b-e3cf-4e93-b237-b99ae481b239%2FUntitled.png?table=block&id=de8bf342-dc61-458c-b703-e894e73be362&t=de8bf342-dc61-458c-b703-e894e73be362&width=3840&cache=v2)
已知问题:
Cloudflare 服务错误:
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0ea5003d-867c-4c77-829c-55d8a79e10cd%2FUntitled.png?table=block&id=2ee64ae5-72b3-405f-a68e-66d4c8accadc&t=2ee64ae5-72b3-405f-a68e-66d4c8accadc&width=1914&cache=v2)
2024更新:目前运行已稳定。
🤗 总结
这套围绕Traefik的家庭服务全家桶基本可以满足我的全部需求了,其实除了Traefik以外各种工具和中间件都是可以根据自己的需求灵活选用的,单独使用Traefik也会有不错的体验。后续的文章将详细描述从安装到配置的全过程😉!
📎 参考文章
有关Traefik安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:Biliko
- 链接:https://biliko.net/article/traefik-part1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章