Post

Faking An Iis Welcome Page To Entrypoint Of My Homelab Domain Just For Fun

Faking An Iis Welcome Page To Entrypoint Of My Homelab Domain Just For Fun

Faking AnIis Welcome Page To Entrypoint Of My Homelab Domain Just For Fun

INTRODUCTION

When you run a homelab that hosts dozens of services behind a single public subdomain, the entrypoint often becomes a silent sentinel that tells you whether the whole ecosystem is alive. For years I kept it simple: a static “OK” text that appeared when the reverse‑proxy could reach the backend. It worked, but after a stretch of idle time I felt the urge to inject a bit of personality – a fake IIS welcome page that greets anyone who hits the homelab’s front door.

This isn’t about replacing the real services; it’s a playful experiment in infrastructure artistry that also doubles as a quick health‑check mechanism. In this guide I’ll walk you through the entire process of creating a custom IIS‑style welcome page, exposing it through Traefik, and wiring it up in a self‑hosted environment. You’ll learn why this technique is useful for homelab owners, how to set it up without breaking existing services, and the best practices to keep it secure and maintainable.

By the end of this post you will:

  • Understand the concept of a fake welcome page as an entrypoint health indicator.
  • See how IIS behaves by default and how to mimic its response with minimal resources.
  • Follow a step‑by‑step installation of a lightweight IIS container that serves a custom HTML page.
  • Learn how to integrate the container into a Traefik routing rule so the page appears only on the designated subdomain.
  • Discover configuration tweaks, security hardening steps, and troubleshooting tips.

The guide is aimed at experienced sysadmins and DevOps engineers who are comfortable with Docker, Traefik, and basic web server administration. If you’re looking to add a dash of fun to your homelab while reinforcing your monitoring workflow, keep reading.

Keywords: self‑hosted, homelab, DevOps, infrastructure, automation, open‑source, IIS, Traefik, Docker, reverse proxy, custom welcome page


UNDERSTANDING THE TOPIC

What is a “welcome page” in a homelab context?

In most homelab deployments a single DNS entry (often a subdomain like lab.mydomain.com) resolves to the public IP of the home router. Traefik (or another reverse proxy) then inspects the Host header and forwards the request to the appropriate backend service based on path or label. The entrypoint itself can be configured to return a simple response that confirms the proxy is reachable.

Traditionally this response is a plain text string or a minimal HTML snippet. By swapping it for a full IIS‑style welcome page we gain a visual cue that feels familiar to Windows administrators while still being purely static content served from a lightweight container.

Historical background

The idea of using a static welcome page dates back to early web hosting control panels, where a default index.html signaled that the server was up. Microsoft IIS historically displayed a “Welcome to IIS” page when the default site was accessed. Open‑source projects later recreated that behavior in containers to emulate the look and feel without the heavyweight Windows Server licensing.

Key features and capabilities - Static HTML output that mimics the classic IIS welcome page, complete with logo, version banner, and a short status message.

  • Zero‑runtime overhead: the container runs a minimal IIS Express instance that only serves static files.
  • Docker‑friendly: the image can be launched with a single command, exposing only the HTTP port that Traefik uses.
  • Customizable: replace the default index.html with your own markup, add CSS, or embed a health‑check endpoint.

Pros and cons

ProsCons
Quick visual confirmation of proxy healthAdds an extra container that must be maintained
Can be styled to match branding or used for funSlightly increases attack surface if left exposed
Works with existing Traefik rules without code changesRequires proper DNS and firewall configuration
Open‑source and free to modifyNot suitable for production‑critical traffic (only decorative)

Use cases and scenarios

  • Health‑check endpoint: A browser navigating to https://lab.mydomain.com should display the welcome page, confirming that DNS, TLS, and Traefik are functioning.
  • User onboarding: New visitors see a friendly message instead of a blank error page. - Testing environment: Developers can verify routing rules before deploying real services.
  • Aesthetic integration: Align the look of the entrypoint with other internal tools for a cohesive UI.

The practice of faking server welcome pages is gaining traction among the self‑hosted community, especially as more people adopt multi‑service reverse proxies. Future trends may include dynamic health‑checks that change based on backend load, or integration with monitoring tools like Prometheus to automatically update the page content.

Comparison to alternatives

  • Nginx default page – Simpler but lacks the IIS branding.
  • Custom Traefik middleware – Can rewrite responses, but requires more complex configuration.
  • Static site generator – Overkill for a single page; Docker approach is lighter.

Overall, the Docker‑based IIS welcome page offers a sweet spot between authenticity and simplicity, making it ideal for homelab experimentation.


PREREQUISITES

System requirements

  • A machine running a 64‑bit Linux distribution (Ubuntu 22.04 LTS or newer recommended).
  • At least 2 GB of RAM and 1 CPU core available for the welcome‑page container.
  • Docker Engine version 24.0 or later.
  • Docker Compose version 2.20 or later (optional, but recommended for orchestration). ### Required software
ComponentMinimum versionPurpose
Docker24.0Runs the IIS container
Traefik2.11Reverse proxy and routing engine
Docker Hub accessPulls the mcr.microsoft.com/iis base image
DNS providerPoints the subdomain to your public IP

