Run a to-do print server for your ESC/POS compatible receipt printer
1.5K
A containerized Node.js application for printing TODO tickets and receipts on thermal ESC/POS printers. Supports both USB and network printers
docker run -d \
--name todo-printer \
-p 3000:3000 \
-e PRINTER_NETWORK_IP=192.168.1.100 \
-e PRINTER_NETWORK_PORT=9100 \
voska/escpos-receipt-printer
docker run -d \
--name todo-printer \
-p 3000:3000 \
--privileged \
-v /dev:/dev \
-e PRINTER_VENDOR_ID=0x20d1 \
-e PRINTER_PRODUCT_ID=0x7008 \
voska/escpos-receipt-printer
curl -X POST http://localhost:3000/print-todo \
-H "Content-Type: application/json" \
-d '{
"title": "Welcome to containerized printing!",
"assignee": "Docker User",
"description": "Successfully set up the thermal printer container"
}'
| Variable | Description | Example | Required |
|---|---|---|---|
PRINTER_NETWORK_IP | Network printer IP address | 192.168.1.100 | For network mode |
PRINTER_NETWORK_PORT | Network printer port | 9100 | No (default: 9100) |
PRINTER_VENDOR_ID | USB Vendor ID (hex) | 0x20d1 | For USB mode |
PRINTER_PRODUCT_ID | USB Product ID (hex) | 0x7008 | For USB mode |
PRINTER_TYPE | Printer type | EPSON | No (default: EPSON) |
EPSON (default)STARTANCADRAUMACreate a docker-compose.yml:
services:
todo-printer:
image: voska/escpos-receipt-printer
container_name: todo-printer-server
ports:
- "3000:3000"
environment:
- PRINTER_VENDOR_ID=${PRINTER_VENDOR_ID}
- PRINTER_PRODUCT_ID=${PRINTER_PRODUCT_ID}
- PRINTER_TYPE=${PRINTER_TYPE}
- PRINTER_NETWORK_IP=${PRINTER_NETWORK_IP}
- PRINTER_NETWORK_PORT=${PRINTER_NETWORK_PORT:-9100}
- NODE_ENV=production
privileged: true # For USB device access
volumes:
- /dev:/dev # For USB device access
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
Create a .env file with your printer settings:
# For network printer
PRINTER_NETWORK_IP=192.168.1.100
PRINTER_NETWORK_PORT=9100
# For USB printer
PRINTER_VENDOR_ID=0x20d1
PRINTER_PRODUCT_ID=0x7008
# Optional
PRINTER_TYPE=EPSON
Then run: docker-compose up -d
POST /print-todoPrint a TODO ticket
Request:
{
"title": "Fix login bug",
"assignee": "John Doe",
"description": "Users cannot login with special characters"
}
GET /healthCheck server and printer status.
GET /printer-statusGet detailed printer connection info.
GET /API documentation.
# Check logs
docker logs todo-printer
# Test printer connectivity
docker exec todo-printer curl http://localhost:3000/health
--privileged and -v /dev:/dev are usedlsusb on hosttelnet PRINTER_IP 9100The container produces professional-looking tickets with:
Perfect for:
Tags: thermal-printer, escpos, receipt-printer, nodejs, docker, api, todo, printing, pos-printer
Content type
Image
Digest
sha256:988e085af…
Size
164.2 MB
Last updated
over 1 year ago
docker pull voska/escpos-receipt-printer