| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # BamBuddy Systemd Service Template
- #
- # INSTALLATION:
- # 1. Copy this file to /etc/systemd/system/bambuddy.service
- # 2. Replace placeholders:
- # - INSTALL_PATH: Where BamBuddy is installed (e.g., /opt/bambuddy)
- # - SERVICE_USER: User to run as (e.g., bambuddy)
- # - DATA_DIR: Data directory (e.g., /opt/bambuddy/data)
- # - LOG_DIR: Log directory (e.g., /opt/bambuddy/logs)
- # 3. Run: sudo systemctl daemon-reload
- # 4. Run: sudo systemctl enable bambuddy
- # 5. Run: sudo systemctl start bambuddy
- #
- # Or use the install script: ./install/install.sh
- #
- [Unit]
- Description=BamBuddy - Bambu Lab Print Management
- Documentation=https://github.com/maziggy/bambuddy
- After=network.target
- [Service]
- Type=simple
- User=SERVICE_USER
- Group=SERVICE_USER
- WorkingDirectory=INSTALL_PATH
- # Environment file (optional - created by install script)
- EnvironmentFile=-INSTALL_PATH/.env
- # Use virtual environment
- Environment="PATH=INSTALL_PATH/venv/bin:/usr/local/bin:/usr/bin:/bin"
- # Server configuration
- ExecStart=INSTALL_PATH/venv/bin/uvicorn backend.app.main:app --host 0.0.0.0 --port ${PORT:-8000}
- # Restart policy
- Restart=on-failure
- RestartSec=5
- # Graceful shutdown
- TimeoutStopSec=10
- # Kill zombie ffmpeg processes (timelapse processing)
- ExecStartPre=-/usr/bin/pkill -9 -f "ffmpeg.*bambuddy"
- ExecStopPost=-/usr/bin/pkill -9 -f "ffmpeg.*bambuddy"
- # Logging
- StandardOutput=journal
- StandardError=journal
- SyslogIdentifier=bambuddy
- # Security hardening
- NoNewPrivileges=true
- PrivateTmp=true
- ProtectSystem=strict
- ProtectHome=true
- ReadWritePaths=DATA_DIR LOG_DIR INSTALL_PATH
- [Install]
- WantedBy=multi-user.target
|