113 lines
2.4 KiB
Markdown
113 lines
2.4 KiB
Markdown
# Local Run Without Docker
|
|
|
|
You can run the API without Docker. The application only needs Node.js and a PostgreSQL database with the TimescaleDB extension installed.
|
|
|
|
## Requirements
|
|
|
|
- Node.js 22+
|
|
- PostgreSQL 17 or 18
|
|
- TimescaleDB extension installed into that PostgreSQL instance
|
|
- `psql` available in your terminal
|
|
|
|
Official TimescaleDB docs for Windows describe installing PostgreSQL, running the TimescaleDB installer, restarting the PostgreSQL service, and enabling the extension with:
|
|
|
|
```sql
|
|
CREATE EXTENSION IF NOT EXISTS timescaledb;
|
|
```
|
|
|
|
Docs: https://docs.tigerdata.com/self-hosted/latest/install/installation-windows/
|
|
|
|
## 1. Create local database
|
|
|
|
Open PowerShell and run:
|
|
|
|
```powershell
|
|
createdb -h localhost -p 5432 -U postgres drill_cloud_v2
|
|
```
|
|
|
|
If `createdb` is not in PATH, add your PostgreSQL bin directory, for example:
|
|
|
|
```powershell
|
|
$env:Path += ";C:\Program Files\PostgreSQL\17\bin"
|
|
```
|
|
|
|
## 2. Enable TimescaleDB
|
|
|
|
```powershell
|
|
psql -h localhost -p 5432 -U postgres -d drill_cloud_v2 -c "CREATE EXTENSION IF NOT EXISTS timescaledb;"
|
|
```
|
|
|
|
Check it:
|
|
|
|
```powershell
|
|
psql -h localhost -p 5432 -U postgres -d drill_cloud_v2 -c "\dx"
|
|
```
|
|
|
|
You should see `timescaledb` in the extension list.
|
|
|
|
## 3. Configure app env
|
|
|
|
```powershell
|
|
Copy-Item .env.local.example .env
|
|
```
|
|
|
|
Edit `.env` if your local PostgreSQL password, port, or database name differs:
|
|
|
|
```text
|
|
DATABASE_URL=postgres://postgres:postgres@localhost:5432/drill_cloud_v2
|
|
```
|
|
|
|
## 4. Install and migrate
|
|
|
|
```powershell
|
|
npm install
|
|
npm run migrate
|
|
```
|
|
|
|
## 5. Start API
|
|
|
|
```powershell
|
|
npm run start:dev
|
|
```
|
|
|
|
The API starts on:
|
|
|
|
```text
|
|
http://localhost:3100
|
|
```
|
|
|
|
Health check:
|
|
|
|
```powershell
|
|
Invoke-RestMethod http://localhost:3100/health
|
|
```
|
|
|
|
## Useful local checks
|
|
|
|
Send one point:
|
|
|
|
```powershell
|
|
Invoke-RestMethod `
|
|
-Method Post `
|
|
-Uri http://localhost:3100/ingest `
|
|
-Headers @{ "x-api-key" = "dev-local-key" } `
|
|
-ContentType "application/json" `
|
|
-Body '[{"edge":"roman","tag":"test_tag","time":"2026-06-15T12:00:00Z","value":42}]'
|
|
```
|
|
|
|
Read current:
|
|
|
|
```powershell
|
|
Invoke-RestMethod "http://localhost:3100/current?edge=roman"
|
|
```
|
|
|
|
Read chart data:
|
|
|
|
```powershell
|
|
Invoke-RestMethod "http://localhost:3100/history?edge=roman&tags=test_tag&from=2026-06-15T00:00:00Z&to=2026-06-16T00:00:00Z"
|
|
```
|
|
|
|
## Note
|
|
|
|
The old remote database you gave me does not currently have TimescaleDB enabled. To run this v2 schema there, an admin user must install/allowlist TimescaleDB and run the migrations.
|