[Unit] Description=Turmli Bar Calendar Tool Documentation=https://github.com/turmli/bar-calendar-tool After=network.target network-online.target Wants=network-online.target [Service] Type=simple User=pi Group=pi WorkingDirectory=/opt/turmli-calendar Environment="PATH=/opt/turmli-calendar/venv/bin:/usr/local/bin:/usr/bin:/bin" Environment="PYTHONPATH=/opt/turmli-calendar" Environment="TZ=Europe/Berlin" # Use virtual environment Python with uvicorn ExecStart=/opt/turmli-calendar/venv/bin/python -m uvicorn main:app --host 0.0.0.0 --port 8000 --workers 1 --log-level info # Restart policy Restart=always RestartSec=10 StartLimitInterval=200 StartLimitBurst=5 # Resource limits for Raspberry Pi Zero MemoryMax=256M CPUQuota=75% # Security hardening PrivateTmp=true NoNewPrivileges=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/opt/turmli-calendar/calendar_cache.json /opt/turmli-calendar/static # Logging StandardOutput=journal StandardError=journal SyslogIdentifier=turmli-calendar [Install] WantedBy=multi-user.target