102 lines
3.8 KiB
Markdown
102 lines
3.8 KiB
Markdown
# 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.
|