{"id":21626447,"url":"https://github.com/qodesmith/unraid-cron-jobs","last_synced_at":"2026-04-13T23:02:39.795Z","repository":{"id":244721247,"uuid":"816056410","full_name":"qodesmith/unraid-cron-jobs","owner":"qodesmith","description":"Cron jobs I run on my Unraid server","archived":false,"fork":false,"pushed_at":"2025-01-11T21:27:21.000Z","size":1170,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T22:42:44.594Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qodesmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-06-16T23:58:43.000Z","updated_at":"2025-01-11T21:27:25.000Z","dependencies_parsed_at":"2024-06-26T15:49:24.245Z","dependency_job_id":"987e7582-2ae5-4398-a557-9c56e366b495","html_url":"https://github.com/qodesmith/unraid-cron-jobs","commit_stats":null,"previous_names":["qodesmith/unraid-cron-jobs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qodesmith%2Funraid-cron-jobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qodesmith%2Funraid-cron-jobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qodesmith%2Funraid-cron-jobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qodesmith%2Funraid-cron-jobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qodesmith","download_url":"https://codeload.github.com/qodesmith/unraid-cron-jobs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244298463,"owners_count":20430445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-25T01:13:23.795Z","updated_at":"2026-04-13T23:02:34.765Z","avatar_url":"https://github.com/qodesmith.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# unraid-cron-jobs\n\n## Project List\n\n| Name                     | Custom Dockerfile | Description                                                            |\n| ------------------------ | :---------------: | ---------------------------------------------------------------------- |\n| `scrape-cassettes`       |                   | Download all the cassettes at [tapedeck.org](http://www.tapedeck.org/) |\n| `prune-notion-backups `  |                   | Keep only `n` number of Notion backups                                 |\n| `download-youtube-beats` |        ✅         | Download beats from the YouTube playlist                               |\n| `backup-github`          |                   | Archive all Github repos                                               |\n\n## Build / Publish\n\nThe root `package.json` file is the entrypoint to building and publishing\nthe various projects. There are a number of scripts to choose from, all of which\nwill call `build.ts` in different ways.\n\n### Project-Specific Dependencies\n\nTo include project-specific depdencies, simply install that dependency at the\nroot-level `package.json` file and consume the dependency in the project.\n\nAll dependencies for all projects are declared in the root-level `package.json`.\nThe build process includes analyzing each project's import tree to calculate the\nspecific depdencies needed for that project. A project-specific `package.json`\nwill then be created including only those dependencies used by that project.\n\n## Env Vars\n\n### Universal Env Vars\n\n| Env variable  | Description                                                                                   |\n| ------------- | --------------------------------------------------------------------------------------------- |\n| `CRON_TIME`   | Sets the cron time value. Each project will also have it's own default value to fall back on. |\n| `DESTINATION` | path where data (if applicable) are stored in the container.                                  |\n\n### Project-Specific Env Vars\n\nThese env vars should be set in [docker-compose.yml](./docker-compose.yml).\n\nSee the [dl-yt-playlist](https://github.com/qodesmith/dl-yt-playlist?tab=readme-ov-file#usage) docs for details on the `download-youtube-beats` env variables.\n\n| Project                     | Env variable                 | Description                                                                               |\n| --------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------- |\n| `prune-notion-backups`      | `BACKUP_LIMIT`               | _(optional)_ Max number of backups to keep (defaults to 4)                                |\n| `backup-github`             | `GIT_CONFIG_GLOBAL`          | `/gitconfig/.gitconfig` - location to the global git config (for git versions \u003e= 2.34)    |\n|                             | `GIT_CONFIG`                 | `/gitconfig/.gitconfig` - location to the global git config (for git versions \u003c 2.34)     |\n| `download-youtube-playlist` | `FETCHNOW_QUERY_KEY`         | Read from a `.env` file on the Unraid server - enables manually triggering a cron job run |\n|                             | `FETCHNOW_QUERY_VALUE`       | Read from a `.env` file on the Unraid server - enables manually triggering a cron job run |\n|                             | `BEATS_CRON_CONTAINER_NAME`  | Read from a `.env` file on the Unraid server - enables manually triggering a cron job run |\n|                             | `BEATS_CRON_CONTAINER_PORT`  | Read from a `.env` file on the Unraid server - enables manually triggering a cron job run |\n|                             | `PLAYLIST_ID`                | Read from a `.env` file on the Unraid server                                              |\n|                             | `YOUTUBE_API_KEY`            | Read from a `.env` file on the Unraid server                                              |\n|                             | `DOWNLOAD_TYPE`              | Type of file to download                                                                  |\n|                             | `AUDIO_FORMAT`               | _(optional)_                                                                              |\n|                             | `VIDEO_FORMAT`               | _(optional)_                                                                              |\n|                             | `DOWNLOAD_THUMBNAILS`        | _(optional)_                                                                              |\n|                             | `MAX_DURATION_SECONDS`       | _(optional)_                                                                              |\n|                             | `MOST_RECENT_ITEMS_COUNT`    | _(optional)_                                                                              |\n|                             | `SILENT`                     | _(optional)_                                                                              |\n|                             | `MAX_CONCURRENT_FETCH_CALLS` | _(optional)_                                                                              |\n|                             | `MAX_CONCURRENT_YTDLP_CALLS` | _(optional)_                                                                              |\n|                             | `SAVE_RAW_RESPONSES`         | _(optional)_                                                                              |\n\n## Organization\n\n### Folders === image names\n\nThe `/projects` folder will contain _dash-cased_ lowercase names for each Docker\nproject. These names will turn into an image pushed to Dockerhub in the format\n`qodesmith/\u003cproject-name\u003e`.\n\n### Each project...\n\n#### `cronJob.ts`\n\nEach project contains a `cronJob.ts` entrypoint file.\n\n#### Dockerfiles are optional\n\nSince each project is a cron job and follows the same basic rules, individual\n`Dockerfile`s aren't necessary. The `Dockerfile.basic` file in the root\ndirectory is used for each project.\n\nShould a project have particular needs, a `Dockerfile` can be created in its\ndirectory and will be used when building the image.\n\n#### `dockerfileArgs.json`\n\nEach project can specify `ARG`s that will be dynamically added to the Docker\nbuild with this file. Keys and values will turn into:\n\n```\n--build-arg \u003ckey\u003e=\u003cvalue\u003e\n```\n\n## Build\n\nThe build happens via `build.ts` at the root.\n\n| npm script             | Description                                                                 |\n| ---------------------- | --------------------------------------------------------------------------- |\n| `build.all`            | Build Docker images for _Unraid_ without pushing to Dockerhub               |\n| `build.all.local`      | Build Docker images for the local environment without pushing to Dockerhub  |\n| `publishProjects`      | Build Docker images for _Unraid_ and push everything to Dockerhub           |\n| `publishSingleProject` | Build a single project's Docker image for _Unraid_ and push it to Dockerhub |\n\n## Compose\n\nThe `docker-compose.yml` file is _only_ for running each project in Unraid. It\nis not meant to build the projects.\n\nThe point is to build \u0026 push everything to Dockerhub first, then in Unraid use a\nsingle compose file to start all the projects, avoiding the need to install them\nindividually.\n\n### Updating the containers in Unraid\n\nRegardless of if a single project or all projects were built, the Docker Compose\nplugin in Unraid will know to pull only the images that have changed.\n\nSimply click the \"Update Stack\" button. All containers will be restarted.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqodesmith%2Funraid-cron-jobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqodesmith%2Funraid-cron-jobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqodesmith%2Funraid-cron-jobs/lists"}