如何使用国内交通银行 Mastercard 通过 Google Play 美区成功订阅 Claude
介绍使用银联卡通过Google Play订阅Claude
介绍使用银联卡通过Google Play订阅Claude
介绍苹果ID改成土区,使用土耳其(土区)苹果ID充值ChatGPT
How I used hermes-agent, GitLab, and GitLab Runner to turn the Larktun documentation site from manual deployment into an automated release flow.
记录我如何用 hermes-agent、GitLab 和 GitLab Runner,把云雀通 Larktun 文档站从手动部署改造成自动发布流程。
I previously wrote an article on headscale unlimited scaling, covering how to transform headscale into a clustered deployment with near-unlimited device capacity.
The core idea is to assign each headscale instance a
client_id, and have all instances share a single database or database cluster.
Headscale Series: Building a Headscale Cluster for Near-Unlimited Device Capacity
Today I’d like to share how to transform a single-instance headscale into a multi-tenant deployment (this post focuses mainly on showcasing results rather than deep technical explanation).
Headscale was originally designed as a single-instance, single-tailnet system. To support multiple tailnets within a single instance, the key is to isolate each tenant’s ACL, tailnet, routes, DNS, and more.
Each tenant has its own independent tailnet. The default address pool is 10.64.0.0/10, but it can be customized — for example, changed to 192.168.6.0/24 — depending on your requirements.
A
defaulttenant is reserved in the system. Users who do not need multi-tenancy can keep using headscale as before — all users will be automatically assigned to thedefaulttenant.
Each tenant has a fully independent ACL with access to the complete set of ACL features.
Each tenant’s routes are also independent and can be configured separately.
Host FQDNs follow the format hostname.<tenant_key>.<dns.base_domain>, where dns.base_domain is shared across all tenants.
The default tenant uses the default subdomain.
The command-line tools have been updated to support tenant functionality. Use -t to specify a tenant.
Each tenant can use the shared relay servers, or configure its own dedicated relay servers for complete isolation from other tenants.
A tenant field has been added to the system to distinguish between tenants.



介绍对 Headscale 进行多租户改造,ACL、路由、DNS等全隔离
hermes-agent 安装教程
This article explains how to build and package the Headscale source code yourself, and covers common errors that may occur during the build process along with their solutions.
C:\Users\XXX\Documents\develop\0me\headscale. Source code stored on the Windows filesystem.It is recommended to clone the repository using git rather than downloading a zip archive. When I tried to build from a zip archive, many errors appeared. I was ultimately able to produce an executable via go build -o headscale ./cmd/headscale, but make build could not complete successfully.
Use the following commands to download the source:
1 | git clone https://github.com/juanfont/headscale.git |
Then copy config-example.yaml from the root directory and rename it to config.yaml.
Enable WSL and install the Ubuntu distribution.
In your Windows user directory (e.g. C:\Users\XXX), create a .wslconfig file with the following content:
1 | [wsl2] |
Then restart WSL. This allows the Ubuntu environment to share your host machine’s VPN connection — which is required during the build, as many dependencies need to be downloaded from the internet.
Install the Multi-user edition of nix using the root account.
1 | sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon |
Reference: https://nixos.org/download/
Switch from the root account to a regular user account before building.
1 | # Enter the directory. Windows paths are accessible under /mnt/c/ in WSL |
Setting up the environment takes a while — please be patient.
Once make build completes successfully, a result directory will appear in the project folder. When viewed from Windows it appears as a 0 KB file, but it is actually a directory in the Linux filesystem.


