Gruntdeck User Guide

Getting Started with Gruntdeck

Gruntdeck is a lightweight, clean-room reimplementation of Rundeck built in Go and powered by PostgreSQL and River Task Queue.

1-Minute Launch via Docker

git clone https://github.com/Thundercloud12/gruntdeck.git cd gruntdeck docker compose up -d

Open http://localhost:8080 in your browser and sign in with credentials admin / adminpassword.

Environment Configuration

Gruntdeck accepts the following environment variables or .env file configuration:

DATABASE_URL=postgres://gruntdeck:password@localhost:5432/gruntdeck?sslmode=disable GRUNTDECK_MASTER_KEY=01234567890123456789012345678901 ADMIN_USERNAME=admin ADMIN_PASSWORD=adminpassword PORT=8080

Multi-Project Workspaces

All target nodes, jobs, cron schedules, and execution logs are isolated by Project ID. Use the header Project selector to switch active workspaces.

Target Node Inventory & SSH Trust

Add remote servers with IP, user, SSH key reference, and target tags (e.g. web-server, production).

Trusting Target SSH Fingerprints

./gruntdeck trust 192.168.1.100

Job Details & Show View

Clicking any job opens the Job Show View featuring Rundeck-style inspection panels:

  • Stats Sub-Tab: Total runs, success percentage, and average runtime duration.
  • Activity Sub-Tab: Filtered execution history list for the selected job.

Follow Execution Modes

Switch log output perspectives during live job runs using the Follow execution dropdown:

  • Nodes: Accordion cards grouping log entries by server IP.
  • Log Output: Raw monospaced terminal output stream.
  • HTML: Rendered HTML iframe for formatted report output.

Key Storage Vault

SSH private keys, remote passwords, and API tokens are encrypted at rest using AES-256-GCM encryption.

Cron Schedules

Automate recurring task pipelines with cron rules (e.g. 0 0 2 * * *) and custom timezone support.

REST API Reference

Trigger job runs programmatically via REST API:

# Trigger Job Execution curl -X POST http://localhost:8080/api/v1/jobs/health-check/run \ -H "Content-Type: application/json" \ -d '{"options": {"environment": "production"}}'