Self-Hosting Bar Assistant with Docker Compose

What Is Bar Assistant?

Bar Assistant is a self-hosted cocktail recipe manager that comes pre-loaded with 500+ cocktail recipes and 250+ base ingredients. It tracks your home bar inventory, suggests cocktails you can make with what you have, calculates costs, and supports multi-user access with role-based permissions. Think of it as your personal bartending companion — all the recipes, none of the subscription fees.

Updated February 2026: Verified with latest Docker images and configurations.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 1 GB of free RAM
  • 2 GB of free disk space
  • A domain name (optional, for remote access)

Docker Compose Configuration

Bar Assistant requires three services: the API server (PHP/Laravel), Redis for caching, and Meilisearch for full-text search.

Create a docker-compose.yml file:

services:
  bar-assistant:
    image: barassistant/server:v5.13.2
    container_name: bar-assistant
    ports:
      - "8000:80"
    environment:
      APP_ENV: "production"
      APP_KEY: "${APP_KEY}"
      APP_URL: "${APP_URL}"
      APP_DEBUG: "false"
      LOG_LEVEL: "warning"

      # Database (SQLite, embedded)
      DB_CONNECTION: "sqlite"
      DB_FOREIGN_KEYS: "true"

      # Redis (required for caching and sessions)
      CACHE_DRIVER: "redis"
      SESSION_DRIVER: "redis"
      REDIS_HOST: "redis"
      REDIS_PORT: "6379"

      # Meilisearch (required for recipe search)
      SCOUT_DRIVER: "meilisearch"
      MEILISEARCH_HOST: "http://meilisearch:7700"
      MEILISEARCH_KEY: "${MEILI_MASTER_KEY}"

      # Email (optional)
      MAIL_FROM_ADDRESS: "noreply@example.com"
      MAIL_FROM_NAME: "Bar Assistant"
    volumes:
      - bar-data:/var/www/cocktails/storage/bar-assistant
    depends_on:
      - redis
      - meilisearch
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: bar-assistant-redis
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3

  meilisearch:
    image: getmeili/meilisearch:v1.11
    container_name: bar-assistant-search
    environment:
      MEILI_NO_ANALYTICS: "true"
      MEILI_MASTER_KEY: "${MEILI_MASTER_KEY}"
    volumes:
      - meili-data:/meili_data
    restart: unless-stopped

volumes:
  bar-data:
  meili-data:

Create a .env file alongside:

# Application URL (no trailing slash)
APP_URL=http://localhost:8000

# Application key — generate with: echo "base64:$(openssl rand -base64 32)"
APP_KEY=base64:change_me_generate_a_real_key

# Meilisearch master key — generate with: openssl rand -hex 16
MEILI_MASTER_KEY=change_me_to_a_strong_random_key

Start the stack:

docker compose up -d

Initial Setup

  1. Wait 30-60 seconds for database migrations and initial data seeding (500+ cocktail recipes are imported automatically)
  2. Open http://your-server-ip:8000 in your browser
  3. Create your first admin account through the registration page
  4. Start exploring the pre-loaded cocktail database
  5. Add your home bar ingredients to see which cocktails you can make

Note: Bar Assistant is an API-only backend. For a web interface, deploy the Salt Rim frontend alongside it, or use the API directly.

Configuration

Salt Rim Web Frontend

Bar Assistant serves the API. For a full web experience, add the Salt Rim frontend:

services:
  salt-rim:
    image: barassistant/salt-rim:v3
    container_name: bar-assistant-web
    ports:
      - "3000:8080"
    environment:
      API_URL: "http://bar-assistant"
      MEILISEARCH_URL: "http://meilisearch:7700"
    depends_on:
      - bar-assistant
    restart: unless-stopped

Access the web interface at http://your-server-ip:3000.

Home Bar Inventory

The killer feature: tell Bar Assistant what ingredients you have, and it shows which cocktails you can make:

  1. Go to My Shelf in Salt Rim
  2. Add your spirits, liqueurs, mixers, and garnishes
  3. The dashboard updates to show cocktails you can make with your current inventory
  4. Filter by “shelf cocktails” to see only what’s possible right now

Custom Recipes

Add your own recipes through the API or Salt Rim:

  1. Click Add Cocktail
  2. Enter the name, method, garnish, and ingredients with measurements
  3. Upload a photo (optional)
  4. Tag with categories and glass type
  5. The recipe is immediately searchable via Meilisearch

