V2 Just Returns Blank Page, Status 200

1. My Caddy version (caddy version):

v2.0.0-rc.3 h1:z2H/QnaRscip6aZJxwTbghu3zhC88Vo8l/K57WUce4Q=

2. How I run Caddy:

a. System environment:

Raspbian Buster, Systemd

b. Command:

sudo systemctl restart caddy

c. Service/unit/compose file:

# caddy.service
#
# For using Caddy with a config file.
#
# Make sure the ExecStart and ExecReload commands are correct
# for your installation.
#
# WARNING: This service does not use the --resume flag, so if you
# use the API to make changes, they will be overwritten by the
# Caddyfile next time the service is restarted. If you intend to
# use Caddy's API to configure it, add the --resume flag to the
# `caddy run` command or use the caddy-api.service file instead.

[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target

[Service]
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

d. My complete Caddyfile or JSON config:

:80 {
        root * /var/www/html
	log
}

3. The problem Iā€™m having:

I originally tried to upgrade a reverse proxy from V1 to V2 but was not having the best luck so I wanted to start smaller.

I am upgrading this simple web server from V1 to V2. For some reason, V2 is just serving a blank page.

4. Error messages and/or full log output:

sudo journalctl -u caddy.service | tail -30

Apr 26 13:18:43 raspberrypi systemd[1]: Started Caddy.
Apr 26 13:18:43 raspberrypi caddy[8220]: caddy.HomeDir=/var/lib/caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.GOOS=linux
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.GOARCH=arm
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.Compiler=gc
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.NumCPU=4
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.GOMAXPROCS=4
Apr 26 13:18:43 raspberrypi caddy[8220]: runtime.Version=go1.14.2
Apr 26 13:18:43 raspberrypi caddy[8220]: os.Getwd=/
Apr 26 13:18:43 raspberrypi caddy[8220]: LANG=en_US.UTF-8
Apr 26 13:18:43 raspberrypi caddy[8220]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Apr 26 13:18:43 raspberrypi caddy[8220]: HOME=/var/lib/caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: LOGNAME=caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: USER=caddy
Apr 26 13:18:43 raspberrypi caddy[8220]: INVOCATION_ID=21869836a4114b67889454d38aa19c83
Apr 26 13:18:43 raspberrypi caddy[8220]: JOURNAL_STREAM=8:7355175
Apr 26 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.5857306,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 26 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.5905416,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins":["localhost:2019","[::1]:2019","127.0.0.1:2019"]}
Apr 26 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.5910616,"logger":"http","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 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.5912955,"logger":"tls","msg":"cleaned up storage units"}
Apr 26 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.591957,"msg":"autosaved config","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 26 13:18:43 raspberrypi caddy[8220]: {"level":"info","ts":1587921523.592,"msg":"serving initial configuration"}
Apr 26 13:18:43 raspberrypi caddy[8220]: 2020/04/26 13:18:43 [INFO][cache:0x24c4080] Started certificate maintenance routine
Apr 26 13:19:01 raspberrypi caddy[8220]: {"level":"info","ts":1587921541.2219622,"logger":"http.log.access","msg":"handled request","request":{"method":"GET","uri":"/","proto":"HTTP/1.1","remote_addr":"192.168.0.20:58796","host":"192.168.0.180","headers":{"Accept-Language":["en-US,en;q=0.9"],"Connection":["keep-alive"],"Cache-Control":["max-age=0"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"],"Accept-Encoding":["gzip, deflate"]}},"common_log":"192.168.0.20 - - [26/Apr/2020:13:19:01 -0400] \"GET / HTTP/1.1\" 0 0","latency":0.000018018,"size":0,"status":0,"resp_headers":{"Server":["Caddy"]}}
Apr 26 13:19:01 raspberrypi caddy[8220]: {"level":"info","ts":1587921541.296046,"logger":"http.log.access","msg":"handled request","request":{"method":"GET","uri":"/favicon.ico","proto":"HTTP/1.1","remote_addr":"192.168.0.20:58796","host":"192.168.0.180","headers":{"Cache-Control":["no-cache"],"Accept":["image/webp,image/apng,image/*,*/*;q=0.8"],"Connection":["keep-alive"],"Pragma":["no-cache"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"],"Referer":["http://192.168.0.180/"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-US,en;q=0.9"]}},"common_log":"192.168.0.20 - - [26/Apr/2020:13:19:01 -0400] \"GET /favicon.ico HTTP/1.1\" 0 0","latency":0.000019167,"size":0,"status":0,"resp_headers":{"Server":["Caddy"]}}

5. What I already tried:

I have tried changing file permissions on /var/www/html (sudo chmod -R caddy:caddy /var/www/html)
I tried running Caddy without the service (cd /etc/caddy && sudo caddy run)
Running Caddy as a file server straight from the command line works! (sudo caddy file-server --root /var/www/html/)

As per the upgrade guide, in v2 you need to specify file_server. In v1, this was enabled implicitly, but in v2 enabling a file server needs to be done explicitly.

1 Like

I must not have read carefully enough, sorry about that. Thanks for the quick reply.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.