Initial history collector implementation
This commit is contained in:
commit
6f2b238988
7 files changed
+196
No files matched your search
@@ -0,0 +1,43 @@
|
||||
# History Collector
|
||||
|
||||
Python/FastAPI strežnik za lastno Chrome razširitev: sprejema obiske, jih trajno shrani v SQLite in jih lahko opcijsko pošlje v zaseben Discord kanal prek webhooka.
|
||||
|
||||
> URL-ji so lahko občutljivi. Uporabi samo na napravah, ki jih upravljaš, z jasnim obvestilom uporabnikom. Strežnika ne izpostavljaj neposredno internetu brez HTTPS in dodatne zaščite.
|
||||
|
||||
## Zagon
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# V .env nastavi dolg, naključen API_TOKEN.
|
||||
docker compose up -d --build
|
||||
docker compose logs -f
|
||||
curl http://127.0.0.1:8080/healthz
|
||||
```
|
||||
|
||||
Privzeto posluša samo na `127.0.0.1:8080`. Za dostop iz drugih naprav uporabi VPN (Tailscale/WireGuard) ali HTTPS reverse proxy z avtentikacijo. Ne odpiraj porta neposredno v internet.
|
||||
|
||||
## API
|
||||
|
||||
`POST /v1/visits`, z glavo `Authorization: Bearer TVOJ_API_TOKEN`:
|
||||
|
||||
```json
|
||||
{
|
||||
"device_id": "otrok-prenosnik",
|
||||
"visits": [{
|
||||
"url": "https://example.com/clanek",
|
||||
"title": "Primer",
|
||||
"visit_time": "2026-10-06T18:50:00Z",
|
||||
"transition": "observed"
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
Odgovor `202 Accepted` pomeni, da je paket zapisan v `./data/history.sqlite3`. Podvojeni obiski se ne podvojijo.
|
||||
|
||||
## Discord (neobvezno)
|
||||
|
||||
V `.env` nastavi `DISCORD_WEBHOOK_URL`. Najprej se zapis shrani v SQLite, nato se poskusi poslati Discordu. Neuspeh Discorda ne izbriše podatkov.
|
||||
|
||||
## Nastavitev razširitve
|
||||
|
||||
V `extension/config.js` nastavi `collectorUrl`, `apiToken` in `deviceId`. Token naj ostane v tej lokalni datoteki in naj ne konča v repozitoriju. `manifest.json` vsebuje široko dovoljenje za HTTP/HTTPS gostitelje zato, da lahko izbereš lasten API naslov; če želiš strožje dovoljenje, zamenjaj `host_permissions` samo s svojim HTTPS naslovom.
|
||||
Reference in new issue
Block a user