Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions TINYBIRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,10 @@ Note: Currently Traffic Analytics features are behind a feature flag. For now, y

1. Create a Tinybird account and a Tinybird workspace at [tinybird.co](https://auth.tinybird.co/login). You can select any cloud/region you choose.
1. Run `docker compose run --rm tinybird-login` to login to your Tinybird account following the steps given
1. Run `docker compose --profile=analytics up tinybird-sync`. This will copy the Tinybird files from the Ghost container into a shared volume. The service should log "Tinybird files synced into shared volume.", then exit.
1. Run `docker compose --profile=analytics up tinybird-deploy` and wait for the service to exit successfully. This will create your Tinybird datasources, pipes and API endpoints. It may take a minute or two to complete the first time. You should see "Deployment #1 is live!" in your terminal before the service exits.
1. Find your workspace's ID and events API endpoint: `docker compose run --rm tinybird-login tb --cloud info`
1. Copy the value of "api", and add it to your `.env` file as `TINYBIRD_API_URL`. You can also find this value in your Tinybird Workspace's UI.
1. Copy the value of "workspace_id", and add it to your `.env` file as `TINYBIRD_WORKSPACE_ID`
1. Using the UI link from the previous step, open your workspace and click on *Tokens* in the left hand menu
1. Copy your Tinybird "Workspace admin token" and add it to your `.env` file as `TINYBIRD_ADMIN_TOKEN`
1. Copy your Tinybird `tracker` token and add it to your `.env` file as `TINYBIRD_TRACKER_TOKEN`
1. Run `docker compose run --rm tinybird-sync`. This will copy the Tinybird files from the Ghost container into a shared volume. The service should log "Tinybird files synced into shared volume.", then exit.
1. Run `docker compose run --rm tinybird-deploy` and wait for the service to exit successfully. This will create your Tinybird datasources, pipes and API endpoints. It may take a minute or two to complete the first time. You should see "Deployment #1 is live!" in your terminal before the service exits.
1. Run `docker compose run --rm tinybird-login get-tokens`
1. Copy and paste the values from the previous step into your `.env` file
1. Run `docker compose --profile=analytics up -d` to start all services in the background
1. Add `analytics` to `COMPOSE_PROFILES=` in the top of your `.env` file to automatically include the `analytics` profile when running `docker compose` commands
1. At this point, everything should be working. You can test it's working by visiting your site's homepage, then checking the Stats page in Ghost Admin — you should see a view recorded.
2 changes: 2 additions & 0 deletions tinybird/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ FROM python:3.13-slim@sha256:6544e0e002b40ae0f59bc3618b07c1e48064c4faed3a15ae2fb
# Install dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
jq \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /home/tinybird

# Install Tinybird using the standard installation script
COPY handleLogin.sh /usr/local/bin/tinybird-login
COPY getTokens.sh /usr/local/bin/get-tokens
COPY tb-wrapper /usr/local/bin/tb-wrapper

RUN curl https://tinybird.co | sh
Expand Down
40 changes: 40 additions & 0 deletions tinybird/getTokens.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

# Get token from .tinyb JSON file
USER_TOKEN=$(jq -r '.token' .tinyb)

if [ -z "$USER_TOKEN" ] || [ "$USER_TOKEN" = "null" ]; then
echo "Error: Could not find token in .tinyb file"
exit 1
fi

# Get host from .tinyb JSON file
HOST=$(jq -r '.host' .tinyb)
echo "TINYBIRD_API_URL=$HOST"

if [ -z "$HOST" ] || [ "$HOST" = "null" ]; then
echo "Error: Could not find host in .tinyb file"
exit 1
fi

# Get id from .tinyb JSON file
WORKSPACE_ID=$(jq -r '.id' .tinyb)
echo "TINYBIRD_WORKSPACE_ID=$WORKSPACE_ID"

if [ -z "$WORKSPACE_ID" ] || [ "$WORKSPACE_ID" = "null" ]; then
echo "Error: Could not find id in .tinyb file"
exit 1
fi

# Make GET request to tokens endpoint and parse response
RESPONSE=$(curl -s -X GET \
"$HOST/v0/tokens" \
-H "Authorization: Bearer $USER_TOKEN")

# Parse tokens from response
ADMIN_TOKEN=$(echo "$RESPONSE" | jq -r '.tokens[] | select(.name == "admin token") | .token')
TRACKER_TOKEN=$(echo "$RESPONSE" | jq -r '.tokens[] | select(.name == "tracker") | .token')

# Echo the tokens as proof of concept
echo "TINYBIRD_ADMIN_TOKEN=$ADMIN_TOKEN"
echo "TINYBIRD_TRACKER_TOKEN=$TRACKER_TOKEN"