# 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///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//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_TOKEN` with 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 `Geositeurl` in `RU-routing.json` - Clash Verge's geo-data source, if you want the same merged categories there to `https://git.5838.ru///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.