{"id":13571034,"url":"https://github.com/crosbymichael/boss","last_synced_at":"2025-04-13T09:41:08.602Z","repository":{"id":140485523,"uuid":"141813889","full_name":"crosbymichael/boss","owner":"crosbymichael","description":"Run containers like a ross","archived":false,"fork":false,"pushed_at":"2019-03-07T16:33:51.000Z","size":8291,"stargazers_count":300,"open_issues_count":1,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-27T01:11:12.637Z","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/crosbymichael.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}},"created_at":"2018-07-21T13:12:12.000Z","updated_at":"2025-03-22T01:39:23.000Z","dependencies_parsed_at":"2023-03-12T16:30:24.961Z","dependency_job_id":null,"html_url":"https://github.com/crosbymichael/boss","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crosbymichael%2Fboss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crosbymichael%2Fboss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crosbymichael%2Fboss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crosbymichael%2Fboss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crosbymichael","download_url":"https://codeload.github.com/crosbymichael/boss/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248693365,"owners_count":21146785,"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-08-01T14:00:57.764Z","updated_at":"2025-04-13T09:41:08.576Z","avatar_url":"https://github.com/crosbymichael.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# boss\n\n[![Build Status](https://travis-ci.org/crosbymichael/boss.svg?branch=master)](https://travis-ci.org/crosbymichael/boss)\n\n![ross](http://gifs.joelglovier.com/boss/like-a-ross.gif)\n\n**Disclaimer:**\n\nPosting the code publicly if others can find inspiration from it and to see how they can use containerd to build the container platform that they want.\nIt's single node right now, no schedulers, you manage it on the node.\n\nThis code is open source and it should work for most setups on modern systems.\nIf you don't have a modern system, then you are holding us all back and you need to upgrade.\nIf you use a distro that lives in the past, maybe you should switch.\n\nThis project is built for me, for my servers, running the way I think infrastructure should run.\nIt's very opinionated.\nI'll merge PRs when they make sense for the project, but if I don't merge your PR, don't take it personal.\nI need a place to try out ideas and only be responsible to myself, I write enough code that is used by many\nand feel the responsibility of my actions and code every day.\nThis is my safe space where I only answer to myself.\n\nFeel free to fork this project and make it something great for your own needs, I encourage it.\nTake the code, try out crazy ideas, experiment, and share your creations with others.\n\n**Warning:**\n\nWhen consul is enabled, `boss` will remove `systemd-resolved` because it causes so many issues\nwith DNS and forwarding to consul to provide DNS and service discovery.\nThe old fasion way of `/etc/resolv.conf` works much better without systemd poking with it.\n\n## CLI\n\n```\nNAME:\n   boss - run containers like a ross\n\nUSAGE:\n   boss [global options] command [command options] [arguments...]\n\nVERSION:\n   9\n\nDESCRIPTION:\n\n\n                    ___           ___           ___\n     _____         /\\  \\         /\\__\\         /\\__\\\n    /::\\  \\       /::\\  \\       /:/ _/_       /:/ _/_\n   /:/\\:\\  \\     /:/\\:\\  \\     /:/ /\\  \\     /:/ /\\  \\\n  /:/ /::\\__\\   /:/  \\:\\  \\   /:/ /::\\  \\   /:/ /::\\  \\\n /:/_/:/\\:|__| /:/__/ \\:\\__\\ /:/_/:/\\:\\__\\ /:/_/:/\\:\\__\\\n \\:\\/:/ /:/  / \\:\\  \\ /:/  / \\:\\/:/ /:/  / \\:\\/:/ /:/  /\n  \\::/_/:/  /   \\:\\  /:/  /   \\::/ /:/  /   \\::/ /:/  /\n   \\:\\/:/  /     \\:\\/:/  /     \\/_/:/  /     \\/_/:/  /\n    \\::/  /       \\::/  /        /:/  /        /:/  /\n     \\/__/         \\/__/         \\/__/         \\/__/\n\nrun containers like a boss\n\nCOMMANDS:\n     build     build\n     create    create a container\n     delete    delete a service\n     init      init boss on a system\n     kill      kill a running service\n     list      list containers managed via boss\n     rollback  rollback a container to a previous revision\n     start     start an existing service\n     stop      stop a running service\n     update    update an existing container's configuration\n     help, h   Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --help, -h     show help\n   --version, -v  print the version\n```\n\n## Ideas\n\n* you should be able to update container resources without restarting a container\n* you should be able to update the image without creating a new container\n* you should be able to rollback to a previous container state\n* containers should be able to migrate across nodes, live or otherwise, and keep all their data\n* services are automatically registered and found via DNS\n* don't bother me with fancy graphs and metrics, just alert me when something's wrong\n* logs on disk suck, apps should send to things like sentry when they can, else go to system logger\n* KISS\n\n## Dependencies\n\nYou need to have a new containerd version running.\ncontainerd 1.2+.\nAs containerd 1.2 isn't out yet, use master, like me.\n\nAlso a modern systemd based system.\nUbuntu 18.04 server works amazing.\nBoss needs to run as root.\n\n### System Configuration\n\nTo bootstrap your system write a system config to `/etc/boss/boss.toml` and run init your system with `boss`.\n\n`\u003e boss init`\n\nThis will install everything in your system config and get your system up and running.\nIf you have `consul` configured, it will install, setup, configure DNS, and register other services automatically.\n\nIf you have `cni` configured, it will download the `cni` plugins and automatically use it for containers that have `network = \"cni\"` specified.\nYou don't have to write a `/etc/cni/net.d` conf or install plugins, `boss` does it all for you.\n\nIf you want to be able to run `boss build` on a machine, you add the `buildkit` configuration and `boss`\nwill get you `buildkitd` up and running and ready to build images.\n\nThere is other configurations that I use that are here.\nThey may not be useful for other people, but again, this is my project built for me and my needs.\n**I do what I want in it ;)**\n\nIf you hate `boss` and think it's ugly, just run `\u003e boss init --undo` and it will clean itself up and get out of your hair. EZ.\n\n```toml\nid = \"hostname-01\"\niface = \"eth0\"\ndomain = \"my-domain\"\n\n[consul]\n        image = \"docker.io/crosbymichael/consul:latest\"\n        bootstrap = true\n\n[buildkit]\n        image = \"docker.io/crosbymichael/buildkit:latest\"\n\n[cni]\n        image = \"docker.io/crosbymichael/cni:latest\"\n        type = \"macvlan\"\n        [cni.ipam]\n                type = \"dhcp\"\n\n[nodemetrics]\n        image = \"docker.io/crosbymichael/nodeexporter:latest\"\n```\n\n### Container Configuration\n\nTo run a container, bootstrap your system then create a `toml` file and run it with `boss`.\n\n`\u003e boss create redis.toml`\n\n```toml\nid = \"redis\"\nimage = \"docker.io/library/redis:3.2-stretch\"\nnetwork = \"cni\"\n\n[resources]\n        memory = 1024\n        cpu = 2.0\n\n[services]\n        [services.redis]\n                port = 6379\n                labels = [\"dev\"]\n```\n\n## License\n\n```\nCopyright (c) 2018 Michael Crosby crosbymichael@gmail.com\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use, copy,\nmodify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH\nTHE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrosbymichael%2Fboss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrosbymichael%2Fboss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrosbymichael%2Fboss/lists"}