My personal website with resume and work history. Plain static HTML — no build step.
This site is managed by Skiff.
If you have a Ruby environment available, you can install Skiff globally with:
gem install kamal-skiff...otherwise, you can run a dockerized version via an alias (add this to your .bashrc or similar to simplify re-use). On macOS, use:
alias skiff="docker run -it --rm -v '${PWD}:/workdir' -v '/run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock' -e SSH_AUTH_SOCK='/run/host-services/ssh-auth.sock' -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/basecamp/kamal-skiff:latest"Then run skiff dev to start the development server.
Changes checked into git are automatically pulled onto the Skiff server every 10 seconds. So all you have to do is checkin your changes and push them.
If you need to change the nginx configuration in config/server.conf, make your changes to that file, check them into git and push, and then run skiff restart to test the configuration file and restart the server if it's valid.
First ensure that you've set GIT_URL in .kamal/secrets to a repository address with a valid access token embedded. This access token must have access to pull from the git repository in question.
Then you must also setup an access token for the Docker image registry (ghcr.io) in .kamal/secrets.
Finally, confirm the server address in config/deploy.yml is correct.
Now you're ready to run skiff deploy to deploy your site to the server. This will install Docker on your server (using apt-get), if it isn't already available.
Skiff uses Server Side Includes, which can change independently of your individual HTML files. When that happens, the caching etags for those latter files will not be updated automatically to reflect the change. You can run skiff flush to touch all the public HTML files, which will flush the etag cache.