Initial commit: merged geosite build pipeline
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user