3.8 KiB
Merged geosite.dat build
Combines:
- v2fly/domain-list-community (base) — ~1520 stock categories, already covers openai, anthropic, netflix, whatsapp, discord, signal, paypal, linkedin, reddit, spotify, facebook, instagram, twitter, roblox, binance, bbc, archive, viber, rutracker, speedtest, notion, figma, jetbrains, adobe, intel, autodesk, cursor, vercel, github, google, youtube, telegram.
- hydraponique/roscomvpn-geosite (overlay) — RU-specific categories: category-ru, whitelist, category-geoblock-ru, apple, google-play, google-deepmind, microsoft, epicgames, riot, escapefromtarkov, faceit, twitch, twitch-ads, pinterest, steam, category-ads, win-spy, private, torrent, github, telegram, youtube (last three merge/union with v2fly's stock versions of the same name — this is intended compiler behavior, not a conflict).
- data-custom/ — the only 4 services confirmed missing from both: replicate, avast, cointelegraph, snapchat.
Requirements
- Go >= 1.25.12 (v2fly's go.mod hard-requires this)
- git
Manual one-off build
Docker (recommended, no local Go/git needed):
docker build -t geosite-builder .
docker run --rm -v "$(pwd)/output:/work/output" geosite-builder
Or locally if you already have Go 1.25+ and git:
./build.sh
Output: output/geosite.dat
Deploying as a scheduled service (Gitea + Portainer)
This runs the build daily and pushes the result straight to your own
Gitea repo, so it's served the exact same way rules.yaml already is —
https://git.5838.ru/<owner>/<repo>/raw/branch/main/geosite.dat.
1. Create the target repo on git.5838.ru
Create an empty repo (e.g. geosite-build) under your account. It can
start completely empty — the container's first run will commit the
initial geosite.dat.
2. Create a Gitea access token
Gitea → Settings → Applications → Generate New Token, scope: repo read/write. Copy it once, you won't see it again.
3. Push these build files to that repo yourself
I can't reach git.5838.ru from here, so this part's on you:
cd geosite-build
git init
git remote add origin https://git.5838.ru/<owner>/geosite-build.git
git add .
git commit -m "Initial commit: merged geosite build pipeline"
git push -u origin main
(If you'd rather keep the pipeline files in a separate repo from the
generated geosite.dat output, that's fine too — just point GITEA_REPO
in the compose file at wherever the output should land, which can be
a different repo than the one holding this Dockerfile/scripts.)
4. Deploy in Portainer
- Portainer → Stacks → Add stack
- Name it (e.g.
geosite-build) - Paste the contents of
docker-compose.yml - Under Environment variables, add
GITEA_TOKENwith the token from step 2 — don't put it directly in the compose file, use Portainer's env var field so it isn't stored in plain text in the stack definition - Deploy
The container runs the build immediately on startup, then again daily at 03:10 UTC (same time hydraponique rebuilds their own source, so you pick up same-day upstream changes). Check Portainer's container logs to confirm the first run pushed successfully.
5. Point your configs at the new file
Once you've confirmed a successful push, update:
- Happ's
GeositeurlinRU-routing.json - Clash Verge's geo-data source, if you want the same merged categories there
to https://git.5838.ru/<owner>/<repo>/raw/branch/main/geosite.dat.
Adding more custom domains later
If you find another service missing after the fact, add a new file under
data-custom/ (one domain per line, domain:example.com for subdomain
matching, full:example.com for exact matches — same format v2fly itself
uses), commit it to whichever repo holds these pipeline files, and the
next scheduled run picks it up automatically.