| Next revision | Previous revision |
| advanced:kotori_caddy [2020/12/10 17:54] – created dan | advanced:kotori_caddy [2020/12/13 11:44] (current) – [Installation] dan |
|---|
| Kotori is assumed to be installed and running. | Kotori is assumed to be installed and running. |
| |
| Unfortunately, Caddy doesn't appear to be available to install as a .deb package in Ubuntu, so you'll need to build it from source. To do that, first install Go using ''snap install go --classic''. Once that's installed, use to build ''xcaddy'', which you'll use to build Caddy itself. Run ''go get -u github.com/caddyserver/xcaddy/cmd/xcaddy'' followed by ''go build -o /usr/local/bin/xcaddy github.com/caddyserver/xcaddy/cmd/xcaddy''. | Unfortunately, Caddy doesn't appear to be available to install as a .deb package in Ubuntu, so you'll need to build it from source. To do that, first install Go using ''snap install go --classic''. Once that's installed, use it to build ''xcaddy'', which you'll use to build Caddy itself. Run ''go get -u github.com/caddyserver/xcaddy/cmd/xcaddy'' followed by ''go build -o /usr/local/bin/xcaddy github.com/caddyserver/xcaddy/cmd/xcaddy''. |
| |
| Finally, build Caddy itself. If you aren't adding any [[https://caddyserver.com/download|plugins]] (such as for DNS validation), run ''xcaddy build --output /usr/bin/caddy''. If you're going to expose this system to the Internet, you won't need any plugins. If you're going to run this on a private network, you'll need to use DNS validation instead, and you'll need one of the plugins to do that. In that case, the build command would look like ''xcaddy build --output /usr/bin/caddy --with github.com/caddy-dns/cloudflare'' (or whichever other plugin you'd chosen). | Finally, build Caddy itself. If you aren't adding any [[https://caddyserver.com/download|plugins]] (such as for DNS validation), run ''xcaddy build --output /usr/bin/caddy''. If you're going to expose this system to the Internet, you won't need any plugins. If you're going to run this on a private network, you'll need to use DNS validation instead, and you'll need one of the plugins to do that. In that case, the build command would look like ''xcaddy build --output /usr/bin/caddy --with github.com/caddy-dns/cloudflare'' (or whichever other plugin you'd chosen). |
| Create a user and group for Caddy: ''groupadd --system caddy'', ''useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server" caddy''. | Create a user and group for Caddy: ''groupadd --system caddy'', ''useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server" caddy''. |
| |
| Create ''/etc/systemd/system/caddy.service'' using your favorite text editor. Its contents should be: | Download the systemd unit. Run ''wget -O /etc/systemd/system/caddy.service https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service''. |
| <code> | |
| # caddy.service | |
| # | |
| # For using Caddy with a config file. | |
| # | |
| # Make sure the ExecStart and ExecReload commands are correct | |
| # for your installation. | |
| # | |
| # See https://caddyserver.com/docs/install for instructions. | |
| # | |
| # 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 network-online.target | |
| Requires=network-online.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 | |
| </code> | |
| |
| Create a Caddyfile and set its ownership by running ''mkdir /etc/caddy'', ''touch /etc/caddy/Caddyfile'', and ''chown -R caddy:caddy /etc/caddy/''. | Create a Caddyfile and set its ownership by running ''mkdir /etc/caddy'', ''touch /etc/caddy/Caddyfile'', and ''chown -R caddy:caddy /etc/caddy/''. |