This service sits between Firefox and AdZerk. Its purpose is to preserve the privacy of Firefox clients when they request sponsored content (spocs) for the Firefox New Tab. See Sponsored Stories FAQ for more information.
The following steps create a Docker development environment to run this service locally.
- Install Docker and Docker Compose.
- In the project root run:
docker-compose build. - Start a mock s3 service:
docker-compose up s3. - Copy MaxMind GeoIP2 to
pocket-geoip/GeoIP2-City.mmdbon the mock s3 container.- If the database is stored on s3:
images/s3/download.sh -p <aws profile> -b <s3 bucket> - If it's stored on disk in a file called
GeoLite2-City.mmdb:aws --endpoint-url http://localhost:4569 s3 cp GeoLite2-City.mmdb s3://pocket-geoip/GeoIP2-City.mmdb
- If the database is stored on s3:
- Verify that GeoIP2 is available at localhost:4569/pocket-geoip/GeoIP2-City.mmdb.
- Start the application containers:
docker-compose up. - Test that the application is running: http://localhost/pulse. It should return
{"pulse":"ok"}.
See the Test README.
The first time the service is deployed, follow the steps in the CloudFormation README.
Run ./deploy.sh with the following arguments:
-pAWS profile name from~/.aws/config-aECR URI for the app container-nECR URI for the nginx container
For example:
./deploy.sh -p pocket-proxy-rw \
-a "12345.dkr.ecr.us-east-1.amazonaws.com/proxy-server-dev:latest" \
-n "12345.dkr.ecr.us-east-1.amazonaws.com/proxy-server-nginx-dev:latest"Open Fargate in the AWS console and update the service, forcing a new deployment.
The Telemtry Handler is triggered by telemetry from the Firefox discovery stream. It anonymously pings AdZerk to keep track of events related to sponsored content, such as clicks and impressions in a privacy-preserving way. The event code (or "shim") does not contain any personally identifiable data; we never share personal data with AdZerk.
- Open telemetry-proxy in the Google Cloud Console
- Click Edit and paste the new code
- Click Deploy