Skip to content

Install

Ingle is a single binary with a SQLite database. The Docker image runs on both Intel/AMD (amd64) and ARM (arm64, such as a Raspberry Pi 4 or 5). To run the binary directly instead, see Without Docker.

Terminal window
docker run -d --name ingle -p 8080:8080 -v ingle-data:/data ghcr.io/lukeskelhorn/ingle:latest

Open http://localhost:8080 and follow the first-run setup.

The container runs as the distroless nonroot user (UID 65532). A named volume works as it is. If you bind-mount a host folder instead, make it writable by that UID first: sudo chown 65532:65532 ./ingle-data.

The deploy/ folder in the repository runs Ingle with Docker Compose, with Caddy in front for HTTPS. You end up with:

  • Ingle at an address like https://ingle.home.example.com, reachable only on your home network.
  • A real HTTPS certificate. The iPad needs HTTPS to install Ingle as a home-screen app and keep working through Wi-Fi blips.
  • A backup every night, with the last 14 kept.
  • A machine on your home network with Docker and Docker Compose.
  • A domain whose DNS is on Cloudflare. Caddy proves to Let’s Encrypt that you own it through Cloudflare’s API, so nothing has to be opened to the internet. If your DNS is somewhere else, see Other DNS hosts.
  • The server’s LAN IP address, for example 192.168.1.10. Give it a fixed IP (a DHCP reservation) in your router.

In Cloudflare, add a DNS record:

Type Name Content Proxy status
A ingle.home 192.168.1.10 (your server) DNS only (grey cloud)

It has to be DNS only: Cloudflare can’t reach a LAN address.

In Cloudflare, go to My Profile › API Tokens › Create Token and use the Edit zone DNS template:

  • Permissions: Zone › DNS › Edit
  • Zone resources: Include › Specific zone › your domain

Copy the token. Caddy only uses it to add and remove a temporary _acme-challenge TXT record when it gets or renews the certificate.

Terminal window
git clone https://github.com/lukeskelhorn/ingle.git
cd ingle/deploy
cp .env.example .env
$EDITOR .env # set INGLE_HOSTNAME and CLOUDFLARE_API_TOKEN
# Ingle runs as UID 65532, so it needs to be able to write backups here.
mkdir -p backups && sudo chown 65532:65532 backups
docker compose up -d
docker compose logs -f # wait for Caddy to log "certificate obtained successfully"

Open your Ingle address on your phone or laptop. The first time, Ingle asks you to name the household and create the first adult. See Getting started.

.env holds the rest of the settings too, such as the timezone and backups. See Configuration.

See Installing on iPad.

If you don’t have a domain, you can run Ingle on http://192.168.1.10:8080. It works, but the iPad won’t install it as an offline-capable app, and sign-in cookies aren’t marked secure. Delete the caddy service from compose.yaml, remove the INGLE_TRUSTED_PROXIES line, and add this to the ingle service:

ports:
- "8080:8080"

Use your own instead of the bundled Caddy: see Reverse proxy, which has a Traefik example.