Default Caddyfile for new installation of Drupal 10+

1. The problem I’m having:

I’m new to Caddy and would like to get Caddy working with Drupal 10.2.5 but I’m not sure what I need to have in the Caddyfile. Does anyone have a good example for a fresh Drupal 10.2+ site?

I found this but it doesn’t quite help because I am not converting from a nginx file

2. Error messages and/or full log output:

$ sudo journalctl -u caddy --no-pager
Apr 26 18:55:30 wildland-fire-project-science-gateway systemd[1]: Starting Caddy...
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: caddy.HomeDir=/var/lib/caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: caddy.Version=v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.GOOS=linux
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.GOARCH=amd64
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.Compiler=gc
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.NumCPU=2
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.GOMAXPROCS=2
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: runtime.Version=go1.21.5
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: os.Getwd=/
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: LANG=C.UTF-8
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: NOTIFY_SOCKET=/run/systemd/notify
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: HOME=/var/lib/caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: LOGNAME=caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: USER=caddy
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: INVOCATION_ID=17781eaf46ea4731bf5203494b8b0670
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: JOURNAL_STREAM=8:32102
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: SYSTEMD_EXEC_PID=3840
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2389727,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.240343,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"warn","ts":1714157730.240566,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv0","http_port":80}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2408059,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2409887,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 26 18:55:30 wildland-fire-project-science-gateway systemd[1]: Started Caddy.
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2423449,"msg":"serving initial configuration"}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.242526,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc0003f5b00"}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"warn","ts":1714157730.2426546,"logger":"tls","msg":"unable to get instance ID; storage clean stamps will be incomplete","error":"open /var/lib/caddy/.local/share/caddy/instance.uuid: no such file or directory"}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2500436,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/var/lib/caddy/.local/share/caddy"}
Apr 26 18:55:30 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714157730.2504897,"logger":"tls","msg":"finished cleaning storage units"}
Apr 30 01:02:09 wildland-fire-project-science-gateway systemd[1]: Reloading Caddy...
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[30117]: {"level":"info","ts":1714438929.0991054,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.101604,"logger":"admin.api","msg":"received request","method":"POST","host":"localhost:2019","uri":"/load","remote_ip":"127.0.0.1","remote_port":"47852","headers":{"Accept-Encoding":["gzip"],"Cache-Control":["must-revalidate"],"Content-Length":["185"],"Content-Type":["application/json"],"Origin":["http://localhost:2019"],"User-Agent":["Go-http-client/1.1"]}}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1026924,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"warn","ts":1714438929.1027863,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv0","http_port":80}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1029253,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.102947,"logger":"http","msg":"servers shutting down with eternal grace period"}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1033876,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1038246,"logger":"admin.api","msg":"load complete"}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1046455,"logger":"admin","msg":"stopped previous server","address":"localhost:2019"}
Apr 30 01:02:09 wildland-fire-project-science-gateway systemd[1]: Reloaded Caddy.
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.109185,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/var/lib/caddy/.local/share/caddy"}
Apr 30 01:02:09 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714438929.1093214,"logger":"tls","msg":"finished cleaning storage units"}
Apr 30 01:23:13 wildland-fire-project-science-gateway systemd[1]: Reloading Caddy...
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[30339]: {"level":"info","ts":1714440194.0295365,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0323842,"logger":"admin.api","msg":"received request","method":"POST","host":"localhost:2019","uri":"/load","remote_ip":"127.0.0.1","remote_port":"48558","headers":{"Accept-Encoding":["gzip"],"Cache-Control":["must-revalidate"],"Content-Length":["444"],"Content-Type":["application/json"],"Origin":["http://localhost:2019"],"User-Agent":["Go-http-client/1.1"]}}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.033313,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//127.0.0.1:2019","//localhost:2019","//[::1]:2019"]}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0335042,"logger":"http.auto_https","msg":"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS","server_name":"srv0","https_port":443}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.033523,"logger":"http.auto_https","msg":"enabling automatic HTTP->HTTPS redirects","server_name":"srv0"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"warn","ts":1714440194.0335295,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv1","http_port":80}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0338087,"logger":"http","msg":"enabling HTTP/3 listener","addr":":443"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0341012,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0341752,"logger":"http.log","msg":"server running","name":"srv1","protocols":["h1","h2","h3"]}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.034184,"logger":"http","msg":"enabling automatic TLS certificate management","domains":["wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"]}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0342968,"logger":"http","msg":"servers shutting down with eternal grace period"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.03489,"logger":"tls.obtain","msg":"acquiring lock","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.035124,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0358014,"logger":"admin.api","msg":"load complete"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0374413,"logger":"tls.obtain","msg":"lock acquired","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.037792,"logger":"tls.obtain","msg":"obtaining certificate","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.0384119,"logger":"admin","msg":"stopped previous server","address":"localhost:2019"}
Apr 30 01:23:14 wildland-fire-project-science-gateway systemd[1]: Reloaded Caddy.
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.329354,"logger":"http","msg":"waiting on internal rate limiter","identifiers":["wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"],"ca":"https://acme-v02.api.letsencrypt.org/directory","account":""}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.3296573,"logger":"http","msg":"done waiting on internal rate limiter","identifiers":["wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"],"ca":"https://acme-v02.api.letsencrypt.org/directory","account":""}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.4735982,"logger":"http.acme_client","msg":"trying to solve challenge","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge_type":"tls-alpn-01","ca":"https://acme-v02.api.letsencrypt.org/directory"}
Apr 30 01:23:14 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440194.7254205,"logger":"tls","msg":"served key authentication certificate","server_name":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge":"tls-alpn-01","remote":"3.145.28.139:44160","distributed":false}
Apr 30 01:23:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440195.0163941,"logger":"tls","msg":"served key authentication certificate","server_name":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge":"tls-alpn-01","remote":"54.200.111.119:25726","distributed":false}
Apr 30 01:23:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440195.1550996,"logger":"tls","msg":"served key authentication certificate","server_name":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge":"tls-alpn-01","remote":"23.178.112.104:42417","distributed":false}
Apr 30 01:23:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440195.3465052,"logger":"tls","msg":"served key authentication certificate","server_name":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge":"tls-alpn-01","remote":"16.171.60.117:15520","distributed":false}
Apr 30 01:23:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440195.9643888,"logger":"tls","msg":"served key authentication certificate","server_name":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","challenge":"tls-alpn-01","remote":"13.212.25.87:50630","distributed":false}
Apr 30 01:23:16 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440196.0339098,"logger":"http.acme_client","msg":"authorization finalized","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org","authz_status":"valid"}
Apr 30 01:23:16 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440196.0339422,"logger":"http.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/1700369947/265259547607"}
Apr 30 01:23:16 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440196.4362197,"logger":"http.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/03986ad834a33562bd979e17c35953d8baec"}
Apr 30 01:23:16 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440196.4370856,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"}
Apr 30 01:23:16 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440196.4373426,"logger":"tls.obtain","msg":"releasing lock","identifier":"wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"}
Apr 30 01:25:15 wildland-fire-project-science-gateway systemd[1]: Reloading Caddy...
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[30389]: {"level":"info","ts":1714440315.1841464,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[30389]: {"level":"warn","ts":1714440315.185174,"msg":"Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies","adapter":"caddyfile","file":"/etc/caddy/Caddyfile","line":27}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1866136,"logger":"admin.api","msg":"received request","method":"POST","host":"localhost:2019","uri":"/load","remote_ip":"127.0.0.1","remote_port":"47028","headers":{"Accept-Encoding":["gzip"],"Cache-Control":["must-revalidate"],"Content-Length":["348"],"Content-Type":["application/json"],"Origin":["http://localhost:2019"],"User-Agent":["Go-http-client/1.1"]}}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1877518,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1880581,"logger":"http.auto_https","msg":"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS","server_name":"srv0","https_port":443}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1880856,"logger":"http.auto_https","msg":"enabling automatic HTTP->HTTPS redirects","server_name":"srv0"}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1883729,"logger":"http","msg":"enabling HTTP/3 listener","addr":":443"}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.188409,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1884503,"logger":"http.log","msg":"server running","name":"remaining_auto_https_redirects","protocols":["h1","h2","h3"]}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1884553,"logger":"http","msg":"enabling automatic TLS certificate management","domains":["wildland-fire-project-science-gateway.ees230093.projects.jetstream-cloud.org"]}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1884794,"logger":"http","msg":"servers shutting down with eternal grace period"}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1889963,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1890814,"logger":"admin.api","msg":"load complete"}
Apr 30 01:25:15 wildland-fire-project-science-gateway caddy[3840]: {"level":"info","ts":1714440315.1899104,"logger":"admin","msg":"stopped previous server","address":"localhost:2019"}
Apr 30 01:25:15 wildland-fire-project-science-gateway systemd[1]: Reloaded Caddy.

