Skip to content

Deploying txtdot

Introduction

txtdot is a lightweight, text-only web proxy that extracts the main content from web pages and presents it in a clean, minimal format. It strips away ads, tracking scripts, unnecessary JavaScript, and visual clutter to deliver just the essential text content you want to read.

Inspired by services like text.npr.org and other text-focused web proxies, txtdot provides a fast, privacy-respecting way to consume web content. It’s particularly useful for reading articles on slow connections, avoiding distracting page elements, or accessing content behind JavaScript-heavy interfaces.

Key highlights of txtdot:

  • Text Extraction: Intelligent extraction of main content from web pages
  • Minimal Design: Clean, distraction-free reading experience
  • Privacy Focused: Strips trackers, ads, and analytics
  • Low Bandwidth: Dramatically reduced data usage
  • Fast Loading: Pages load almost instantly
  • Reader Mode: Similar to browser reader modes but server-side
  • API Access: Programmatic access for integrations
  • JavaScript-Free: Works without JavaScript enabled
  • Self-Hosted: Complete control over your proxy
  • Open Source: Fully open source project

This guide walks through deploying txtdot on Klutch.sh using Docker, making your own text-only web proxy available.

Why Deploy txtdot on Klutch.sh

Deploying txtdot on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds txtdot without complex configuration. Push to GitHub, and your text proxy deploys automatically.

HTTPS by Default: Klutch.sh provides automatic SSL certificates, ensuring secure browsing through your proxy.

GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.

Private Proxy: Control who has access to your text proxy, useful for teams or organizations.

Custom Domains: Assign a custom domain for your txtdot instance.

Always-On Availability: Your text proxy remains accessible 24/7 without managing your own hardware.

Low Resource Usage: txtdot is lightweight, requiring minimal resources to run.

Prerequisites

Before deploying txtdot on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your txtdot configuration
  • Basic familiarity with Docker and containerization concepts
  • (Optional) A custom domain for your txtdot instance

Preparing Your Repository

To deploy txtdot on Klutch.sh, create a GitHub repository containing your Dockerfile.

Repository Structure

txtdot-deploy/
├── Dockerfile
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM ghcr.io/txtdot/txtdot:latest
# Set environment variables
ENV PORT=8080
ENV HOST=0.0.0.0
# Optional: Set proxy title
ENV TXTDOT_TITLE=${TXTDOT_TITLE:-txtdot}
# Expose the web interface port
EXPOSE 8080

Creating the .dockerignore File

Create a .dockerignore file:

.git
.github
*.md
LICENSE
.gitignore
*.log
.DS_Store
.env
.env.local

Environment Variables Reference

VariableRequiredDefaultDescription
PORTNo8080Port to listen on
HOSTNo0.0.0.0Host to bind to
TXTDOT_TITLENotxtdotCustom title for your instance
TXTDOT_PROXYNo-Upstream proxy for requests

Deploying txtdot on Klutch.sh

Once your repository is prepared, follow these steps to deploy txtdot:

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub. Ensure your Dockerfile is in the root of your repository.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “txtdot” or “text-proxy”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your txtdot Dockerfile.

    Configure HTTP Traffic

    txtdot serves its interface over HTTP. In the deployment settings:

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

    Set Environment Variables (Optional)

    Customize your instance:

    VariableValue
    TXTDOT_TITLEYour custom title

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Start the txtdot container
    • Provision an HTTPS certificate

    Access txtdot

    Once deployment completes, access your txtdot instance at https://your-app-name.klutch.sh.

Using txtdot

Basic Usage

Convert any URL to text-only format:

  1. Navigate to your txtdot instance
  2. Enter a URL in the input field
  3. Click “Get” or press Enter
  4. View the extracted text content

Direct URL Access

Access pages directly via URL:

https://your-app-name.klutch.sh/get?url=https://example.com/article

Bookmarklet

Create a bookmarklet for quick access:

javascript:location.href='https://your-app-name.klutch.sh/get?url='+encodeURIComponent(location.href)

Add this as a bookmark and click it on any page to view in txtdot.

API Usage

Use txtdot programmatically:

Terminal window
# Get text content
curl "https://your-app-name.klutch.sh/get?url=https://example.com/article"
# Get JSON response
curl "https://your-app-name.klutch.sh/api/get?url=https://example.com/article"

Use Cases

Reading Articles

txtdot excels at:

  • News articles with heavy advertising
  • Blog posts with distracting sidebars
  • Documentation pages with unnecessary chrome
  • Medium articles behind their wall

Low Bandwidth Situations

Ideal when:

  • On slow connections
  • With limited data plans
  • In areas with poor connectivity

Privacy Enhancement

Benefits include:

  • No JavaScript execution
  • No tracking scripts loaded
  • No advertising networks contacted
  • Minimal metadata exposure

Accessibility

Helpful for:

  • Screen reader users
  • Users preferring high contrast
  • Those with sensory processing sensitivities

Advanced Configuration

Custom Styling

txtdot uses minimal styling by default. For customization, consider forking the repository and modifying the CSS.

Upstream Proxy

Route requests through a proxy:

ENV TXTDOT_PROXY=http://proxy:8080

Rate Limiting

For public instances, consider adding rate limiting at the reverse proxy level or through application configuration.

Production Best Practices

Security Recommendations

  • Access Control: Consider restricting access for private use
  • Rate Limiting: Implement limits to prevent abuse
  • Monitoring: Watch for unusual usage patterns

Performance

  • Caching: Consider adding a caching layer for popular pages
  • Resource Allocation: txtdot is lightweight but may need more resources for high traffic
  • Connection Limits: Limit concurrent outgoing connections
  • Respect robots.txt and website terms of service
  • Consider the implications of proxying content
  • Document intended use cases

Troubleshooting Common Issues

Content Not Extracting Properly

Symptoms: Page shows little or no content.

Solutions:

  • Some sites may block automated requests
  • JavaScript-rendered content may not extract
  • Try alternative URLs for the same content

Slow Response Times

Symptoms: Pages take a long time to load.

Solutions:

  • Check target site response time
  • Verify adequate resource allocation
  • Consider the geographic distance to target sites

Connection Refused

Symptoms: Cannot connect to txtdot.

Solutions:

  • Verify deployment is running
  • Check HTTP traffic configuration
  • Review deployment logs

Additional Resources

Conclusion

Deploying txtdot on Klutch.sh gives you a fast, private text-only web proxy with automatic builds and secure HTTPS access. The minimal resource requirements and simple deployment make it easy to maintain your own instance for distraction-free reading.

Whether you’re trying to focus on content without distractions, save bandwidth on slow connections, or add a layer of privacy to your browsing, txtdot on Klutch.sh provides a reliable solution that you control.