Role-Based Access

Bar Assistant supports multiple users with different permission levels:

RoleCan ViewCan CreateCan Manage
GuestPublic recipes onlyNoNo
UserAll recipesOwn recipesOwn recipes
ModeratorAll recipesAll recipesAll recipes
AdminAll recipesAll recipesAll + users + settings

Reverse Proxy

For SSL and external access, place both the API (port 8000) and Salt Rim frontend (port 3000) behind a reverse proxy. With Nginx Proxy Manager, create two proxy hosts or use subpath routing.

See Reverse Proxy Setup for configuration guides.

Backup

All recipe data is stored in SQLite within the application volume:

# Back up the data volume
docker run --rm -v bar-data:/data -v $(pwd):/backup alpine tar czf /backup/bar-assistant-$(date +%Y%m%d).tar.gz -C /data .

# Back up Meilisearch index (optional — can be rebuilt)
docker run --rm -v meili-data:/data -v $(pwd):/backup alpine tar czf /backup/meili-$(date +%Y%m%d).tar.gz -C /data .

See Backup Strategy.

Troubleshooting

Search not returning results

Symptom: Typing in the search bar returns no results despite having recipes.

Fix: Meilisearch may not have indexed the recipes. Check the Meilisearch container is running: docker compose logs meilisearch. If it crashed, restart it and the indexing will resume. Verify MEILI_MASTER_KEY matches between Bar Assistant and Meilisearch environment variables.

APP_KEY errors on startup

Symptom: Container logs show “No application encryption key has been specified.”

Fix: Generate a valid APP_KEY:

echo "base64:$(openssl rand -base64 32)"

Set this value in your .env file and restart.

Images not loading in Salt Rim

Symptom: Recipe photos show as broken images in the web frontend.

Fix: Ensure API_URL in Salt Rim’s environment matches the actual URL of the Bar Assistant API. If using a reverse proxy, the URL must be the public-facing URL, not the internal Docker service name.

Resource Requirements

  • RAM: 300 MB (API) + 100 MB (Redis) + 200 MB (Meilisearch) = ~600 MB total
  • CPU: Low — Laravel API with SQLite is lightweight
  • Disk: 1 GB for application + recipes, plus Meilisearch index (~200 MB)

Verdict

Bar Assistant is the best self-hosted cocktail recipe manager by a wide margin. The pre-loaded database of 500+ recipes means you’re immediately useful out of the box — no data entry needed. The home bar inventory feature that shows “what can I make right now?” is genuinely useful for anyone who mixes drinks regularly. The main downside is the three-service architecture (API + Redis + Meilisearch) which is heavier than necessary for a recipe app, and you need to deploy Salt Rim separately for a web interface. But for cocktail enthusiasts, it’s worth the setup.

Frequently Asked Questions

Can I add my own recipes to Bar Assistant?

Yes. The pre-loaded database of 500+ cocktail recipes is a starting point. You can add custom recipes through the Salt Rim web interface with ingredients, instructions, garnishes, and images. Custom recipes integrate fully with the search and “what can I make?” features.

Does Bar Assistant work on mobile devices?

Salt Rim (the web frontend) is responsive and works on mobile browsers. There’s no dedicated iOS or Android app, but the web UI is designed for touch and works well as a progressive web app. Add it to your home screen for an app-like experience.

Why does Bar Assistant need Meilisearch?

Meilisearch powers the full-text search across recipes, ingredients, and tags. It enables instant search-as-you-type results and fuzzy matching (finding “margarita” even if you type “margrita”). Without Meilisearch, you’d lose the fast search functionality that makes browsing 500+ recipes practical.

Can I use Bar Assistant for food recipes too?

Bar Assistant is specifically designed for cocktails and drinks. Its data model is built around spirits, mixers, garnishes, and bar tools — not food ingredients and cooking methods. For general recipe management, use Mealie, Tandoor, or KitchenOwl instead.

How do I track my home bar inventory?

In the Salt Rim UI, go to your shelf/inventory section and mark which bottles and ingredients you currently have. Bar Assistant then filters recipes to show what you can make right now versus what you’re missing one or two ingredients for. Update your inventory as you buy or run out of bottles.

Is the 500+ recipe database maintained and updated?

The recipe database ships with the Docker image and receives updates through new releases. Community contributions add recipes over time. You can also import recipes from JSON files if community recipe packs become available. Your custom recipes are stored separately and won’t be overwritten by updates.

Comments