Trouble running PlexConnect and a web server

1. Caddy version (caddy version):

2. How I run Caddy:

a. System environment:

Ubuntu

b. Command:

I run Caddy through systemctl as installed from “sudo apt install caddy”

sudo systemctl start caddy

c. Service/unit/compose file:

paste full file contents here

d. My complete Caddyfile or JSON config:

#this section works without a problem and is the reverse proxy for a Jellyfin installation
myDomain.com {
	reverse_proxy 127.0.0.1:8096
}


#This is where we have a problem
#I've specified port 4433 in the Settings.cfg file for PlexConnect
#
trailers.apple.com:80, trailers.apple.com:443 {
    reverse_proxy  http://127.0.0.1:4433
	
    tls /home/alex/PlexConnect-master/assets/certificates/trailers.pem /home/alex/PlexConnect-master/assets/certificates/trailers.key
}

3. The problem I’m having:

In addition to running a reverse proxy for my domain, which works without a problem I’m also trying to run PlexConnect on the same machine. PlexConnect functions as a DNS for older spec AppleTV units to redirect their requests on put Plex on them when they don’t natively run 3rd party apps.

Because the AppleTV will always us port 80 or 443 I need to add an entry to my Caddyfile to allow PlexConnect to run on my machine without conflicting with my Jellyfin reverse proxy.

4. Error messages and/or full log output:

● caddy.service - Caddy
   Loaded: loaded (/lib/systemd/system/caddy.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-08-24 18:27:58 MDT; 6s ago
     Docs: https://caddyserver.com/docs/
  Process: 31918 ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile (code=exited, status=1/FAILURE)
  Process: 31954 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=1/FAILURE)
 Main PID: 31954 (code=exited, status=1/FAILURE)

