/gocron

A go based task scheduler with GUI

Primary LanguageGoMIT LicenseMIT

goreleaser GitHub go.mod Go version of a Go module

A task scheduler built with Go and Vue.js that allows users to specify recurring jobs via a simple YAML configuration file. The scheduler reads job definitions, executes commands at specified times using cron expressions, and passes in environment variables for each job.

Table of Contents

Features

  • Simple Configuration: Easily define jobs, cron schedules, and environment variables in a YAML config file.
  • Cron Scheduling: Supports cron expressions for precise scheduling.
  • Environment Variables: Define environment variables specific to each job.
  • Easy Job Management: Add and remove jobs quickly with simple configuration.
  • Pre-installed backup-software for an easy backup solution

How It Works

  • Defaults Section: This section defines default values that are applied to all jobs. You can specify a default cron expression and environment variables to be inherited by each job.
  • Jobs Section: Here, you define multiple jobs. Each job can have its own cron expression, environment variables, and commands to execute.
  • Environment Variables: Define environment variables for each job to customize its runtime environment.
  • Commands: Each job can have multiple commands, which will be executed in sequence.

Docker

run command

docker run -it --rm \
  --name gocron \
  --hostname gocron \
  -p 8156:8156 \
  -v ./config/:/app/config/ \
  ghcr.io/flohoss/gocron:latest

compose file

services:
  gocron:
    image: ghcr.io/flohoss/gocron:latest
    restart: always
    container_name: gocron
    hostname: gocron
    volumes:
      - ./config/:/app/config/
    ports:
      - '8156:8156'

Screenshots

Dark mode

Light mode

API Docs

Configuration File

YAML Configuration

The entire configuration is managed via the YAML file, including settings for the timezone, logging, and server.

For a complete and working configuration example, please refer to the config.yaml file in the repository.

Software

You can specify the software you want to install and the version you want to use directly in the configuration file. Only some software is available, but options might increase in the future. Here is an example of how to set up specific software versions:

software:
  - name: 'apprise'
    version: '1.2.0'
  - name: 'borgbackup'
    version: '1.2.0'
  - name: 'docker'
    version: '5:24.0.5-1~debian.11~bullseye'
  - name: 'restic'
    version: '0.14.0'

✨ Star History

Star History Chart

License

This project is licensed under the MIT License - see the LICENSE file for details.

Development setup

Automatic rebuild and reload

docker compose up

Rebuild types

# Run docker compose up first for the types to be generated

docker compose run --rm types