3. Caddy version:

v2.7.6

4. How I installed and ran Caddy:

I installed it following the instructions here: stable release for ubuntu

a. System environment:

Ubuntu 22.04
Linux wildland-fire-project-science-gateway 5.15.0-105-generic #115-Ubuntu SMP Mon Apr 15 09:52:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

b. Command:

c. Service/unit/compose file:

$ cat composer.json
{
    "name": "drupal/recommended-project",
    "description": "Project template for Drupal projects with a relocated docume
nt root",
    "type": "project",
    "license": "GPL-2.0-or-later",
    "homepage": "https://www.drupal.org/project/drupal",
    "support": {
        "docs": "https://www.drupal.org/docs/user_guide/en/index.html",
        "chat": "https://www.drupal.org/node/314178"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],
    "require": {
        "composer/installers": "^2.0",
        "drupal/core-composer-scaffold": "^10.2",
        "drupal/core-project-message": "^10.2",
        "drupal/core-recommended": "^10.2"
    },
    "conflict": {
        "drupal/drupal": "*"
    },
    "minimum-stability": "stable",
    "prefer-stable": true,
    "config": {
        "allow-plugins": {
            "composer/installers": true,
            "drupal/core-composer-scaffold": true,
            "drupal/core-project-message": true,
            "phpstan/extension-installer": true,
            "dealerdirect/phpcodesniffer-composer-installer": true,
            "php-http/discovery": true
        },
        "sort-packages": true
    },
    "extra": {
        "drupal-scaffold": {
            "locations": {
                "web-root": "web/"
            }
        },
        "installer-paths": {
            "web/core": [
                "type:drupal-core"
            ],
            "web/libraries/{$name}": [
                "type:drupal-library"
            ],
            "web/modules/contrib/{$name}": [
                "type:drupal-module"
            ],
            "web/profiles/contrib/{$name}": [
                "type:drupal-profile"
            ],
            "web/themes/contrib/{$name}": [
                "type:drupal-theme"
            ],
            "drush/Commands/contrib/{$name}": [
                "type:drupal-drush"
            ],
            "web/modules/custom/{$name}": [
                "type:drupal-custom-module"
            ],
            "web/profiles/custom/{$name}": [
                "type:drupal-custom-profile"
            ],
            "web/themes/custom/{$name}": [
                "type:drupal-custom-theme"
            ]
        },
        "drupal-core-project-message": {
            "include-keys": [
                "homepage",
                "support"
            ],
            "post-create-project-cmd-message": [
                "<bg=blue;fg=white>                                             
            </>",
                "<bg=blue;fg=white>  Congratulations, you’ve installed the Drupa
l codebase  </>",
                "<bg=blue;fg=white>  from the drupal/recommended-project templat
e!          </>",
                "<bg=blue;fg=white>                                             
            </>",
                "",
                "<bg=yellow;fg=black>Next steps</>:",
                "  * Install the site: https://www.drupal.org/docs/installing-dr
upal",
                "  * Read the user guide: https://www.drupal.org/docs/user_guide
/en/index.html",
                "  * Get support: https://www.drupal.org/support",
                "  * Get involved with the Drupal community:",
                "      https://www.drupal.org/getting-involved",
                "  * Remove the plugin that prints this message:",
                "      composer remove drupal/core-project-message"
            ]
        }
    }
}

