
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
- How It Works
- Docker
- Screenshots
- Configuration File
- ✨ Star History
- License
- Development setup
- 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
- 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 -it --rm \
--name gocron \
--hostname gocron \
-p 8156:8156 \
-v ./config/:/app/config/ \
ghcr.io/flohoss/gocron:latest
services:
gocron:
image: ghcr.io/flohoss/gocron:latest
restart: always
container_name: gocron
hostname: gocron
volumes:
- ./config/:/app/config/
ports:
- '8156:8156'
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.
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'
This project is licensed under the MIT License - see the LICENSE file for details.
docker compose up
# Run docker compose up first for the types to be generated
docker compose run --rm types