{"id":17101460,"url":"https://github.com/valderman/thicc","last_synced_at":"2026-05-06T08:34:36.119Z","repository":{"id":66264419,"uuid":"237059333","full_name":"valderman/thicc","owner":"valderman","description":"Trivial HTTP Interface for (Docker) Compose Containers","archived":false,"fork":false,"pushed_at":"2020-07-15T01:13:00.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T02:25:18.914Z","etag":null,"topics":["debian-packages","docker","docker-compose","haskell","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valderman.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}},"created_at":"2020-01-29T19:00:09.000Z","updated_at":"2020-07-15T01:12:57.000Z","dependencies_parsed_at":"2023-04-10T07:47:20.329Z","dependency_job_id":null,"html_url":"https://github.com/valderman/thicc","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valderman%2Fthicc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valderman%2Fthicc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valderman%2Fthicc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valderman%2Fthicc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valderman","download_url":"https://codeload.github.com/valderman/thicc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245153892,"owners_count":20569408,"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":["debian-packages","docker","docker-compose","haskell","rest-api"],"created_at":"2024-10-14T15:25:21.577Z","updated_at":"2026-05-06T08:34:31.097Z","avatar_url":"https://github.com/valderman.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"thicc\n=====\nThe Trivial HTTP Interface for (Docker) Compose Containers - or *thicc* -\nis a daemon which sits around and waits for callbacks from Docker Hub\n(or any other Docker repository which supports hooks).\n\nWhen such a callback arrives, its corresponding docker image is updated to the\nlatest version and restarted.\n\nthicc is written first and foremost for simplicity and security.\nIt is intended for smaller deployments, probably running on a single machine.\nIf you try to use it to run your Facebook or Google, you will be severely\ndisappointed.\n\n\nInstalling\n----------\nAssuming you're running a Debian-based (Debian, Ubuntu, Mint, etc.) Linux\ndistribution:\n\n1. Add `deb https://deb.ekblad.cc/ubuntu disco main` to your\n    `/etc/apt/sources.list`,\n2. add my [signing key](https://ekblad.cc/key.asc) to your system by running\n    `wget -O - https://ekblad.cc/key.asc | sudo apt-key add -`, and\n3. run `sudo apt update \u0026\u0026 sudo apt install thicc` to install thicc.\n\n\nUsage\n-----\nThicc acts as a sort of manager for your docker-compose files.\nAny applications managed by thicc will be started or stopped when thicc starts\nor stops respectively, and will be updated (using `docker-compose pull`)\nwhenever their respective webhook is called.\n\nTo start using thicc, you first need to add your application to it.\nAn application is represented by a *name* and a *docker-compose.yaml* file.\nIt is recommended that the image referred to by your compose file is hosted\non Docker Hub or similar. If it's in a private repository, you also need to\nauthenticate with the host beforehand.\n\nTo add an application:\n\n```\nsudo thicc add my-app my-app/docker-compose.yaml\n```\n\nThis will add the application described by `my-app/docker-compose.yaml`\nto thicc under the name `my-app`.\n\nThen, you need to enable your newly added app:\n\n```\nsudo thicc enable my-app\n```\n\nThis will start your application and keep it running according to its\nrestart policy as specified in its compose file.\n\nTo add update-on-webhook functionality to your application, which is probably\nwhat you're here for, you need to obtain the webhook URL for your app.\nThis can be accomplished using the `thicc url` command:\n\n```\nsudo thicc url my-app example.com\n```\n\nThe first argument to `url` is the name of your application, and the second is\nthe the public host name or address at which the machine you're running thicc on\ncan be reached.\nThis will print an URL looking something like\n`http://example.com:12321/c/my-app/a-long-string-of-gibberish`.\n\nNow, go to your Docker repository, add a new webhook, give it an appropriate\nname, paste that URL into the webhook URL field, and hit \"create\".\nCongratulations, now your application will be automatically updated whenever\na new version of its image is pushed to your repository!\n\nFor more information about what else thicc can do, try running `thicc help`.\n\n\nQ\u0026A\n===\n* Does thicc support webhooks over HTTPS?\n    - Not yet. Soon.\n* Does thicc support zero-downtime upgrades.\n    - Not yet. When a webhook arrives, the following steps are executed:\n        \n        1. The new image is pulled.\n        2. The old container is stopped.\n        3. A new container is started using the new image.\n        4. (If configured) `docker image prune` is used to clean up old images.\n        \n        Support for starting the new container before taking down the old one,\n        seamlessly switching any exposed ports over to the new container,\n        but there is no estimate for when this will actually be implemented.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalderman%2Fthicc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalderman%2Fthicc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalderman%2Fthicc/lists"}