本篇通过最简单的方式部署一个 Tailscale DERP Server,不需要域名、备案、反代、证书。本教程面向已经有一定 Tailscale 使用经验的用户,不讲解一些原理及基础操作,跟着教程复制粘贴操作即可。
用 docker compose 运行以下即可。
version: '3.8'
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper
container_name: derper
restart: always
environment:
- DERP_ADDR=:13477
- DERP_VERIFY_CLIENTS=true
ports:
- "13477:13477"
- "13478:3478/udp"
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock # tailscale 客户端进程,用于验证客户端身份
如果你选择不启用客户端验证,把 DERP_VERIFY_CLIENTS
设为 false,并删掉 volumes 的挂载即可。但是这样会导致服务可能会被白嫖,建议还是启用。
如果你的服务器没有安装并且登录 tailscale,执行下面两条命令,按提示操作即可。
> curl -fsSL https://tailscale.com/install.sh | sh
> tailscale login
最后,如果你的服务器有防火墙,需要放通 TCP 13477 和 UDP 13478 端口。
在 Access controls 中,编辑以下内容,然后点击保存。
...
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {"900": {
"RegionID": 900,
"RegionCode": "gz", // 按需要填
"RegionName": "Guangzhou", // 按需要填
"Nodes": [{
"Name": "myderper", // 按需要填
"RegionID": 900,
"HostName": "IP/HOST", // 改成自己的 IP/域名
"DERPPort": 13477,
"STUNPort": 13478,
"CanPort80": false,
"InsecureForTests": true // 去掉域名证书检测
}],
}},
}
...
保存后,最后客户端断开再重新连接一下,以便收到新的配置下发。
有几个命令可以在过程中帮助你调试。
netcheck
命令可以查看具体的 DERP 节点连接状态,以及本机的 NAT 状态等,具体含义解析可以看这里。
> tailscale netcheck
Report:
* Time: 2025-07-03T07:42:24.617968Z
* UDP: true
* IPv4: yes, [REDACTED]
* IPv6: no, but OS has support
* MappingVariesByDestIP: true
* PortMapping:
* CaptivePortal: false
* Nearest DERP: Guangzhou
* DERP latency:
- gz: 25.1ms (Guangzhou)
- sfo: 174.8ms (San Francisco)
- lax: 176.8ms (Los Angeles)
- sea: 199ms (Seattle)
- hel: 219.2ms (Helsinki)
status
命令可以查看网络中的机器连接状态,以及连接方式等。如下分别是通过 DERP 连接和直连的情况,relay
为通过 DERP 连接,direct
为直连。
> tailscale status
[REDACTED] macmini LeslieLeung@ macOS active; relay "gz", tx 1546756 rx 47066984
[REDACTED] macmini LeslieLeung@ macOS active; direct [REDACTED]
ping
命令可以通过 tailscale 网络执行 ping。如下则说明通过了自建的 DERP 节点连接。
> tailscale ping [ip/machine]
pong from macmini ([REDACTED]) via DERP(gz) in 81ms
Tailscale 基础教程:部署私有 DERP 中继服务器 · 云原生实验室
GitHub - yangchuansheng/ip_derper: 无需域名的 derper
🫡各位大佬好,v2ex 新人第一次发帖报告~
听说过我的佬应该知道,我就是那个一路从渣渣二本逆袭过来的 JsonChao ,在福报大厂待了四年后,最终我们和平分手,没错,大白话就是,我现在失业了。
现在的就业环境有多差,大家是知道的,虽然人到中年( 32 岁),上有老下有小,但是这几年的大厂经历还是让我攒下了一点余粮,所以我目前的想法是想自己做一些出海的小产品,赚点老外手里的美金来维持下家用。
下面,就来正式介绍下我最近用 cursor 踩了很多坑才开发出的一款海外产品 md2card~
做 MD2Card 是因为我发现了一个常见的问题:Markdown 写起来很方便,但如果你想把它分享出去,或者让它看起来更有吸引力,往往就有点麻烦。
不管你是学生、老师、程序员,还是内容创作者,想把简单的文字变得更好看、更有趣,都会遇到这个问题。
在信息爆炸的时代,我们每天都在处理大量的文字内容。无论是学习笔记、技术文档,还是社交媒体分享,如何让这些文字更具吸引力和传播力,成为了一个亟待解决的问题。
因此,MD2Card 应运而生,它可以将 Markdown 内容转化为精美的知识卡片,帮助你轻松实现内容的视觉化呈现。
MD2Card 的出现,填补了 Markdown 内容在视觉呈现和信息提炼方面的空白。
通过智能 AI 技术和丰富的主题风格,用户可以轻松将 Markdown 内容转化为精美的知识卡片,提升信息的传递效果和受众的参与度。 👏
MD2Card 相较于其他 Markdown 转换工具,具备以下独特优势:
将 Markdown 格式的学习笔记转化为知识卡片,便于复习和分享。
将教程、总结等内容转化为精美的卡片,提升内容的吸引力。
将生成的知识卡片分享到小红书、微博等平台,增加互动和传播。
由于这是我第一次在 V2EX 发帖(之前我居然不知道有这么🐮的社区存在),所以在本帖中,我会为留言鼓励支持我们的佬随机赠送 100 个 md2card 月 base 体验会员。
如果你的评论提供了有用的意见或有趣的发现,我会优先选取哦~ 送完 100 个为止!
ps: 评论后记得留下您的 md2card 登录 email 哦,方便我为您发放会员~
尽管我是单打独斗,完全凭借个人兴趣和热情开发了这个工具,但我希望它能为有需要的用户提供便利。
再次感谢大家的时间!
无论如何,我想感谢所有读到最后的人。感谢你们抽出时间。谢谢你们,祝你们一切顺利!❤️🙏
🏻👏🏻 欢迎大家来品鉴这款产品,期待您的宝贵意见~
欢迎访问 MD2Card 官网 进行体验。
无论您是学生、教师、程序员,还是内容创作者,MD2Card 都能帮助您轻松实现内容的视觉化呈现。
再次感谢大家的时间,期待收到您的宝贵意见!❤️🙏
现在、立刻、马上 大家一起用 - claude code https://github.com/tingxifa/claude_proxy
内有 cf worker 的 ts 代码,也可以自己部署
🚀 一键配置 Claude Code 命令行工具,通过代理服务访问大语言模型
~/.claude/settings.json
文件jq
或 python3
更新 JSON 配置打开脚本文件 claude_proxy.sh
,找到 "重点: 需要替换的内容" 部分,修改以下变量(按实例的格式填入):
# 🔑 API 密钥
API_KEY="your_api_key_here"
# 🌐 代理服务地址
OPEN_AI_URL="不带 https://的地址 +/v1"
# 🤖 模型名称
OPEN_MODEL=""
# 添加执行权限
chmod +x claude_proxy.sh
# 运行脚本
./claude_proxy.sh
配置完成后,即可在命令行中使用 Claude:
claude "Hello, world!"
~/.claude/
├── settings.json # 主配置文件
└── settings.json.backup # 自动备份文件
参数 | 说明 | 示例 |
---|---|---|
API_KEY |
你的 API 密钥 | sk-xxx... |
OPEN_AI_URL |
代理服务地址 | tbai.xin/v1 |
OPEN_MODEL |
使用的模型名称 | gemini-1.5-pro |
~/.claude/settings.json
文件从进入网站时开始, 创建 12 个线程一起夸一夸.
觉得项目好玩的可以给个 star 哈哈哈哈.
网站进入可能要等待 10s 左右, 第一句话才能出现.
以下是项目 Readme.md
💝 一个充满爱与温暖的在线夸夸平台,为你源源不断地输送情绪价值~
cd frontend
npm install
npm run serve # 开发环境
npm run build # 生产环境
cd backend
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000
欢迎提交 PR 、Issue 或任何形式的贡献!让我们一起让这个充满爱的项目变得更好~
MIT License - 做任何你想做的~
感谢每一位为他人带来温暖的你,因为有你们,这个世界才会更美好!
🌈 记住,你值得这个世界上最美好的东西! 🌟
周末( 2025 年 06 月 29 日)参加哥飞老师组织的「年中分享&Hackathon 」活动,作为一个不懂代码的产品经理,我的预期是去感受一下氛围,打打酱油的。没想到我 2 个小时做的网站,在 290 多人参赛,150+ 项目中,竟然获得了特等奖,拿到 5000 美金。真是受宠若惊,也简单和大家分享一下这个网站是怎样做出来的。 网站: https://www.aibanner.ai/ 复盘文档: https://larkcommunity.feishu.cn/docx/MA70dCj8ooiaEIxdjGPc1lM2nid
你是否怀念那些在街机厅或红白机上度过的欢乐时光?最近搞了一个的网站 ClassicJoy,UI 上花了一些心思,毕竟自己的网站。
网站收录了海量的经典游戏,涵盖动作、冒险、角色扮演等多种类型还在不断增加。最关键的是,所有游戏都无需任何下载或安装,只需打开浏览器,就能立即开始你的怀旧游戏之旅。如果你也是个怀旧玩家,强烈推荐去玩玩! 主要特色:
完全免费:所有游戏均可免费畅玩。 无需下载:直接在浏览器中加载,即点即玩,非常方便。 海量经典:汇集了大量来自街机和经典主机的复古游戏。 多类型覆盖:从动作闯关到角色扮演,总有你喜欢的一款。
不过还有不少游戏还没来得及上线,大家有哪些怀念的小时候的经典游戏,可以说说,到时上架。
最近突发奇想,做了一个”万物皆可比“的小工具,输入任意两个东西,调用 LLM 进行对比,输出结果。
现在的对比工具一般是针对明确的内容,于是做了这个基于 LLM 的可对比任意内容的工具,万物皆可对比,一站式解决选择困难症!
这是一个西班牙语工具网站,帮助你快速查找以特定字母开头的颜色名 https://colorconj.com/
由于颜色比较多,目前很多颜色还没来得急补充
花了一段时间做了个全能 AI 视频&图像生成平台,支持 20+视频特效、目前比较火热的视频生成模型,以及一些常用的 AI 视频编辑工具,由于视频模型比较贵,每天设置了 20 次免费试用。
网站地址: http://magi-1.video
# 获取当前脚本所在的目录
$scriptDirectory = $PSScriptRoot
# 指定要扫描的目录(不包含子目录)
$installDirectory = "$scriptDirectory\快速安装" # 这里可以指定你的安装目录
# 获取指定目录下的所有文件(不包含子目录)
$filePaths = Get-ChildItem -Path $installDirectory -File
# 手动添加额外的文件路径
# $filePaths += "$scriptDirectory\快速安装\VisualStudioSetup.exe"
# $filePaths += "$scriptDirectory\快速安装\Adobe_Photoshop_2023_24.3.0.376_ACR15.3_SP_20230418\Adobe Photoshop 2023 SP\Set-up.exe"
function Install-SetupApp{
param(
[Parameter(Mandatory=$true)]
[string]$filePath # 接收一个文件路径数组
)
# return
if ($filePath.EndsWith(".exe") -or $filePath.EndsWith(".msi")) { # 只执行 .exe 或 .msi 文件
# 检查文件是否存在
if (Test-Path $filePath) {
Write-Host "正在安装: $($filePath)"
Start-Process -FilePath $filePath -Wait
} else {
Write-Host "文件不存在: $($filePath)"
}
}
}
# 输出文件路径数组(调试用)
# $filePaths
foreach($filePath in $filePaths){
if($filePath.Name.EndsWith(".exe") -or $filePath.Name.EndsWith("msi")){
Install-SetupApp -filePath $installDirectory\$filePath
}
}
Install-SetupApp -filePath "$installDirectory\Adobe_Photoshop_2023_24.3.0.376_ACR15.3_SP_20230418\Adobe Photoshop 2023 SP\Set-up.exe"
Write-Host "所有文件安装完成"
我 fork 后的项目:https://github.com/ileeoyo/IDESync-VSCode-JetBrains
最开始看到这个问题的原贴:https://www.v2ex.com/t/1121683
websocket 实时发送文件打开、关闭、光标移动事件,同步在另一个编译器中打开、关闭、移动光标到相同的文件。以前我一直在使用 Switch2Cusor 这类插件,双开时总感觉差点意思,使用快捷键有些麻烦,打算速度也不算快
两个屏幕,上面是 Idea ,下面是 Cursor 。Idea 写写代码,遇到问题,直接进入 Cursor 让 AI 解决,解决完直接回到 Idea 手动修修补补。目前已经非常满意了。
原项目已经很好,但是作者有 5 个月没更新了,加上原项目只能打开文件同步,关闭文件同步有 bug ,索性 fork 下来解决。
作为 Java 开发者,本身对于 kotlin 和 Ts 语法习惯不熟悉,借助 Cursor ,使用门面模式对整个项目完全重构。把事件监听、文件状态管理、消息监听、文件操作管理消息、队列处理、websocket 管理全部逻辑分开(可能是 Java 开发者的习惯)。解决了文件关闭的同步 bug 还有很多情况的兼容性问题,对于事件同步做了队列和防抖,重写 websocket 重连逻辑,解决了很多并发问题,某些情况无法同步的情况(比如快速关闭大量 TAB 时的状态同步)。
整个重构结束,和原项目差异很大,几乎每个地方按照自己的习惯变动了,我也没提 pull request 。
Parbitre 是一款专(业)业(余)的乒乓球数字计分应用,专门为 FSGT 和 FFTT 比赛设计,让你的每一场比赛都更加规范和专业。
Parbitre 完全免费下载使用,无内购,无广告,专注为乒乓球爱好者提供最纯粹的计分体验。
"现在知道谁该发球了,再也不会搞错比分!"
"功能完善,界面简洁,比赛必备神器!"
让你的乒乓球比赛更专业、更精彩!无论是业余娱乐还是正式比赛,Parbitre 都是你最佳的计分伙伴。
下班无聊开始了打乒乓球生涯,后来接触到 FFTT 比赛,发现小组赛时间都是周五晚上 20:00 之后...一口气干到凌晨 1:00 多。这都不算啥,关键是还要给别人当裁判,经常激烈的比赛之后,看着就入神了...加上一周的劳累,心不在焉容易导致忘记谁应该发球了...于是就有了这个神奇的小工具。 也是我上架的第一个 app 给大家乐呵一下. 为了同时兼容安卓和 iOS ,使用 expo 作为基础开发。没有使用网络通讯,飞行模式可以正常运行,因为比赛场馆多数没有信号。上架不久收到差评说不支持 iPad...直接买了个 iPad 测试,都是为了一个爱好而已。开发者一年还 99 欧呢, 喜欢的五星好评一下, 我谢谢各位球友了
欢迎大家下载试用,记得给个五星好评!