- migrations 21->23: dedicated `tickets` schema (tickets.inc / tickets.crq, raw-jsonb-first), geo_clusters + geo_locations gazetteers, geom-resolution trigger (feed -> location -> cluster -> none), reporting.fn_tickets_for_map - dashboard_api: GET /webhook/tickets (INC/CRQ GeoJSON for the FleetOps map) - tools/import_tickets.py: raw-first bucket ingest + cluster/location geocoding (LocationIQ/OpenCage, viewbox-bounded with a cluster-distance sanity guard) - docs/CONNECTIONS.md: geocoder env var names Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
# Connection Parameters Reference
|
|
|
|
**No secrets are stored here. All values come from `.env` at runtime.**
|
|
|
|
---
|
|
|
|
## SSH
|
|
|
|
```
|
|
Host: stage.rahamafresh.com
|
|
User: kianiadee
|
|
Key: ~/.ssh/id_ed25519
|
|
```
|
|
|
|
```bash
|
|
ssh -i ~/.ssh/id_ed25519 kianiadee@stage.rahamafresh.com
|
|
```
|
|
|
|
---
|
|
|
|
## Database
|
|
|
|
| Parameter | Value |
|
|
|---|---|
|
|
| Database | `tracksolid_db` |
|
|
| Host (internal) | `timescale_db` (Docker service name) |
|
|
| Port | `5432` |
|
|
| App user | `tracksolid_owner` |
|
|
| Read-only user | `dashboard_ro` (used by the staging bridge) · `grafana_ro` (legacy, retained but unused) |
|
|
| Superuser | `postgres` |
|
|
|
|
### `.env` variable names
|
|
|
|
```
|
|
POSTGRES_DB=tracksolid_db
|
|
POSTGRES_USER=...
|
|
POSTGRES_PASSWORD=...
|
|
DATABASE_URL=postgresql://tracksolid_owner:<password>@timescale_db:5432/tracksolid_db
|
|
```
|
|
|
|
### Run a query from host
|
|
|
|
```bash
|
|
DB=$(docker ps --filter name=timescale_db --format "{{.Names}}" | head -1)
|
|
docker exec $DB psql -U postgres -d tracksolid_db -c "SELECT COUNT(*) FROM tracksolid.devices;"
|
|
```
|
|
|
|
### Run a query file
|
|
|
|
```bash
|
|
docker exec -i $DB psql -U postgres -d tracksolid_db < migration.sql
|
|
```
|
|
|
|
---
|
|
|
|
## Tracksolid Pro API
|
|
|
|
| Parameter | Env var |
|
|
|---|---|
|
|
| App key | `TRACKSOLID_APP_KEY` |
|
|
| App secret | `TRACKSOLID_APP_SECRET` |
|
|
| User ID | `TRACKSOLID_USER_ID` |
|
|
| Target account | `TRACKSOLID_TARGET_ACCOUNT` (defaults to USER_ID) |
|
|
| Password MD5 | `TRACKSOLID_PWD_MD5` |
|
|
| Base URL | `TRACKSOLID_API_URL` (default: `https://eu-open.tracksolidpro.com/route/rest`) |
|
|
|
|
---
|
|
|
|
## Geocoder (tickets location geocoding)
|
|
|
|
Used by `tools/import_tickets.py --geocode-locations` / `--geocode-clusters` to turn ticket
|
|
`location_name`/`cluster` text into coordinates (`tickets.geo_locations` / `tickets.geo_clusters`).
|
|
A **keyed** provider is required — the public Nominatim server rate-limits bulk lookups.
|
|
|
|
| Parameter | Env var |
|
|
|---|---|
|
|
| Provider | `GEOCODER_PROVIDER` (`locationiq` (default) \| `opencage`) |
|
|
| API key | `GEOCODER_API_KEY` |
|
|
| Min interval | `GEOCODER_MIN_INTERVAL_S` (default `1.1` — throttle to provider TOS) |
|
|
|
|
---
|
|
|
|
## Container Name Resolution
|
|
|
|
Coolify appends a random suffix to all container names. Never hardcode. Always resolve:
|
|
|
|
```bash
|
|
# Pattern
|
|
docker ps --filter name=<service_name> --format "{{.Names}}" | head -1
|
|
|
|
# Examples
|
|
docker ps --filter name=timescale_db --format "{{.Names}}" | head -1
|
|
docker ps --filter name=ingest_worker --format "{{.Names}}" | head -1
|
|
docker ps --filter name=webhook_receiver --format "{{.Names}}" | head -1
|
|
docker ps --filter name=dashboard_api --format "{{.Names}}" | head -1
|
|
```
|
|
|
|
Current suffix (may change on redeploy): `bo3nov2ija7g8wn9b1g2paxs-19xxxxxxxxxx`
|
|
|
|
---
|
|
|
|
## Forgejo
|
|
|
|
```
|
|
Host: https://repo.rahamafresh.com
|
|
Repo: kianiadee/tracksolid_timescale_grafana_prod
|
|
Remote: https://repo.rahamafresh.com/kianiadee/tracksolid_timescale_grafana_prod.git
|
|
```
|