{"id":13550299,"url":"https://github.com/hashbang/shell-server","last_synced_at":"2025-12-25T14:27:05.969Z","repository":{"id":17180837,"uuid":"19948220","full_name":"hashbang/shell-server","owner":"hashbang","description":"#! shell server base images, ready to boot and allow user logins.","archived":false,"fork":false,"pushed_at":"2025-07-30T22:05:23.000Z","size":442,"stargazers_count":109,"open_issues_count":23,"forks_count":33,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-07-31T00:44:33.583Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hashbang.sh","language":"Jinja","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/hashbang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2014-05-19T15:57:52.000Z","updated_at":"2025-07-30T22:05:27.000Z","dependencies_parsed_at":"2024-03-07T10:52:32.291Z","dependency_job_id":null,"html_url":"https://github.com/hashbang/shell-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hashbang/shell-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashbang%2Fshell-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashbang%2Fshell-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashbang%2Fshell-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashbang%2Fshell-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashbang","download_url":"https://codeload.github.com/hashbang/shell-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashbang%2Fshell-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28031128,"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","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-08-01T12:01:31.313Z","updated_at":"2025-12-25T14:27:05.949Z","avatar_url":"https://github.com/hashbang.png","language":"Jinja","funding_links":[],"categories":["Jinja","others"],"sub_categories":[],"readme":"# #! Shell Server #\n\n\u003chttps://github.com/hashbang/shell-server\u003e\n\n## About ##\n\nThis is the central build and management repository for #! shell servers.\n\nIt should contain everything required to run your own #! shell server, or to\ndevelop changes to be deployed to all existing deployed servers.\n\nExisting servers automatically update from this repo via ansible-pull.\n\n## Requirements ##\n\n  | Tool       | Version | Needed for Builder   |\n  | ---------- | ------- | -------------------- |\n  | Ansible    | v2.5+   | all                  |\n  | Packer     | v1.3x+  | all                  |\n  | Docker     | v18.0+  | Docker               |\n  | qemu       | v2.12+  | qemu, libvirt        |\n  | Virtualbox | v5.2+   | virtualbox, vagrant  |\n  | Vagrant    | v2.1.1+ | vagrant              |\n  | Linux      | v4.16+  | lxc, libvirt         |\n  | lxc        | v3.0+   | lxc                  |\n\n## Building ##\n\nYou will normally need a #! account to use these, as they authenticate users\nagainst our NSS services by default.\n\n### Docker ###\n\n#### Build image ####\n```sh\nmake docker\n```\n\n#### Import image ####\n```sh\ndocker import .packer/build/docker/docker.tar hashbang/shell-server:local-latest\n```\n\n#### Start container ####\n```sh\ndocker run \\\n  -it \\\n  --rm \\\n  --name shell-server \\\n  -p 8080:80 \\\n  -p 4443:443 \\\n  -p 2222:22 \\\n  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \\\n  --stop-signal SIGRTMIN+3 \\\n  --cap-add SYS_ADMIN \\\n  --cap-add SYS_RESOURCE \\\n  --security-opt apparmor=unconfined \\\n  --security-opt seccomp=unconfined \\\n  hashbang/shell-server:local-latest \\\n  /lib/systemd/systemd\n```\n\n#### User shell ####\n```sh\nssh -p2222 your-hashbang-user@localhost\n```\n\n#### Root shell ####\n```sh\ndocker exec -it shell-server bash\n```\n\n### LXC ###\n\n#### Build image ####\n```sh\nmake lxc\n```\n\n#### User shell ####\n```\nTODO\n```\n\n#### Root shell ####\n```\nTODO\n```\n\n### Vagrant ###\n\n#### Build Image ####\n```sh\nmake vagrant\n```\n\n#### Start server ####\n```sh\nvagrant init hashbang/shell-server\nvagrant up\n```\n\n#### User shell ####\n```sh\nssh -p2222 your-hashbang-user@localhost\n```\n\n#### Root shell ####\n```sh\nvagrant ssh\n```\n\n### Libvirt ###\n\n#### Build Image ####\n```sh\nmake qemu\n```\n\n#### Start server ####\n\n```sh\nvirt-install \\\n  --name shell-server \\\n  --os-type linux \\\n  --os-variant debian9 \\\n  --ram 512 \\\n  --vcpus 2 \\\n  --disk path=.packer/build/qemu/packer-qemu \\  # no file extension\n  --network user \\\n  --noautoconsole \\\n  --import \\\n  --force\n```\n\n#### User shell ####\n```sh\nvirsh --connect qemu+ssh://username@shell-server/system\n```\n\n#### Root shell ####\n```\nTODO\n```\n\n### Qemu ###\n\n#### Build Image ####\n```sh\nmake qemu\n```\n\n#### Start server ####\n\n```\nqemu-system-x86_64 \\\n  -m 512M \\\n  -machine type=pc,accel=kvm \\\n  -net nic -net user,hostfwd=tcp::2222-:22 \\\n  -drive format=qcow2,file=.packer/build/qemu/packer-qemu  # no file extension\n```\n\n#### User shell ####\n\n```\nTODO\n```\n\n#### Root shell ####\n\n```\nTODO\n```\n\n## Development ##\n\nOnce you have root access on a development debian server be it local or remote,\nyou can test your locally made ansible playbook changes as follows.\n\n### Run Ansible Playbook\n```sh\nansible-playbook \\\n  -u root \\\n  -i \"localhost,\" \\\n  -e ansible_ssh_port=2222 \\\n  ansible/main.yml\n```\n\n## Deployment ##\n\n### Kubernetes ###\nTODO\n\n### Amazon ###\nTODO\n\n### DigitalOcean ###\nTODO\n\n### Google Cloud ###\nTODO\n\n### Azure ###\nTODO\n\n### Bare Metal ###\n```sh\nansible-playbook -u root -i \"target-server.com,\" ansible/main.yml\n```\n\n## Releasing ##\n\n1. Copy config sample and populate with your credentials as desired:\n\n    ```sh\n    cp config.sample.json config.json\n    vim config.json\n    ```\n\n2. Build, sign, and publish all image types\n    ```sh\n    make build release\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashbang%2Fshell-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashbang%2Fshell-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashbang%2Fshell-server/lists"}