Plataforma Própria de Hospedagem Git

← voltar ao portfólio

08/2025 – atual · 9 a 11 meses

Alternativa self-hosted a GitHub e GitLab, escrita em PHP puro, sem nenhuma dependência de runtime.

PHP 8.2Git Smart HTTPWebDAV RFC 4918AES-256-GCMHMAC-SHA256gitolitePHPUnitDocker

O problema

Hospedar repositórios privados custa por usuário e por repositório, e um plano de hospedagem compartilhada não dá acesso root ao Apache para instalar GitLab ou Gitea. Sem root, as soluções prontas simplesmente não sobem.

A arquitetura

O protocolo Git Smart HTTP (upload-pack e receive-pack) é implementado como proxy CGI em PHP, o que dispensa root e funciona em LiteSpeed. O servidor WebDAV segue a RFC 4918 e foi escrito à mão — OPTIONS, PROPFIND, MKCOL, PUT, DELETE, COPY, MOVE, LOCK e UNLOCK — com mutex FIFO por caminho e detecção de sobreposição de escopo de lock. A autenticação aceita Basic e um desafio criptográfico assinado com chave SSH, em que o servidor gera um nonce, o cliente assina com ssh-keygen -Y sign e o servidor verifica contra o authorized_keys; o tratamento de replay é explícito, porque uma operação git manda o mesmo cabeçalho em duas requisições e um desafio de uso único ingênuo quebraria clone e push. O CI/CD dispara por webhook assinado em HMAC-SHA256, com validação anti-SSRF do endpoint e credenciais cifradas em AES-256-GCM. Há ainda rate limiting, ban de IP, log de segurança, token CSRF e interface em quatro idiomas.

O resultado

32 repositórios privados em produção, com clone por HTTP e por SSH, painel de administração, gerenciador WebDAV e pipeline de deploy. São cerca de 10.800 linhas de PHP, e o composer só traz PHPUnit em desenvolvimento.

Painel de administração com os repositórios hospedados
Painel de administração com os repositórios hospedados
Gerenciador web do servidor WebDAV
Gerenciador web do servidor WebDAV

🔒 Código-fonte

git clone https://git.programandosolucoes.com.br/git/repos/painel-git.git

Código-fonte privado. As credenciais de leitura são liberadas sob solicitação — me chame para conversar sobre o projeto.

Carlos Alberto — carlosalberto4ti@gmail.com · +55 11 2615-2880