Skip to content

Deploying Nginx Proxy Manager

Introduction

Nginx Proxy Manager is a powerful reverse proxy management system that provides an easy-to-use web interface for managing Nginx-based proxy configurations. It eliminates the need to manually edit Nginx configuration files, making reverse proxy setup accessible to users of all skill levels.

Built on top of Nginx, the Proxy Manager handles SSL certificate provisioning through Let’s Encrypt, custom SSL certificates, access control lists, and advanced proxy configurations. The intuitive dashboard allows you to create proxy hosts, redirection hosts, streams, and 404 hosts with just a few clicks.

Key highlights of Nginx Proxy Manager:

  • Web-Based Interface: Manage all proxy configurations through a clean, modern dashboard
  • Free SSL Certificates: Automatic Let’s Encrypt certificate provisioning and renewal
  • Custom SSL Support: Upload and manage your own SSL certificates
  • Access Control: Built-in access lists for IP-based restrictions and basic authentication
  • Proxy Hosts: Route traffic to backend services with custom headers and websocket support
  • Redirection Hosts: Create URL redirections with customizable response codes
  • Stream Hosts: Proxy TCP/UDP traffic for non-HTTP services
  • 404 Hosts: Custom 404 pages for unmatched domains
  • Multi-User Support: Create multiple users with different permission levels
  • Audit Logging: Track changes made through the interface
  • Open Source: Licensed under MIT with active community development

This guide walks through deploying Nginx Proxy Manager on Klutch.sh using Docker.

Why Deploy Nginx Proxy Manager on Klutch.sh

Deploying Nginx Proxy Manager on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Nginx Proxy Manager without complex setup.

Persistent Storage: Attach persistent volumes for your proxy configurations, SSL certificates, and database. Your settings survive container restarts.

HTTPS by Default: Klutch.sh provides automatic SSL certificates for the management interface itself.

GitHub Integration: Connect your configuration repository directly from GitHub for version-controlled deployments.

Scalable Resources: Allocate CPU and memory based on your proxy traffic requirements.

Environment Variable Management: Securely store sensitive configuration through Klutch.sh’s environment variable system.

Custom Domains: Assign a custom domain for your proxy manager dashboard.

Always-On Availability: Your proxy manager remains accessible 24/7.

Prerequisites

Before deploying Nginx Proxy Manager on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your configuration
  • Basic understanding of reverse proxies and networking concepts
  • (Optional) A custom domain for your Nginx Proxy Manager instance

Understanding Nginx Proxy Manager Architecture

Nginx Proxy Manager consists of several components:

Nginx Core: The underlying web server handling all proxy traffic. Configurations are generated automatically based on your dashboard settings.

Management API: A Node.js backend that handles the web interface logic, database operations, and certificate management.

SQLite Database: Stores all configuration data, user accounts, and audit logs in a lightweight embedded database.

Let’s Encrypt Integration: Built-in ACME client for automatic SSL certificate provisioning and renewal.

Web Interface: A modern frontend built with Angular for managing all proxy configurations.

Deploying Nginx Proxy Manager on Klutch.sh

    Create Your GitHub Repository

    Create a new GitHub repository for your Nginx Proxy Manager deployment configuration.

    Create the Dockerfile

    Create a Dockerfile in your repository root:

    FROM jc21/nginx-proxy-manager:latest
    # Environment configuration
    ENV DB_SQLITE_FILE=/data/database.sqlite
    ENV DISABLE_IPV6=true
    EXPOSE 80 81 443

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project with a descriptive name like “nginx-proxy-manager”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account and select your repository.

    Configure HTTP Traffic

    In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 81 (management interface)

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    DB_SQLITE_FILE/data/database.sqlite
    DISABLE_IPV6true

    Attach Persistent Volumes

    Add persistent storage:

    Mount PathRecommended SizePurpose
    /data5 GBDatabase and configuration
    /etc/letsencrypt1 GBSSL certificates

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will build the container, attach volumes, and start Nginx Proxy Manager.

    Access the Dashboard

    Once deployed, access the management interface at https://your-app-name.klutch.sh. Default credentials:

    • Email: admin@example.com
    • Password: changeme

    Change Default Credentials

    Immediately change the default admin credentials:

    1. Click on your user profile
    2. Update email and password
    3. Save changes

Initial Configuration

Creating Your First Proxy Host

To set up a reverse proxy:

  1. Click “Proxy Hosts” in the dashboard
  2. Click “Add Proxy Host”
  3. Enter the domain name
  4. Set the forward hostname/IP and port
  5. Enable SSL if desired
  6. Save the configuration

SSL Certificate Configuration

For automatic Let’s Encrypt certificates:

  1. Edit your proxy host
  2. Go to the SSL tab
  3. Select “Request a new SSL Certificate”
  4. Enable “Force SSL”
  5. Save to provision the certificate

Access Control Lists

Create IP-based or authentication restrictions:

  1. Navigate to “Access Lists”
  2. Click “Add Access List”
  3. Configure allowed IPs or basic auth users
  4. Apply the access list to proxy hosts

Production Best Practices

Security Recommendations

  • Change default credentials immediately after deployment
  • Use strong passwords for all user accounts
  • Limit access to the management interface
  • Enable access lists for sensitive backend services
  • Keep the application updated

Performance Optimization

  • Monitor resource usage for high-traffic proxies
  • Configure appropriate timeouts for backend services
  • Enable caching for static content where appropriate

Backup Strategy

  1. Database Backups: Regularly back up /data/database.sqlite
  2. Certificate Backups: Back up /etc/letsencrypt directory
  3. Configuration Export: Document your proxy configurations

Troubleshooting Common Issues

Cannot Access Dashboard

  • Verify port 81 is correctly configured
  • Check that the container is running
  • Review deployment logs for errors

SSL Certificate Issues

  • Ensure domain DNS is properly configured
  • Verify Let’s Encrypt rate limits haven’t been exceeded
  • Check certificate renewal logs

Proxy Not Working

  • Verify backend service is accessible
  • Check forward hostname and port settings
  • Review Nginx error logs in the dashboard

Additional Resources

Conclusion

Deploying Nginx Proxy Manager on Klutch.sh provides a powerful, user-friendly solution for managing reverse proxies and SSL certificates. The intuitive web interface eliminates the complexity of manual Nginx configuration while providing enterprise-grade features like access control and audit logging.