{"id":13582268,"url":"https://github.com/eschizoid/flixctl","last_synced_at":"2026-04-04T14:00:11.461Z","repository":{"id":47229766,"uuid":"150996805","full_name":"eschizoid/flixctl","owner":"eschizoid","description":"A toolkit for controlling the infrastructure necessary for a true MaSaS (Movies and Shows as a Service) architecture.","archived":false,"fork":false,"pushed_at":"2021-09-07T22:48:36.000Z","size":152219,"stargazers_count":48,"open_issues_count":16,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T14:36:17.399Z","etag":null,"topics":["aws-sdk","chatops","go","jackett","nzb","ombi","plex","plex-media-server","radarr","slack-bot","sonarr","torrent"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eschizoid.png","metadata":{"files":{"readme":"README.adoc","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}},"created_at":"2018-09-30T18:58:40.000Z","updated_at":"2024-05-03T14:51:01.000Z","dependencies_parsed_at":"2022-09-22T16:53:16.382Z","dependency_job_id":null,"html_url":"https://github.com/eschizoid/flixctl","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/eschizoid/flixctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eschizoid%2Fflixctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eschizoid%2Fflixctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eschizoid%2Fflixctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eschizoid%2Fflixctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eschizoid","download_url":"https://codeload.github.com/eschizoid/flixctl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eschizoid%2Fflixctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31402277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["aws-sdk","chatops","go","jackett","nzb","ombi","plex","plex-media-server","radarr","slack-bot","sonarr","torrent"],"created_at":"2024-08-01T15:02:33.421Z","updated_at":"2026-04-04T14:00:11.435Z","avatar_url":"https://github.com/eschizoid.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"= flixctl\n:toc:\n:toc-placement: preamble\n:toclevels: 3\n:Some attr: Some value\n\n// Need some preamble to get TOC:\n{empty}\n\nimage:https://travis-ci.com/eschizoid/flixctl.svg?branch=master[\"Build Status\", link=\"https://travis-ci.com/eschizoid/flixctl\"]\nimage:https://goreportcard.com/badge/github.com/eschizoid/flixctl[\"Go Report Card\", link=\"https://goreportcard.com/report/github.com/eschizoid/flixctl\"]\nimage:https://godoc.org/github.com/eschizoid/flixctl?status.svg[\"GoDoc\", link=\"https://godoc.org/github.com/eschizoid/flixctl\"]\n\n`flixctl` provides an easy way to provision a Plex installation on the cloud. After the provisioning of the main infrastructure\nit's done, `flixctl` can also be used to control some of the most popular components that users normally bundle up with\nPlex: torrent and newsgroup clients (transmission and nzbget), movies and shows searches (sonarr and radarr), movies and\nshows requests (ombi), and monitoring utilities (tautulli) just to mention a few.\n\nInspired by `kubectl`, `flixctl` was designed to be leveraged using Slack Slash API in conjunction with AWS Lambda. The flexibility\nof this architecture allows an easy installation of the full `flixctl` API into any Slack workspace. This means the provision\nand administration of a true MaSaS (Movies and Shows as a Service) architecture can be done via Slack.\n\n=== Architecture\n\n=== Components\n\n==== Infrastructure (AWS)\n* https://aws.amazon.com/api-gateway[API Geteway]\n* https://aws.amazon.com/ebs[EBS]\n* https://aws.amazon.com/ec2[EC2]\n* https://aws.amazon.com/dynamodb[DynamoDB]\n* https://aws.amazon.com/glacier[Glacier]\n* https://aws.amazon.com/lambda[Lambda]\n* https://aws.amazon.com/sns[SNS]\n\n==== Software\n* https://letsencrypt.org/[Let's Encrypt]\n* https://www.duckdns.org/[Duck DNS]\n* https://github.com/lukas2511/dehydrated[Dehydrated]\n* https://github.com/Jackett/Jackett[Jackett]\n* https://github.com/nzbget[NZBGet]\n* https://github.com/tidusjar/Ombi[Ombi]\n* https://github.com/plexinc/plex-media-player[Plex]\n* https://github.com/Radarr/Radarr[Radarr]\n* https://github.com/Sonarr/Sonarr[Sonarr]\n* https://github.com/Tautulli/Tautulli[Tautulli]\n* https://github.com/transmission/transmission[Transmission]\n* https://api.slack.com/slash-commands[Slack Slash Commands]\n\n=== Pre-requisites\n==== Infrastructure\n* 1 EC2 Instance\n* 2 EBS Volume, 1 for ROOT and 1 for Plex Library\n* 1 Glacier Vault (For Plex library cold storage)\n* 1 S3 Bucket (For Plex library cold storage)\n\n==== Software\n----\nbrew install go\nbrew install dep\n----\n\n==== Environment\n[%header,cols=2*]\n|===\n|Environment Variable Name|Description\n\n|AWS_RESOURCE_TAG_NAME_VALUE|\n|DYNAMODB_ENDPOINT|\n|FLIXCTL_HOST|\n|PLEX_PASSWORD|\n|PLEX_PORT|\n|PLEX_TOKEN|\n|RADARR_API_KEY|\n|RADARR_URL|\n|PLEX_USER|\n|SLACK_CLIENT ID|\n|SLACK_CLIENT_SECRET|\n|SLACK_LEGACY_TOKEN|\n|SLACK_REDIRECT_URI|\n|SLACK_GENERAL_HOOK_URL|\n|SLACK_MONITORING_HOOK_URL|\n|SLACK_NEW_RELEASES_HOOK_URL|\n|SLACK_NOTIFICATION|\n|SLACK_REQUESTS_HOOK_URL|\n|SLACK_SIGNING_SECRET|\n|SONARR_API_KEY|\n|SONARR_URL|\n|TAUTULI_API_KEY|\n|TRANSMISSION_PORT|\n|TR_AUTH|\n|===\n\n=== Installing it as a Slack app\nTo install the CLI into your Slack workspace, start the oauth flow https://marianoflix.duckdns.org/auth[here].\n\n=== Useful commands\n==== Dependencies\n----\nmake dep\n----\n\n==== Lints\n----\nmake lint\n----\n\n==== Build (CLI and λ's)\n----\nmake build\n----\n\n==== Install flixctl\n----\nmake install\n----\n\n==== Deploy λ's\n----\nmake deploy-lambdas\n----\n\n=== Usage\n==== ```flixctl```\n----\n$ flixctl --help\nTo Control The Following flixctl Components:\n  * Library\n  * NZB Client\n  * Ombi\n  * Plex\n  * Radarr\n  * Sonarr\n  * Torrent Client\n\nUsage:\n  flixctl [command]\n\nAvailable Commands:\n  help        Help about any command\n  library     To Control Media Library\n  nzb         To Control Nzb Client\n  ombi        To Control Ombi\n  plex        To Control Plex Media Center\n  radarr      To Control Radarr\n  sonarr      To Control Sonarr\n  torrent     To Control Torrent Client\n  version     To Get flixctl Version\n\nFlags:\n  -h, --help   help for flixctl\n\nUse \"flixctl [command] --help\" for more information about a command.\n\n----\n==== ```flixctl admin```\n----\nflixctl admin --help\nTo Perform Admin / Maintenance Tasks\n\nUsage:\n  flixctl admin [command]\n\nAvailable Commands:\n  renew-certs      To Renew Certs\n  restart-services To Restart Plex Services\n  slack-purge      To purge slack messages\n  slack-token      To Get An Oauth Token\n\nFlags:\n  -h, --help   help for admin\n\nUse \"flixctl admin [command] --help\" for more information about a command.\n----\n==== ```flixctl plex```\n----\n$ flixctl plex --help\nTo Control Plex Media Server\n\nUsage:\n  flixctl plex [command]\n\nAvailable Commands:\n  start       To Start Plex\n  status      To Get Plex Status\n  stop        To Stop Plex\n  token       To Get Plex Token\n\nFlags:\n  -h, --help   help for plex\n\nUse \"flixctl plex [command] --help\" for more information about a command.\n----\n==== ```flixctl library```\n----\n$ flixctl library --help\nTo Control Media Library\n\nUsage:\n  flixctl library [command]\n\nAvailable Commands:\n  catalogue   To Show Plex And Library Catalogue\n  delete      To Delete Archives From Library\n  download    To Download Movies Or Shows\n  initiate    To Initiate Library Jobs\n  inventory   To Show Library Inventory\n  jobs        To List Library Jobs\n  sync        To Sync Plex Watched Movies And Shows\n  upload      To Upload Movies Or Shows\n\nFlags:\n  -h, --help   help for library\n\nUse \"flixctl library [command] --help\" for more information about a command.\n----\n==== ```flixctl torrent```\n----\n$ flixctl torrent --help\nTo Control Torrent Client\n\nUsage:\n  flixctl torrent [command]\n\nAvailable Commands:\n  download    To Download a Torrent\n  search      To Search for Torrents\n  status      To Show Torrents Status\n\nFlags:\n  -h, --help   help for torrent\n\nUse \"flixctl torrent [command] --help\" for more information about a command.\n----\n==== ```flixctl ombi```\n----\n$ flixctl ombi --help\nTo Control Ombi\n\nUsage:\n  flixctl ombi [command]\n\nAvailable Commands:\n  request     To Request Movies or Shows\n\nFlags:\n  -h, --help   help for ombi\n\nUse \"flixctl ombi [command] --help\" for more information about a command.\n----\n==== ```flixctl nzb```\n----\n$ flixctl nzb --help\nTo Control NZB Client\n\nUsage:\n  flixctl nzb [command]\n\nAvailable Commands:\n  status      To Show NZB Status\n\nFlags:\n  -h, --help   help for nzb\n\nUse \"flixctl nzb [command] --help\" for more information about a command.\n----\n\n=== Examples\n==== ```flixctl```\n----\n$ flixctl version\n----\n==== ```flixctl admin```\n----\n$ flixctl admin renew-cert\n\n$ flixctl admin restart-services\n\n$ flixctl admin slack-purge\n\n$ flixctl admin slack-token \\\n    --slack-client-id xxxxxxxxxxxx.xxxxxxxxxxxx \\\n    --slack-client-secret xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \\\n    --slack-code code \\\n    --slack-redrect-uri https://redirect-uri.com\n----\n==== ```flixctl plex```\n----\n$ flixctl plex start \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl plex status \\\n    --slack-notification \"false\"\n\n$ flixctl plex stop \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl plex monitor \\\n    --max-inactive-time 30 \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl plex token\n----\n==== ```flixctl torrent```\n----\n$ flixctl torrent download \\\n    --magnet-link \"magnet:?xt=urn:btih:80707BDD08084AFD5996BF88DC879BA1B1C0CB67\u0026dn=T2+Trainspotting+2017+BDRip+1080p\u0026tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce\u0026tr=udp%3A%2F%2Fp4p.arenabg.ch%3A1337%2Fannounce\u0026tr=udp%3A%2F%2Ftracker.pirateparty.gr%3A6969%2Fannounce\u0026tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce\u0026tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969\u0026tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce\u0026tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337%2Fannounce\u0026tr=udp%3A%2F%2Fpublic.popcorn-tracker.org%3A6969%2Fannounce\u0026tr=udp%3A%2F%2Feddie4.nl%3A6969%2Fannounce\u0026tr=udp%3A%2F%2F9.rarbg.to%3A2710%2Fannounce\u0026tr=udp%3A%2F%2F9.rarbg.me%3A2710%2Fannounce\"\n\n$ flixctl torrent search \\\n    --keywords Trainspotting \\\n    --minimum-quality 1080 \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl torrent status \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n----\n==== ```flixctl library```\n----\n$ flixctl library catalogue \\\n    --filter \u003call|archived|live|unwatched|watched\u003e\n\n$ flixctl library delete \\\n    --archive-id U1IDD8GVNYGhtnbtjfr7_oV-h9hNqcjAkR1RfCdBrL8uoQdlViB0TtGUvnWrKkLM8nlf7LEZTV_X8CuXVoMKtnEBOBELgmmuQDIZkSA9xU-mlWJMSxf_132VcP4RTXNxZ7MdmTdNGA\n\n$ flixctl library download \\\n    --job-id RP5RUuUyX0PxGlbipyeUr-pjPB74lYqOqXT6mA6sjrDU3y2Y7-ggAgQepNKeuULMpw8RIhNo6U60bTIONhxVI9dg61az \\\n    --target-file \"/plex/movies/glacier/movie-$(date +%Y-%m-%d.%H:%M:%S).zip\"\n\n$ flixctl library inventory \\\n    --enable-sync \"true\" \\\n    --max-upload-items \"2\" \\\n    --job-id RP5RUuUyX0PxGlbipyeUr-pjPB74lYqOqXT6mA6sjrDU3y2Y7-ggAgQepNKeuULMpw8RIhNo6U60bTIONhxVI9dg61az \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl library inventory \\\n    --enable-sync \"false\" \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl library initiate\n\n$ flixctl library initiate \\\n    --archive-id U1IDD8GVNYGhtnbtjfr7_oV-h9hNqcjAkR1RfCdBrL8uoQdlViB0TtGUvnWrKkLM8nlf7LEZTV_X8CuXVoMKtnEBOBELgmmuQDIZkSA9xU-mlWJMSxf_132VcP4RTXNxZ7MdmTdNGA \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl library jobs \\\n    --filter \u003call|archive|inventory\u003e \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl library sync \\\n    --slack-notification \"true\" \\\n    --slack-notification-channel \"monitoring\"\n\n$ flixctl library upload \\\n    --enable-batch-mode \"true\"\n\n$ flixctl library upload \\\n    --enable-batch-mode \"false\" \\\n    --source-file \"/plex/movies/trainspoting/Trainspoting.mkv\"\n----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feschizoid%2Fflixctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feschizoid%2Fflixctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feschizoid%2Fflixctl/lists"}