selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

EverShelf logo

Self-host EverShelf

v1.16.16

Smart pantry manager with AI-powered expiry tracking

ReleaseOpen SourceMIT
Updated11 hours ago
LanguagePHP
Setup difficultyModerate
MobilePWA
Stars
148
RAM
256 MB
Port
80 (HTTP web server inside container)
Requires
PHP, SQLite, Web server (Apache/Nginx)
Docker
ghcr.io/dadaloop82/evershelf
Install with Docker Compose
EverShelf dashboard showing pantry, fridge, freezer, and shopping sections

What is EverShelf?

EverShelf is a self-hosted pantry management application designed for home users who want to reduce food waste and organize their kitchen inventory. It runs as a PHP web application with a SQLite database, accessible via any browser and installable as a Progressive Web App (PWA) on mobile devices. Core capabilities include barcode scanning via camera, AI-powered product identification and expiry OCR using Gemini, OpenAI, or local Llama models, smart shopping lists with anti-waste quantity suggestions and optional Bring! sync, a cooking mode with step-by-step instructions and text-to-speech, calendar feeds (ICS/WebCal) for expiry alerts, and push notifications via ntfy, webhook, or Home Assistant. The Android Kiosk companion app turns a tablet into a dedicated kitchen display with scale integration for hands-free quantity entry. Installation is simplest via Docker Compose (pre-built multi-arch images on GHCR), with a Community Applications template for Unraid and a manual bare-metal option. The project is MIT-licensed, free forever with an optional one-time donation dialog, and has no paywalled features.

Should you self-host EverShelf?

EverShelf scores 50/100 on selfhost.directory (how scoring works) and ranks #6 of 11 in Food & Agriculture. It has 148 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v1.16.16, came out on 25 October 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in PHP.

Its closest alternative on selfhost.directory is Open Food Facts (65/100, 1 195 stars). It scores higher overall, so compare the two before you pick. See EverShelf vs Open Food Facts side by side.

Features

  • AI product identification
  • Android Kiosk mode
  • Automated daily backups
  • Calendar feed (ICS/WebCal)
  • Cooking Mode
  • Custom product tags
  • Inventory Management
  • Multi-language Support
  • Product variants (parent/child)
  • Progressive Web App (PWA)
  • Push Notifications
  • Quick stocktake / audit mode
  • Receipt OCR
  • REST API with pairing authentication
  • Smart shopping lists

EverShelf README

How to install EverShelf

Install EverShelf with Docker Compose

Docker Engine + Docker Compose
Environment variables
AI_ENABLED, AI_PROVIDER, GEMINI_API_KEY, OPENAI_API_KEY, LLAMA_BASE_URL, SHOPPING_MODE, BRING_EMAIL, BRING_PASSWORD, TTS_ENABLED, API_TOKEN, TRUSTED_PROXIES, EVERSHELF_CANONICAL_HOST, EVERSHELF_ENV_FILE, and many more (see .env.example)

git clone https://github.com/dadaloop82/EverShelf.git && cd EverShelf cp .env.example .env && docker compose up -d

Pre-built multi-arch images (amd64/arm64) from GHCR; exposes port 8080 by default; persists data in named volume

EverShelf releases & version history

FAQ

App is stuck in kiosk mode after a crash

Restart the device. Screen pinning is released on reboot.

Exit button (✕) is not visible in kiosk mode

Three buttons (exit, refresh, settings) are always in the kiosk header overlay. If page failed to load, tap refresh first. If nothing visible, restart the device.

Kiosk app update fails

Enable "Install from unknown sources" for EverShelf Kiosk in Android Settings. CI must publish with stable KIOSK_KEYSTORE_* secrets. Force-stop app, clear data, relaunch update flow if persistent. Free up storage if needed.

Setup wizard can't find my server

Ensure tablet and server are on the same Wi-Fi. Try entering the URL manually. Check server responds on expected port (80/443/8080/8443).

Bluetooth scale not appearing in the gateway app

Wake up the scale (step on it or press its button). Ensure Bluetooth and Location permissions are granted to the gateway app (Location required by Android for BLE scanning). Restart the gateway app.

Scale shows weight but form doesn't auto-fill

Auto-fill only triggers for products with unit g or ml. Tap "⚖️ Read Scale" first to activate the scale modal. Weight must stabilize (within 10g) for the countdown to start.

Scale readings don't appear in EverShelf

Confirm the gateway app is running and shows the WebSocket URL. Ensure the Gateway URL in EverShelf Settings matches exactly. Both devices must be on the same network.

Items aren't syncing to Bring!

Verify credentials at getbring.com and check PHP error log for Bring! API rate-limit errors.

The app asks for an API token / a pairing code

On first run with API_TOKEN set, the UI shows a one-time pairing code. Find it in Settings → System → Security on a paired device, or in server logs (grep -i "pairing code" logs/evershelf_*.log).

"Permission denied" error for the data directory

Ensure the data/ directory is writable by the web server user (www-data for Apache, nginx for Nginx). Run chmod 755 data/ and chown -R www-data:www-data data/ if needed.

Camera doesn't work / barcode scanner won't open

Camera access requires HTTPS on modern browsers. Use a valid TLS certificate or configure a self-signed certificate and install the CA on client devices.

More in Food & Agriculture

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…