{"id":13564010,"url":"https://github.com/newsnowlabs/dockside","last_synced_at":"2025-04-03T20:32:37.492Z","repository":{"id":41354819,"uuid":"405648384","full_name":"newsnowlabs/dockside","owner":"newsnowlabs","description":"Develop, stage and test on-prem or in your private cloud. Dockside is a tool for provisioning lightweight access-controlled IDEs, staging environments and sandboxes - aka 'devtainers' - on local machine, on-premises raw metal or VM, or in the cloud","archived":false,"fork":false,"pushed_at":"2025-03-23T22:44:11.000Z","size":7488,"stargazers_count":279,"open_issues_count":7,"forks_count":20,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-23T23:28:16.875Z","etag":null,"topics":["cloud-ide","code-editor","coding","docker","docker-ide","ide","online-ide","web-ide"],"latest_commit_sha":null,"homepage":"https://dockside.io/","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/newsnowlabs.png","metadata":{"files":{"readme":"docs/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":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-12T13:23:51.000Z","updated_at":"2025-03-17T11:47:00.000Z","dependencies_parsed_at":"2024-11-04T16:34:39.818Z","dependency_job_id":"2402fbaf-0ad5-4693-b1bc-5118ad347adb","html_url":"https://github.com/newsnowlabs/dockside","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsnowlabs%2Fdockside","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsnowlabs%2Fdockside/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsnowlabs%2Fdockside/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newsnowlabs%2Fdockside/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/newsnowlabs","download_url":"https://codeload.github.com/newsnowlabs/dockside/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247075587,"owners_count":20879471,"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":["cloud-ide","code-editor","coding","docker","docker-ide","ide","online-ide","web-ide"],"created_at":"2024-08-01T13:01:25.516Z","updated_at":"2025-04-03T20:32:36.828Z","avatar_url":"https://github.com/newsnowlabs.png","language":"Perl","funding_links":[],"categories":["Perl","docker"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"//Dockside\" src=\"https://user-images.githubusercontent.com/354555/145203965-b573f43b-757a-4471-a39c-d2e53b1acb41.png\" width=\"75%\"/\u003e\n\u003c/p\u003e\n\n# Introduction\n\nDockside is a tool for provisioning lightweight access-controlled IDEs, staging environments and sandboxes - aka _devtainers_ - on local machine, self-hosted on-premises on bare metal or VM, or in the cloud.\n\nBy provisioning a devtainer for every fork and branch, Dockside allows collaborative software and product development teams to take lean and iterative development and testing to a highly parallelised extreme.\n\n\u003ch3 align=\"center\"\u003eOur sponsors\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n\u003ca title=\"NewsNow is hiring: work on Dockside and other existing projects\" href=\"https://www.newsnow.co.uk/careers/?utm_source=GitHub\u0026utm_medium=cpc\u0026utm_campaign=2021-10-21-Developer-Roles\u0026utm_content=SponsoredHiringAd\" target=\"_blank\"\u003e\u003cimg alt=\"Dockside sponsor NewsNow is hiring\" src=\"https://user-images.githubusercontent.com/354555/144637598-5cc14a58-6918-4170-8b47-bbd26cb84062.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Features\n\nCore features:\n\n- Instantly launch and clone an almost infinite multiplicity of disposable devtainers - one for each task, bug, feature or design iteration.\n- Powerful VS Code-compatible IDE.\n- HTTPS automatically provisioned for every devtainer.\n- SSH server and access automatically provisioned for every devtainer.\n- User authentication and access control to running devtainers and their web services.\n- Fine-grained user and role-based access control to devtainer functionality and underlying system resources.\n- Launch devtainers from stock Docker images, or from your own.\n- Root access within devtainers, so developers can upgrade their devtainers and install operating system packages when and how they need.\n\nBenefits for developers:\n\n- Code in a clone of your production environment, avoiding troublesome deploy-time errors and bugfixing.\n- Switch between and hand over tasks instantly. No more laborious branch switching, or committing code before it’s ready. ‘git stash’ will be a thing of the past.\n- Work from anywhere. All you need is a browser.\n- Unifying on an IDE within a team can deliver great productivity benefits for collaborative teams through improved knowledge-share, better choices and configuration of plugins and other tooling.\n- SSH access facilitates use of any terminal editor or command line tool and seamless [VS Code remote development](https://code.visualstudio.com/docs/remote/ssh) via the [Remote SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) extension.\n- Develop against production databases (or production database clones) when necessary.\n\nBenefits for code reviewers:\n\n- Access your colleagues’ devtainers directly for code review.\n- No more staring at code wondering what it does, or time-consuming setup, when their code is already running.\n- Annotate their code directly with your comments as to points they should address.\n- To save time, when you know best, apply and test your own fixes directly to their code.\n\nBenefits for product managers and senior management:\n\n- High visibility of product development progress. Access always-on application revisions and works-in-progress, wherever you are in the world.\n- Devs can be sometimes be fussy about their choice of IDE, but unifying on an IDE can deliver productivity benefits for collaborative teams through improved knowledge-share and tooling.\n\nAdvanced features:\n\n- Runtime agnostic: use runC (Docker's default), [sysbox](https://github.com/nestybox/sysbox), [gvisor](https://gvisor.dev/), or others.\n- Apply Docker system resource limits to devtainers, and communicate available system resources to devtainers using [LXCFS](extensions/lxcfs.md).\n- Support for launching [multi-architecture devtainers](extensions/multiarch.md) using [qemu-user-static](https://github.com/multiarch/qemu-user-static).\n- Support for launching KVM VMs on amd64 hardware using [RunCVM](https://github.com/newsnowlabs/runcvm)\n- Firewall or redirect outgoing devtainer traffic using custom Docker networks.\n- Access Dockside devtainers via multiple domain names, when needed to stage or simulate multi-domain web applications.\n\n## Video walkthrough\n\n\u003cp align=\"center\"\u003e\n\u003ca title=\"Click to view video in HD on YouTube\" href=\"https://www.youtube.com/embed/buAefREyngQ\" target=\"_blank\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/354555/135777679-67fd1424-f01f-4072-ac3e-ed910c8711af.gif\" alt=\"Dockside Walkthrough Video\" width=\"70%\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Host requirements\n\nDockside is supported on Intel (amd64/x86), Apple M1/M2 (arm64) and Raspberry Pi (arm/v7) hardware platforms, via a multiarch Docker image\nthat contains native binary implementations of Dockside for all three architectures.\n\nDockside is tested on:\n- Intel (amd64/x86) platforms running Debian Linux and [Docker Engine](https://docs.docker.com/engine/install/) (via the `docker-ce` package suite)\n- MacOS (amd64/x86 and Apple Mac M1) running [Docker Desktop](https://docs.docker.com/get-docker/)\n- Intel Windows 10 running [Docker Desktop](https://docs.docker.com/get-docker/)\n- Raspberry Pi (arm/v7) running Raspbian Linux and [Docker Engine](https://docs.docker.com/engine/install/) (via the `docker-ce` package suite)\n\nDockside requires a host with a minimum of 1GB memory.\n\n## Getting started\n\n\u003e **Installing Docker**\n\u003e\n\u003e    Dockside is designed to be installed using [Docker](https://www.docker.com/).\n\u003e    To install Docker for your platform, go to [https://www.docker.com/](https://www.docker.com/)\n\nDockside needs an SSL certificate to run. For temporary/trial usage, Dockside may be launched with a built-in or self-signed SSL certificate.\n\nFor production usage on an Internet-connected server, Dockside should be launched on a dedicated public domain name (or sub-domain name) with a genuine _wildcard_ SSL certificate for that domain.\n\nChoose from the following options:\n\n1. [Launch locally with built-in SSL cert](#launch-locally-with-built-in-ssl-cert)\n2. [Launch anywhere with self-signed SSL cert](#launch-anywhere-with-self-signed-ssl-cert)\n3. [Launch in production with self-supplied SSL certificate](#launch-in-production-with-self-supplied-ssl-certificate)\n4. [Launch in production with auto-generated LetsEncrypt public SSL certificate](#launch-in-production-with-auto-generated-letsencrypt-public-ssl-certificate)\n\n### Launch locally with built-in SSL cert\n\n1. Launch Dockside on a local machine, with a temporary and convenient built-in SSL certificate\n```sh\nmkdir -p ~/.dockside \u0026\u0026 \\\ndocker run -it --name dockside \\\n  -v ~/.dockside:/data \\\n  --mount=type=volume,src=dockside-ssh-hostkeys,dst=/opt/dockside/host \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -p 443:443 -p 80:80 \\\n  --security-opt=apparmor=unconfined \\\n  newsnowlabs/dockside --ssl-builtin\n```\n\n2. In your browser, navigate to the Dockside homescreen at [https://www.local.dockside.dev/](https://www.local.dockside.dev). Sign in with the username `admin` and the auto-generated password output to the terminal, then follow the instructions displayed on-screen.\n\n3. You can now [detach](https://docs.docker.com/engine/reference/commandline/attach/) from the Dockside container running back in your terminal by typing `CTRL+P` `CTRL+Q`. Alternatively you can instead launch with `docker run -d` instead of `docker run -it`; if you do this, run `docker logs dockside` to display the terminal output and auto-generated admin password.\n\n\u003e WARNING: The default Dockside installation embeds a non-secret SSL certificate, for `*.local.dockside.dev` resolving to 127.0.0.1, which should not be used for production usage.\n\n### Launch anywhere with self-signed SSL cert\n\n1. Launch Dockside on a local machine, on-premises server, VM or cloud instance, with a temporary and convenient self-signed SSL certificate, where `\u003cmy-domain\u003e` is the domain name:\n```sh\nmkdir -p ~/.dockside \u0026\u0026 \\\ndocker run -it --name dockside \\\n  -v ~/.dockside:/data \\\n  --mount=type=volume,src=dockside-ssh-hostkeys,dst=/opt/dockside/host \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -p 443:443 -p 80:80 \\\n  --security-opt=apparmor=unconfined \\\n  newsnowlabs/dockside --ssl-selfsigned --ssl-zone \u003cmy-domain\u003e\n```\n\n2. In your browser, navigate to the Dockside homescreen at the hostname for your machine/VM in your browser. This must be `https://www.\u003cmy-domain\u003e/` so you must configure your DNS or `/etc/hosts` file accordingly. Sign in with the username `admin` and the auto-generated password output to the terminal, then follow the instructions displayed on-screen.\n \n3. You can now [detach](https://docs.docker.com/engine/reference/commandline/attach/) from the Dockside container running back in your terminal by typing `CTRL+P` `CTRL+Q`. Alternatively you can instead launch with `docker run -d` instead of `docker run -it`; if you do this, run `docker logs dockside` to display the terminal output and auto-generated admin password.\n\n### Launch in production with self-supplied SSL certificate\n\n1. Assuming your self-supplied `fullchain.pem` and `privkey.pem` files for the wildcard SSL certificate for your domain `\u003cmy-domain\u003e` are located in `\u003ccertsdir\u003e` then launch Dockside as follows:\n```sh\nmkdir -p ~/.dockside \u0026\u0026 \\\ndocker run -d --name dockside \\\n  -v ~/.dockside:/data \\\n  --mount=type=volume,src=dockside-ssh-hostkeys,dst=/opt/dockside/host \\\n  -v \u003ccertsdir\u003e:/data/certs \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -p 443:443 -p 80:80 \\\n  --security-opt=apparmor=unconfined \\\n  newsnowlabs/dockside --ssl-selfsupplied\n```\n\n2. In your browser, navigate to the Dockside homescreen at `https://www.\u003cmy-domain\u003e/`. To view the launch logs and obtain the auto-generated `admin` user password, run `docker logs dockside`. Sign in with the username `admin` and the displayed password, then follow the instructions displayed on-screen.\n\n\u003e N.B. Should you update your certificates run `docker exec dockside s6-svc -t /etc/service/nginx` to tell Dockside to reload them.\n\n### Launch in production with auto-generated LetsEncrypt public SSL certificate\n\nIn order for Dockside to auto-generate a public SSL certificate using LetsEncrypt, it must first be delegated responsibility for handling public internet DNS requests for your chosen domain and you must also configure the server (or VM or instance) on which you will run Dockside to accept UDP requests on port 53. So:\n\n1. Delegate the domain to the server running Dockside by installing the following two domain name records for `\u003cmy-domain\u003e`:\n```\n\u003cmy-domain\u003e A \u003cmy-server-ip\u003e\n\u003cmy-domain\u003e NS \u003cmy-domain\u003e\n```\nThese records are needed to tell the public DNS infrastructure that DNS requests for `\u003cmy-domain\u003e` should be forwarded to `\u003cmy-server-IP\u003e`.\n\n2. Launch Dockside as follows:\n```sh\nmkdir -p ~/.dockside \u0026\u0026 \\\ndocker run -d --name dockside \\\n  -v ~/.dockside:/data \\\n  --mount=type=volume,src=dockside-ssh-hostkeys,dst=/opt/dockside/host \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -p 443:443 -p 80:80 -p 53:53/udp \\\n  --security-opt=apparmor=unconfined \\\n  newsnowlabs/dockside --ssl-letsencrypt --ssl-zone \u003cmy-domain\u003e\n```\nAssuming you have provisioned \u003cmy-domain\u003e correctly, Dockside will use LetsEncrypt to generate a public SSL certificate on startup and to regenerate the certificate periodically to ensure it remains current.\n\n3. In your browser, navigate to the Dockside homescreen at `https://www.\u003cmy-domain\u003e/`. To view the launch logs and obtain the auto-generated `admin` user password, run `docker logs dockside`. Sign in with the username `admin` and the displayed password, then follow the instructions displayed on-screen.\n\n\u003e **Launch using Google Cloud Deployment Manager**\n\u003e\n\u003e An implementation of the above procedure within [Google Deployment Manager](https://console.cloud.google.com/dm/deployments) is available [here](https://github.com/newsnowlabs/dockside/tree/main/examples/cloud/google-deployment-manager). To use it, you must first configure a managed zone within [Google Cloud DNS](https://console.cloud.google.com/net-services/dns/zones).\n\u003e\n\u003e Then sign into Cloud Shell, and run:\n\u003e ```sh\n\u003e git clone https://github.com/newsnowlabs/dockside.git\n\u003e cd dockside/examples/cloud/google-deployment-manager/\n\u003e ./launch.sh --managed-zone \u003cmanaged-zone\u003e --dns-name \u003cmanaged-zone-fully-qualified-subdomain\u003e\n\u003e ```\n\u003e For example, if your managed zone is called `myzone`, the zone DNS name is `myzone.org`, and your chosen subdomain is `dockside` then run `./launch.sh --managed-zone myzone --dns-name dockside.myzone.org`.\n\u003e\n\u003e For full `launch.sh` usage, including options for configuring cloud machine type, machine zone, and disk size, run `./launch.sh --help`.\n\n## Usage\n\nRefer to [Usage](usage.md) for how to use the Dockside UI and IDE.\n\n## Setup\n\nSee [Configuring and administering Dockside](setup.md)\n\n## Upgrading\n\nSee [Upgrading Dockside](upgrading.md) for strategies for upgrading Dockside, or Dockside components such as the Dockside Theia IDE.\n\n## Security\n\nSee [Securing profiles and devtainers](securing.md)\n\n## Extensions\n\n- [LXCFS](extensions/lxcfs.md) -- allows processes within devtainers to correctly report their own cpu, memory, and disk available resources and usage\n- [Multi-architecture devtainers](extensions/multiarch.md) -- support for devtainers running non-amd64 processor architectures\n- [Docker-in-Dockside devtainers](extensions/runtimes/sysbox.md#sysbox-docker-in-dockside-devtainers) -- support for running devtainers using the sysbox runtime\n- [Self-contained Docker-in-Dockside](extensions/runtimes/sysbox.md#self-contained-docker-in-dockside) -- support for running Dockside using the sysbox runtime\n- [Backups](extensions/backups.md) -- strategies for backing up devtainers\n- [Integrated SSH server support](extensions/ssh.md#integrated-ssh-server-support) -- allows seamless one-click SSH access to devtainers from the command line and accessing devtainers using VS Code\n- [Local ssh-agent support](extensions/ssh.md#local-ssh-agent-support) -- to allow use of `git` functionality of the Theia IDE (like `Git: Push` and `Git: Pull`) or other `SSH`-based commands accessible within the Theia IDE UI or terminal\n\n## Case-study: Dockside in production at NewsNow\n\nRead the [case study of how Dockside is used in production](case-studies/NewsNow.md) for all aspects of web application and back-end development and staging (including acceptance testing) of the websites [https://www.newsnow.co.uk/](https://www.newsnow.co.uk/) and [https://www.newsnow.com/](https://www.newsnow.com/).\n\n## Roadmap\n\nWhere are we taking Dockside? As Dockside today satisfactorily serves the needs of the NewsNow development team, its roadmap currently remains highly flexible. We have a list of features we think could be great to add, but we now want to hear from you what you would most value to see added to Dockside.\n\nFor our current ideas/plans, see our [draft roadmap](roadmap.md).\n\n## Developing\n\nSee [Developing Dockside](developing/developing.md) to learn more about how to go about developing Dockside within Dockside, the Dockside application components and building Dockside images.\n\n## Bugs, issues and support\n\nIf you are experiencing an issue or believe you may have found a bug, please [raise an issue](https://github.com/newsnowlabs/dockside/issues) or contact via on the [NewsNow Labs Slack Workspace](https://join.slack.com/t/newsnowlabs/shared_invite/zt-wp54l05w-0DTxuc_n8uISJRtks3Xw3A).\n\n## Contributing\n\nIf you would like to contribute a bugfix, patch or feature, we'd be delighted.\n\nPlease just [raise an issue](https://github.com/newsnowlabs/dockside/issues/new) or contact us on our [NewsNow Labs Slack Workspace](https://join.slack.com/t/newsnowlabs/shared_invite/zt-wp54l05w-0DTxuc_n8uISJRtks3Xw3A).\n\n\n## Contact\n\nGithub: [Raise an issue](https://github.com/newsnowlabs/dockside/issues/new)\n\nSlack: [NewsNow Labs Slack Workspace](https://join.slack.com/t/newsnowlabs/shared_invite/zt-wp54l05w-0DTxuc_n8uISJRtks3Xw3A)\n\nEmail: [dockside@NewsNow.co.uk](mailto:dockside@NewsNow.co.uk)\n\nWe are typically available Monday-Friday, 9am-5pm London time.\n\n## Thank you\n\nThank you _very much_ for using and/or contributing and/or spreading the word about Dockside. We hope you find it helps your team be more and more productive.\n\n## Credits\n\nThanks to [Struan Bartlett](https://github.com/struanb) for conceiving the model of iterative web development through the use of ready-built, stageable and disposable development environments running web-based IDEs, and for leading the development of Dockside.\n\nThanks also to other members of the NewsNow development team for contributing the Dockside Vue client, design and architectural ideas, support and advice, code and code-reviews; for coining the term _devtainers_; and for the Dockside logo concept.\n\nThanks also to the entire design and development, editorial and testing teams at [NewsNow](https://www.newsnow.co.uk/about/) for so enthusiastically adopting containerised development working practices and for subjecting Dockside to so many years of robust use (and abuse) during the course of their daily iterative development, evaluation and testing of the [NewsNow](https://www.newsnow.co.uk/) platform - and proving the value of this development model.\n\nThanks last but not least to [NewsNow](https://www.newsnow.co.uk/about/), _The Independent News Discovery Platform_, for sponsoring the development of Dockside.\n\n## More credits\n\nThe Dockside multiarch build is built thanks to [Depot](https://depot.dev) and we're grateful for their support.\n\n## Licence and legals\n\nThis project (known as \"Dockside\"), comprising the files in this Git repository,\nis copyright 2017-2021 NewsNow Publishing Limited and contributors.\n\nDockside is an open-source project licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use Dockside or its constituent files except in compliance with the License.\n\nYou may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\u003e N.B. In order to run, Dockside relies upon other third-party open-source software dependencies that are separate to and\nindependent from Dockside and published under their own independent licences.\n\u003e\n\u003e Dockside Docker images made available at [https://hub.docker.com/repository/docker/newsnowlabs/dockside](https://hub.docker.com/repository/docker/newsnowlabs/dockside) are distributions\n\u003e designed to run Dockside that comprise: (a) the Dockside project source and/or object code; and\n\u003e (b) third-party dependencies that Dockside needs to run; and which are each distributed under the terms\n\u003e of their respective licences.\n\n### Trade marks\n\nDockside and devtainer are trade marks of NewsNow Publishing Limited. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewsnowlabs%2Fdockside","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewsnowlabs%2Fdockside","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewsnowlabs%2Fdockside/lists"}