Skip to content
RaspberryPints Logo

How to Set Up a Raspberry Pi Digital Beer Menu Display for Your Brewery

Complete technical guide to building a Raspberry Pi-powered digital beer menu display. Step-by-step instructions for hardware setup, software installation, and brewery customization.

How to Set Up a Raspberry Pi Digital Beer Menu Display for Your Brewery

If you're a brewery owner who loves tinkering with technology, building a Raspberry Pi-powered digital beer menu is the perfect weekend project. For under $100, you can create a professional digital display that updates your taplist in real-time.

This comprehensive technical guide walks you through the entire process—from purchasing hardware to configuring software and customizing your display for your brewery's unique brand.

What you'll build:

  • Digital beer menu that displays on any TV or monitor
  • Auto-refreshing display (updates every 60 seconds)
  • Web-based admin panel for easy menu updates
  • Mobile-responsive design
  • Custom branding with your brewery's logo and colors

Skill level required: Intermediate (basic Linux knowledge helpful but not required)

Time to complete: 2-4 hours

Total cost: $75-150 depending on what hardware you already own

Why Use a Raspberry Pi for Your Brewery Display?

Before diving into the how-to, let's address why you might choose a Raspberry Pi over simpler solutions like a Fire TV Stick or just using a smart TV.

Advantages of Raspberry Pi

Ultimate flexibility:

  • Full Linux computer you control completely
  • Install any software or custom scripts
  • No vendor lock-in
  • Modify anything you want

Cost-effective long-term:

  • One-time hardware cost ($75-100)
  • No monthly subscription required (if self-hosting)
  • Or use with cloud services for best of both worlds

Learning opportunity:

  • Great way to learn Linux and web development
  • Transferable skills for other brewery automation
  • Community support from millions of Pi users

Reliability:

  • Designed for 24/7 operation
  • No moving parts (solid-state storage)
  • Low power consumption (costs ~$2/month to run)
  • Automatic crash recovery

When NOT to Use Raspberry Pi

You want "set and forget": Cloud-based solutions like RaspberryPints (no relation, just similar name!) are easier if you don't enjoy tinkering.

You're not comfortable with command line: While this guide simplifies everything, some terminal usage is required.

You need immediate support: Community support is great but not instant. Commercial solutions offer phone/email support.

You run multiple locations: Managing multiple Pi devices manually becomes tedious. Centralized cloud solutions scale better.

What You'll Need

Required Hardware

1. Raspberry Pi 4 Model B (4GB RAM recommended)

  • Cost: $55-75
  • Why not older models? Pi 4 has better graphics performance for smooth display
  • 2GB model works but 4GB ensures smooth operation
  • Where to buy: Adafruit, CanaKit, Amazon

2. MicroSD Card (32GB minimum, Class 10 or better)

  • Cost: $8-15
  • This stores the operating system and your beer database
  • Recommend SanDisk or Samsung for reliability
  • Get 64GB if you plan to log data long-term

3. Power Supply (Official Raspberry Pi 5V/3A USB-C)

  • Cost: $8-12
  • Don't use cheap phone chargers—they cause stability issues
  • Official power supply prevents undervoltage warnings

4. MicroHDMI to HDMI Cable

  • Cost: $6-10
  • Pi 4 uses micro HDMI (not standard HDMI)
  • Get 6-10 foot length for installation flexibility

5. Raspberry Pi Case (optional but recommended)

  • Cost: $5-15
  • Protects from dust and accidental damage
  • Passive cooling cases work fine (no fan needed)

6. TV or Monitor

  • You probably already have this
  • Any TV with HDMI input works
  • 40-55" recommended for taproom visibility

Optional Hardware

Wireless keyboard/mouse ($15-25): Makes initial setup easier, but not required if you use SSH

Ethernet cable: More reliable than WiFi, recommended for permanent installation

VESA mount bracket ($10-15): Mount Pi directly to back of TV for clean installation

Surge protector ($15-25): Protect your investment from power fluctuations

Software (All Free)

  • Raspberry Pi OS Lite (Debian-based Linux)
  • Chromium web browser (for kiosk mode display)
  • Web server (Apache or Nginx)
  • Optional: Cloud-based taplist software for easy management

Step 1: Prepare Your Raspberry Pi

1.1 Download Raspberry Pi Imager

On your computer (Mac, Windows, or Linux):

  1. Go to raspberrypi.com/software
  2. Download Raspberry Pi Imager for your operating system
  3. Install and open the application

