# ============================================================================= # /etc/systemd/system/display-dashboard.service # 미니 상태 표시기 (Pi Zero 2 W + ST7789V) 부팅 자동 실행 # # 설치: # sudo cp systemd/display-dashboard.service /etc/systemd/system/ # sudo systemctl daemon-reload && sudo systemctl enable --now display-dashboard # 경로가 /home/pi/display 가 아니면 WorkingDirectory/ExecStart 수정. # ============================================================================= [Unit] Description=Mini Status Display (Pi Zero 2 W, ST7789V) After=network-online.target Wants=network-online.target [Service] Type=simple User=pi Group=pi # /dev/spidev0.0 + GPIO 문자장치 접근 SupplementaryGroups=spi gpio WorkingDirectory=/home/pi/display ExecStart=/home/pi/display/venv/bin/python display_dashboard.py Restart=always RestartSec=10 StandardOutput=journal StandardError=journal SyslogIdentifier=display-dashboard Environment=PYTHONUNBUFFERED=1 PrivateTmp=true # ── 샌드박스 (sht30 유닛과 동일 정책) ────────────────────────────────────── NoNewPrivileges=true ProtectSystem=strict ReadWritePaths=/var/log ProtectHome=read-only ProtectKernelModules=true ProtectKernelTunables=true ProtectControlGroups=true RestrictSUIDSGID=true LockPersonality=true RestrictRealtime=true # HTTPS 폴링 + 로컬 소켓(DNS/journal). AF_NETLINK 은 getaddrinfo 용. RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK # ⚠️ PrivateDevices 금지 — /dev/spidev0.0, /dev/gpiomem 이 가려져 화면 불가. StartLimitBurst=5 StartLimitInterval=600s [Install] WantedBy=multi-user.target