Installation
Punchify runs as a Docker application with three containers: the app, a PostgreSQL database and the Caddy web server, which takes care of the HTTPS certificate automatically. All settings live in one file: .env.
Requirements
- A Linux server with Docker and the Compose plugin (
docker compose). A small server is enough for small and medium businesses, e.g. 2 CPU cores, 4 GB RAM and 40 GB storage. - An address (e.g.
time.yourcompany.com) whose DNS record (A or AAAA) points to the server. - Ports 80 and 443 reachable from the internet (for the Let's Encrypt certificate).
- Outgoing access to
https://admin.punchify.app(daily licence check). - A licence key – free for up to 5 people or as a 60-day trial via punchify.app.
In three steps
1. Fetch the files
mkdir punchify && cd punchify
curl -fsSLO https://punchify.app/install/docker-compose.yml
curl -fsSLO https://punchify.app/install/Caddyfile
curl -fsSL https://punchify.app/install/env.example -o .env
2. Enter the configuration
nano .env
At minimum you need: PUNCHIFY_DOMAIN, ACME_EMAIL, PUNCHIFY_LICENSE_KEY, two random values for PUNCHIFY_DB_PASSWORD and PUNCHIFY_SECRET_KEY, and the email and password of the first admin. You can create random values with:
openssl rand -hex 32
All settings are explained under Configuration.
3. Start
docker compose up -d
After about a minute Punchify is available at https://<your domain>. Sign in with the email and password from PUNCHIFY_ADMIN_EMAIL and PUNCHIFY_ADMIN_PASSWORD – and change the password afterwards under Settings. Continue with the first steps.
Important: Keep
PUNCHIFY_SECRET_KEYsafe (e.g. in a password manager). Without this key the backups cannot be restored.
What lives where
| Container | Purpose | Data (Docker volume) |
|---|---|---|
app |
Punchify itself | punchify-data – including the nightly backups under /data/backups |
db |
PostgreSQL 16 | db-data |
caddy |
Web server, HTTPS | caddy-data, caddy-config (certificates) |
Check that everything runs
docker compose ps
docker compose logs app --tail 50
curl -fsS https://<your domain>/healthz
/healthz answers with {"status":"ok", "version": …} once the app is ready.
Hosted by Punchify
If you don't want to look after a server, we run Punchify for you in a data centre in Nuremberg, Germany – with your own address such as yourcompany.punchify.app, automatic updates and backups. See pricing.