Print Server pour imprimantes ZPL - Compatible avec ARK Stock
ARK Print Server est un serveur d'impression léger qui permet d'imprimer sur des imprimantes ZPL (Zebra Programming Language) depuis n'importe où sur Internet de manière sécurisée. Il est conçu pour fonctionner avec ARK Stock en mode cloud.
Instance ARK Stock (cloud)
↓
Cloudflare Tunnel (sécurisé)
↓
Print Server (réseau local)
↓
Imprimante ZPL (locale)
- 🐳 Installation Docker simplifiée - Un seul script pour tout installer
- 🔐 Authentification par token - Sécurisé par défaut
- 🌐 Compatible Cloudflare Tunnel - Exposition sécurisée sans ouvrir de ports
- 📊 Interface web de monitoring - Visualisation en temps réel
- 🔄 Retry automatique - Gestion des erreurs réseau
- 📝 Logs détaillés - Débogage facile
- 🏥 Health checks - Monitoring Docker intégré
- Docker Desktop installé (télécharger)
- Une imprimante ZPL sur le réseau local
- (Optionnel) Un compte Cloudflare pour le tunnel
curl -sSL https://raw.githubusercontent.com/schmidmatthieu/ark-print-server/main/install.sh | bashLe script vous demandera :
- L'adresse IP de votre imprimante (ex:
10.1.55.150) - Le port (généralement
9100) - Il génèrera automatiquement un token sécurisé
# Cloner le repository
git clone https://github.com/schmidmatthieu/ark-print-server.git
cd ark-print-server
# Copier et configurer .env
cp .env.example .env
nano .env # Éditer avec vos paramètres
# Démarrer
docker compose up -ddocker run -d \
--name ark-print-server \
--restart unless-stopped \
-p 8099:8099 \
-e PRINTER_IP=10.1.55.150 \
-e PRINTER_PORT=9100 \
-e AUTH_TOKEN=$(openssl rand -hex 32) \
-v $(pwd)/logs:/app/logs \
arkswiss/ark-print-server:latest# Cloner et installer
git clone https://github.com/schmidmatthieu/ark-print-server.git
cd ark-print-server
npm install
# Configurer
cp .env.example .env
nano .env
# Démarrer
npm start| Variable | Description | Défaut | Requis |
|---|---|---|---|
PRINTER_IP |
Adresse IP de l'imprimante ZPL | 10.1.55.150 |
✅ |
PRINTER_PORT |
Port de l'imprimante | 9100 |
✅ |
AUTH_TOKEN |
Token d'authentification | - | ✅ |
PORT |
Port du serveur | 8099 |
❌ |
HOST |
Host d'écoute | 0.0.0.0 |
❌ |
LOG_LEVEL |
Niveau de logs | info |
❌ |
MAX_RETRIES |
Tentatives max | 3 |
❌ |
RETRY_DELAY_MS |
Délai entre tentatives | 2000 |
❌ |
# macOS / Linux
openssl rand -hex 32
# Windows (PowerShell)
-join ((65..90) + (97..122) + (48..57) | Get-Random -Count 64 | % {[char]$_})Pour exposer votre Print Server local de manière sécurisée :
# macOS (Homebrew)
brew install cloudflare/cloudflare/cloudflared
# Linux
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# Windows (Chocolatey)
choco install cloudflared# Login
cloudflared tunnel login
# Créer un tunnel
cloudflared tunnel create ark-print
# Configurer (créer config.yml)
cat > ~/.cloudflared/config.yml << EOF
tunnel: <tunnel-id>
credentials-file: /Users/your-user/.cloudflared/<tunnel-id>.json
ingress:
- hostname: ark-print.votredomaine.com
service: http://localhost:8099
- service: http_status:404
EOF
# Router DNS
cloudflared tunnel route dns ark-print ark-print.votredomaine.com
# Démarrer
cloudflared tunnel run ark-printsudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflaredAccédez à l'interface de monitoring :
http://localhost:8099
curl -X POST http://localhost:8099/api/print \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"zpl": "^XA^FO50,50^ADN,36,20^FDTest^FS^XZ",
"jobId": "test-001",
"metadata": {
"productId": "PROD-123",
"timestamp": "2025-10-10T14:00:00Z"
}
}'curl http://localhost:8099/healthRéponse :
{
"status": "healthy",
"version": "1.0.0",
"uptime": 3600,
"printer": {
"ip": "10.1.55.150",
"port": 9100,
"status": "connected"
}
}# Voir les logs
docker logs ark-print-server -f
# Statut du container
docker ps | grep ark-print-server
# Statistiques
docker stats ark-print-serverLes logs sont stockés dans ./logs/ :
combined.log- Tous les logserror.log- Erreurs uniquement
# Suivre les logs en temps réel
tail -f logs/combined.log
# Filtrer les erreurs
grep ERROR logs/combined.log# Tester la connectivité
ping 10.1.55.150
# Tester le port
nc -zv 10.1.55.150 9100
# ou
telnet 10.1.55.150 9100# Vérifier les logs
docker logs ark-print-server
# Redémarrer
docker restart ark-print-server
# Rebuild complet
docker compose down
docker compose up -d --build- Vérifiez que le token dans ARK Stock correspond exactement
- Pas d'espaces avant/après le token
- Le token ne doit pas contenir de caractères spéciaux
- Vérifiez que l'imprimante est allumée et en réseau
- Vérifiez que le câble réseau est branché
- Essayez d'augmenter
MAX_RETRIESetRETRY_DELAY_MS
npm install
npm run devnpm testdocker build -t ark-print-server:dev .
docker run -p 8099:8099 --env-file .env ark-print-server:dev- 📧 Email : [email protected]
- 🐛 Issues : GitHub Issues
- 💬 Discussions : GitHub Discussions
MIT © 2025 ARK Stock
- Zebra Technologies pour le langage ZPL
- Cloudflare pour Cloudflare Tunnel
- Docker pour la conteneurisation
Fait avec ❤️ par ARK Stock