Skip to content

Instantly share code, notes, and snippets.

@mholt
Forked from kennwhite/unprivileged_caddy.sh
Created May 29, 2016 05:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mholt/f16c0d0e82ffb84cc3d5e5a58aff2b3b to your computer and use it in GitHub Desktop.
Save mholt/f16c0d0e82ffb84cc3d5e5a58aff2b3b to your computer and use it in GitHub Desktop.
Run caddy server as unprivileged user, includes Hugo option
#!/bin/bash
# *As root*
cd ~
killall caddy
rm -rf ~/caddy
mkdir caddy && cd caddy
curl -SL 'https://caddyserver.com/download/build?os=linux&arch=amd64&features=hugo' > caddy.tgz
tar xzf caddy.tgz
ulimit -n 4096
userdel -rf caddy
useradd -m -s /sbin/nologin caddy
chown caddy:caddy ./caddy
chmod 755 caddy
rm -f /usr/local/bin/caddy
cp -p ./caddy /usr/local/bin/caddy
# Must be reapplied if this file is moved or altered (you're welcome)
setcap cap_net_bind_service=+ep /usr/local/bin/caddy
ls -lh /usr/local/bin
# Note admin login is: hugoadmin/retoast-teamwork
echo -e "localdev:80\nroot /home/caddy\nbasicauth /admin hugoadmin retoast-teamwork\nhugo" > /home/caddy/Caddyfile
echo 'Hello world' > /home/caddy/index.html
chown caddy:caddy /home/caddy/*
rm -f /root/caddy/caddy.log
# To run in foreground
# cd /home/caddy && sudo -u caddy /usr/local/bin/caddy |& tee -a /root/caddy/caddy.log
# To run in background:
( cd /home/caddy && sudo -u caddy /usr/local/bin/caddy > /root/caddy/caddy.log 2>&1 & )
pgrep caddy -lf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment