使用Authentik作为自建服务SSO

我在 https://home.yaoyun.xyz 的自建服务的安全认证程度参差不齐: dufs / miniflux 只有 HTTP 认证 Portainer / Photoprism 有完整的用户系统,前者支持内部的用户名 - 密码认证、OAuth 和 LDAP,后者支持 OIDC 和 OAuth Traefik 的 Dashboard、Netdata 的监控无认证,还会暴露敏感信息。 因此,管理多个自建服务时,自建/使用第三方 SSO 就能提供同一水平、集中控制的访问控制。Authentik 是一个开源 SSO,采用免费/开源自建 + 付费支持的商业模式,自称提供最丰富的接口支持,同类替代还有: Keycloak:红帽开发。半年前试用过、对于个人服务太重了,难以维护。开源 + 卖商业支持和进阶 feature。 Authenlia:强调轻量,正在筹款做安全审计。 GitHub - casdoor/casdoor,国人开发。 使用 CF Tunnel + Traefik 反向代理 Authentik 在使用 Authentik 之前,我的自建服务架构是:公网用户 -(https, yaoyun.xyz)-> Cloudflare 反代 -(https, *.cfargotunnel.com)-> CF Tunnel -(…)-[LAN[-> Cloudflared -(http)-> traefik at 80 -(http)-> services ]]。由于 CF Tunnel 访问 Traefik 的 HTTP Entrypoint,送往 Authentik 的 HTTP 请求头中会包含 X-Forwarded-Proto: http。Authentik 网页中的 URL 并非协议相对 URL(protocol-relative URLs),而是根据请求头中的(X-Forwarded-Proto)决定,此处即 HTTP。同时我启用了 CF 的 Always Use HTTPS 和 Edge Certificate,因此公网用户始终使用 HTTPS 访问。此外,CF 的 Automatic HTTPS Rewrites 对 Authentik 还不起效。这一切就成了 Mixed Content Error 的典型例子……...

February 5, 2025

在NAT小鸡上无域名搭建你自己的Tailscale Derp服务器

TL; DR 确保你拥有一台延迟带宽综合表现优于官方 Tailscale Derp 服务器的服务器(通常是 hkg, sin, tok)。这台服务器需要公网 IP+ 任意两个开放端口。 参考我的增加了 DERP_STUN_PORT 环境变量配置项的 patch:GitHub - yao-yun/ip_derper at feat/dockerfile_stun_port_env,构建自己的 yangchuansheng/ip_derper 镜像并部署在你的小鸡上,设置 DERP_ADDR=:<port> DERP_HTTP_PORT=-1 1、DERP_STUN_PORT=<port> 三个环境变量,并暴露至对应外部端口。 在你的 Tailscale 面板 ACL 规则中新增如下字段,以分发你新增的额外 Derp 服务器配置到你所有的 Tailscale 节点上: "derpMap": { "OmitDefaultRegions": false, "Regions": { "901": { "RegionID": 901, "RegionCode": "some_code", "RegionName": "some human readable name", "Nodes": [ { "Name": "901a", "RegionID": 901, "DERPPort": <your derp port>, "STUNPort": <your stun port>, "HostName": "<your server ip>", "InsecureForTests": true, // so your self-signed ip ssl cert won't be rejected // but no worries, your traffic is already encrypted e2e // by you tailscale client....

January 30, 2025 · Yaoyun Zhang

记一次灾难恢复:抽中大奖的西数SN580与冗余备份的重要性

2024,七月初某日,年初购入的西数 SN580 2T 在一次重启后突然罢工。排查后注意到无法读写、块设备间或可被识别。Smart 信息和分区表均不能读取。奇怪的是,Fedora Live 自带的 Gnome Partitioning Tool 能识别出硬盘厂商和部分正确大小的分区。但一番折腾后仍完全读不出数据,遂放弃、联系售后。 遗憾的是具体错误日志和报错信息并没有保存,无法展示。 受灾范围 我在笔电上安装了 Windows 11 和 Arch Linux 双系统,罪魁祸首西数 SN580 2T 按容量对半分给 Arch Linux 的 Btrfs,子卷包含根目录及家目录等所有目录。 Windows 系统分区 C:\ 高考结后旧主机的重要数据、拾掇出的初中所用 Thinkpad 里的数据、以及大一至大二上的全部数据几乎都在 SN850 Windows 系统分区的用户目录下。大二下由于主力系统迁移回 Arch,数据集中存于 Btrfs。由于掉盘突然且彻底、且原硬盘是固态硬盘,直接的数据恢复不大可能。 此外还有一块幸存的 Windows 数据盘,是高考后购入的三星 980 1T,尽管被我嫌弃无缓 + 中低端,但还是勤勤恳恳撑过两年,令人感叹。其中数据为备份的手机照片、Vegrant 和 Virtual Box 虚拟机的磁盘镜像、及 Steam 的游戏仓库。 重新配置环境 硬盘送修需要时间、为了有盘用而新购入的海力士 P41(非 Plus)也要三天才能送到。幸存的数据盘内数据除了不重要、可再获取的游戏/虚拟机磁盘镜像,就只有在 Google Photos 和 Homelab 上均有备份的照片库,为了有能用的电脑,先果断格了重装。 Arch 的重新安装相对简单,按下不表。将 Windows 安装媒介通过 Rufus 启动:惊喜出现:本地硬盘神秘失踪。起初以为是 Rufus 的问题,但写好裸的 Windows 安装媒介盘同样无法识别任何一个硬盘。Google,这是因为幻 16 Intel 的 Rapid Storage Technology 需要在 Windows 上安装专用驱动。都 2024 年了……...

August 7, 2024 · Yaoyun Zhang