[{"data":1,"prerenderedAt":411},["ShallowReactive",2],{"content:\u002Ffiddling\u002Fcross-city-network-setup":3,"surround:\u002Ffiddling\u002Fcross-city-network-setup":240,"github:nikkinikki-org\u002FOpenWrt-nikki":251,"github:asvow\u002Fluci-app-tailscale":341},{"id":4,"title":5,"body":6,"categories":213,"date":215,"description":216,"draft":217,"extension":218,"image":219,"meta":220,"navigation":222,"path":223,"permalink":219,"published":219,"readingTime":224,"recommend":219,"references":219,"seo":229,"sitemap":230,"stem":231,"tags":232,"type":238,"__hash__":239},"content\u002Fposts\u002Ffiddling\u002Fcross-city-network-setup.md","上海杭州异地组网记录",{"type":7,"value":8,"toc":204},"minimark",[9,13,17,20,23,29,32,45,48,51,54,69,72,75,78,81,84,87,90,93,104,107,115,119,122,133,136,139,142,145,148,157,160,163,166,183,186,189,192,195,198,201],[10,11,12],"h3",{"id":12},"前言",[14,15,16],"p",{},"这个月 npy 因为工作原因，从北京搬到了上海",[14,18,19],{},"帮忙搬家之外，还帮着开了一条宽带，电信 500M",[14,21,22],{},"顺便吐槽下上海电信，500M 的宽带比杭州电信 1000M 宽带还贵",[14,24,25],{},[26,27,28],"del",{},"你这光纤是金子做的还是光猫是金子做的？",[14,30,31],{},"作为一名 Geek（自封），不折腾是不可能的，合计了一下，预期要达成以下成果",[33,34,35,39,42],"ol",{},[36,37,38],"li",{},"上海透明代理越墙",[36,40,41],{},"上海部分流量从杭州出口",[36,43,44],{},"两地局域网互访",[14,46,47],{},"第二条的原因是目前 Netflix 等流媒体解锁是走的机场（此处可插入 aff），这个机场限制了使用用户，多地同时使用可能会导致封号，这种情况下就只能将流量转发到杭州，从杭州统一出口",[10,49,50],{"id":50},"前置准备",[14,52,53],{},"目前杭州的网络拓扑很简单，光猫拖一个软路由拨号，软路由接一个 TP-Link 做无线 AP。同时有个小主机直连软路由，开了一个 shadowsocks server 用于日常流量回家。软路由是倍控的 G30S（此处可插入广告），N5100 也是够用的，系统是 ImmortalWRT。装了以下插件",[55,56,57,60,63,66],"ul",{},[36,58,59],{},"AdguardHome：DNS 去广告",[36,61,62],{},"Nikki：Mihomo 内核，做透明代理",[36,64,65],{},"Tailscale：虚拟局域网组网，此前一直用作流量回家的备案",[36,67,68],{},"DDNS-Go：如你所见，就是个 DDNS",[14,70,71],{},"LAN 网段为 192.168.7.0\u002F24",[14,73,74],{},"为了保持设备一致，降低一点复杂度，于是又购置了一台相同配置的 G30S，也安装了 ImmortalWRT。同时上海的网络拓扑计划与杭州保持一致。光猫 - 软路由 - AP",[10,76,77],{"id":77},"安装",[14,79,80],{},"ImmortalWRT 的安装得提一嘴，最初以为它的安装和 windows 或者其他 linux 发行版类似，镜像是个 livecd 或者安装器之类的，写入 u 盘启动后执行安装。没想到 u 盘启动后竟然就这么启动了……",[14,82,83],{},"启动了……",[14,85,86],{},"合着那个 img 直接就是系统镜像啊",[14,88,89],{},"于是麻溜改刷 winpe，用 physdiskwrite 把镜像写到硬盘，成功启动，简单配置完成了上网和 dhcp。上海的 LAN  网段为 192.168.10.0\u002F24",[14,91,92],{},"接着就是扩容，直接写盘安装的 openwrt，可用空间只有不到 1G，硬盘的其他剩余空间完全浪费掉了。这时候第二个困难就出现了：我找不到何时的扩容教程。简中的教程错综复杂、错误百出、一个抄一个，但实际上，要么就是 squashfs 的扩容，要么就是用剩余空间新建一个分区，将根分区改挂到新分区上这样的教程，几乎找不到真正的“扩容”分区",[14,94,95,96,103],{},"最后在 OpenWRT 的 ",[97,98,102],"a",{"href":99,"rel":100},"https:\u002F\u002Fopenwrt.org\u002Fdocs\u002Fguide-user\u002Fadvanced\u002Fexpand_root",[101],"nofollow","官方文档"," 中找到了……以后还是不用中文搜索了，Google 都搜不出啥有用的",[14,105,106],{},"先解决越墙和流量出口的问题，这个直接 clash 就能解决",[14,108,109,114],{},[97,110,113],{"href":111,"rel":112},"https:\u002F\u002Fgithub.com\u002Fnikkinikki-org\u002FOpenWrt-nikki",[101],"Nikki"," 是一个 OpenWRT 插件，基于 Mihomo 内核进行透明代理。相对于其他类似功能的插件如 Passwall 或者 clash，Nikki 的可定制化更强。注意安装要根据 Readme 中的 Instruction 安装，直接从 Releases 下载 ipk 是无法安装的（很奇怪）",[116,117],"github",{"repo":118},"nikkinikki-org\u002FOpenWrt-nikki",[14,120,121],{},"安装完成后导入配置文件，就可以启动了。有几个注意点：",[33,123,124,127,130],{},[36,125,126],{},"可以直接开启 tun 模式，会自动配置路由器的路由表做透明代理，基本没什么问题",[36,128,129],{},"mihomo 的域名分流需要 dns 请求通过 mihomo 发起，这时有两个选择：mihomo 的 dns 直接 hijack 53 端口，openwrt 自带的 dnsmasq 可以改为监听其他端口；或者 dnsmasq 设置一个转发，将 dns 请求都转发到 mihomo 的 dns 端口",[36,131,132],{},"如果使用 FakeIP 模式，注意仔细设置 FakeIP Filter",[14,134,135],{},"其他就是一些老生长谈，和其他平台使用 mihomo 基本一致，不再赘述",[14,137,138],{},"配置完成后开启 Nikki，在 Dashboard 中就能看到 mihomo 开始接管路由器的所有出口流量了",[14,140,141],{},"配置文件基本是直接从我这儿粘过去的，大部分越墙流量都是向搬瓦工🪜直接发起连接，一些需要流量从杭州出口的规则，outbound 都改为了杭州的 shadowsocks server，试了下延迟还可以，就当是走了一道国内中转",[14,143,144],{},"到这一步，其实通过域名的话已经可以实现上海访问杭州的内网，由于是 FakeIP 模式，dns 解析后返回的 fakeip 请求也会被 mihomo 内核处理，再通过域名规则将流量转到杭州即可。但是这样的话，直接的 ip 请求，不通过 dns，就无法通过 mihomo 转发（tun 默认不接管局域网请求），且杭州也没法访问到上海",[14,146,147],{},"于是，TailScale 堂堂登场！",[14,149,150,151,156],{},"OpenWRT 使用 TailScale 可以用 ",[97,152,155],{"href":153,"rel":154},"https:\u002F\u002Fgithub.com\u002Fasvow\u002Fluci-app-tailscale",[101],"luci-app-tailscale"," 插件，可以比较直观地管理和配置 tailscale",[116,158],{"repo":159},"asvow\u002Fluci-app-tailscale",[14,161,162],{},"安装完成后首先启动一下，完成登录认证，再进行配置，最好在 tailscale 关闭这个设备的密钥过期",[14,164,165],{},"高级设置中",[55,167,168,171,174,177,180],{},[36,169,170],{},"勾选启用路由：tailscale 自动帮我们配置到其他子网的路由规则",[36,172,173],{},"不勾选允许 dns：只需要路由 ip 请求即可",[36,175,176],{},"公开网段填写 192.168.10.0\u002F24：告诉 tailscale 这台设备可以进行这个网段的路由",[36,178,179],{},"勾选子网互通：字面意思",[36,181,182],{},"子网路由选择 192.168.7.0\u002F24：表示这个子网范围的路由由 tailscale 接管",[14,184,185],{},"注意，杭州的 tailscale 也要做对应的设置，注意公开网段和子网路由要用对应的网段",[14,187,188],{},"设置完成后重启一下 tailscale，就可以完成子网互通了。在上海和杭州都可以直接通过对方网段的 IP 直接访问对方网段的主机",[10,190,191],{"id":191},"后记",[14,193,194],{},"上海的宽带安装的是一个什么云宽带，关闭云宽带并且开启桥接的流程非常麻烦（至今没走完）",[14,196,197],{},"所以以上配置都是在上海的软路由没有公网 IP 的情况下进行的",[14,199,200],{},"好在由于杭州这边有公网 IP，tailscale 也是可以直接打洞成功，延时只有十几毫秒。如果两边都没有公网 IP，那就只能自求多福了，要么就自建 derp 转发，要么就只能顶着大几百的延时凑活着用了",[14,202,203],{},"还是想吐槽下上海电信，开个桥接又要签协议又要拍照又要审核的，和防贼似的",{"title":205,"searchDepth":206,"depth":206,"links":207},"",4,[208,210,211,212],{"id":12,"depth":209,"text":12},3,{"id":50,"depth":209,"text":50},{"id":77,"depth":209,"text":77},{"id":191,"depth":209,"text":191},[214],"折腾","2025-04-18 16:43:12","随着工作调动，npy 从北京迁至上海，顺便处理了宽带安装。尽管选择了电信500M的宽带，费用却高于杭州的1000M，令人无奈。在此背景下，我决定构建一个跨城市的网络环境，期望实现上海透明代理、部分流量从杭州出口及两地局域网互通的目标。杭州的网络架构相对简单，通过软路由与无线AP的组合，搭建了一套可以支持日常流量回家的系统，准备迎接接下来的网络挑战。",false,"md",null,{"slots":221},{},true,"\u002Ffiddling\u002Fcross-city-network-setup",{"text":225,"minutes":226,"time":227,"words":228},"9 min read",8.07,484200,1614,{"title":5,"description":216},{"loc":223},"posts\u002Ffiddling\u002Fcross-city-network-setup",[214,233,234,235,236,237],"透明代理","软路由","组网","mihomo","tailscale","tech","2mWN6gvXpmAgJfYF9V93HbQqTrXn7yMbSTaZWajlKd0",[241,246],{"title":242,"path":243,"stem":244,"date":245,"type":238,"children":-1},"My heart beats for U —— 心率同步 Grafana 展示","\u002Ffiddling\u002Fheart-rate-to-grafana","posts\u002Ffiddling\u002Fheart-rate-to-grafana","2025-03-31 23:51:00",{"title":247,"path":248,"stem":249,"date":250,"type":238,"children":-1},"Astro 接入 Google Analytics (Tag Manager)","\u002Ffiddling\u002Fastro-google-tag-manager","posts\u002Ffiddling\u002Fastro-google-tag-manager","2025-05-28 22:09:00",{"id":252,"node_id":253,"name":254,"full_name":118,"private":217,"owner":255,"html_url":111,"description":273,"fork":217,"url":274,"forks_url":275,"keys_url":276,"collaborators_url":277,"teams_url":278,"hooks_url":279,"issue_events_url":280,"events_url":281,"assignees_url":282,"branches_url":283,"tags_url":284,"blobs_url":285,"git_tags_url":286,"git_refs_url":287,"trees_url":288,"statuses_url":289,"languages_url":290,"stargazers_url":291,"contributors_url":292,"subscribers_url":293,"subscription_url":294,"commits_url":295,"git_commits_url":296,"comments_url":297,"issue_comment_url":298,"contents_url":299,"compare_url":300,"merges_url":301,"archive_url":302,"downloads_url":303,"issues_url":304,"pulls_url":305,"milestones_url":306,"notifications_url":307,"labels_url":308,"releases_url":309,"deployments_url":310,"created_at":311,"updated_at":312,"pushed_at":313,"git_url":314,"ssh_url":315,"clone_url":316,"svn_url":111,"homepage":317,"size":318,"stargazers_count":319,"watchers_count":319,"language":320,"has_issues":222,"has_projects":217,"has_downloads":217,"has_wiki":222,"has_pages":222,"has_discussions":222,"forks_count":321,"mirror_url":219,"archived":217,"disabled":217,"open_issues_count":322,"license":323,"allow_forking":222,"is_template":217,"web_commit_signoff_required":217,"has_pull_requests":222,"pull_request_creation_policy":329,"topics":330,"visibility":272,"forks":321,"open_issues":322,"watchers":319,"default_branch":337,"temp_clone_token":219,"custom_properties":338,"organization":339,"network_count":321,"subscribers_count":340},799128627,"R_kgDOL6G8Mw","OpenWrt-nikki",{"login":256,"id":257,"node_id":258,"avatar_url":259,"gravatar_id":205,"url":260,"html_url":261,"followers_url":262,"following_url":263,"gists_url":264,"starred_url":265,"subscriptions_url":266,"organizations_url":267,"repos_url":268,"events_url":269,"received_events_url":270,"type":271,"user_view_type":272,"site_admin":217},"nikkinikki-org",198439251,"O_kgDOC9PxUw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F198439251?v=4","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org","https:\u002F\u002Fgithub.com\u002Fnikkinikki-org","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Ffollowers","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Ffollowing{\u002Fother_user}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Fgists{\u002Fgist_id}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Fstarred{\u002Fowner}{\u002Frepo}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Fsubscriptions","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Forgs","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Frepos","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Fevents{\u002Fprivacy}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnikkinikki-org\u002Freceived_events","Organization","public","Transparent Proxy with Mihomo on OpenWrt.","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fforks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fkeys{\u002Fkey_id}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcollaborators{\u002Fcollaborator}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fteams","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fhooks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fissues\u002Fevents{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fevents","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fassignees{\u002Fuser}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fbranches{\u002Fbranch}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Ftags","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fgit\u002Fblobs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fgit\u002Ftags{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fgit\u002Frefs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fgit\u002Ftrees{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fstatuses\u002F{sha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Flanguages","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fstargazers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcontributors","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fsubscribers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fsubscription","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fgit\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fissues\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcontents\u002F{+path}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fcompare\u002F{base}...{head}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fmerges","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002F{archive_format}{\u002Fref}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fdownloads","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fissues{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fpulls{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fmilestones{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fnotifications{?since,all,participating}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Flabels{\u002Fname}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Freleases{\u002Fid}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fnikkinikki-org\u002FOpenWrt-nikki\u002Fdeployments","2024-05-11T08:59:35Z","2026-08-24T03:38:02Z","2026-08-23T00:16:43Z","git:\u002F\u002Fgithub.com\u002Fnikkinikki-org\u002FOpenWrt-nikki.git","git@github.com:nikkinikki-org\u002FOpenWrt-nikki.git","https:\u002F\u002Fgithub.com\u002Fnikkinikki-org\u002FOpenWrt-nikki.git","https:\u002F\u002Fnikkinikki.pages.dev",1627,5185,"JavaScript",577,5,{"key":324,"name":325,"spdx_id":326,"url":327,"node_id":328},"gpl-3.0","GNU General Public License v3.0","GPL-3.0","https:\u002F\u002Fapi.github.com\u002Flicenses\u002Fgpl-3.0","MDc6TGljZW5zZTk=","all",[331,332,333,236,334,335,336],"clash","luci-app","luci-app-nikki","nikki","openwrt","transparent-proxy","main",{},{"login":256,"id":257,"node_id":258,"avatar_url":259,"gravatar_id":205,"url":260,"html_url":261,"followers_url":262,"following_url":263,"gists_url":264,"starred_url":265,"subscriptions_url":266,"organizations_url":267,"repos_url":268,"events_url":269,"received_events_url":270,"type":271,"user_view_type":272,"site_admin":217},25,{"id":342,"node_id":343,"name":155,"full_name":159,"private":217,"owner":344,"html_url":153,"description":361,"fork":217,"url":362,"forks_url":363,"keys_url":364,"collaborators_url":365,"teams_url":366,"hooks_url":367,"issue_events_url":368,"events_url":369,"assignees_url":370,"branches_url":371,"tags_url":372,"blobs_url":373,"git_tags_url":374,"git_refs_url":375,"trees_url":376,"statuses_url":377,"languages_url":378,"stargazers_url":379,"contributors_url":380,"subscribers_url":381,"subscription_url":382,"commits_url":383,"git_commits_url":384,"comments_url":385,"issue_comment_url":386,"contents_url":387,"compare_url":388,"merges_url":389,"archive_url":390,"downloads_url":391,"issues_url":392,"pulls_url":393,"milestones_url":394,"notifications_url":395,"labels_url":396,"releases_url":397,"deployments_url":398,"created_at":399,"updated_at":400,"pushed_at":401,"git_url":402,"ssh_url":403,"clone_url":404,"svn_url":153,"homepage":219,"size":405,"stargazers_count":406,"watchers_count":406,"language":320,"has_issues":222,"has_projects":222,"has_downloads":217,"has_wiki":222,"has_pages":217,"has_discussions":217,"forks_count":407,"mirror_url":219,"archived":222,"disabled":217,"open_issues_count":206,"license":408,"allow_forking":222,"is_template":217,"web_commit_signoff_required":217,"has_pull_requests":222,"pull_request_creation_policy":329,"topics":409,"visibility":272,"forks":407,"open_issues":206,"watchers":406,"default_branch":337,"temp_clone_token":219,"network_count":407,"subscribers_count":410},748894834,"R_kgDOLKM6cg",{"login":345,"id":346,"node_id":347,"avatar_url":348,"gravatar_id":205,"url":349,"html_url":350,"followers_url":351,"following_url":352,"gists_url":353,"starred_url":354,"subscriptions_url":355,"organizations_url":356,"repos_url":357,"events_url":358,"received_events_url":359,"type":360,"user_view_type":272,"site_admin":217},"asvow",88471740,"MDQ6VXNlcjg4NDcxNzQw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F88471740?v=4","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow","https:\u002F\u002Fgithub.com\u002Fasvow","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Ffollowers","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Ffollowing{\u002Fother_user}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Fgists{\u002Fgist_id}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Fstarred{\u002Fowner}{\u002Frepo}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Fsubscriptions","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Forgs","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Frepos","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Fevents{\u002Fprivacy}","https:\u002F\u002Fapi.github.com\u002Fusers\u002Fasvow\u002Freceived_events","User","LuCI support for tailscale","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fforks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fkeys{\u002Fkey_id}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcollaborators{\u002Fcollaborator}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fteams","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fhooks","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fissues\u002Fevents{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fevents","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fassignees{\u002Fuser}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fbranches{\u002Fbranch}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Ftags","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fgit\u002Fblobs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fgit\u002Ftags{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fgit\u002Frefs{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fgit\u002Ftrees{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fstatuses\u002F{sha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Flanguages","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fstargazers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcontributors","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fsubscribers","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fsubscription","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fgit\u002Fcommits{\u002Fsha}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fissues\u002Fcomments{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcontents\u002F{+path}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fcompare\u002F{base}...{head}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fmerges","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002F{archive_format}{\u002Fref}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fdownloads","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fissues{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fpulls{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fmilestones{\u002Fnumber}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fnotifications{?since,all,participating}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Flabels{\u002Fname}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Freleases{\u002Fid}","https:\u002F\u002Fapi.github.com\u002Frepos\u002Fasvow\u002Fluci-app-tailscale\u002Fdeployments","2024-01-27T01:11:19Z","2026-08-22T03:22:39Z","2025-05-09T09:28:22Z","git:\u002F\u002Fgithub.com\u002Fasvow\u002Fluci-app-tailscale.git","git@github.com:asvow\u002Fluci-app-tailscale.git","https:\u002F\u002Fgithub.com\u002Fasvow\u002Fluci-app-tailscale.git",120,315,68,{"key":324,"name":325,"spdx_id":326,"url":327,"node_id":328},[],0,1787554444199]