View .md

Schedules and lifecycle hooks

Automate a FeatherPanel server with cron schedules and lifecycle hooks. Timed restarts, backups, commands, Discord webhooks and HTTP requests on start, stop or crash.

On this page

Both pages need schedule.read. Creating, editing and deleting schedules need schedule.create, schedule.update and schedule.delete. Your host can turn either feature off for the whole panel.

Schedules

A schedule is a cron expression plus a list of tasks.

FieldNotes
Schedule nameFor your own reference.
Cron expressionMinute, hour, day of month, month and day of week. Cron Helper links to cron.help.
TimezoneThe timezone the expression is read in.
Only When OnlineSkip the run if the server is offline.
Schedule EnabledDisabled schedules never run.

From the list you can enable or disable a schedule, Run now (it is queued and runs on the next cron tick), export it as JSON and import one from JSON.

Tasks

Open a schedule’s tasks to add steps:

ActionPayload
PowerStart, Stop, Restart or Kill.
BackupServer files, Databases (all or selected) or Full server. See Backups.
CommandA console command, such as say Server restarting....
Container ShellA shell command run inside the container (docker exec), up to 4096 characters, with a 1 to 120 second timeout. Only shown when the host enabled it and you have control.console.

Each task has a Sequence (run order), a Time offset in seconds to wait before it runs, and Continue on failure. Move tasks up or down to reorder them.

A common restart schedule: Command say Restarting in 1 minute, then Power Restart with a 60 second offset.

Lifecycle hooks

Lifecycle hooks run a pipeline of steps on power events instead of a timer. The host enables them with server_lifecycle_hooks_enabled.

HookWhen it runs
Pre-startBefore the server starts.
Post-startWhen the server is detected as running.
Pre-stopBefore the server stops.
Post-stopAfter the server stopped. Webhook, HTTP request and sleep steps only.
Server-crashWhen Wings reports a crash. Holds one action.

Step types:

StepNotes
Container CommandSent to the console, like typing it.
Container ShellShell command inside the container, 1 to 120 second timeout. Host must enable it.
BackupSame choices as the schedule task.
Discord WebhookMessage content plus an embed builder with title, description, color, fields, images, footer and author, and a live preview. Image URLs must be HTTPS. Placeholders such as {{env.SERVER_NAME}} are filled from the container environment.
HTTP RequestURL, method, headers and query params as JSON, and an optional body.
SleepPause 1 to 300 seconds.

Each hook can be enabled or disabled, steps can be reordered, and the whole set can be exported and imported as a file.

Frequently asked questions

What timezone do schedules use?

The one you pick on the schedule. 0 3 * * * with Europe/Paris runs at 3 AM Paris time, not 3 AM UTC.

How do I post to Discord when my server crashes?

Open Lifecycle hooks, choose the Server-crash hook and add a Discord Webhook step with your webhook URL and an optional embed.

Why do I not see Schedules or Lifecycle hooks?

Your host turned the feature off, or your subuser account lacks schedule.read.