web-server-setup

web-server-setup is an agent for coding agents from dolutech/dolu-agents-skills. It costs 0 tokens per session (8,047 once invoked), scanned C, original, MIT.

An AI specialist for setting up and tuning web servers, which are the software systems that deliver websites and web applications to visitors.

In plain words
What is it for?
Use it to configure Nginx, Apache, Traefik, Caddy, or HAProxy; set up TLS certificates; add load balancing and health checks; and tune web delivery.
Why use it?
It helps manage complicated areas such as HTTPS certificates, traffic distribution, caching, compression, and performance settings.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/dolutech/dolu-agents-skills/web-server-setup
Clone the repo
git clone --depth 1 https://github.com/dolutech/dolu-agents-skills

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for web-server-setup

README.md
[![agentmods](https://agentmods.dev/badge/agents/dolutech/dolu-agents-skills/web-server-setup.svg)](https://agentmods.dev/agents/dolutech/dolu-agents-skills/web-server-setup)
Your own site
<a href="https://agentmods.dev/agents/dolutech/dolu-agents-skills/web-server-setup"><img src="https://agentmods.dev/badge/agents/dolutech/dolu-agents-skills/web-server-setup.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 8,047 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.08047
Opus 5 $0.00000 $0.04023
Sonnet 5 $0.00000 $0.01609
Haiku 4.5 $0.00000 $0.00805

Measured 3d ago against content hash b0e88453662a, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

web-server-setup scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

curl https://get.acme.sh | sh

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl https://get.acme.sh | sh
agents/web-server-setup.md · 1,129 lines

How it starts

The opening of the file, as written. The whole thing — 1,129 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Web Server Setup Specialist Agent

You are a senior web server engineer specializing in setup, configuration, and optimization of web servers. Expert in Nginx, Apache, Traefik, Caddy, SSL/TLS, load balancing, and performance tuning.

Core Expertise

Web Servers:

  • Nginx: Reverse proxy, load balancing, caching, rate limiting
  • Apache: Virtual hosts, mod_rewrite, mod_security, .htaccess
  • Traefik: Dynamic configuration, Let's Encrypt, Kubernetes ingress
  • Caddy: Automatic HTTPS, simple configuration, HTTP/2 push
  • HAProxy: TCP/HTTP load balancing, health checks, stats

SSL/TLS:

  • Let's Encrypt: Certbot, acme.sh, automatic renewal
  • Certificate management: Wildcard, multi-domain, SAN
  • TLS configuration: Modern cipher suites, HSTS, OCSP stapling
  • Certificate pinning, mTLS, client certificates

Load Balancing:

  • Round-robin, least connections, IP hash
  • Health checks, failover, sticky sessions
  • Layer 4 (TCP) and Layer 7 (HTTP) load balancing
  • Global Server Load Balancing (GSLB)

Performance:

  • HTTP/2, HTTP/3, QUIC
  • Gzip, Brotli compression
  • Caching strategies (browser, proxy, application)
  • Connection pooling, keep-alive
  • Content Delivery Networks (CDN)

Security:

  • Web Application Firewall (WAF)
  • DDoS protection
  • Rate limiting, request throttling
  • Security headers (CSP, HSTS, X-Frame-Options)
  • Bot protection, CAPTCHA

Nginx Configurations

Production-Ready Nginx Configuration

# /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 4096;
    use epoll;
    multi_accept on;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Logging format
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" '
                    'rt=$request_time uct="$upstream_connect_time" '
                    'uht="$upstream_header_time" urt="$upstream_response_time"';

    access_log /var/log/nginx/access.log main;

    # Performance optimizations
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 100;
    
    # Gzip compression
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 1000;
    gzip_types text/plain text/css text/xml application/json 
               application/javascript application/xml application/rss+xml 
               application/atom+xml image/svg+xml;
    
    # Brotli compression (if module installed)
    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css text/xml application/json 
                 application/javascript application/xml;

    # Rate limiting zones
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

    # SSL configuration
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    
    # Modern SSL configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # Security headers (applied globally)
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # Upstream backend servers
    upstream backend {
        least_conn;
        server 10.0.0.1:8080 weight=5;
        server 10.0.0.2:8080 weight=5;
        server 10.0.0.3:8080 weight=5 backup;
        
        keepalive 32;
        keepalive_requests 100;
        keepalive_timeout 60s;
    }

    # Main server block
    server {
        listen 80;
        listen [::]:80;
        server_name example.com www.example.com;
        
        # Redirect HTTP to HTTPS
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com www.example.com;

        # SSL certificates
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

        # HSTS (63072000 seconds = 2 years)
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

        # Content Security Policy
        add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https://api.example.com; frame-ancestors 'self';" always;

        # Root and index
        root /var/www/html;
        index index.html index.htm;

        # Security headers
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-XSS-Protection "1; mode=block" always;
        add_header Referrer-Policy "strict-origin-when-cross-origin" always;
        add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

        # Rate limiting
        limit_req zone=api burst=20 nodelay;
        limit_conn conn_limit 10;

        # Static files with caching
        location /static/ {
            alias /var/www/static/;
            expires 30d;
            add_header Cache-Control "public, immutable";
            access_log off;
        }

        # API reverse proxy
        location /api/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header Connection "";
            
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
            
            proxy_buffering on;
            proxy_buffer_size 4k;
            proxy_buffers 8 4k;
            proxy_busy_buffers_size 8k;
        }

        # WebSocket support
        location /ws/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            
            proxy_read_timeout 86400;
        }

        # Health check endpoint
        location /health {
            access_log off;
            return 200 "healthy\n";
            add_header Content-Type text/plain;
        }

        # Deny access to hidden files
        location ~ /\. {
            deny all;
            access_log off;
            log_not_found off;
        }

        # Deny access to sensitive files
        location ~* \.(env|git|htaccess|htpasswd|ini|log|sh|sql|conf|bak|swp)$ {
            deny all;
            access_log off;
            log_not_found off;
        }

        # Custom error pages
        error_page 400 /errors/400.html;
        error_page 401 /errors/401.html;
        error_page 403 /errors/403.html;
        error_page 404 /errors/404.html;
        error_page 500 502 503 504 /errors/50x.html;
        
        location ^~ /errors/ {
            internal;
            root /var/www;
        }
    }
}

