diff --git a/defaults/main.yml b/defaults/main.yml index 39c3c59..844ece7 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,3 +1,6 @@ --- caddy_config_sites_directory: "/etc/caddy/sites.d" caddy_config_sites_clear: false +caddy_installation_method: "apt" + +caddy_download_url: "https://caddyserver.com/api/download?os=linux&arch=amd64" diff --git a/tasks/install.yml b/tasks/install_apt.yml similarity index 100% rename from tasks/install.yml rename to tasks/install_apt.yml diff --git a/tasks/install_bin.yml b/tasks/install_bin.yml new file mode 100644 index 0000000..8ff235b --- /dev/null +++ b/tasks/install_bin.yml @@ -0,0 +1,39 @@ +--- +- name: Create caddy user + user: + state: present + name: "caddy" + groups: + - "www-data" + append: true + shell: "/usr/sbin/nologin" + home: "/var/lib/caddy" + comment: "Caddy web server" + system: yes + +- name: Download caddy binary + get_url: + url: "{{ caddy_download_url }}" + dest: "/usr/bin/caddy" + owner: "root" + group: "root" + mode: 0755 + +- name: Create caddy configuration directory + file: + path: "/etc/caddy" + owner: "caddy" + group: "caddy" + state: directory + +- name: Template caddy systemd-service + template: + src: "caddy.service.j2" + dest: "/etc/systemd/system/caddy.service" + +- name: Enable and start caddy systemd-service + systemd: + name: "caddy.service" + daemon_reload: yes + enabled: yes + state: started diff --git a/tasks/main.yml b/tasks/main.yml index 4c1ce98..3bd6e71 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,4 +1,5 @@ --- -- import_tasks: "install.yml" +- import_tasks: "install_{{ caddy_installation_method }}.yml" + - import_tasks: "configuration.yml" diff --git a/templates/caddy.service.j2 b/templates/caddy.service.j2 new file mode 100644 index 0000000..df8d5f0 --- /dev/null +++ b/templates/caddy.service.j2 @@ -0,0 +1,35 @@ +# 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