A demonstration of Tuskfish's mapping capabilities. This track was recorded on my Garmin Forerunner 245 watch, as I drove back from Batemans Bay on the south coast to Canberra. The map is automatically generated from an exported .kml file of the track, which Google Maps can put bounds around. The tracks are downloadable so others can use them on their own devices if they wish. You can also prepare maps in Google Earth or Google Maps itself.

The Installation Guide and User Manual have now been updated for Tuskfish CMS V2. An updated API and Developer Guide will follow soon!

The user manual provides a comprehensive guide to Tuskfish CMS operations. It covers all all aspects from installation to adding and curating content, managing site security and customisation of themes. For additional information on how to customise Tuskfish please see the developer guide.

Tuskfish 2.0.3 brings compatibility with PHP 8.1, so if you want to wring the last few milliseconds of performance out of your site, use this version. New features include support for embedding Youtube videos, a sitemap generation facility, a 'minimum views' preference before displaying the views counter, and a live character counter for the meta description field. Third party libraries have also been updated, including adoption of Bootstrap 5.1.


To robbery, slaughter, plunder, they give the lying name of empire; they make a wasteland and call it peace.

- Calgacus, 83 BC

If you are trying to build a minimalist scratch Docker container for a Golang app you may encounter the following rather infuriating error:

standard_init_linux.go:228: exec user process caused: no such file or directory

The solution is to prepend the flag CGO_ENABLED=0 to the build line as follows:

CGO_ENABLED=0 go build -o yourappname *.go

This flag tells Go to build a statically-linked binary, which doesn't have any external dependencies. You can tar this and use it to directly create a standalone Docker image. Instructions on automating the whole process with a makefile are contained within.

TLDR: You can't, unless you run the container as root, which you should not do. That's why you're having so much trouble finding a working example with a non-root user. Even the official docs example doesn't set a user...which means the container will default to running as root.

Why? SSL certificates are owned by root. For security reasons, Docker containers should be run as an unprivileged (non-root) user. This means that your Apache container cannot access the SSL certificates. At least, not unless you run the container as root, or change ownership of the files to grant your webserver access, which are bad ideas.

But I have a solution!

php --ini

You're welcome.

When developing a project you need to be able to run it in order to test it. But you don't want local changes to the configuration files to be committed. Most 'solutions' to this problem suggest untracking (removing) it from the repository. But if you want to keep the file in your project, then use:

git update-index --skip-worktree filenameOrPath

This keeps the file in the respository, but lets you change your local copy freely without including changes in commits.

"rsnapshot" is a file system backup utility based on rsync. It makes snapshots of your file system(s) at different points in time, which are stored as a time series, giving you multiple restore points. Using hard links to reference files that already exist on disk, rsnapshot creates the illusion of multiple full backups while only taking up the space of one full backup plus changes. When coupled with SSH and key-based authentication, remote file systems can be securely backed up as well. I built an automatic backup appliance for my webservers using a Raspberry Pi 4 and the excellent Argon One M.2 case