This guide will walk you through the installation and setup of the ShopBite Order Printer.
Before you begin the installation, make sure all prerequisites are met:
# Check PHP version
php -v
# Should show PHP 8.2 or higher
# Install Composer (if not present)
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
# Check SQLite extension
php -m | grep sqlite
# On Ubuntu/Debian
sudo apt-get update
sudo apt-get install cups
# Start CUPS service
sudo systemctl start cups
sudo systemctl enable cups
# Add printer (example for Epson TM-T20)
lpadmin -p TM-T20 -E -v usb://Epson/TM-T20 -m drv:///sample.drv/generic.ppd
# Set default printer
lpoptions -d TM-T20
git clone https://github.com/shopbite/order-printer.git
cd order-printer
composer install --no-dev --optimize-autoloader
For development purposes:
composer install
Copy the example environment file:
cp .env .env.local
# Create database
bin/console doctrine:database:create
# Update schema
bin/console doctrine:schema:update --force
order:read - Read ordersorder:update - Update order statuscustomer:read - Read customer dataEdit the .env.local file:
# Shopware API Access
SHOPWARE_HOST=https://your-shopware-domain.de
SHOPWARE_CLIENT_ID=your_client_id
SHOPWARE_CLIENT_SECRET=your_client_secret
# Printer Settings
PRINTER_NAME=TM-T20
# Data Directory
DATA_DIR="/data/receipts/"
sudo lpadmin -p YourPrinterName -E -v usb://Manufacturer/Model -m drv:///sample.drv/generic.ppd
lpoptions -d YourPrinterName
lp -d YourPrinterName /etc/cups/ppd/YourPrinterName.ppd
For network printers, use the IP address:
sudo lpadmin -p NetworkPrinter -E -v socket://192.168.1.100:9100 -m drv:///sample.drv/generic.ppd
# Start scheduler (checks every 10 seconds for new orders)
bun run scheduler
# Start worker (processes print jobs)
bun run worker
For production operation, we recommend using Supervisor:
/etc/supervisor/conf.d/order-printer.conf):[program:order-printer-scheduler]
command=/path/to/project/bin/console messenger:consume scheduler_default
user=www-data
autostart=true
autorestart=true
stderr_logfile=/var/log/order-printer-scheduler.err.log
stdout_logfile=/var/log/order-printer-scheduler.out.log
[program:order-printer-worker]
command=/path/to/project/bin/console messenger:consume async
user=www-data
autostart=true
autorestart=true
stderr_logfile=/var/log/order-printer-worker.err.log
stdout_logfile=/var/log/order-printer-worker.out.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start all
# Scheduler logs
tail -f /var/log/order-printer-scheduler.out.log
# Worker logs
tail -f /var/log/order-printer-worker.out.log
Problem: Printer not detected
sudo systemctl restart cupslpstat -tProblem: Connection to Shopware API failed
.env.localProblem: Database error
chmod 666 data/queue_*.dbrm data/queue_*.db && bin/console doctrine:database:create