{"id":19725941,"url":"https://github.com/ksafranski/amet","last_synced_at":"2025-04-30T00:31:51.722Z","repository":{"id":66176650,"uuid":"179735576","full_name":"ksafranski/amet","owner":"ksafranski","description":":whale: Containerized Development Environment","archived":false,"fork":false,"pushed_at":"2019-04-16T21:04:46.000Z","size":50,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T20:24:56.508Z","etag":null,"topics":["code-server","containerization","development-environment","docker","vscode"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ksafranski.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":"2019-04-05T18:33:44.000Z","updated_at":"2024-06-15T17:59:23.000Z","dependencies_parsed_at":"2023-02-20T17:15:19.027Z","dependency_job_id":null,"html_url":"https://github.com/ksafranski/amet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksafranski%2Famet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksafranski%2Famet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksafranski%2Famet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksafranski%2Famet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ksafranski","download_url":"https://codeload.github.com/ksafranski/amet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251607828,"owners_count":21616846,"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":["code-server","containerization","development-environment","docker","vscode"],"created_at":"2024-11-11T23:33:51.062Z","updated_at":"2025-04-30T00:31:51.716Z","avatar_url":"https://github.com/ksafranski.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Amet\n\nContainerized, portable development environment.\n\n## Introduction\n\nThe concept of this project is to create a development environment that utilizes [Docker](https://www.docker.com) \nand [Code-Server](https://github.com/codercom/code-server) to create a fully functional, browser-based, portable \ndevelopment environment.\n\n## Quick Start\n\nClone the repo:\n\n```\ngit clone git@github.com:Fluidbyte/amet.git\n```\n\nRun the script, supplying desired `username` and `password` for your development environment.\n\n```shell\n./amet.sh -u \u003cusername\u003e -p \u003cpassword\u003e [-s \u003cshell\u003e]\n```\n\n_Note: the `\u003cshell\u003e` can be `bash` or `zsh` (default: `bash`)_\n\nAfter this script completes the editor will be running at `https://\u003cHOST|IP\u003e:3000`. It will prompt \nyou for the password you entered when running the script. \n\nIf you would like to access the environment over SSH:\n\n```shell\nssh -p 3022 localhost\n```\n\nJust enter the password you specified above.\n\n## Customizing the Environment\n\nThe idea with this project is that your entire development environment is built as an ubuntu container. To add in\nsupport for the programming languages you work with, libraries you need, or even to bootstrap your dotfiles, Amet allows\nyou to specify a customizer script. The script will be run during the build in the Dockerfile, under permissions of the\nnon-root user. But don't fret, you can `sudo` without a password!\n\n### Example customizer\n\n```shell\n#!/bin/bash\nset -e  # Break the build if there are any errors in this script\nset -x  # Print out each instruction in the build output\n\nUSER=$(whoami)\n\n# Install Node.js\ncurl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -\nsudo apt-get install -y nodejs\n\n# Install python and tmux\nsudo apt-get install -y tmux python\n\n# Global NPM packages\nsudo npm i -g yarn binci\n\n# Take ownership of local caches\nsudo chown -R $USER:$USER ~/.config ~/.npm\n\n# Install ripgrep\ncurl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.10.0/ripgrep_0.10.0_amd64.deb\nsudo dpkg -i ripgrep_0.10.0_amd64.deb\nrm -f ripgrep_0.10.0_amd64.deb\n```\n\nTo build with the customizer script, just pass the `-c path/to/customizer.sh` option to `amet.sh`. It doesn't need to be chmodded executable, Amet will take care of it!\n\n## Docker-in-Docker\n\nThe Docker container builds a docker client and service which can be used without conflicting with the host docker instance.\n\n## Persisting Data\n\nWhen the container is started it will mount a volume to a `/sync` directory in the container and continually sync \nthe `/home/\u003cusername\u003e` directory. This directory will appear in the working directory where the `./amet.sh ...` startup command was run.\n\nAdditionally, the following directories will be created (on first run) or synced internally (any subsequent runs):\n\n- `~/code-server`: maintains all data, config, extensions, etc for Code-Server\n- `~/workspace`: working environment that Code-Server opens initially\n\n## Troubleshooting\n\n**Getting \"error creating aufs mount to ...\" when launching containers inside Amet**  \nOn some systems, docker's default and super-efficient `aufs` storage driver can't be used in docker-in-docker\ncontainers like Amet. Simply re-run `amet.sh` and add the `-f vfs` option. This increases the disk space required\nto store docker images and can moderately slow builds and launches, but is highly compatible.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksafranski%2Famet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fksafranski%2Famet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksafranski%2Famet/lists"}