Aug 24 18:27:58 myComputer caddy[31954]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Aug 24 18:27:58 myComputer caddy[31954]: HOME=/var/lib/caddy
Aug 24 18:27:58 myComputer caddy[31954]: LOGNAME=caddy
Aug 24 18:27:58 myComputer caddy[31954]: USER=caddy
Aug 24 18:27:58 myComputer caddy[31954]: INVOCATION_ID=34015d9dae9149a18c1a631447d8e7e2
Aug 24 18:27:58 myComputer caddy[31954]: JOURNAL_STREAM=9:275227
Aug 24 18:27:58 myComputer caddy[31954]: {"level":"info","ts":1598315278.0026765,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Aug 24 18:27:58 myComputer caddy[31954]: run: adapting config using caddyfile: server listening on [:80] is HTTP, but attempts to configure TLS connection policies
Aug 24 18:27:58 myComputer systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
Aug 24 18:27:58 myComputer systemd[1]: caddy.service: Failed with result 'exit-code'.

If I remove the entry for port 80 I get the following

● caddy.service - Caddy
   Loaded: loaded (/lib/systemd/system/caddy.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-08-24 18:29:55 MDT; 4s ago
     Docs: https://caddyserver.com/docs/
  Process: 31918 ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile (code=exited, status=1/FAILURE)
  Process: 32087 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=1/FAILURE)
 Main PID: 32087 (code=exited, status=1/FAILURE)

Aug 24 18:29:55 myComputer caddy[32087]: USER=caddy
Aug 24 18:29:55 myComputer caddy[32087]: INVOCATION_ID=56fcc1dded8a477c8b233c7e5e612ae6
Aug 24 18:29:55 myComputer caddy[32087]: JOURNAL_STREAM=9:276496
Aug 24 18:29:55 myComputer caddy[32087]: {"level":"info","ts":1598315395.2542715,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Aug 24 18:29:55 myComputer caddy[32087]: {"level":"info","ts":1598315395.255799,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins"
Aug 24 18:29:55 myComputer caddy[32087]: 2020/08/24 18:29:55 [INFO][cache:0xc000181bc0] Started certificate maintenance routine
Aug 24 18:29:55 myComputer caddy[32087]: 2020/08/24 18:29:55 [INFO][cache:0xc000181bc0] Stopped certificate maintenance routine
Aug 24 18:29:55 myComputer caddy[32087]: run: loading initial config: loading new config: loading http app module: provision http: getting tls app: loading tls app module: provision tls: load
Aug 24 18:29:55 myComputer systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
Aug 24 18:29:55 myComputer systemd[1]: caddy.service: Failed with result 'exit-code'.

5. What I already tried:

I’ve done my best to try to adapt the suggestion on Github, linked below, from a Caddy to Caddy2 Caddyfile. Unlike the comment I’ve changed both the HTTP and HTTPS ports because I’ve left SSL enabled. I’ve also updated the syntax, as shown in my CaddyFile, to what I think is a more correct Caddy2 CaddyFile.

I also tried to separate the secure ports for trailers.apple.com:80 and trailers.apple.com:443 into separate reverse proxy entries in the CaddyFile but without any luck.

6. Links to relevant resources:

https://github.com/iBaa/PlexConnect/issues/441#issuecomment-302879866

Unfortunately this log line is truncated, so we can’t see the full error message. Please use journalctl -u caddy to look at the logs.

The first error message is pretty self explanatory. You can’t configure TLS for a site on port 80, because that port is for HTTP.

What happens if you just use trailers.apple.com without specifying the port? Caddy will automatically set up the HTTP->HTTPS redirect for you, and should listen on the right ports without needing to specify.

Hi @francislavoie. Thanks for your help and for the suggestion, I’ve removed the ports from the Caddyfile for trailers.apple.com as you suggested. This section of the Caddyfile is now

trailers.apple.com {
        reverse_proxy  127.0.0.1:4433
        #websocket
        #transparent
        #header_downstream Host {host}
        #header_downstream X-Real-IP {remote}
        #header_downstream X-Forwarded-For {remote}
        #header_downstream X-Forwarded-Proto {scheme}
        #header_downstream Connection {>Connection}
        #header_downstream Upgrade {>Upgrade}
        #}
    tls /home/alex/PlexConnect-master/assets/certificates/trailers.pem /home/alex/PlexConnect-master/assets/certificates/trailers.key
}

Unfortunately this doesn’t get us there. The error mentions that port 80 is already in use but this is to be expected if I’m already running caddy for my domain. I feel like I’m missing something

After making these changes I have the following log

-- Logs begin at Wed 2019-06-26 15:29:38 MDT, end at Tue 2020-08-25 19:24:30 MDT. --
Aug 16 15:31:19 myComputer systemd[1]: Started Caddy.
Aug 16 15:31:19 myComputer caddy[26496]: caddy.HomeDir=/var/lib/caddy
Aug 16 15:31:19 myComputer caddy[26496]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Aug 16 15:31:19 myComputer caddy[26496]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Aug 16 15:31:19 myComputer caddy[26496]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Aug 16 15:31:19 myComputer caddy[26496]: runtime.GOOS=linux
Aug 16 15:31:19 myComputer caddy[26496]: runtime.GOARCH=amd64
Aug 16 15:31:19 myComputer caddy[26496]: runtime.Compiler=gc
Aug 16 15:31:19 myComputer caddy[26496]: runtime.NumCPU=6
Aug 16 15:31:19 myComputer caddy[26496]: runtime.GOMAXPROCS=6
Aug 16 15:31:19 myComputer caddy[26496]: runtime.Version=go1.14.4
Aug 16 15:31:19 myComputer caddy[26496]: os.Getwd=/
Aug 16 15:31:19 myComputer caddy[26496]: LANG=en_US.UTF-8
Aug 16 15:31:19 myComputer caddy[26496]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Aug 16 15:31:19 myComputer caddy[26496]: HOME=/var/lib/caddy
Aug 16 15:31:19 myComputer caddy[26496]: LOGNAME=caddy
Aug 16 15:31:19 myComputer caddy[26496]: USER=caddy
Aug 16 15:31:19 myComputer caddy[26496]: INVOCATION_ID=8bbbca248d0e47278a84b51332f9c880
Aug 16 15:31:19 myComputer caddy[26496]: JOURNAL_STREAM=9:276577
Aug 16 15:31:19 myComputer caddy[26496]: {"level":"info","ts":1597613479.174096,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Aug 16 15:31:19 myComputer caddy[26496]: {"level":"info","ts":1597613479.1749563,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins
Aug 16 15:31:19 myComputer caddy[26496]: {"level":"info","ts":1597613479.175038,"logger":"http","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this
Aug 16 15:31:19 myComputer caddy[26496]: {"level":"info","ts":1597613479.1750996,"logger":"tls","msg":"cleaned up storage units"}
Aug 16 15:31:19 myComputer caddy[26496]: run: loading initial config: loading new config: http app module: start: tcp: listening on :80: listen tcp :80: bind: address already in use
Aug 16 15:31:19 myComputer systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
Aug 16 15:31:19 myComputer systemd[1]: caddy.service: Failed with result 'exit-code'.
Aug 16 15:33:26 myComputer systemd[1]: Started Caddy.
Aug 16 15:33:26 myComputer caddy[26853]: caddy.HomeDir=/var/lib/caddy
Aug 16 15:33:26 myComputer caddy[26853]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Aug 16 15:33:26 myComputer caddy[26853]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Aug 16 15:33:26 myComputer caddy[26853]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Aug 16 15:33:26 myComputer caddy[26853]: runtime.GOOS=linux
Aug 16 15:33:26 myComputer caddy[26853]: runtime.GOARCH=amd64
Aug 16 15:33:26 myComputer caddy[26853]: runtime.Compiler=gc
Aug 16 15:33:26 myComputer caddy[26853]: runtime.NumCPU=6
Aug 16 15:33:26 myComputer caddy[26853]: runtime.GOMAXPROCS=6
Aug 16 15:33:26 myComputer caddy[26853]: runtime.Version=go1.14.4
Aug 16 15:33:26 myComputer caddy[26853]: os.Getwd=/
Aug 16 15:33:26 myComputer caddy[26853]: LANG=en_US.UTF-8
Aug 16 15:33:26 myComputer caddy[26853]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Aug 16 15:33:26 myComputer caddy[26853]: HOME=/var/lib/caddy
Aug 16 15:33:26 myComputer caddy[26853]: LOGNAME=caddy
Aug 16 15:33:26 myComputer caddy[26853]: USER=caddy
Aug 16 15:33:26 myComputer caddy[26853]: INVOCATION_ID=11b3da5b0b0341febe2aba99ed53610b
Aug 16 15:33:26 myComputer caddy[26853]: JOURNAL_STREAM=9:274308
Aug 16 15:33:26 myComputer caddy[26853]: {"level":"info","ts":1597613606.6888034,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Aug 16 15:33:26 myComputer caddy[26853]: {"level":"info","ts":1597613606.689813,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins"
Aug 16 15:33:26 myComputer caddy[26853]: {"level":"info","ts":1597613606.689897,"logger":"http","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this
lines 1-49

Unfortunately your logs are truncated, so I’m not seeing the issue. Try this command instead:

journalctl --no-pager -u caddy | less

You can hit Shift+G to jump to the bottom of the logs, use arrow keys or pageup/pagedown to scroll, and hit Q to quit once you’ve copied what you need.

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