mirror of
https://github.com/usetrmnl/inker.git
synced 2026-04-29 13:45:07 -07:00
0.1.0
Full-stack application for managing TRMNL e-ink displays with screen designer, playlist management, custom widgets, and OTA updates.
Inker v0.1.0
Self-hosted e-ink device management system for TRMNL devices and devices compatible with TRMNL 1.6.9 software. Design screens, create custom widgets, and manage your displays from a modern web interface.
Features
- Screen Designer — Drag & drop widget placement, snap guides, freehand drawing, export/import
- Built-in Widgets — Clock, date, text, weather, countdown, days until, QR code, image, GitHub stars, battery, WiFi, device info
- Custom Widgets — Connect to any JSON API or RSS feed, field extraction, JavaScript transformations, grid layouts
- Playlists — Rotate multiple screens on devices automatically
- Device Management — Auto-provisioning, real-time status, configurable refresh rates, logs
Screenshots
| Screen Designer | Devices | Screens |
|---|---|---|
| List of sources | Custom Data Sources | Custom Widgets |
|---|---|---|
Quick start
Docker Run
docker run -d \
--name inker \
--restart unless-stopped \
-p 80:80 \
-v inker_postgres:/var/lib/postgresql/17/main \
-v inker_redis:/data \
-v inker_uploads:/app/uploads \
wojooo/inker:latest
Docker Compose
# docker-compose.yml
services:
inker:
image: wojooo/inker:latest
container_name: inker
restart: unless-stopped
ports:
- "80:80"
volumes:
- postgres_data:/var/lib/postgresql/17/main
- redis_data:/data
- uploads_data:/app/uploads
environment:
TZ: UTC
ADMIN_PIN: "1111" # Quotes required — YAML strips leading zeros without them
volumes:
postgres_data:
redis_data:
uploads_data:
docker compose up -d
Open http://your-server-ip and log in with PIN 1111.
Configuration
| Variable | Description | Default |
|---|---|---|
ADMIN_PIN |
Login PIN | 1111 |
TZ |
Timezone for widgets | UTC |
Pass with -e:
docker run -d \
--name inker \
--restart unless-stopped \
-p 80:80 \
-e ADMIN_PIN="1111" \
-e TZ=Europe/Warsaw \
-v inker_postgres:/var/lib/postgresql/17/main \
-v inker_redis:/data \
-v inker_uploads:/app/uploads \
wojooo/inker:latest
Build from source
git clone https://github.com/wojo-o/inker.git
cd inker
docker compose up -d --build
Troubleshooting
If something isn't working after an update or on first run, reset the volumes and start fresh:
docker compose down -v
docker compose up -d
Note: This removes all data (database, uploads). Only use on a fresh install or when you don't mind losing data.
Testing
cd backend && bun test # 357 tests
cd frontend && bun run test # 19 tests
License
Source Available — see LICENSE for details.
Languages
TypeScript
98.2%
JavaScript
0.7%
Dockerfile
0.5%
CSS
0.4%
Shell
0.2%
