COMPLETE SOFTWARE · SELF-HOSTED · NO SUBSCRIPTION

Download it. Install it. Make it yours.

Everything you need to run your own recipe library on a home server. Start with the complete application download, then follow the instructions below. No GitHub account or programming experience required.

Install and use the full software before deciding what it is worth. How value-for-value pricing works.

ALREADY INSTALLED?

Upgrade your existing site in one guided command

If you have an earlier v1.0.x version on Linux or a Synology NAS, download and extract the special upgrade kit into a new folder, then open an SSH terminal in that folder and run:

bash UPDATE.sh

The updater finds the old installation (or asks where it is), checks the release, shows the upgrade plan, and asks for approval. The underlying installer makes verified database and code backups before changing software. It preserves recipes, photos, accounts and private configuration.

Download easy upgrade kit (.zip)

Important: This is an upgrade, not a new install. Do not overwrite the existing folder or delete its database. Keep an independent backup. First-time upgrade requires SSH access; subsequent Owner-approved updates can be performed from Admin View → Software Updates after one-time host updater setup.

BEFORE YOU BEGIN

What you need

A computer to run the server

A Linux computer, VM or existing home server with Docker Engine and Docker Compose v2. Ubuntu and Debian-style examples appear below. You also need enough free storage for images, recipes, backups and Docker.

Basic access to the server

You need to sign in to Linux and open its Terminal. Commands in the guide go into that Terminal, not into your browser. Internet access is needed to install Docker and download its container images.

Supported platform: Linux with Docker is the clean-install-tested platform. Windows Docker Desktop is available as an expected-compatible option, but has not completed real Windows 10/11 end-to-end installation acceptance. This is self-hosted server software, not a double-click Windows desktop app.

RECOMMENDED INSTALLATION

Linux installation, one step at a time

These instructions assume a fresh installation on an Ubuntu/Debian-based Linux server. Do not run the fresh installer over an existing recipe collection.

  1. Install Docker first

    Follow Docker's official installation instructions for your Linux distribution, including the Compose plugin. On an Ubuntu/Debian server, install the additional common tools:

    sudo apt update
    sudo apt install -y unzip curl rsync

    Verify Docker and Compose:

    docker --version
    docker compose version

    If Docker reports permission denied, follow Docker's Linux post-install instructions or use an authorized Docker administrator account. Docker access effectively grants root-level control of the server.

  2. Download and unpack the full software

    Click Download complete software above. Put the downloaded ZIP on the Linux server (using your browser on that machine, SCP, or the commands below). If using Terminal directly on the server:

    mkdir -p ~/applications
    cd ~/applications
    curl -fLO https://yourkitchenlibrary.com/downloads/your-kitchen-library-1.0.4.zip
    unzip your-kitchen-library-1.0.4.zip
    cd your-kitchen-library-1.0.4

    The extracted directory should contain Dockerfile, docker-compose.yml, .env.example, sql, tools and www. Do not download an installer-only ZIP instead.

  3. Configuration is automatic

    For an ordinary installation, do not copy or manually edit .env. On the first real installation the script creates a private settings file, generates separate secure database passwords, and configures the application for localhost-only access. It never displays those passwords. The default time zone is UTC; you can change it later.

    Secure starting point: the website is accessible at http://127.0.0.1:8080 only on the server itself or via an encrypted SSH tunnel. Docker does not expose it to other devices. Do not publish HTTP port 8080 on your LAN or the internet. Complete Owner setup before setting up outside access.

    Advanced installations already using a working HTTPS reverse proxy may configure .env before installation with the real APP_BASE_URL=https://..., FORCE_HTTPS=1, and SECURE_COOKIES=1. Full configuration reference.

  4. Check everything before installing

    bash tools/recipe-site-install.sh --dry-run

    The dry run changes nothing. Read warnings first; the installer refuses to initialize a database that already has tables, protecting existing installations.

  5. Run the installation

    bash tools/recipe-site-install.sh

    Review the prompt and enter INSTALL when requested. Your private settings and database credentials are generated automatically if needed. Docker will create the application and MariaDB services. A successful run ends with INSTALL=PASS. Do not repeatedly rerun an installation that fails partway through without reviewing the error.

  6. Create your first Owner account

    On the server itself—or in a browser using a private SSH tunnel to its localhost port—open http://127.0.0.1:8080/setup-owner.php (default port 8080). This is localhost: the address works only on the host computer unless you have configured access from another device. Choose your Owner login and a password of at least 12 characters. The first-owner setup closes after an Owner exists.

  7. Finish setup and verify the installation

    Sign in as Owner. Open Admin → Site Settings to set the site title, appearance, access rules and users. Add your first recipe, then check service health:

    bash tools/recipe-site-health.sh

    Look for RECIPE_SITE_HEALTH=PASS. Your new library begins empty; the author's private recipe collection is not distributed with the software.

HOME SERVER SETUP

Installing on a Synology NAS

Synology NAS owners should follow the same Linux installer once Docker and the Docker Compose v2 command are available. Some DSM releases require installing or upgrading the Compose plugin separately. Download the complete ZIP and extract it to a persistent NAS folder (for example /volume1/docker/your-kitchen-library-{v}). Then connect through SSH and enter the extracted folder.

docker --version
docker compose version
bash tools/recipe-site-install.sh --dry-run
bash tools/recipe-site-install.sh