1.2 Write OS to SD Card

  1. Insert your microSD card into your computer (use adapter if needed)
  2. Open Raspberry Pi Imager
  3. Click "Choose OS" → "Raspberry Pi OS (Other)" → "Raspberry Pi OS Lite (64-bit)"
    • We use Lite (no desktop) because we only need a browser in kiosk mode
  4. Click "Choose Storage" → Select your microSD card
  5. Click the ⚙️ gear icon to configure advanced options:
    • Enable SSH
    • Set hostname: brewery-display
    • Set username: pi and password: [your strong password]
    • Configure WiFi (SSID and password)
    • Set locale settings (timezone, keyboard layout)
  6. Click "Save" then "Write"
  7. Wait for writing and verification to complete (~5 minutes)

Pro tip: Configuring advanced options now saves time—you won't need a keyboard/mouse for initial setup.

1.3 First Boot

  1. Remove microSD card from computer
  2. Insert into Raspberry Pi (slot on bottom)
  3. Connect HDMI cable to TV
  4. Connect power supply
  5. Pi will boot in 30-60 seconds (green LED flashes)

You'll see boot messages on the TV. Eventually it settles at a login prompt.

Step 2: Initial Configuration

You can configure via keyboard/mouse directly, or via SSH from another computer. SSH is easier.

2.1 Find Your Pi's IP Address

Method 1: Check your router's admin page

  • Look for device named "brewery-display"

Method 2: Use network scanning

# On Mac/Linux
arp -a | grep -i "b8:27:eb\|dc:a6:32\|e4:5f:01"

# On Windows (PowerShell)
arp -a | findstr "b8-27-eb dc-a6-32 e4-5f-01"

Method 3: Use Angry IP Scanner (works on any OS)

  • Download from angryip.org
  • Scan your local network
  • Look for "raspberry-display" or Raspberry Pi manufacturer

2.2 Connect via SSH

On Mac/Linux:

ssh pi@[IP-ADDRESS]
# Example: ssh pi@192.168.1.100

On Windows:

  • Use PowerShell or download PuTTY
  • Connect to the IP address on port 22

Enter the password you set during imaging.

2.3 Update System

Always start with system updates:

sudo apt update
sudo apt upgrade -y

This takes 5-10 minutes. Grab a beer while you wait.

2.4 Configure Raspberry Pi Settings

Run the configuration tool:

sudo raspi-config

Navigate with arrow keys, Enter to select:

System Options → Boot / Auto Login:

  • Select "Console Autologin" (boots to command line without login)

Display Options → Screen Blanking:

  • Select "No" (prevents screen from turning off)

Performance Options → GPU Memory:

  • Set to 256 MB (improves browser performance)

Localization Options:

  • Set timezone to your location
  • Set WiFi country

Select "Finish" and reboot when prompted:

sudo reboot

Wait 30 seconds, then reconnect via SSH.

Step 3: Install Kiosk Mode Browser

We'll configure Chromium to run in full-screen kiosk mode, displaying your beer menu.

3.1 Install Required Packages

# Install Xorg (minimal display server) and Chromium
sudo apt install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox chromium-browser -y

# Install unclutter (hides mouse cursor)
sudo apt install unclutter -y

3.2 Configure Openbox

Openbox is a minimal window manager that will run Chromium full-screen.

Create the Openbox autostart file:

mkdir -p /home/pi/.config/openbox
nano /home/pi/.config/openbox/autostart

Add this content:

# Disable screen blanking
xset s off
xset s noblank
xset -dpms

# Hide mouse cursor after 0.5 seconds
unclutter -idle 0.5 -root &

# Start Chromium in kiosk mode
chromium-browser --noerrdialogs \
  --disable-infobars \
  --kiosk \
  --incognito \
  --check-for-update-interval=31536000 \
  'http://localhost/taplist'

What these flags do:

  • --kiosk: Full-screen mode, no browser UI
  • --noerrdialogs: Suppress error popups
  • --disable-infobars: Remove "Chrome is being controlled" message
  • --incognito: Don't save cache/cookies
  • --check-for-update-interval: Disable update checks (set to 1 year)

Save file: Ctrl+O, Enter, Ctrl+X

3.3 Auto-Start X Server on Boot

Edit the bash profile:

nano /home/pi/.bash_profile

Add this line at the end:

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor

