{"id":31996806,"url":"https://github.com/mufeedali/quadlet-helper","last_synced_at":"2026-06-30T16:31:11.456Z","repository":{"id":317255359,"uuid":"1066640229","full_name":"mufeedali/quadlet-helper","owner":"mufeedali","description":"Helper tool meant for personal use","archived":false,"fork":false,"pushed_at":"2026-05-29T20:23:19.000Z","size":258,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T22:11:16.587Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mufeedali.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T19:01:59.000Z","updated_at":"2026-05-29T20:23:23.000Z","dependencies_parsed_at":"2025-09-29T21:17:05.545Z","dependency_job_id":"18e76fc4-469d-42c1-a1dd-a2a4bb623bbb","html_url":"https://github.com/mufeedali/quadlet-helper","commit_stats":null,"previous_names":["mufeedali/quadlet-helper-scripts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mufeedali/quadlet-helper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mufeedali%2Fquadlet-helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mufeedali%2Fquadlet-helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mufeedali%2Fquadlet-helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mufeedali%2Fquadlet-helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mufeedali","download_url":"https://codeload.github.com/mufeedali/quadlet-helper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mufeedali%2Fquadlet-helper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34975668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-15T13:58:21.269Z","updated_at":"2026-06-30T16:31:11.394Z","avatar_url":"https://github.com/mufeedali.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# quadlet-helper (qh)\n\nThings that should probably be part of a script. Involves a good bit of AI-generated code and meant primarily for personal use with [quad-bucket](https://github.com/mufeedali/quad-bucket).\n\n## Motivation\n\nPart of the experiment here is to explore Go as a functional, object-oriented and AOT-compiled alternative to scripting. A largely successful experiment so far.\n\n## Features\n\n- **Unit Management**: Control quadlet unit files (start, stop, enable, disable, logs, status). Mostly here because I want completions.\n- **Cloudflare integration**: Automated Cloudflare IP updater.\n- **Example files generation**: Generate example configurations (currently only traefik) and environment files\n- **Backup Management**: Create and manage automated backup services using rsync, restic, or rclone. Unnecessarily elaborate, including email notifications. Should have still been just a script.\n\n## Quick Start\n\nYou probably shouldn't be installing this. If this is somehow exactly what you want, you're probably doing something wrong...\n\nBut anyway...\n\n```bash\ngo install github.com/mufeedali/quadlet-helper@latest\n```\n\nOr build from source:\n\n```bash\ngit clone https://github.com/mufeedali/quadlet-helper.git\ncd quadlet-helper\ngo build -ldflags=\"-s -w\" -trimpath -o qh\n```\n\n## Usage\n\n```bash\n# Backup commands\nqh backup create \u003cname\u003e      # Create a new backup configuration\nqh backup install \u003cname\u003e     # Install backup service and timer\nqh backup list               # List all backup configurations\nqh backup run \u003cname\u003e         # Run backup immediately\nqh backup status \u003cname\u003e      # Check backup status\nqh backup logs \u003cname\u003e        # View backup logs\n\n# Unit commands\nqh unit list                 # List quadlet units\nqh unit start \u003cname\u003e         # Start a unit\nqh unit stop \u003cname\u003e          # Stop a unit\nqh unit status \u003cname\u003e        # Check unit status\nqh unit logs \u003cname\u003e          # View unit logs\nqh unit validate \u003cfile\u003e      # Validate quadlet file\n\n# Cloudflare commands\nqh cloudflare install        # Install Cloudflare IP updater\nqh cloudflare run            # Update Cloudflare DNS\nqh cloudflare uninstall      # Remove Cloudflare service\n\n# Generate commands\nqh generate env       # Generate .env examples\nqh generate traefik   # Generate Traefik example\n```\n\n## Configuration\n\nBy default, quadlet-helper looks for container configurations in:\n```\n~/.config/containers/systemd\n```\n\nOverride with the `--containers-path` flag:\n```bash\nqh --containers-path /custom/path unit list\n```\n\n## Contributing\n\nDon't bother. This one isn't worth it. Unless you think otherwise... In which case, sure, go on.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmufeedali%2Fquadlet-helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmufeedali%2Fquadlet-helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmufeedali%2Fquadlet-helper/lists"}