Initial commit: merged geosite build pipeline

This commit is contained in:
Payroll3042
2026-07-24 19:27:15 +03:00
commit a101ffe758
10 changed files with 294 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
# 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_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/<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.