This commit is contained in:
Matthias Lotz 2025-10-06 19:30:21 +02:00
commit efcaf5a190
20 changed files with 5697 additions and 0 deletions

56
.gitignore vendored Normal file
View File

@ -0,0 +1,56 @@
/install/HoHiHa
venv
odoo_env
__pycache__
secrets.yml
# Output Verzeichnis
output/
/output
# Java/Maven
target/
*.jar
*.war
*.class
# Python
*.pyc
*.pyo
*.pyd
__pycache__/
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# IDE
.vscode/settings.json
.idea/
*.swp
*.swo
*~
# Docker
docker/HoHiHa.war
# Logs
*.log
logs/
# OS
.DS_Store
Thumbs.db

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# Tomee Java Webanwendung mit Docker für hobbysign
Dies ist ein Dockerfile für eine benutzerdefinierte Apache TomEE-Installation, die speziell für die Ausführung der HoHiHa-Webanwendung konfiguriert ist. Es basiert auf dem offiziellen TomEE-Image und fügt zusätzliche Konfigurationen und Ressourcen hinzu, um die Anwendung optimal zu unterstützen.

2
build.local.sh Executable file
View File

@ -0,0 +1,2 @@
docker build --no-cache -t gitea.lan.hobbyhimmel.de/hobbyhimmel/custom-tomee . -f dockerfile.local

1
build.sh Executable file
View File

@ -0,0 +1 @@
docker build --no-cache -t gitea.lan.hobbyhimmel.de/hobbyhimmel/custom-tomee .

71
cups/README.md Normal file
View File

