Ultimate Tutorial: Drupal 11 + DDEV + nip.io + SSL via Certbot

What You’ll Build
A secure local Drupal 11 stack with DDEV, nip.io, and Let's Encrypt SSL certificates via Certbot.
Requirements
- Docker
- DDEV
- Composer
- PHP
- Optional: custom domain for real cert
STEP 1: Create Drupal 11 Project
mkdir drupal11-ddev && cd drupal11-ddev
composer create-project drupal/recommended-project:^11 .
STEP 2: Initialize DDEV
ddev config --project-type=drupal11 --docroot=web --create-docroot
Edit prompts as needed (project name, docroot, etc).
STEP 3: Enable nip.io DNS
Find your local IP:
# macOS
ipconfig getifaddr en0
# Linux
hostname -I
# Windows
ipconfig
Update .ddev/config.yaml
:
additional_fqdns:
- drupal.192.168.1.100.nip.io
STEP 4: Start DDEV
ddev start
Open: https://drupal.192.168.1.100.nip.io
STEP 5: Add SSL via Certbot (Optional)
Let’s Encrypt does NOT support nip.io
. You need a real domain.
Option A: Use Custom Domain
sudo certbot certonly --manual --preferred-challenges dns -d dev.yourdomain.com
Then add the TXT record when prompted.
STEP 6: Copy Certs Into DDEV
mkdir -p .ddev/ssl
cp /etc/letsencrypt/live/dev.yourdomain.com/fullchain.pem .ddev/ssl/
cp /etc/letsencrypt/live/dev.yourdomain.com/privkey.pem .ddev/ssl/
STEP 7: Docker Compose Override
version: '3.6'
services:
web:
volumes:
- ./ssl/fullchain.pem:/etc/ssl/certs/fullchain.pem:ro
- ./ssl/privkey.pem:/etc/ssl/private/privkey.pem:ro
environment:
- HTTPS_CERT=/etc/ssl/certs/fullchain.pem
- HTTPS_KEY=/etc/ssl/private/privkey.pem
STEP 8: Restart
ddev restart
Verify via: curl -I https://dev.yourdomain.com
Optional: Dynamic Domain Bash Script
#!/bin/bash
IP=$(ipconfig getifaddr en0)
HOST="drupal.$IP.nip.io"
echo "Using dev domain: $HOST"
yq e ".additional_fqdns += [\"$HOST\"]" -i .ddev/config.yaml
ddev restart
echo "Access at https://$HOST"
Final Project Structure
drupal11-ddev/
├── .ddev/
│ ├── config.yaml
│ ├── docker-compose.override.yaml
│ └── ssl/
│ ├── fullchain.pem
│ └── privkey.pem
├── web/
├── composer.json
└── ...
Recap
- Drupal 11
- DDEV stack
- nip.io or custom domain
- SSL integration
Pro Tips
- Automate renewals with
certbot renew
+ cron - Use Cloudflare API for auto DNS-challenge
- Traefik or Caddy offer auto-SSL in dev