{"id":22606095,"url":"https://github.com/aghost-7/slipway","last_synced_at":"2025-04-11T05:14:43.694Z","repository":{"id":47963016,"uuid":"138827790","full_name":"AGhost-7/slipway","owner":"AGhost-7","description":"Manage containerized development environments easily","archived":false,"fork":false,"pushed_at":"2025-01-22T03:48:14.000Z","size":357,"stargazers_count":16,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T05:14:38.163Z","etag":null,"topics":["development","docker","linux"],"latest_commit_sha":null,"homepage":"","language":"Python","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/AGhost-7.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":"2018-06-27T04:00:45.000Z","updated_at":"2025-01-22T03:48:18.000Z","dependencies_parsed_at":"2024-12-21T12:33:33.863Z","dependency_job_id":null,"html_url":"https://github.com/AGhost-7/slipway","commit_stats":null,"previous_names":["aghost-7/dev-dock"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AGhost-7%2Fslipway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AGhost-7%2Fslipway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AGhost-7%2Fslipway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AGhost-7%2Fslipway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AGhost-7","download_url":"https://codeload.github.com/AGhost-7/slipway/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248345268,"owners_count":21088245,"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":["development","docker","linux"],"created_at":"2024-12-08T14:12:28.566Z","updated_at":"2025-04-11T05:14:43.676Z","avatar_url":"https://github.com/AGhost-7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slipway\nAn easier way to use containers for development on Linux. It automatically\nmaps credentials, sets up things such as the clipboard, and corrects permission\nissues which arise from developing with containers natively.\n\n## What this tool does\n- Automatically maps ssh credentials into the container\n- Automatically maps GPG\n- Inspects the image for volumes and will correct any permission issues. For\nexample if you're using npm and you want the cache to be persisted between\nrestarts you can add the following to your image:\n```dockerfile\nVOLUME $HOME/.npm\n```\nSince docker will create the directory with root as the owner slipway will\ncorrect it automatically.\n- Detects X11 support and will map it into the container (clipboard\nintegration).\n- Handles open calls (e.g., open in browser on the host) via unix sockets.\n- Maps your `~/workspace` directory into the container (can be overriden).\n- Sets the timezone to match the host\n- Sets your git config to match the host\n- Maps credentials files for certain package managers to the container (yarn,\ncargo, etc).\n- sets up correct uid mappings on podman.\n\n## Requirements\n- Linux OS\n- Python 3.8+\n- Podman (rootless only)\n\n## Getting Started\nInstall slipway:\n```sh\npython3 -m pip install slipway\n```\n\nRun an example image:\n```\nslipway start aghost7/nodejs-dev:focal-carbon\n```\n\n## Configuration\nThe `start` command line options can be specified in a configuration file\nunder `~/.config/slipway.yaml`.\n```yml\npull: true\npull_daily: true\nruntime: podman\nalias:\n  devops:\n    image: aghost7/devops:focal\n    network: slirp4netns\n    environment:\n    - AWS_ACCESS_KEY_ID\n```\n\nYou can then use your `devops` alias in place of the image name:\n```bash\nslipway start devops\n```\n\n## Optional GnuPG (GPG) Support\nOn your host, you will need to have gpg configured with the daemon running.\nSlipway will detect that gpg is running and will automatically create a bind\nmount (volume) to map the socket file into the container.\n\nEnable gpg signing git commits:\n```sh\ngit config --global commit.gpgSign true\n```\n\nIf you want to always sign tags:\n```sh\ngit config --global tag.forceSignAnnotated true\n```\n\nSince we want gnupg to be used from the terminal interface, we need to change\nthe configuration under `~/.gnupg/gpg.conf`:\n\n```\nuse-agent\npinentry-mode loopback\n```\n\n## Using rootless containers\nSlipway supports podman, which is an alternative implementation to docker that\nhas much better security. There are additional steps to setting this up, which\nis why it isn't the default.\n\nStart by installing [podman](https://podman.io/getting-started/installation).\n\nSetup the registry configuration:\n```bash\nmkdir -p ~/.config/containers\necho 'unqualified-search-registries = [\"docker.io\"]' \u003e ~/.config/containers/registries.conf\n```\n\nInstall some additional dependencies:\n```bash\nsudo apt-get install -y fuse-overlayfs slirp4netns\n```\n\nGrant your user some [subuids][subuids]/[subgids][subgids]:\n```bash\necho \"$USER:100000:600000\" | sudo tee -a /etc/subuid\necho \"$USER:100000:600000\" | sudo tee -a /etc/subgid\npodman system migrate\n```\n\nAnd then you can run your containers with podman instead!\n```bash\nslipway start --runtime podman aghost7/nvim:focal\n```\n\n[subuid]: https://www.man7.org/linux/man-pages/man5/subuid.5.html\n[subgid]: https://www.man7.org/linux/man-pages/man5/subgid.5.html\n\n### I can't use networking tools (nmap, traceroute, etc) with rootless containers\nThis is actually because slipway defaults to host-based networking. When using\nrootless containers, you need to change the network used to `slirp4netns`.\n\n```bash\nslipway start --network slirp4netns aghost7/devops:focal\n```\n\n## Developing\nRequirements:\n- python 3\n- poetry\n\nInstall dependencies:\n```\npoetry install\n```\n\nRun tests:\n```\npoetry run pytest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faghost-7%2Fslipway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faghost-7%2Fslipway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faghost-7%2Fslipway/lists"}