@ -0,0 +1,71 @@
# CUPS & Docker: Troubleshooting und Best Practices
## Netzwerk & Benutzer
- **Firewall öffnen:**
```bash
sudo ufw allow from 172.30.30.0/24 to any port 631 proto tcp
```
- **Benutzer zu lpadmin hinzufügen:**
```bash
sudo usermod -aG lpadmin <deinbenutzername>
```
- **CUPS-Client installieren:**
```bash
sudo apt install cups-bsd
```
## WSL2: CUPS starten
```bash
sudo service cups start
```
## CUPS-Socket Problem
Falls `/run/cups/cups.sock` ein Verzeichnis ist:
```bash
sudo rm -r /run/cups/cups.sock
sudo service cups restart
```
## CUPS-Dienst prüfen
- **Läuft cupsd?**
```bash
ps aux | grep cupsd
```
- **Fehler im Log:**
```bash
tail -n 50 /var/log/cups/error_log
```
- **CUPS explizit neu starten und Socket prüfen:**
```bash
sudo service cups stop
sudo service cups start
ls -l /var/run/cups/cups.sock
ls -ld /var/run/cups
```
---
## Erkenntnisse & Lösungen aus der Praxis
**Problem:**
Docker-Container verlieren nach einem Neustart des Host-CUPS-Dienstes die Verbindung zum Drucker (Fehler: "Bad file descriptor").
**Ursache:**
Der CUPS-Dienst wird z.B. durch Logrotate automatisch neu gestartet (siehe `/etc/logrotate.d/cups-daemon`). Dabei wird der Socket neu erzeugt und bestehende Verbindungen ungültig.
**Lösung:**
- Entferne oder kommentiere in `/etc/logrotate.d/cups-daemon` die Zeile im `postrotate`-Block:
```bash
# invoke-rc.d --quiet cups restart > /dev/null
```
Dadurch wird CUPS nicht mehr automatisch nachts neu gestartet.
- Falls ein Neustart nötig ist, Container nach CUPS-Neustart ebenfalls neu starten (manuell oder automatisiert).
- In Anwendungen Fehler wie "Bad file descriptor" abfangen und ggf. den Druckvorgang erneut versuchen.
- Healthcheck im Container einbauen, um Verbindungsprobleme frühzeitig zu erkennen.
**Tipp:**
Portainer und Watchtower können helfen, Container-Status zu überwachen und bei Problemen automatisiert neu zu starten.
---
**Weitere Infos:**
- [wiki.hobbyhimmel.de/it/hobbysign/drucker_installation](https://wiki.hobbyhimmel.de/it/hobbysign/drucker_installation?s[]=cups)

206
cups/cups/cupsd.conf Normal file
View File

@ -0,0 +1,206 @@
#
# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a
# complete description of this file.
#
# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn
PageLogFormat
# Specifies the maximum size of the log files before they are rotated. The value "0" disables log rotation.
MaxLogSize 0
# Default error policy for printers
ErrorPolicy retry-job
# Allow remote access
#Port 631
#Listen 0.0.0.0:631
Listen localhost:631
Listen /run/cups/cups.sock
# Webinterface im lokalen Netz erreichbar machen (Server-IP anpassen, z.B. 172.30.30.1)
Listen hobbybackend1.fritz.box:631
ServerName hobbybackend1.fritz.box
# Show shared printers on the local network.
Browsing No
BrowseLocalProtocols none
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Web interface setting...
WebInterface Yes
# Timeout after cupsd exits if idle (applied only if cupsd runs on-demand - with -l)
IdleExitTimeout 60
# Restrict access to the server...
<Location />
Order allow,deny
</Location>
# Webinterface-Zugriff für localhost und das lokale Netz erlauben
<Location /admin>
Order allow,deny
Allow from 127.0.0.1
Allow from 172.30.30.
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow from 127.0.0.1
Allow from 172.30.30.
</Location>
# Restrict access to log files...
<Location /admin/log>
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>
# Set the default printer/job policies...
<Policy default>
# Job/subscription privacy...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator...
<Limit Create-Job Print-Job Print-URI Validate-Job>
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
# Set the authenticated printer/job policies...
<Policy authenticated>
# Job/subscription privacy...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator...
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
# Set the kerberized printer/job policies...
<Policy kerberos>
# Job/subscription privacy...
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
# Job-related operations must be done by the owner or an administrator...
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Negotiate
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Negotiate
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Negotiate
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>

40
cups/cups/printers.conf Normal file
View File

@ -0,0 +1,40 @@
# Printer configuration file for CUPS v2.4.1
# Written by cupsd
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
NextPrinterId 12
<DefaultPrinter Brother_HL_L2370DN_series>
PrinterId 11
UUID urn:uuid:1a9146e1-aec9-3ad3-5e9a-4f828874a024
Info Brother_HL_L2370DN_series
Location
MakeModel Brother HL-L2370DN series, driverless, cups-filters 1.28.15
DeviceURI implicitclass://Brother_HL_L2370DN_series/
State Idle
StateTime 1757838264
ConfigTime 1757838264
Type 36884
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-job
Option copies 1
Option cups-browsed true
Option finishings 0
Option job-cancel-after 10800
Option job-hold-until no-hold
Option job-priority 50
Option media iso_a4_210x297mm
Option notify-events job-completed
Option notify-lease-duration 86400
Option number-up 1
Option orientation-requested 0
Option output-bin face-down
Option print-color-mode monochrome
Option print-quality 0
Option printer-resolution 1200x1200dpi
Option sides one-sided
</DefaultPrinter>

198
cups/ppd/HL-L2370DN.ppd Normal file
View File

@ -0,0 +1,198 @@
*PPD-Adobe: "4.3"
*cupsMandatory: attributes-charset attributes-natural-language printer-uri
*FormatVersion: "4.3"
*FileVersion: "2.4"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PSVersion: "(3010.000) 0"
*LanguageLevel: "3"
*FileSystem: False
*PCFileName: "ippeve.ppd"
*Manufacturer: "Brother"
*ModelName: "HL-L2370DN series"
*Product: "(HL-L2370DN series)"
*NickName: "HL-L2370DN series - IPP Everywhere"
*ShortNickName: "HL-L2370DN series - IPP Everywhere"
*ColorDevice: False
*cupsVersion: 2.4
*cupsSNMPSupplies: False
*cupsLanguages: "en_US"
*APSupplies: "http://BRN94DDF8032B71.local./net/net/airprint.html"
*cupsManualCopies: True
*cupsFilter2: "image/urf image/urf 100 -"
*OpenUI *PageSize: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize 215x345mm: "<</PageSize[609.448818897638 977.952755905512]>>setpagedevice"
*PageSize 3x5: "<</PageSize[216 360]>>setpagedevice"
*PageSize A4: "<</PageSize[595.275590551181 841.889763779528]>>setpagedevice"
*PageSize A5: "<</PageSize[419.527559055118 595.275590551181]>>setpagedevice"
*PageSize A6: "<</PageSize[297.637795275591 419.527559055118]>>setpagedevice"
*PageSize Env10: "<</PageSize[296.985826771654 684]>>setpagedevice"
*PageSize EnvC5: "<</PageSize[459.212598425197 649.133858267717]>>setpagedevice"
*PageSize EnvDL: "<</PageSize[311.811023622047 623.622047244094]>>setpagedevice"
*PageSize EnvMonarch: "<</PageSize[278.985826771654 540]>>setpagedevice"
*PageSize Executive: "<</PageSize[522 756]>>setpagedevice"
*PageSize FanFoldGermanLegal: "<</PageSize[612 936]>>setpagedevice"
*PageSize ISOB5: "<</PageSize[498.897637795276 708.661417322835]>>setpagedevice"
*PageSize Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageSize Letter: "<</PageSize[612 792]>>setpagedevice"
*PageSize Oficio: "<</PageSize[612 964.8]>>setpagedevice"
*CloseUI: *PageSize
*OpenUI *PageRegion: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion 215x345mm: "<</PageSize[609.448818897638 977.952755905512]>>setpagedevice"
*PageRegion 3x5: "<</PageSize[216 360]>>setpagedevice"
*PageRegion A4: "<</PageSize[595.275590551181 841.889763779528]>>setpagedevice"
*PageRegion A5: "<</PageSize[419.527559055118 595.275590551181]>>setpagedevice"
*PageRegion A6: "<</PageSize[297.637795275591 419.527559055118]>>setpagedevice"
*PageRegion Env10: "<</PageSize[296.985826771654 684]>>setpagedevice"
*PageRegion EnvC5: "<</PageSize[459.212598425197 649.133858267717]>>setpagedevice"
*PageRegion EnvDL: "<</PageSize[311.811023622047 623.622047244094]>>setpagedevice"
*PageRegion EnvMonarch: "<</PageSize[278.985826771654 540]>>setpagedevice"
*PageRegion Executive: "<</PageSize[522 756]>>setpagedevice"
*PageRegion FanFoldGermanLegal: "<</PageSize[612 936]>>setpagedevice"
*PageRegion ISOB5: "<</PageSize[498.897637795276 708.661417322835]>>setpagedevice"
*PageRegion Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageRegion Letter: "<</PageSize[612 792]>>setpagedevice"
*PageRegion Oficio: "<</PageSize[612 964.8]>>setpagedevice"
*CloseUI: *PageRegion
*DefaultImageableArea: A4
*DefaultPaperDimension: A4
*ImageableArea 215x345mm: "12.245669291339 12.245669291339 597.203149606299 965.707086614173"
*PaperDimension 215x345mm: "609.448818897638 977.952755905512"
*ImageableArea 3x5: "12.245669291339 12.245669291339 203.754330708661 347.754330708661"
*PaperDimension 3x5: "216 360"
*ImageableArea A4: "12.245669291339 12.245669291339 583.029921259842 829.644094488189"
*PaperDimension A4: "595.275590551181 841.889763779528"
*ImageableArea A5: "12.245669291339 12.245669291339 407.28188976378 583.029921259842"
*PaperDimension A5: "419.527559055118 595.275590551181"
*ImageableArea A6: "12.245669291339 12.245669291339 285.392125984252 407.28188976378"
*PaperDimension A6: "297.637795275591 419.527559055118"
*ImageableArea Env10: "12.245669291339 12.245669291339 284.740157480315 671.754330708661"
*PaperDimension Env10: "296.985826771654 684"
*ImageableArea EnvC5: "12.245669291339 12.245669291339 446.966929133858 636.888188976378"
*PaperDimension EnvC5: "459.212598425197 649.133858267717"
*ImageableArea EnvDL: "12.245669291339 12.245669291339 299.565354330709 611.376377952756"
*PaperDimension EnvDL: "311.811023622047 623.622047244094"
*ImageableArea EnvMonarch: "12.245669291339 12.245669291339 266.740157480315 527.754330708661"
*PaperDimension EnvMonarch: "278.985826771654 540"
*ImageableArea Executive: "12.245669291339 12.245669291339 509.754330708661 743.754330708661"
*PaperDimension Executive: "522 756"
*ImageableArea FanFoldGermanLegal: "12.245669291339 12.245669291339 599.754330708661 923.754330708661"
*PaperDimension FanFoldGermanLegal: "612 936"
*ImageableArea ISOB5: "12.245669291339 12.245669291339 486.651968503937 696.415748031496"
*PaperDimension ISOB5: "498.897637795276 708.661417322835"
*ImageableArea Legal: "12.245669291339 12.245669291339 599.754330708661 995.754330708661"
*PaperDimension Legal: "612 1008"
*ImageableArea Letter: "12.245669291339 12.245669291339 599.754330708661 779.754330708661"
*PaperDimension Letter: "612 792"
*ImageableArea Oficio: "12.245669291339 12.245669291339 599.754330708661 952.554330708661"
*PaperDimension Oficio: "612 964.8"
*HWMargins: "12.245669291339 12.245669291339 12.245669291339 12.245669291339"
*ParamCustomPageSize Width: 1 points 216 612
*ParamCustomPageSize Height: 2 points 360 1008
*ParamCustomPageSize WidthOffset: 3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation: 5 int 0 3
*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice"
*OpenUI *InputSlot: PickOne
*OrderDependency: 10 AnySetup *InputSlot
*DefaultInputSlot: Auto
*InputSlot Auto: "<</MediaPosition 0>>setpagedevice"
*en_US.InputSlot Auto/Automatic: ""
*InputSlot Manual: "<</MediaPosition 4>>setpagedevice"
*en_US.InputSlot Manual/Manual: ""
*InputSlot Tray1: "<</MediaPosition 20>>setpagedevice"
*en_US.InputSlot Tray1/Tray 1: ""
*CloseUI: *InputSlot
*OpenUI *MediaType: PickOne
*OrderDependency: 10 AnySetup *MediaType
*DefaultMediaType: Stationery
*MediaType Stationery: "<</MediaType(Stationery)>>setpagedevice"
*en_US.MediaType Stationery/Stationery: ""
*MediaType StationeryLightweight: "<</MediaType(StationeryLightweight)>>setpagedevice"
*en_US.MediaType StationeryLightweight/Lightweight Paper: ""
*MediaType StationeryHeavyweight: "<</MediaType(StationeryHeavyweight)>>setpagedevice"
*en_US.MediaType StationeryHeavyweight/Heavyweight Paper: ""
*MediaType StationeryCover: "<</MediaType(StationeryCover)>>setpagedevice"
*en_US.MediaType StationeryCover/stationery-cover: ""
*MediaType Envelope: "<</MediaType(Envelope)>>setpagedevice"
*en_US.MediaType Envelope/Envelope: ""
*MediaType EnvelopeHeavyweight: "<</MediaType(EnvelopeHeavyweight)>>setpagedevice"
*en_US.MediaType EnvelopeHeavyweight/Heavyweight Envelope: ""
*MediaType EnvelopeLightweight: "<</MediaType(EnvelopeLightweight)>>setpagedevice"
*en_US.MediaType EnvelopeLightweight/Lightweight Envelope: ""
*MediaType StationeryRecycled: "<</MediaType(StationeryRecycled)>>setpagedevice"
*en_US.MediaType StationeryRecycled/stationery-recycled: ""
*MediaType Labels: "<</MediaType(Labels)>>setpagedevice"
*en_US.MediaType Labels/Labels: ""
*MediaType StationeryBond: "<</MediaType(StationeryBond)>>setpagedevice"
*en_US.MediaType StationeryBond/stationery-bond: ""
*MediaType Com.brother.thicker: "<</MediaType(Com.brother.thicker)>>setpagedevice"
*en_US.MediaType Com.brother.thicker/com.brother.thicker: ""
*MediaType Com.brother.recycled: "<</MediaType(Com.brother.recycled)>>setpagedevice"
*en_US.MediaType Com.brother.recycled/com.brother.recycled: ""
*CloseUI: *MediaType
*DefaultResolution: 300dpi
*OpenUI *cupsPrintQuality: PickOne
*OrderDependency: 10 AnySetup *cupsPrintQuality
*en_US.Translation cupsPrintQuality/Print Quality: ""
*DefaultcupsPrintQuality: Normal
*cupsPrintQuality Draft: "<</HWResolution[300 150]>>setpagedevice"
*en_US.cupsPrintQuality Draft/Draft: ""
*cupsPrintQuality Normal: "<</HWResolution[300 300]>>setpagedevice"
*en_US.cupsPrintQuality Normal/Normal: ""
*cupsPrintQuality High: "<</HWResolution[1200 1200]>>setpagedevice"
*en_US.cupsPrintQuality High/High: ""
*CloseUI: *cupsPrintQuality
*% ColorModel from urf-supported
*OpenUI *ColorModel: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*en_US.Translation ColorModel/Color Mode: ""
*ColorModel Gray: "<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice"
*en_US.ColorModel Gray/Grayscale: ""
*DefaultColorModel: Gray
*CloseUI: *ColorModel
*APPrinterPreset Gray_with_Paper_Auto-Detect_-_Draft/Draft B&W: "
*cupsPrintQuality Draft *ColorModel Gray
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality low
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode monochrome"
*End
*APPrinterPreset Gray_with_Paper_Auto-Detect/Black and White: "
*cupsPrintQuality Normal *ColorModel Gray
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality mid
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode monochrome"
*End
*APPrinterPreset Photo_with_Paper_Auto-Detect/Photo: "
*cupsPrintQuality High *ColorModel Gray
com.apple.print.preset.graphicsType Photo
com.apple.print.preset.quality high
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode color"
*End
*OpenUI *Duplex: PickOne
*OrderDependency: 10 AnySetup *Duplex
*en_US.Translation Duplex/2-Sided Printing: ""
*DefaultDuplex: None
*Duplex None: "<</Duplex false>>setpagedevice"
*en_US.Duplex None/Off (1-Sided): ""
*Duplex DuplexNoTumble: "<</Duplex true/Tumble false>>setpagedevice"
*en_US.Duplex DuplexNoTumble/Long-Edge (Portrait): ""
*Duplex DuplexTumble: "<</Duplex true/Tumble true>>setpagedevice"
*en_US.Duplex DuplexTumble/Short-Edge (Landscape): ""
*CloseUI: *Duplex
*cupsBackSide: Normal
*OpenUI *OutputBin: PickOne
*OrderDependency: 10 AnySetup *OutputBin
*DefaultOutputBin: FaceDown
*DefaultOutputOrder: Normal
*OutputBin FaceDown: ""
*en_US.OutputBin FaceDown/Face Down: ""
*PageStackOrder FaceDown: Normal
*CloseUI: *OutputBin

198
cups/ppd/HL-L2370DN.ppd.O Normal file
View File

@ -0,0 +1,198 @@
*PPD-Adobe: "4.3"
*cupsMandatory: attributes-charset attributes-natural-language printer-uri
*FormatVersion: "4.3"
*FileVersion: "2.4"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PSVersion: "(3010.000) 0"
*LanguageLevel: "3"
*FileSystem: False
*PCFileName: "ippeve.ppd"
*Manufacturer: "Brother"
*ModelName: "HL-L2370DN series"
*Product: "(HL-L2370DN series)"
*NickName: "HL-L2370DN series - IPP Everywhere"
*ShortNickName: "HL-L2370DN series - IPP Everywhere"
*ColorDevice: False
*cupsVersion: 2.4
*cupsSNMPSupplies: False
*cupsLanguages: "en_US"
*APSupplies: "http://BRN94DDF8032B71.local./net/net/airprint.html"
*cupsManualCopies: True
*cupsFilter2: "image/urf image/urf 100 -"
*OpenUI *PageSize: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize 215x345mm: "<</PageSize[609.448818897638 977.952755905512]>>setpagedevice"
*PageSize 3x5: "<</PageSize[216 360]>>setpagedevice"
*PageSize A4: "<</PageSize[595.275590551181 841.889763779528]>>setpagedevice"
*PageSize A5: "<</PageSize[419.527559055118 595.275590551181]>>setpagedevice"
*PageSize A6: "<</PageSize[297.637795275591 419.527559055118]>>setpagedevice"
*PageSize Env10: "<</PageSize[296.985826771654 684]>>setpagedevice"
*PageSize EnvC5: "<</PageSize[459.212598425197 649.133858267717]>>setpagedevice"
*PageSize EnvDL: "<</PageSize[311.811023622047 623.622047244094]>>setpagedevice"
*PageSize EnvMonarch: "<</PageSize[278.985826771654 540]>>setpagedevice"
*PageSize Executive: "<</PageSize[522 756]>>setpagedevice"
*PageSize FanFoldGermanLegal: "<</PageSize[612 936]>>setpagedevice"
*PageSize ISOB5: "<</PageSize[498.897637795276 708.661417322835]>>setpagedevice"
*PageSize Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageSize Letter: "<</PageSize[612 792]>>setpagedevice"
*PageSize Oficio: "<</PageSize[612 964.8]>>setpagedevice"
*CloseUI: *PageSize
*OpenUI *PageRegion: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion 215x345mm: "<</PageSize[609.448818897638 977.952755905512]>>setpagedevice"
*PageRegion 3x5: "<</PageSize[216 360]>>setpagedevice"
*PageRegion A4: "<</PageSize[595.275590551181 841.889763779528]>>setpagedevice"
*PageRegion A5: "<</PageSize[419.527559055118 595.275590551181]>>setpagedevice"
*PageRegion A6: "<</PageSize[297.637795275591 419.527559055118]>>setpagedevice"
*PageRegion Env10: "<</PageSize[296.985826771654 684]>>setpagedevice"
*PageRegion EnvC5: "<</PageSize[459.212598425197 649.133858267717]>>setpagedevice"
*PageRegion EnvDL: "<</PageSize[311.811023622047 623.622047244094]>>setpagedevice"
*PageRegion EnvMonarch: "<</PageSize[278.985826771654 540]>>setpagedevice"
*PageRegion Executive: "<</PageSize[522 756]>>setpagedevice"
*PageRegion FanFoldGermanLegal: "<</PageSize[612 936]>>setpagedevice"
*PageRegion ISOB5: "<</PageSize[498.897637795276 708.661417322835]>>setpagedevice"
*PageRegion Legal: "<</PageSize[612 1008]>>setpagedevice"
*PageRegion Letter: "<</PageSize[612 792]>>setpagedevice"
*PageRegion Oficio: "<</PageSize[612 964.8]>>setpagedevice"
*CloseUI: *PageRegion
*DefaultImageableArea: A4
*DefaultPaperDimension: A4
*ImageableArea 215x345mm: "12.245669291339 12.245669291339 597.203149606299 965.707086614173"
*PaperDimension 215x345mm: "609.448818897638 977.952755905512"
*ImageableArea 3x5: "12.245669291339 12.245669291339 203.754330708661 347.754330708661"
*PaperDimension 3x5: "216 360"
*ImageableArea A4: "12.245669291339 12.245669291339 583.029921259842 829.644094488189"
*PaperDimension A4: "595.275590551181 841.889763779528"
*ImageableArea A5: "12.245669291339 12.245669291339 407.28188976378 583.029921259842"
*PaperDimension A5: "419.527559055118 595.275590551181"
*ImageableArea A6: "12.245669291339 12.245669291339 285.392125984252 407.28188976378"
*PaperDimension A6: "297.637795275591 419.527559055118"
*ImageableArea Env10: "12.245669291339 12.245669291339 284.740157480315 671.754330708661"
*PaperDimension Env10: "296.985826771654 684"
*ImageableArea EnvC5: "12.245669291339 12.245669291339 446.966929133858 636.888188976378"
*PaperDimension EnvC5: "459.212598425197 649.133858267717"
*ImageableArea EnvDL: "12.245669291339 12.245669291339 299.565354330709 611.376377952756"
*PaperDimension EnvDL: "311.811023622047 623.622047244094"
*ImageableArea EnvMonarch: "12.245669291339 12.245669291339 266.740157480315 527.754330708661"
*PaperDimension EnvMonarch: "278.985826771654 540"
*ImageableArea Executive: "12.245669291339 12.245669291339 509.754330708661 743.754330708661"
*PaperDimension Executive: "522 756"
*ImageableArea FanFoldGermanLegal: "12.245669291339 12.245669291339 599.754330708661 923.754330708661"
*PaperDimension FanFoldGermanLegal: "612 936"
*ImageableArea ISOB5: "12.245669291339 12.245669291339 486.651968503937 696.415748031496"
*PaperDimension ISOB5: "498.897637795276 708.661417322835"
*ImageableArea Legal: "12.245669291339 12.245669291339 599.754330708661 995.754330708661"
*PaperDimension Legal: "612 1008"
*ImageableArea Letter: "12.245669291339 12.245669291339 599.754330708661 779.754330708661"
*PaperDimension Letter: "612 792"
*ImageableArea Oficio: "12.245669291339 12.245669291339 599.754330708661 952.554330708661"
*PaperDimension Oficio: "612 964.8"
*HWMargins: "12.245669291339 12.245669291339 12.245669291339 12.245669291339"
*ParamCustomPageSize Width: 1 points 216 612
*ParamCustomPageSize Height: 2 points 360 1008
*ParamCustomPageSize WidthOffset: 3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation: 5 int 0 3
*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice"
*OpenUI *InputSlot: PickOne
*OrderDependency: 10 AnySetup *InputSlot
*DefaultInputSlot: Auto
*InputSlot Auto: "<</MediaPosition 0>>setpagedevice"
*en_US.InputSlot Auto/Automatic: ""
*InputSlot Manual: "<</MediaPosition 4>>setpagedevice"
*en_US.InputSlot Manual/Manual: ""
*InputSlot Tray1: "<</MediaPosition 20>>setpagedevice"
*en_US.InputSlot Tray1/Tray 1: ""
*CloseUI: *InputSlot
*OpenUI *MediaType: PickOne
*OrderDependency: 10 AnySetup *MediaType
*DefaultMediaType: Stationery
*MediaType Stationery: "<</MediaType(Stationery)>>setpagedevice"
*en_US.MediaType Stationery/Stationery: ""
*MediaType StationeryLightweight: "<</MediaType(StationeryLightweight)>>setpagedevice"
*en_US.MediaType StationeryLightweight/Lightweight Paper: ""
*MediaType StationeryHeavyweight: "<</MediaType(StationeryHeavyweight)>>setpagedevice"
*en_US.MediaType StationeryHeavyweight/Heavyweight Paper: ""
*MediaType StationeryCover: "<</MediaType(StationeryCover)>>setpagedevice"
*en_US.MediaType StationeryCover/stationery-cover: ""
*MediaType Envelope: "<</MediaType(Envelope)>>setpagedevice"
*en_US.MediaType Envelope/Envelope: ""
*MediaType EnvelopeHeavyweight: "<</MediaType(EnvelopeHeavyweight)>>setpagedevice"
*en_US.MediaType EnvelopeHeavyweight/Heavyweight Envelope: ""
*MediaType EnvelopeLightweight: "<</MediaType(EnvelopeLightweight)>>setpagedevice"
*en_US.MediaType EnvelopeLightweight/Lightweight Envelope: ""
*MediaType StationeryRecycled: "<</MediaType(StationeryRecycled)>>setpagedevice"
*en_US.MediaType StationeryRecycled/stationery-recycled: ""
*MediaType Labels: "<</MediaType(Labels)>>setpagedevice"
*en_US.MediaType Labels/Labels: ""
*MediaType StationeryBond: "<</MediaType(StationeryBond)>>setpagedevice"
*en_US.MediaType StationeryBond/stationery-bond: ""
*MediaType Com.brother.thicker: "<</MediaType(Com.brother.thicker)>>setpagedevice"
*en_US.MediaType Com.brother.thicker/com.brother.thicker: ""
*MediaType Com.brother.recycled: "<</MediaType(Com.brother.recycled)>>setpagedevice"
*en_US.MediaType Com.brother.recycled/com.brother.recycled: ""
*CloseUI: *MediaType
*DefaultResolution: 300dpi
*OpenUI *cupsPrintQuality: PickOne
*OrderDependency: 10 AnySetup *cupsPrintQuality
*en_US.Translation cupsPrintQuality/Print Quality: ""
*DefaultcupsPrintQuality: Normal
*cupsPrintQuality Draft: "<</HWResolution[300 150]>>setpagedevice"
*en_US.cupsPrintQuality Draft/Draft: ""
*cupsPrintQuality Normal: "<</HWResolution[300 300]>>setpagedevice"
*en_US.cupsPrintQuality Normal/Normal: ""
*cupsPrintQuality High: "<</HWResolution[1200 1200]>>setpagedevice"
*en_US.cupsPrintQuality High/High: ""
*CloseUI: *cupsPrintQuality
*% ColorModel from urf-supported
*OpenUI *ColorModel: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*en_US.Translation ColorModel/Color Mode: ""
*ColorModel Gray: "<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice"
*en_US.ColorModel Gray/Grayscale: ""
*DefaultColorModel: Gray
*CloseUI: *ColorModel
*APPrinterPreset Gray_with_Paper_Auto-Detect_-_Draft/Draft B&W: "
*cupsPrintQuality Draft *ColorModel Gray
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality low
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode monochrome"
*End
*APPrinterPreset Gray_with_Paper_Auto-Detect/Black and White: "
*cupsPrintQuality Normal *ColorModel Gray
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality mid
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode monochrome"
*End
*APPrinterPreset Photo_with_Paper_Auto-Detect/Photo: "
*cupsPrintQuality High *ColorModel Gray
com.apple.print.preset.graphicsType Photo
com.apple.print.preset.quality high
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode color"
*End
*OpenUI *Duplex: PickOne
*OrderDependency: 10 AnySetup *Duplex
*en_US.Translation Duplex/2-Sided Printing: ""
*DefaultDuplex: None
*Duplex None: "<</Duplex false>>setpagedevice"
*en_US.Duplex None/Off (1-Sided): ""
*Duplex DuplexNoTumble: "<</Duplex true/Tumble false>>setpagedevice"
*en_US.Duplex DuplexNoTumble/Long-Edge (Portrait): ""
*Duplex DuplexTumble: "<</Duplex true/Tumble true>>setpagedevice"
*en_US.Duplex DuplexTumble/Short-Edge (Landscape): ""
*CloseUI: *Duplex
*cupsBackSide: Normal
*OpenUI *OutputBin: PickOne
*OrderDependency: 10 AnySetup *OutputBin
*DefaultOutputBin: FaceDown
*DefaultOutputOrder: Normal
*OutputBin FaceDown: ""
*en_US.OutputBin FaceDown/Face Down: ""
*PageStackOrder FaceDown: Normal
*CloseUI: *OutputBin

39
docker-compose.local.yml Normal file
View File

@ -0,0 +1,39 @@
services:
hobbysign:
container_name: hobbysign
image: gitea.lan.hobbyhimmel.de/hobbyhimmel/custom-tomee:latest
ports:
- "8888:8080"
- "8000:8000" # <--- Debugging-Port freigeben
stdin_open: true
tty: true
environment:
- HOHIHA_OUTPUT_DIR=/usr/local/tomee/output
- HOHIHA_ODOO_CONFIG=/usr/local/tomee/config/secrets.yml
- JPDA_ADDRESS=*:8000 # <--- Debug-Port in der VM
- JPDA_TRANSPORT=dt_socket # <--- Java Debug Transport
command: ["catalina.sh", "jpda", "run"] # <--- startet TomEE mit JPDA
volumes:
- hobbysign_output:/usr/local/tomee/output
- hobbysign_config:/usr/local/tomee/config
- hobbysign_webapps:/usr/local/tomee/webapps
- /var/run/cups/cups.sock:/var/run/cups/cups.sock
user: "1000:1000"
restart: always
networks:
- odoo-180_local_npm-nw
volumes:
hobbysign_output:
name: hobbysign_output
hobbysign_config:
name: hobbysign_config
hobbysign_webapps:
name: hobbysign_webapps
networks:
odoo-180_local_npm-nw:
external: true

42
docker-compose.yml Normal file
View File

@ -0,0 +1,42 @@
services:
hobbysign:
container_name: hobbysign
image: gitea.lan.hobbyhimmel.de/hobbyhimmel/custom-tomee:latest
stdin_open: true
tty: true
environment:
- HOHIHA_OUTPUT_DIR=/usr/local/tomee/output
- HOHIHA_ODOO_CONFIG=/usr/local/tomee/config/secrets.yml
volumes:
- hobbysign_output:/usr/local/tomee/output
- hobbysign_config:/usr/local/tomee/config
- hobbysign_webapps:/usr/local/tomee/webapps
- /var/run/cups/cups.sock:/var/run/cups/cups.sock
healthcheck:
test: ["CMD", "lpstat", "-v"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
user: "1000:1000"
restart: unless-stopped
networks:
- hobbyhimmel_odoo_13_default
- npm-nw
volumes:
hobbysign_output:
name: hobbysign_output
hobbysign_config:
name: hobbysign_config
hobbysign_webapps:
name: hobbysign_webapps
networks:
hobbyhimmel_odoo_13_default:
external: true
name: hobbyhimmel_odoo_13_default
npm-nw:
external: true
name: npm-nw

39
dockerfile Normal file
View File

@ -0,0 +1,39 @@
FROM tomee:9.1.3-jre17-Semeru-ubuntu-plume
# Install nano
USER root
RUN apt update && apt install -y nano cups-client cups-bsd && apt clean
# Create a user with a home directory
RUN useradd -u 1000 -m -d /home/hobbyadmin -s /bin/bash hobbyadmin
# Set the working directory
WORKDIR /usr/local/tomee
# Create the output directory and set permissions
RUN mkdir -p /usr/local/tomee/output && chown -R 1000:1000 /usr/local/tomee/output
RUN mkdir -p /usr/local/tomee/config && chown -R 1000:1000 /usr/local/tomee/config
# Copy application files
# COPY . /usr/local/tomee
RUN if [ -d /usr/local/tomee/webapps/ROOT ]; then mv /usr/local/tomee/webapps/ROOT /usr/local/tomee/webapps/welcome; fi
RUN if [ -f /usr/local/tomee/webapps/ROOT.war ]; then mv /usr/local/tomee/webapps/ROOT.war /usr/local/tomee/webapps/admin.war; fi
COPY tomcat-users.xml /usr/local/tomee/conf/tomcat-users.xml
COPY manager.xml /usr/local/tomee/conf/Catalina/localhost/manager.xml
# Create a startup script to set umask and run the application
RUN echo '#!/bin/sh' > /usr/local/tomee/start.sh \
&& echo 'umask 002' >> /usr/local/tomee/start.sh \
&& echo 'catalina.sh run' >> /usr/local/tomee/start.sh
# Make the startup script executable
RUN chmod +x /usr/local/tomee/start.sh
# Change ownership of all files to user 1000
RUN chown -R 1000:1000 /usr/local/tomee
# Set the user to "hobbyadmin" (replace 1000 with the actual UID of hobbyadmin)
USER hobbyadmin
# Run the startup script
CMD ["/usr/local/tomee/start.sh"]

39
dockerfile.local Normal file
View File

@ -0,0 +1,39 @@
FROM tomee:9.1.3-jre17-Semeru-ubuntu-plume
# Install nano
USER root
RUN apt update && apt install -y nano cups-client cups-bsd && apt clean
# Create a user with a home directory
RUN useradd -u 1000 -m -d /home/lotzm -s /bin/bash lotzm
# Set the working directory
WORKDIR /usr/local/tomee
# Create the output directory and set permissions
RUN mkdir -p /usr/local/tomee/output && chown -R 1000:1000 /usr/local/tomee/output
RUN mkdir -p /usr/local/tomee/config && chown -R 1000:1000 /usr/local/tomee/config
# Copy application files
# COPY . /usr/local/tomee
RUN if [ -d /usr/local/tomee/webapps/ROOT ]; then mv /usr/local/tomee/webapps/ROOT /usr/local/tomee/webapps/welcome; fi
RUN if [ -f /usr/local/tomee/webapps/ROOT.war ]; then mv /usr/local/tomee/webapps/ROOT.war /usr/local/tomee/webapps/admin.war; fi
COPY tomcat-users.xml /usr/local/tomee/conf/tomcat-users.xml
COPY manager.xml /usr/local/tomee/conf/Catalina/localhost/manager.xml
# Create a startup script to set umask and run the application
RUN echo '#!/bin/sh' > /usr/local/tomee/start.sh \
&& echo 'umask 002' >> /usr/local/tomee/start.sh \
&& echo 'catalina.sh run' >> /usr/local/tomee/start.sh
# Make the startup script executable
RUN chmod +x /usr/local/tomee/start.sh
# Change ownership of all files to user 1000
RUN chown -R 1000:1000 /usr/local/tomee
# Set the user to "lotzm" (replace 1000 with the actual UID of lotzm)
USER lotzm
# Run the startup script
CMD ["/usr/local/tomee/start.sh"]

3
logs.xml Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Diese ist eine neue Datei im Verzeichnis ${catalina.home}/conf/catalina/localhost -->
<Context override="true" docBase="${catalina.home}/logs" path="/logs" />

1
manager.xml Normal file
View File

@ -0,0 +1 @@
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"><Valve className="org.apache.catalina.valves.RemoteAddrValve" allow=".*" /></Context>

1
start.local.sh Executable file
View File

@ -0,0 +1 @@
docker compose -f docker-compose.local.yml -p hobbysign up -d

1
start.sh Executable file
View File

@ -0,0 +1 @@
docker compose -p hobbysign up -d

1
stop.sh Executable file
View File

@ -0,0 +1 @@
docker compose -p hobbysign down

62
tomcat-users.xml Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
<!--
The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="thekenheld"/>
<user username="thekenheld" password="Werkstatt140" roles="thekenheld"/>
<!-- Activate those lines to get access to TomEE GUI if added (tomee-webaccess) -->
<role rolename="tomee-admin" />
<user username="tomee" password="tomee" roles="tomee-admin,manager-gui" />
</tomcat-users>

4694
web.xml Normal file

File diff suppressed because it is too large Load Diff