The compiled headscale binary can be run directly on the development machine. The following describes how to copy it to another server and run it there.
1 | # Inspect the binary using ldd or file |
From the console output above, we can see that headscale requires /nix/store/vbrdc5wgzn0w1zdp10xd2favkjn5fk7y-glibc-2.40-66/lib/ld-linux-x86-64.so.2 at runtime. This path is symlinked to /lib64/ld-linux-x86-64.so.2. For the program to run correctly, you need to manually create the /nix/store/vbrdc5wgzn0w1zdp10xd2favkjn5fk7y-glibc-2.40-66/lib/ directory and copy ld-linux-x86-64.so.2 into it.
In addition, a config.yaml file is required, along with the directories /root/.headscale/ and /var/lib/headscale/, which must be created and granted appropriate permissions.
1 | # Start command: headscale serve |
If you want to package the source into a Docker image, refer to the following link:
All of the following errors occurred when building from a downloaded zip archive. None of these issues appear when building from a git clone.
1 | # Following the official build steps with nix. make test succeeds, but make build fails with the error below: |
Edit the flake.nix file.
Change headscaleVersion = self.shortRev or self.dirtyShortRev; to:
1 | headscaleVersion = if self ? shortRev |
1 | djc@jetron-djc:/mnt/c/Users/DJC/Documents/develop/0me/headscale-0.26.1$ make build |
This error occurs because the build is interrupted by a test failure. The test fails because it cannot find the configuration file.
Build the binary directly instead:
1 | cp config-example.yaml config.yaml |
After a successful build, a headscale binary approximately 80+ MB in size will appear in the project directory.
1 | root@jetron-djc:~# nix develop |
This error occurs because the nix-command feature in Nix is experimental and disabled by default.
1 | # Edit the Nix configuration file |
Run the above command as root.
1 | root@jetron-djc:~# nix develop |
This error occurs because nix develop must be run from a directory that contains a flake.nix file. cd into your project directory and run nix develop from there.
1 | === Failed |
This error occurs because PostgreSQL’s initdb command cannot be run as root for security reasons. The test code attempts to initialize a database as root, which is rejected. Run make build as a regular (non-root) user.
1 | # Install Buf |
To speed up Bing’s indexing of your website, you can proactively submit URLs using IndexNow.
key .txt file in the website root directory so it can be accessed publiclytxt file containing all URLs on your site, then submit them using the scriptBing Webmaster ToolsThe following is a shell script for batch-submitting URLs to Bing IndexNow:
1 | #!/bin/bash |
URL format inside baidu_urls.txt:
1 | http://www.ownding.com/2025/06/12/%E5%9C%A8%E6%9C%89%E5%85%AC%E7%BD%91IP%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%A6%82%E4%BD%95%E5%AE%89%E5%85%A8%E5%9C%B0%E8%BF%9B%E8%A1%8C%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E8%BF%9E%E6%8E%A5/ |
submit_to_bing.shHOST: Your website domainKEY: Your Bing IndexNow API keyKEY_LOCATION: The URL of your key verification fileURL_FILE: The path to your URL file1 | chmod +x submit_to_bing.sh |
1 | ./submit_to_bing.sh |
OpenClaw is very popular right now. I’ve already deployed and tested it on Ubuntu and Windows Server (taking advantage of free trial promotions from Unicom and Telecom to get one month of server access and tokens).
However, I hadn’t tried it on macOS yet. The problem is I only have one MacBook Air, so a bare-metal deployment on this machine isn’t really an option. Then it occurred to me — Windows has virtual machines, so why not install a VM on the Mac and run macOS inside it? Easier said than done — and it turned out to be extremely simple, just clicking Next all the way through.
For running a macOS virtual machine on a Mac, UTM is the go-to choice — no hesitation needed. Download: https://mac.getutm.app/
Note: Do NOT download UTM from the Mac App Store — the store version requires payment. The version from the official website is completely free and functionally identical.

Once UTM is installed, create a new virtual machine in UTM, select a system image, and proceed with the installation.




The OS installation process won’t be covered in detail here — it’s straightforward, just click Next all the way through.
Setting up macOS inside the VM is the same as setting up a brand-new Mac for the first time — nothing special to explain here.

Keep the MacBook Air plugged into its charger at all times. Don’t worry about damaging the battery — when plugged in, the battery isn’t in use. Go to System Settings → Battery → Battery Health → Enable Optimized Battery Charging. That said, do keep an eye on temperature: running too hot will shorten battery life. A cooling stand is recommended, and in summer, a small desk fan aimed at the machine helps.
The MacBook Air will auto-sleep by default. To prevent this, go to Battery → Options → Enable “Prevent automatic sleeping when the display is off while connected to power adapter”. Also set Wake for network access → Always.
Download Amphetamine from the App Store, and in its Quick Settings check Allow Display to Sleep.
Turn the MacBook Air’s screen brightness all the way down, and let the MacBook keep running in the background.
There are many installation guides available — please refer to other tutorials for the details. I won’t repeat them here.