Imagens de desenvolvimento via SSH, preparadas para VS Code Remote - SSH, Claude Code, .NET e Node.js. Há duas alternativas independentes:
| Ambiente | Base | SSH local | Memória padrão |
|---|---|---|---|
Ubuntu/ |
Ubuntu 24.04 | 2222 |
3 GB |
Debian/ |
Debian 12 Slim | 2223 |
3 GB |
Para uma imagem menor, prefira Debian. Ubuntu é útil se sua aplicação ou ferramentas já esperam essa distribuição.
- OpenSSH configurado para autenticação apenas com chave pública;
- usuário não-root
dev, comsudosem senha para desenvolvimento; - .NET SDK 10;
- Node.js 22 LTS;
- Claude Code instalado para o usuário
dev; - Git,
curl,wget,tar,zip, certificados e pré-requisitos do VS Code Remote - SSH.
O VS Code não é instalado dentro do container. Instale-o no computador host com a extensão Remote - SSH; o VS Code Server será instalado automaticamente ao conectar.
- Docker Desktop em execução, usando containers Linux;
- Docker Compose v2;
- uma chave SSH pública. No PowerShell, crie uma se ainda não possuir:
ssh-keygen -t ed25519 -C "devbox"Por padrão, o Compose usa ${USERPROFILE}\.ssh\id_ed25519.pub. Para usar outra chave pública:
$env:SSH_PUBLIC_KEY_PATH = "$env:USERPROFILE\.ssh\minha-chave.pub".
├── Ubuntu/
│ ├── Dockerfile
│ └── compose.yaml
├── Debian/
│ ├── Dockerfile
│ └── compose.yaml
└── README.md
Cada ambiente monta a sua própria pasta workspace/, ao lado do respectivo compose.yaml. O login do Claude Code e as extensões do VS Code Server são preservados em volumes Docker.
cd Ubuntu
docker compose up -d --buildConecte pelo terminal:
ssh -p 2222 dev@localhostNo VS Code Remote - SSH, conecte em dev@localhost, porta 2222.
cd Debian
docker compose up -d --buildConecte pelo terminal:
ssh -p 2223 dev@localhostNo VS Code Remote - SSH, conecte em dev@localhost, porta 2223. Os dois ambientes podem ficar ativos ao mesmo tempo, pois usam portas e nomes de container distintos.
Execute estes comandos dentro da pasta do ambiente escolhido (Ubuntu ou Debian):
# Acompanhar os logs
docker compose logs -f
# Abrir um shell sem SSH
docker compose exec devbox bash
# Parar e remover o container, preservando dados do Claude e extensões
docker compose down
# Remover também os dados persistentes
docker compose down -vPara refazer a imagem sem cache:
docker compose build --no-cache
docker compose up -dApós entrar no container, execute:
claudeConclua a autenticação pelo link exibido. O estado fica salvo no volume claude-config, portanto normalmente não será necessário autenticar novamente depois de recriar o container.
Autentique-se no Docker Hub:
docker loginNa raiz do repositório, publique a imagem Ubuntu para linux/amd64 e linux/arm64:
docker buildx build --platform linux/amd64 --file Ubuntu/Dockerfile --tag harunokenobi/ubuntu-dev-ssh:latest --push UbuntuPara publicar a variante Debian:
docker buildx build --platform linux/amd64 --file Debian/Dockerfile --tag harunokenobi/debian-dev-ssh:latest --push Debian--push é necessário para publicar uma imagem multi-arquitetura diretamente com Buildx. Para testar localmente no Docker Desktop antes de publicar, use a arquitetura local e --load:
docker buildx build --platform linux/amd64 --file Debian/Dockerfile --tag harunokenobi/debian-dev-ssh:local --load Debian- As imagens não aceitam senha nem login SSH como
root. - A chave pública é copiada para o container na inicialização com permissões restritas; reinicie o container após trocar a chave no host.
- Nunca adicione tokens, arquivos privados ou a chave privada SSH à imagem ou ao repositório.
- Não exponha as portas
2222e2223em rede pública sem firewall, controle de acesso e uma revisão de segurança.