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└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM ghcr.io/txtdot/txtdot:latest
# Set environment variablesENV PORT=8080ENV HOST=0.0.0.0
# Optional: Set proxy titleENV TXTDOT_TITLE=${TXTDOT_TITLE:-txtdot}
# Expose the web interface portEXPOSE 8080Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
PORT | No | 8080 | Port to listen on |
HOST | No | 0.0.0.0 | Host to bind to |
TXTDOT_TITLE | No | txtdot | Custom title for your instance |
TXTDOT_PROXY | No | - | Upstream proxy for requests |
Deploying txtdot on Klutch.sh
Once your repository is prepared, follow these steps to deploy txtdot:
- Select HTTP as the traffic type
- Set the internal port to 8080
- Detect your Dockerfile automatically
- Build the container image
- Start the txtdot container
- Provision an HTTPS certificate
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:
Set Environment Variables (Optional)
Customize your instance:
| Variable | Value |
|---|---|
TXTDOT_TITLE | Your custom title |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
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:
- Navigate to your txtdot instance
- Enter a URL in the input field
- Click “Get” or press Enter
- View the extracted text content
Direct URL Access
Access pages directly via URL:
https://your-app-name.klutch.sh/get?url=https://example.com/articleBookmarklet
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:
# Get text contentcurl "https://your-app-name.klutch.sh/get?url=https://example.com/article"
# Get JSON responsecurl "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:8080Rate 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
Legal Considerations
- 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.