# 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. 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. ## Spletni pregledovalnik Odpri `http://127.0.0.1:8080/` in se prijavi z `VIEWER_USERNAME` ter `VIEWER_PASSWORD` iz `.env`. Pregledovalnik omogoča: - filter od/do (čas je UTC), - filter po napravi, - iskanje po domeni, naslovu ali URL-ju, - seznam do 500 zadnjih obiskov, - pregled unikatnih domen s številom obiskov in zadnjim obiskom. ## 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. ## Windows native arhiv (neobvezno) Repozitorij vključuje tudi Chrome razširitev in Windows Native Messaging host za lokalni, append-only arhiv obiskov v SQLite. 1. V Chromu odpri `chrome://extensions`, vklopi **Developer mode**, klikni **Load unpacked** in izberi mapo `extension`. 2. Kopiraj 32-znakovni ID razširitve. 3. V PowerShellu iz korena repozitorija zaženi: ```powershell powershell -ExecutionPolicy Bypass -File .\install-native-host.ps1 -ExtensionId TUKAJ_PRILEPI_ID ``` Lokalni arhiv se privzeto shrani v `%USERPROFILE%\ChromeHistoryArchive\history.sqlite3`. Za pošiljanje obiskov tudi na API uredi lokalni `extension/config.js`; vanj ne zapisuj tokena v commitu.