Network and security considerations

  • Open port 80 (HTTP) and 443 (HTTPS) on the host firewall only to the Traefik entrypoint.
  • Ensure the subdomain used for the welcome page resolves to the same public IP as your other services.
  • Keep the container’s network mode isolated; do not expose additional ports.

User permissions

  • The user performing the installation must have permission to run Docker commands (typically a member of the docker group). - Traefik’s entrypoint configuration may require root privileges to bind to low ports; using the official Traefik Docker image handles this automatically.

Pre‑installation checklist 1. Verify Docker is installed and functional (docker version).

  1. Confirm Docker Compose is available (docker compose version).
  2. Ensure the subdomain welcome.lab.mydomain.com points to your public IP.
  3. Reserve a dedicated label or path for the welcome page within Traefik’s dynamic configuration.
  4. Create a directory on the host to store the custom HTML file (/opt/homelab/welcome-page/www).

INSTALLATION & SETUP

Pulling the IIS base image

The official Microsoft IIS image is hosted on Docker Hub under the microsoft/iis repository. Use a specific tag to avoid unexpected upgrades.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
docker pull mcr.microsoft.com/iis:10.0.14393.0```  

### Creating the static content directory  

```bash
mkdir -p /opt/homelab/welcome-page/www
cat > /opt/homelab/welcome-page/www/index.html <<'EOF'
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Welcome to My Homelab</title>
    <style>
        body { font-family: Arial, sans-serif; background: #f5f5f5; margin: 0; padding: 2rem; }
        .logo { text-align: center; margin-bottom: 1rem; }
        .logo img { max-width: 200px; }
        .content { text-align: center; }
        h1 { color: #2c3e50; }
        p { color: #7f8c8d; }
    </style>
</head>
<body>
    <div class="logo">
        <img src="https://i.imgur.com/8zK9L0J.png" alt="Homelab Logo">
    </div>
    <div class="content">
        <h1>Welcome to My Homelab</h1>
        <p>All systems are operational. Current load: low.</p>
    </div>
</body>
</html>
EOF

Building a lightweight IIS container

We will use a minimal Dockerfile that copies the custom HTML into the default IIS site folder.

1
2
3
4
5
6
7
8
# Dockerfile.welcome
FROM mcr.microsoft.com/iis:10.0.14393.0

# Copy custom welcome page
COPY www /inetpub/wwwroot

# Expose only HTTP
EXPOSE 80

Build the image with a descriptive tag:

1
docker build -t homelab/welcome-page:latest -f Dockerfile.welcome .

Running the container with Docker Compose

Create a docker-compose.yml that defines the welcome page service and attaches it to Traefik’s network.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: "3.8"

services:
  welcome-page:
    image: homelab/welcome-page:latest
    container_name: $CONTAINER_NAMES_welcome
    restart: unless-stopped
    networks:
      - traefik-net
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.welcome.rule=Host(`welcome.lab.mydomain.com`)"
      - "traefik.http.routers.welcome.entrypoints=websecure"
      - "traefik.http.routers.welcome.tls=true"
      - "traefik.http.services.welcome.loadbalancer.server.port=80"
    volumes:
      - /opt/homelab/welcome-page/www:/inetpub/wwwroot:ro    $CONTAINER_COMMAND

Replace $CONTAINER_COMMAND with the command you wish to run inside the container. In this case, the default iisexpress entrypoint from the base image is sufficient, so you can omit the variable or set it to an empty string.

Start the stack:

1
2
3
4
5
6
7
docker compose up -d
```  ### Verifying the deployment  

1. Check that the container is running:  

   ```bash
   docker ps --filter "name=$CONTAINER_NAMES_welcome"
  1. Inspect the container status:

    1
    
    docker inspect $CONTAINER_ID --format "{{.State.Status}}"
    
  2. Query the logs for any startup errors:

    bash docker logs $CONTAINER_ID

  3. From a remote machine, open a browser to https://welcome.lab.mydomain.com. You should see the custom welcome page rendered.

Integration with Traefik

If Traefik is already managing other services, the labels added above will automatically register the new router. Ensure that Traefik’s dynamic configuration includes the websecure entrypoint (TLS termination). If you rely on Let’s Encrypt, make sure the ACME resolver is configured and that the certificate includes the welcome.lab.mydomain.com host.


CONFIGURATION & OPTIMIZATION

Customizing the HTML content

The index.html file can be edited at any time; because it is mounted as a volume, changes are reflected instantly. For a more authentic IIS feel, consider adding the default favicon or a CSS file that matches the classic blue theme.

1
2
3
4
cat > /opt/homelab/welcome-page/www/style.css <<'EOF'
body { background-color: #e5ecf6; }
h1 { color: #1a73e8; }
EOF

Security hardening

  • Read‑only filesystem: Add read_only: true to the service definition to prevent accidental writes.
  • Drop unnecessary capabilities: Use the --cap-drop ALL flag when running the container manually.
  • Limit network exposure: Ensure only Traefik can reach the container by placing it on an internal Docker network (traefik-net).
  • Scan the image: Run `docker scan homelab/welcome-page
This post is licensed under CC BY 4.0 by the author.