{"id":23501539,"url":"https://github.com/brenekh/encodarr","last_synced_at":"2025-04-09T22:17:46.582Z","repository":{"id":38428983,"uuid":"271930185","full_name":"BrenekH/encodarr","owner":"BrenekH","description":"Self-hosted web app for encoding files to a target format using distributed computing.","archived":false,"fork":false,"pushed_at":"2025-03-12T20:31:36.000Z","size":5388,"stargazers_count":64,"open_issues_count":22,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T22:17:41.408Z","etag":null,"topics":["automation","docker","encoding","ffmpeg","go","golang","golang-application","homeserver","media","react","transcoding","typescript","video"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrenekH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-06-13T03:01:32.000Z","updated_at":"2025-03-12T20:31:33.000Z","dependencies_parsed_at":"2023-11-11T07:20:39.211Z","dependency_job_id":"c63fdc3d-bc8d-409d-a119-d73450541950","html_url":"https://github.com/BrenekH/encodarr","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fencodarr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fencodarr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fencodarr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenekH%2Fencodarr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrenekH","download_url":"https://codeload.github.com/BrenekH/encodarr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119286,"owners_count":21050755,"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":["automation","docker","encoding","ffmpeg","go","golang","golang-application","homeserver","media","react","transcoding","typescript","video"],"created_at":"2024-12-25T07:18:25.168Z","updated_at":"2025-04-09T22:17:46.560Z","avatar_url":"https://github.com/BrenekH.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/Encodarr-Text-Logo.png\" height=\"175\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BrenekH/encodarr/blob/master/LICENSE\" alt=\"https://img.shields.io/badge/license-MPL--2.0-blue\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MPL--2.0-blue\" /\u003e\u003c/a\u003e\n  \u003cimg alt=\"GitHub all releases\" src=\"https://img.shields.io/github/downloads/brenekh/encodarr/total?label=github%20downloads\" /\u003e\n  \u003cimg alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/brenekh/encodarr-controller?label=controller%20docker%20pulls\" /\u003e\n  \u003cimg alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/brenekh/encodarr-runner?label=runner%20docker%20pulls\" /\u003e\n  \u003cimg alt=\"Docker Image Size (tag)\" src=\"https://img.shields.io/docker/image-size/brenekh/encodarr-controller/latest?label=controller%20image%20size\" /\u003e\n  \u003cimg alt=\"Docker Image Size (tag)\" src=\"https://img.shields.io/docker/image-size/brenekh/encodarr-runner/latest?label=runner%20image%20size\" /\u003e\n  \u003cimg alt=\"GitHub go.mod Go version (Controller)\" src=\"https://img.shields.io/github/go-mod/go-version/brenekh/encodarr?filename=controller%2Fgo.mod\u0026label=Controller%20Go%20Version\" /\u003e\n  \u003cimg alt=\"GitHub go.mod Go version (Runner)\" src=\"https://img.shields.io/github/go-mod/go-version/brenekh/encodarr?filename=runner%2Fgo.mod\u0026label=Runner%20Go%20Version\" /\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/BrenekH/encodarr\" alt=\"Go Report Card\"\u003e\u003cimg alt=\"Go Report Card\" src=\"https://goreportcard.com/badge/github.com/BrenekH/encodarr\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BrenekH/encodarr/actions/workflows/controller.yaml\" alt=\"Controller CI/CD\"\u003e\u003cimg alt=\"Controller CI/CD\" src=\"https://github.com/BrenekH/encodarr/actions/workflows/controller.yaml/badge.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BrenekH/encodarr/actions/workflows/runner.yaml\" alt=\"Runner CI/CD\"\u003e\u003cimg alt=\"Runner CI/CD\" src=\"https://github.com/BrenekH/encodarr/actions/workflows/runner.yaml/badge.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## What is Encodarr?\n\nEncodarr is a self-hosted web application that encodes video files to a target format using distributed computing to spread the workload across many machines.\n\n\u003c!-- TODO: Add information on the architecture (high level). Stuff like many Runners connect to a single Controller. --\u003e\n\n## Why use Encodarr?\n\u003c!-- TODO: Why use Encodarr? (other than easy to setup and cross-platform) --\u003e\n\n### Easy to Setup\n\nEncodarr bypasses the need to share media across the network by instead transmitting the file to be operated on to the Runners.\nThis means that Encodarr is much easier to setup than other solutions.\n\n### Cross-platform\n\nBoth the Controller and Runner can be cross-compiled for any system [supported by the Go toolchain](https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63) including Raspberry Pis and M1 Macs.\n\n## Dependencies\n\nThe container images come with the dependencies installed, so if you go that route, all you need is [Docker](https://docs.docker.com/get-docker/).\n\nIf you are not using containers, you will need [mediainfo](https://mediaarea.net/en/MediaInfo/Download) and [FFmpeg](https://ffmpeg.org/download.html) in the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) variable.\n\n## Installing\n\nContainer images are available from Docker Hub([Controller](https://hub.docker.com/r/brenekh/encodarr-controller), [Runner](https://hub.docker.com/repository/docker/brenekh/encodarr-runner)) and the GitHub Container Registry([Controller](https://github.com/users/BrenekH/packages/container/package/encodarr-controller), [Runner](https://github.com/users/BrenekH/packages/container/package/encodarr-runner)).\n\nPre-built executables are available via the [Releases](https://github.com/BrenekH/encodarr/releases/latest) page.\n\n## Usage\n\n### Docker/Docker Compose\n\nThe latest Controller version can be run using the following `docker run` command:\n\n```bash\ndocker run -d \\\n  --name Encodarr-Controller \\\n  -e TZ=Europe/London \\\n  -v \u003cpath to data\u003e:/config:rw \\\n  -v \u003cpath to media\u003e:/media:rw \\\n  -p 8123:8123 \\\n  --restart unless-stopped \\\n  --user 1000:1000 \\\n  brenekh/encodarr-controller:latest\n```\n\nor if you prefer Docker Compose:\n\n```yml\nversion: \"2.2\"\nservices:\n  encodarr-controller:\n    image: brenekh/encodarr-controller:latest\n    container_name: Encodarr-Controller\n    environment:\n      - TZ=Europe/London\n    volumes:\n      - \u003cpath to controller data\u003e:/config:rw\n      - \u003cpath to media\u003e:/media:rw\n    ports:\n      - 8123:8123\n    restart: unless-stopped\n    user: \"1000:1000\"\n```\n\nThe latest Runner version is similar.\n\nDocker run:\n\n```bash\ndocker run -d \\\n  --name Encodarr-Runner \\\n  -v \u003cpath to runner data\u003e:/config:rw \\\n  -e TZ=Europe/London\n  -e \"ENCODARR_RUNNER_NAME=Runner 1\" \\\n  -e ENCODARR_RUNNER_CONTROLLER_IP=\u003cController IP\u003e \\\n  -e ENCODARR_RUNNER_CONTROLLER_PORT=8123 \\\n  --restart unless-stopped \\\n  brenekh/encodarr-runner:latest\n```\n\nDocker Compose:\n\n```yml\nversion: \"2.2\"\nservices:\n  encodarr-runner:\n    image: brenekh/encodarr-runner:latest\n    container_name: Encodarr-Runner\n    volumes:\n      - \u003cpath to runner data\u003e:/config:rw\n    environment:\n      - TZ=Europe/London\n      - ENCODARR_RUNNER_NAME=Runner 1\n      - ENCODARR_RUNNER_CONTROLLER_IP=\u003cController IP\u003e\n      - ENCODARR_RUNNER_CONTROLLER_PORT=8123\n    restart: unless-stopped\n```\n\nThe Controller `path to media` and the corresponding mount inside the container can be anything you want and you can have as many as you want.\nFor example, `/mnt/disk/tv:/tv:rw` and `/mnt/disk/movies:/movies:rw`.\n\nIn addition, the paths to data that are mounted to `/config` in the container should be separate folders, ideally with full paths\\(`/home/user/docker` instead of `~/docker`\\).\n\n### Startup Configuration\n\nStartup values configured either through environment variables, or command line arguments.\nAll of the command line variants expect a value after a space (`--port 8123`).\n\n#### Controller\n\n`ENCODARR_PORT`, `--port` sets the port for the HTTP web server.\nFor containers, it is recommended to modify the external port (`8124:8123`) instead of setting this value.\n(default: `8123`)\n\n`ENCODARR_CONFIG_DIR`, `--config-dir` sets the directory that the configuration files are saved to.\nThis includes the log file.\nIn a container, this is pre-set to `/config`.\n(default: `\u003cplatform user config directory\u003e/encodarr/controller/config`)\n\n#### Runner\n\n`ENCODARR_CONFIG_DIR`, `--config-dir` sets the directory that the configuration files are saved to.\nThis includes the log file.\nIn a container, this is pre-set to `/config`.\n(default: `\u003cplatform user config directory\u003e/encodarr/runner-\u003ctime of runner startup\u003e/config`)\n\n`ENCODARR_TEMP_DIR`, `--temp-dir` sets the directory that the media files are saved to when they are being worked on.\nIf you want to protect your flash memory(SSDs and SD Cards) from excessive reads and writes, you can set this to be on another storage medium.\n(default: `\u003cplatform user temp directory\u003e`)\n\n`ENCODARR_LOG_LEVEL`, `--log-level` sets the level of output from the logging system to both the log file and the terminal output.\nPossible values are: `trace`, `debug`, `info`, `warn` (or `warning`, they are identical), `error`, `critical`.\n(default: `info`)\n\n`ENCODARR_RUNNER_NAME`, `--name` sets the name to be shown in the Web UI when referring to this runner.\n(default: `\u003cmachine hostname\u003e-\u003crandom number\u003e`)\n\n`ENCODARR_RUNNER_CONTROLLER_IP`, `--controller-ip` sets the IP for connecting to the Controller.\n(default: `localhost`)\n\n`ENCODARR_RUNNER_CONTROLLER_PORT`, `--controller-port` sets the port for connecting to the Controller.\n(default: `8123`)\n\n## Contributing\n\n\u003e I am currently looking for someone to verify the Mac OS binaries.\n\u003e They theoretically should just work, but I can't test it because I don't have access to a Mac.\n\u003e If you do verify please let me know in the [Discussions](https://github.com/BrenekH/encodarr/discussions) page, but if they don't please open a [new issue](https://github.com/BrenekH/encodarr/issues/new/choose).\n\nIf you want to contribute to this project, head over to [CONTRIBUTING.md](CONTRIBUTING.md) to get started.\n\n## Code of Conduct\n\nThis project holds all maintainers, contributors, and participants to the standards outlined by the Contributor Covenant, a copy of which can be found in [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).\n\n## Future Plans\n\n* Instead of configuring with dropdowns and checkboxes, use a plugin system\n\n* Massive frontend overhaul\n\n* Scheduled working times\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenekh%2Fencodarr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenekh%2Fencodarr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenekh%2Fencodarr/lists"}