d. My complete Caddy config:

wildland-fire-project-science-gateway {
	# Set this path to your site's directory.
	root * /usr/share/caddy

	# Enable the static file server.
	#file_server

	# Another common task is to set up a reverse proxy:
	# reverse_proxy localhost:8080

	# Or serve a PHP site through php-fpm:
	# php_fastcgi localhost:9000
}

I’ve tried with the “file_server” commented and uncommented but it didn’t seem to make any different. I did restart caddy using “sudo systemctl restart caddy” in between changes to the Caddyfile

5. Links to relevant resources:

i’m trying to set this up on an OpenStack system and following their installation instructions @ Setup a Web Server with automatic HTTPS - Jetstream2 Documentation

All help is appreciated, thanks!

See Common Caddyfile Patterns — Caddy Documentation

1 Like

thank you @francislavoie

1 Like

Hi @mona, here is my Caddyfile for Drupal 10+. It works for multiple Drupal sites because of “{http.request.host.labels.2}”.

(common) {
        header /* {
                -Server
                -X-Powered-By
                -X-Generator
        }
}

(ssl) {
        tls /opt/homebrew/etc/ssl/_wildcard.local.test+4.pem /opt/homebrew/etc/ssl/_wildcard.local.test+4-key.pem
}

(php-socket) {
        encode zstd gzip
        php_fastcgi unix//tmp/php-fpm.sock
        file_server
}

(drupal) {
        import common
        import php-socket

        @hiddenFilesRegexp path_regexp (^|/)\.
        error @hiddenFilesRegexp 403

        @hiddenPhpFilesRegexp path_regexp \..*/.*\.php$
        error @hiddenPhpFilesRegexp 403

        @vendorPhpFiles path /vendor/.*\.php$
        error @vendorPhpFiles 404

        @sitesFilesPhpFilesRegexp path_regexp ^/sites/[^/]+/files/.*\.php$
        error @sitesFilesPhpFilesRegexp 404

        @privateDirRegexp path_regexp ^/sites/.*/private/
        error @privateDirRegexp 403

        @protectedFilesRegexp {
                path_regexp \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$
        }
        error @protectedFilesRegexp 404

        @staticFiles path_regexp \.(avif|css|eot|gif|gz|ico|jpg|jpeg|js|otf|pdf|png|svg|ttf|webp|woff|woff2)
        header @staticFiles Cache-Control "max-age=31536000,public,immutable"

        @privateFiles path_regexp ^(/[a-z\-]+)?/system/files/
        handle @privateFiles {
                try_files {path} /index.php?{query}
        }
}

*.local.test {
        import ssl
        import drupal
        root * "/Users/asrob/Sites/{http.request.host.labels.2}/web"
}