The software initially listens only on the NAS's loopback address. To open First Owner Setup from your own computer without exposing your password over an unencrypted LAN, create an encrypted SSH tunnel from that computer:

ssh -L 8080:127.0.0.1:8080 nas-user@YOUR_NAS_IP

Leave that SSH connection open. On the same computer, open http://127.0.0.1:8080/setup-owner.php. Do not try to use http://NAS-IP:8080 directly. After the Owner account is created, configure a correctly certified HTTPS reverse proxy or private tunnel before accessing the site from other devices.

For more detailed requirements, including DSM/Container Manager, troubleshooting, and backups, read the included docs/SYNOLOGY_NAS.md file in your downloaded ZIP. Contact Support if Docker Compose is missing.

ALTERNATIVE PLATFORM

Using Windows 10/11 with Docker Desktop

Install Docker Desktop and ensure Linux containers are enabled. Extract the same complete ZIP into a normal folder, open PowerShell inside the extracted directory, then run the PowerShell installer. It generates private database credentials automatically when needed.

powershell -ExecutionPolicy Bypass -File .\tools\recipe-site-install.ps1 -DryRun
powershell -ExecutionPolicy Bypass -File .\tools\recipe-site-install.ps1

Windows preview note: Static validation exists, but a real-host fresh install and upgrade have not yet passed the project's acceptance tests. Consult the complete Windows guide before proceeding.

LOCAL NETWORK & REMOTE ACCESS

Using your library from a phone or another computer

The default installation binds the website to 127.0.0.1:8080, which means it is accessible on the server itself, not automatically to the rest of your network. To reach it from another device, set up a suitably configured reverse proxy or tunnel. For internet access, use HTTPS (for example, Caddy, Nginx, or Cloudflare Tunnel). Set your application's URL and secure cookie settings to match.

Security: Do not expose MariaDB or phpMyAdmin directly to the internet, and do not port-forward database ports. For a basic first installation, get it working locally before setting up remote access. Read security guidance →

Since version 1.0.2, Your Kitchen Library includes an Owner-only Software Updates screen. The website cannot run Docker itself: on Linux, enable its separate verified updater with sudo bash tools/recipe-site-updater-host.sh --install-dir "$PWD" --install-systemd. On a Synology NAS follow the included docs/UPDATER.md to set up DSM Task Scheduler. When enabled, Owners can check for new releases and explicitly approve upgrades; the host script verifies packages and creates backups before proceeding.

KEEP YOUR RECIPES SAFE

Backups and future updates

Back up your recipes and images

Both the MariaDB database and uploaded media matter. Use the provided backup/restore tools, protect a copy of .env separately, and test restoring before relying on backups. Backup and restore instructions →

Upgrade without wiping your collection

Extract each future release into a separate new folder. Run that release's upgrader against your existing installation; never overwrite the existing folder or run fresh install against your current database. Upgrade instructions →

HELP & TROUBLESHOOTING

Common questions

Docker says permission denied. What do I do?

Your account may not be authorized to control Docker. See Docker's post-install steps. Sign out and back in if your administrator changes group permissions.

There is a pending account request but no Owner to approve it.

A Request Account is different from the first-Owner setup. If an earlier request already uses your username or email, return to /setup-owner.php after fixing HTTPS/session access. Choose a different Owner username and leave the optional email blank if it is already taken. Once that Owner exists, sign in and review pending accounts in Admin → Users. Do not edit database role IDs or delete volumes to recover.

I click Create First Owner but nothing happens, or I see Invalid form token.

First reload /setup-owner.php. If it says setup is complete, the account already exists and you should sign in. Otherwise, check the URL: with ordinary HTTP and SECURE_COOKIES=1 the session cookie may not be sent, so the form is rejected. For private access only on the server itself or through an SSH tunnel to localhost, temporarily set APP_BASE_URL=http://127.0.0.1:8080 (use your port), FORCE_HTTPS=0, and SECURE_COOKIES=0 in .env. Apply changes with docker compose up -d --force-recreate web, then refresh the setup page. For an already working HTTPS domain, keep both flags at 1 and visit the HTTPS URL. Restore both flags to 1 when HTTPS is ready. Never enter an Owner password over ordinary HTTP on your LAN or internet. If the issue continues, contact Support with your OS, browser, exact URL without credentials, and the visible error; do not send passwords or .env.

My browser cannot open localhost:8080.

Confirm the installer finished with INSTALL=PASS, then run bash tools/recipe-site-health.sh. Make sure you are browsing from the server itself. If browsing from your laptop or phone, localhost means that laptop or phone—not your server.

The port is already occupied.

Change the WEB_PORT value in .env to an unused host port, run the installer preflight again and use the chosen port in your browser. Avoid changing the internal container port.

I see a database or password error.

Double-check that the MariaDB values match the corresponding DB_* application values. If an install was partially completed, preserve the logs and investigate before restarting; do not delete database volumes indiscriminately.

Where are the example recipes?

A clean 1.0.4 installation includes reference settings and categories, not the author's private collection. Add or import your own recipes after creating your Owner account.

Do I have to pay or provide payment details?

No. It is the full version with no subscription or locked features. Use it first; if you find it valuable, contribute what you believe it is worth. Read the pricing terms.

Still stuck? Email for installation help. Include your operating system, the command that failed and the error message. Do not send passwords, .env, database dumps or private keys.

Browse all technical documentation