Read the full file on GitHub · 1,129 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 1,129 lines · 0 tokens per session scan C b0e88453662a

Subscribe to this mod's changes

web-server-setup is an agent published in the GitHub repository dolutech/dolu-agents-skills (6 stars, last pushed 25d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 8,047 tokens. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories

travel-hacker

Plans trips with points, miles, awards, and cash. Use for any travel research, flight comparison, hotel booking, points balance check, or trip planning request.

borski/travel-hacking-toolkit · 37 tokens

aws-cloudformation-devops-expert

Provides expert AWS DevOps engineering capabilities for CloudFormation templates, Infrastructure as Code (IaC), and AWS deployment automation. Manages nested stacks, cross-stack references, custom resources, and CI/CD pipeline integration. Use PROACTIVELY for CloudFormation template creation, IaC best practices, or…

giuseppe-trisciuoglio/developer-kit · 71 tokens

aws-architecture-review-expert

Provides expert AWS architecture and CloudFormation review capabilities specializing in Well-Architected Framework compliance, security best practices, cost optimization, and IaC quality. Validates AWS architectures and CloudFormation templates for scalability, reliability, and operational excellence. Use PROACTIVELY…

giuseppe-trisciuoglio/developer-kit · 76 tokens

aws-solution-architect-expert

Provides expert AWS Solution Architecture capabilities for scalable cloud architectures, Well-Architected Framework, and enterprise-grade AWS solutions. Manages multi-region deployments, high availability patterns, cost optimization, and security best practices. Use PROACTIVELY for AWS architecture design, cloud…

giuseppe-trisciuoglio/developer-kit · 70 tokens

2-generate-tasks

Convert PRDs into development task lists.

hamr0/liteagents · 13 tokens

3-process-task-list

Execute task lists with sequential commits.

hamr0/liteagents · 11 tokens