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/''. |