Self Hosting the JavaScript Tracker on GCP
Pre-requisites
For the purposes of this guide, we are going to assume that you want to serve the standard sp.js
from Google Cloud Storage. To accomplish this, you will need the following:
- An account with Google Cloud
- Access to Google Cloud Storage (GCS) within your GCP account
Download the JavaScript tracker file
Navigate to https://github.com/snowplow/snowplow-javascript-tracker/releases and download the latest version of the Snowplow JavaScript Tracker sp.js file
gzip and rename the file
- rename
sp.js
to a random 8 character string to reduce the chance of AdBlockers preventing the script from loading e.g.gh7rnghq.js
gzip
the file to reduce the file size and reduce associated cloud storage and egress costs.
From a terminal / command prompt window, navigate to where you have downloaded the file and run:
gzip -c sp.js > gh7rnghq.js
N.B. on Windows you may need to download the gzip binaries
We will continue referring to the file as sp.js
throughout this guide, however where sp.js
is mentioned we are referring to your renamed and gzipped file.
Uploading to Google Cloud Storage
Create a storage bucket
- Navigate to Google Cloud Console and ensure you are in the Google Cloud Project that you wish to host the Snowplow JavaScript Tracker in
- Navigate to the Storage section of Google Cloud Console
- Create a new bucket with the following settings
Option | Value |
---|---|
Name (also see Add DNS Record for bucket) | For example, [company-name]-sp-js |
Storage region | Select a suitable region, multi-region offers the widest availability and highest SLAs |
Storage class | Standard |
Access control options | Fine grained |
Connecting your domain to your storage bucket (optional)
You may wish to connect your domain to your Cloud Storage bucket. In this case your bucket can be named in the format of a subdomain e.g.spassets.acme.com
.
See Add DNS Record for bucket for additional step you'll need to take.
Upload your file
Click Upload Files and upload your tracker file.
Make future upgrades easier
We recommend that you create a folder for each version of the JavaScript tracker to make future updates easier. If you wish to do this then first create a folder corresponding to the version and place your tracker file in that folder.
Set metadata
Open the Edit Metadata popup using the file menu.
- Alter the
Content-Encoding
value to begzip
- Alter the
Cache-Control
tomax-age=31536000
- Save the meta data
Set permissions
Open the Edit Access popup using the file menu.
Add a new item in the table, enter the following details and click Save.
Option | Value |
---|---|
Entity | Public |
Name | allUsers |
Access | Reader |
Click Copy URL next to Public to internet in the file browser to get the file's URL e.g. https://storage.googleapis.com/company-name-sp-js/gh7rnghq.js
Add DNS Record for bucket (optional)
This will only work correctly if:
- you earlier created your bucket with a name corresponding to the subdomain (see Creating a storage bucket) you wish to use
- you have verified ownership of this domain in Google Cloud: https://cloud.google.com/storage/docs/domain-name-verification.
To connect your domain to your Cloud Storage bucket, you will need to create a CNAME
record as below:
Option | Value |
---|---|
Name | [your domain] |
Type | CNAME |
Data | c.storage.googleapis.com. |
CNAME redirection only works on HTTP, to ensure this works on HTTPS you must follow this troubleshooting guide.
Update your tracking tags
Update any existing tracking tags to point to your self-hosted file URL.