Save and exit.

This starts the X server automatically when the Pi boots.

Step 4: Choose Your Menu Management Approach

You have two main options:

Option A: Self-Hosted (Full Control)

Build your own web application to manage the beer menu. Best for developers who want complete customization.

Pros:

  • Free (no monthly cost)
  • Unlimited customization
  • Own your data completely
  • Learn web development skills

Cons:

  • Requires web development knowledge (HTML, CSS, JavaScript)
  • You handle all maintenance and updates
  • More time investment
  • No professional support

Option B: Cloud-Based (Recommended for Most)

Use a commercial taplist management platform like RaspberryPints (yes, it's named after the Pi!), Untappd for Business, or similar.

Pros:

  • Update menu from any device (phone, laptop, etc.)
  • Professional design out of the box
  • Auto-sync across multiple displays
  • Customer support included
  • No server maintenance

Cons:

  • Monthly subscription (typically $0-20/month)
  • Less customization than self-hosted
  • Dependent on service provider

For this guide, we'll show Option B because it's faster to set up. If you want to build your own, see the "Advanced: Self-Hosted Setup" section at the end.

Step 5: Set Up Cloud-Based Display (Option B)

5.1 Sign Up for Taplist Software

For this example, we'll use RaspberryPints (disclaimer: we make this software, but you can use any web-based taplist service).

  1. On your regular computer, go to raspberrypints.com
  2. Sign up for free account (covers up to 3 taps)
  3. Complete brewery profile and add your beers
  4. Get your display URL (looks like: https://yourbrewery.taplists.raspberrypints.com)

5.2 Update Chromium URL

On your Pi, edit the Openbox autostart file:

nano /home/pi/.config/openbox/autostart

Change the last line to your display URL:

chromium-browser --noerrdialogs \
  --disable-infobars \
  --kiosk \
  --incognito \
  'https://yourbrewery.taplists.raspberrypints.com'

Save and exit.

5.3 Test the Display

Reboot your Pi:

sudo reboot

After 30-60 seconds, your TV should display your beer menu in full-screen mode.

Troubleshooting:

  • Black screen: Check HDMI cable, ensure TV is on correct input
  • Error messages: Check your display URL is correct
  • Old content showing: Clear browser cache (delete /home/pi/.cache/chromium/ and reboot)

Step 6: Auto-Refresh Configuration

To ensure your display updates when you change the menu, configure auto-refresh.

Method 1: Server-Side Refresh (Recommended)

Most cloud-based taplist platforms handle this automatically. The web page refreshes itself every 30-60 seconds.

Verify it's working:

  1. Load your display URL in a regular browser
  2. Open browser developer tools (F12)
  3. Watch the network tab for refresh requests

Method 2: Manual Refresh Script (Backup)

If your software doesn't auto-refresh, create a cron job to reload the browser:

# Create refresh script
nano /home/pi/refresh-browser.sh

Add this content:

#!/bin/bash
export DISPLAY=:0
xdotool search --class chromium key F5

Save and make executable:

chmod +x /home/pi/refresh-browser.sh

Install xdotool:

sudo apt install xdotool -y

Add to crontab to run every 60 seconds:

crontab -e

Add this line:

* * * * * /home/pi/refresh-browser.sh

Save and exit.

Step 7: Mount and Position Your Display

7.1 Physical Mounting

TV wall mounting:

  1. Use standard VESA mount (check TV specs)
  2. Mount at eye level (5-6 feet high)
  3. Ensure viewing angle covers bar and seating

Tablet/smaller display:

  1. Use adjustable tablet stand or wall mount
  2. Position at bar level for close viewing
  3. Ensure power outlet access

7.2 Pi Placement Options

Behind the TV (cleanest):

  • Use VESA mount bracket designed for Pi
  • Velcro or double-sided tape works too
  • Keep ventilated (don't cover vents)

Nearby shelf:

  • Simple and accessible for troubleshooting
  • Use cable management for clean look

In back room (with long HDMI):

  • Requires HDMI cable up to 25 feet
  • Use signal booster for longer runs
  • Easier to access for updates

7.3 Cable Management

Hide cables for professional look:

  • Use cable raceways along wall
  • In-wall installation if permitted
  • Cable sleeves to bundle HDMI + power

Power surge protection:

  • Plug Pi and TV into surge protector
  • Consider UPS (uninterruptible power supply) for power outage protection

Step 8: Optimize Display Settings

8.1 TV Settings

Picture mode: Set to "Standard" or "Movie" (not vivid/dynamic - too bright)

Brightness: 70-80% (100% causes eye strain)

Contrast: Adjust based on ambient lighting

Orientation: Portrait mode works great for tall beer lists

  • Most modern TVs support portrait in settings
  • VESA mount allows 90-degree rotation

Sleep/power settings:

  • Disable "auto power-off"
  • Disable "screen saver"
  • Set to stay on 24/7

8.2 Display Resolution

Most cloud services auto-detect resolution, but you can force a specific resolution on the Pi:

sudo nano /boot/config.txt

Add these lines:

# Force 1080p HDMI output
hdmi_group=1
hdmi_mode=16
hdmi_drive=2

Common modes:

  • Mode 4: 720p (1280×720)
  • Mode 16: 1080p (1920×1080)
  • Mode 97: 4K (3840×2160)

Reboot after changes:

sudo reboot

Step 9: Maintenance and Monitoring

9.1 Automatic Updates

Create a weekly update script:

nano /home/pi/update-system.sh

Add:

#!/bin/bash
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
sudo reboot

Make executable:

chmod +x /home/pi/update-system.sh

Schedule weekly (Sundays at 3am):

sudo crontab -e

Add:

0 3 * * 0 /home/pi/update-system.sh

9.2 Remote Access

Set up dynamic DNS (if your home IP changes):

  • Use No-IP or DuckDNS (free services)
  • Update your DNS when IP changes
  • Access Pi from anywhere

SSH from anywhere:

  1. Set up port forwarding on your router (port 22)
  2. Use strong passwords or SSH keys only
  3. Consider changing SSH to non-standard port (security)

VPN option (more secure):

  • Use Tailscale or ZeroTier for secure remote access
  • No port forwarding needed
  • Access Pi as if on local network

9.3 Monitoring

Check Pi is running:

# From another computer on same network
ping brewery-display.local

Check disk space:

df -h

Check memory usage:

free -h

Check temperature:

vcgencmd measure_temp

Pi 4 throttles at 80°C. If you're seeing 75°C+, add a heatsink or fan.

Troubleshooting Common Issues

Display Not Showing

Check list:

  1. Is Pi powered on? (green LED should flash on boot)
  2. Is HDMI cable connected properly?
  3. Is TV on correct input?
  4. Try different HDMI cable
  5. Check HDMI config in /boot/config.txt

Fix: Force HDMI output:

sudo nano /boot/config.txt

Uncomment or add:

hdmi_force_hotplug=1

Menu Not Updating

Possible causes:

  1. No internet connection
  2. Display URL changed
  3. Chromium cache issues

Fix:

# Clear Chromium cache
rm -rf /home/pi/.cache/chromium/
sudo reboot

Pi Keeps Rebooting

Likely cause: Undervoltage (insufficient power supply)

Fix:

  1. Use official Raspberry Pi power supply
  2. Don't use phone chargers
  3. Check power cable isn't damaged

Check for undervoltage warnings:

vcgencmd get_throttled

0x0 = no issues 0x50000 or 0x50005 = undervoltage detected

Screen Blanks or Sleeps

Check these settings:

# Verify screen blanking is disabled
cat /home/pi/.config/openbox/autostart | grep dpms

Should show xset -dpms and xset s off

Also disable TV's auto-sleep:

  • Check TV settings menu
  • Disable "Eco mode" or "Auto power off"

Advanced: Self-Hosted Setup

For developers who want full control, here's how to build your own taplist web app.

Architecture Overview

Components:

  1. Web server (Nginx)
  2. Backend (Node.js or Python Flask)
  3. Database (SQLite or PostgreSQL)
  4. Frontend (HTML, CSS, JavaScript)

Quick Start with Node.js

Install Node.js:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

Create project directory:

mkdir /home/pi/taplist
cd /home/pi/taplist
npm init -y

Install dependencies:

npm install express ejs sqlite3 body-parser

Create basic server (server.js):

const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const app = express();

// Database setup
const db = new sqlite3.Database('./taplist.db');
db.run(`CREATE TABLE IF NOT EXISTS beers (
  id INTEGER PRIMARY KEY,
  name TEXT,
  brewery TEXT,
  style TEXT,
  abv REAL,
  ibu INTEGER,
  description TEXT,
  tap_number INTEGER
)`);

// Serve display page
app.get('/display', (req, res) => {
  db.all('SELECT * FROM beers ORDER BY tap_number', (err, beers) => {
    res.send(`
      <!DOCTYPE html>
      <html>
      <head>
        <title>On Tap</title>
        <meta http-equiv="refresh" content="60">
        <style>
          body { font-family: Arial; background: #1f1f2e; color: white; }
          .beer { padding: 20px; border-bottom: 1px solid #444; }
          .beer-name { font-size: 24px; color: #e4095e; }
          .beer-info { font-size: 18px; color: #999; }
        </style>
      </head>
      <body>
        <h1 style="text-align:center">On Tap Now</h1>
        ${beers.map(beer => `
          <div class="beer">
            <div class="beer-name">${beer.tap_number}. ${beer.name}</div>
            <div class="beer-info">${beer.brewery} | ${beer.style} | ${beer.abv}% ABV</div>
            <div>${beer.description}</div>
          </div>
        `).join('')}
      </body>
      </html>
    `);
  });
});

// Start server
app.listen(80, () => console.log('Server running on port 80'));

Run server:

sudo node server.js

Update Chromium URL:

nano /home/pi/.config/openbox/autostart

Change to:

chromium-browser --kiosk 'http://localhost/display'

Add sample beers via SQLite:

sqlite3 /home/pi/taplist/taplist.db
INSERT INTO beers VALUES (1, 'Hazy IPA', 'Your Brewery', 'IPA', 6.5, 45, 'Juicy and tropical', 1);
INSERT INTO beers VALUES (2, 'Porter', 'Your Brewery', 'Porter', 5.8, 30, 'Rich chocolate notes', 2);
.quit

This is a basic example. Build out an admin panel, add authentication, improve the design, etc.

Security Considerations

Network Security

Change default password:

passwd

Disable password login, use SSH keys only:

ssh-keygen -t rsa -b 4096  # On your computer
ssh-copy-id pi@brewery-display.local  # Copy key to Pi

Then disable password auth:

sudo nano /etc/ssh/sshd_config

Change:

PasswordAuthentication no

Restart SSH:

sudo systemctl restart ssh

Enable firewall:

sudo apt install ufw -y
sudo ufw allow 22/tcp  # SSH
sudo ufw allow 80/tcp  # HTTP (if self-hosting)
sudo ufw enable

Physical Security

Lock down the Pi:

  • Place in locked cabinet or secure mount
  • Disable USB ports in BIOS if not needed
  • Use locking HDMI cables (prevents unplugging)

Prevent unauthorized access:

  • Don't leave Pi accessible to customers
  • Consider disabling WiFi, use ethernet only
  • Monitor logs for suspicious access

Cost Breakdown

Hardware (one-time):

  • Raspberry Pi 4 (4GB): $75
  • MicroSD card 32GB: $10
  • Power supply: $10
  • HDMI cable: $8
  • Case: $10
  • Total: $113

Software (monthly):

  • Self-hosted: $0
  • Cloud-based (RaspberryPints): $0-20/month
  • Total: $0-20/month

Ongoing costs:

  • Electricity: ~$2/month (Pi uses 5-8W)

ROI: Compared to printed menus ($300-500/month), your Pi setup pays for itself in less than 2 weeks.

Conclusion: Your Pi Display is Ready

You now have a professional digital beer menu powered by a Raspberry Pi that cost less than $150 and takes about 2-4 hours to set up.

What you've accomplished: ✅ Built a dedicated digital display device ✅ Configured auto-refresh and kiosk mode ✅ Integrated with cloud-based menu management ✅ Set up automated maintenance and monitoring ✅ Created a scalable solution for your brewery

Next steps:

  1. Test updating your menu from your phone/computer
  2. Gather customer feedback on the display
  3. Consider adding a second display in another location
  4. Experiment with customization (colors, layout, fonts)

The Raspberry Pi approach gives you ultimate flexibility and control. As your needs evolve, you can add features like:

  • Touch-screen interactive menus
  • Social media integration
  • Live customer check-ins from Untappd
  • Analytics dashboard
  • Multiple synchronized displays

Most importantly: You'll save hundreds of hours annually and thousands of dollars compared to manual menu updates.


Want an even easier setup? RaspberryPints cloud service works with any device (Raspberry Pi, Fire Stick, smart TV, tablet) and updates your menu in 30 seconds from any device. Try it free →