Skip to content

Deploying Google Webfonts Helper

Introduction

Google Webfonts Helper is a service that helps you self-host Google Fonts. Instead of loading fonts from Google’s servers (which can have privacy and GDPR implications), this tool provides the font files and CSS needed to host fonts on your own infrastructure.

The web interface allows you to select fonts, choose character sets and styles, and generate the optimal CSS along with downloadable font files. This eliminates the need for your users’ browsers to contact Google’s servers when loading your web pages.

Key highlights of Google Webfonts Helper:

  • Privacy Compliant: No third-party requests to Google servers
  • GDPR Friendly: Meet European data protection requirements
  • Performance: Eliminate external DNS lookups and connections
  • Full Font Library: Access to entire Google Fonts catalog
  • Multiple Formats: WOFF2, WOFF, TTF, EOT, SVG formats
  • Subset Selection: Choose specific character sets
  • CSS Generation: Ready-to-use @font-face declarations
  • Custom Prefixes: Configure font file paths
  • Open Source: Licensed under Apache 2.0

This guide walks through deploying Google Webfonts Helper on Klutch.sh using Docker.

Why Deploy Google Webfonts Helper on Klutch.sh

Deploying Google Webfonts Helper on Klutch.sh provides several advantages:

Team Resource: Provide self-hosted fonts for your organization’s projects.

Privacy Infrastructure: Part of a privacy-respecting web development toolkit.

Always Available: Font download service available 24/7.

HTTPS by Default: Secure access for font downloads.

Custom Instance: Configure for your specific needs.

Prerequisites

Before deploying Google Webfonts Helper on Klutch.sh, ensure you have:

Understanding the Architecture

Google Webfonts Helper consists of:

Node.js Backend: Fetches font metadata from Google Fonts API.

React Frontend: User interface for font selection and configuration.

Font Generator: Creates downloadable ZIP files with fonts and CSS.

Cache Layer: Caches font data to reduce API calls.

Preparing Your Repository

Create a GitHub repository with your configuration.

Repository Structure

webfonts-helper-deploy/
├── Dockerfile
└── .dockerignore

Creating the Dockerfile

FROM node:18-alpine
WORKDIR /app
# Clone repository
RUN apk add --no-cache git && \
git clone https://github.com/majodev/google-webfonts-helper.git . && \
npm install && \
npm run build
# Set environment variables
ENV PORT=3000
ENV NODE_ENV=production
# Expose port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
# Start server
CMD ["npm", "start"]

Environment Variables Reference

VariableRequiredDescription
PORTNoHTTP port (default: 3000)
GOOGLE_FONTS_API_KEYNoGoogle Fonts API key (optional, for metadata)
NODE_ENVNoNode environment

Deploying on Klutch.sh

    Push Your Repository to GitHub

    Commit your Dockerfile to GitHub.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project named “webfonts-helper” or “google-fonts”.

    Create a New App

    Create a new app and connect your GitHub repository.

    Configure HTTP Traffic

    Set up HTTP traffic:

    • Select HTTP as the traffic type
    • Set the internal port to 3000

    Set Environment Variables

    VariableValue
    NODE_ENVproduction

    Deploy Your Application

    Click Deploy to build and launch the application.

    Access Your Instance

    Navigate to your app URL to use the font helper.

Using Google Webfonts Helper

Selecting Fonts

  1. Visit your deployed instance
  2. Browse or search the font catalog
  3. Click on a font to view details
  4. Select styles (weights) you need

Choosing Subsets

Select character sets:

  • Latin: Basic Latin characters
  • Latin Extended: Accented characters
  • Cyrillic: Russian, Ukrainian, etc.
  • Greek: Greek alphabet
  • Vietnamese: Vietnamese characters

Configuring CSS

Set the path prefix for font files:

  • For /fonts/ directory: ../fonts/
  • For root directory: /fonts/
  • Custom paths as needed

Downloading Fonts

  1. Configure all options
  2. Click “Download” to get ZIP
  3. Extract font files
  4. Copy generated CSS

Integrating Fonts in Your Project

Directory Structure

your-project/
├── css/
│ └── fonts.css
├── fonts/
│ ├── roboto-v30-latin-regular.woff2
│ ├── roboto-v30-latin-regular.woff
│ └── ...
└── index.html

Generated CSS Example

/* roboto-regular - latin */
@font-face {
font-display: swap;
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url('../fonts/roboto-v30-latin-regular.woff2') format('woff2'),
url('../fonts/roboto-v30-latin-regular.woff') format('woff');
}

Using in HTML

<link rel="stylesheet" href="css/fonts.css">
<style>
body {
font-family: 'Roboto', sans-serif;
}
</style>

Font Formats

WOFF2

  • Most compressed format
  • Modern browser support
  • Recommended primary format

WOFF

  • Good compression
  • Wider browser support
  • Fallback for older browsers

TTF/OTF

  • TrueType/OpenType
  • Legacy browser support
  • Largest file size

Performance Optimization

Subset Selection

Only include needed character sets:

  • Smaller file sizes
  • Faster loading
  • Select minimum required subsets

Font Display

Use font-display: swap:

  • Shows fallback font immediately
  • Swaps when font loads
  • Better perceived performance

Preloading

Preload critical fonts:

<link rel="preload" href="/fonts/roboto-v30-latin-regular.woff2"
as="font" type="font/woff2" crossorigin>

GDPR Compliance

Why Self-Host?

When using Google Fonts from Google’s CDN:

  • User IPs are sent to Google
  • May require cookie consent
  • Potential GDPR violations in EU

Self-Hosting Benefits

  • No third-party data sharing
  • Full control over font delivery
  • No consent required for fonts
  • Better privacy compliance

Variable Fonts

Google Webfonts Helper may support variable fonts:

  • Single file for all weights
  • Smaller total size
  • Dynamic weight adjustment

Caching Strategy

Browser Caching

Set long cache times for font files:

Cache-Control: public, max-age=31536000

CDN Caching

Consider using a CDN for font delivery:

  • Faster global delivery
  • Reduced server load
  • Better caching

Troubleshooting

Fonts Not Loading

  • Check file paths in CSS
  • Verify font files exist
  • Check browser console for errors
  • Ensure correct MIME types

CORS Issues

If serving from different domain:

Access-Control-Allow-Origin: *

Font Display Issues

  • Clear browser cache
  • Check @font-face syntax
  • Verify font-family name usage

Additional Resources

Conclusion

Deploying Google Webfonts Helper on Klutch.sh provides a private, controlled way to use Google Fonts without privacy concerns. By self-hosting fonts, you improve user privacy, potentially enhance performance, and ensure GDPR compliance.

The combination of this tool’s ease of use and Klutch.sh’s reliable hosting creates an ideal solution for teams that want to use Google Fonts responsibly.