Deploy via Podman Quadlet: docker-compose.yml → .container files → systemd na VPS.
service_manager: quadlet— deploy strategy uses Quadlet instead of composequadlet_dir/quadlet_remote_dir— local + remote paths for .container filescomposesection —file,override_files,network,auto_updatessh_port: 2222— non-standard SSH portenv_file— per-environment .env filessilent: true— health check suppresses curl command echotaskfile deploy— auto-selects strategy (compose local vs quadlet remote)taskfile setup— one-command VPS provisioningtaskfile quadlet generate/upload— Quadlet workflow commands
docker-compose.yml
↓
taskfile quadlet generate → deploy/quadlet/*.container
↓
taskfile quadlet upload → scp → ~/.config/containers/systemd/
↓
systemctl --user restart → running as rootless Podman
# Local dev
taskfile --env local run dev
# Full prod deploy (build → push → quadlet → restart)
taskfile --env prod run deploy-prod --var TAG=v1.0.0
# Or use built-in deploy command (auto strategy)
taskfile --env prod deploy --var TAG=v1.0.0
# Quadlet workflow step by step
taskfile --env prod run quadlet-generate
taskfile --env prod run quadlet-upload
taskfile --env prod run quadlet-restart
# VPS setup from scratch
taskfile setup 123.45.67.89 --domain app.example.com
# or:
taskfile --env prod run provision
# Monitoring
taskfile --env prod run logs
taskfile --env prod run status
taskfile run health- No compose on VPS — Podman Quadlet uses native systemd
- Low RAM — no docker daemon, rootless Podman
- Auto-update —
compose.auto_update: trueenables Podman auto-update - Reliable — systemd manages restarts, logging, dependencies