Deploy+

Deploy+.
Do push à produção.

Ligue os seus repositórios do GitHub, GitLab, Bitbucket ou Gitea ao alojamento e esqueça o último passo: cada push publica uma versão nova sem downtime, com os seus comandos de build, e voltar atrás é um clique.
tuproyecto/web · main Deploy+
  1. 01 Push
  2. 02 Build
  3. 03 Publicar
  4. 04 Online

à espera de alterações…

Versões

Cada versão é guardada: voltar atrás é um clique, sem interrupção.

Um git push

e a implementação arranca sozinha, sem entrar no painel

Sem downtime

a versão nova é publicada ao mudar uma ligação

Rollback em segundos

volta a qualquer versão anterior a partir do histórico

Sem custo

incluído em todos os planos de alojamento

Funciona com o seu Git, esteja onde estiver

GitHub github.com · webhook e assinatura GitLab gitlab.com ou a sua própria instalação Bitbucket bitbucket.org · webhook e assinatura Gitea / Forgejo Codeberg ou a sua própria instalação Outro servidor Git qualquer repositório por HTTPS

Como funciona

Quatro passos, e não volta a mexer neles.

O código já o tem versionado. O que faltava era o último troço: levá-lo para produção sem enviar ficheiros à mão nem cruzar os dedos.

Ligue

O seu repositório, esteja onde estiver

GitHub, GitLab, Bitbucket, Gitea ou qualquer Git por HTTPS, público ou privado, com um token só de leitura. Antes de continuar, o painel consulta a API e mostra-lhe o repositório, os seus ramos e o que existe neste momento na pasta de destino.
https:// token só de leitura acesso verificado

também nas contas de um plano Multiconta

Cinco fornecedores, um destino

por HTTPS
Deploy+

Push

Faça push e a implementação arranca sozinha

O webhook é criado por nós ao ligar o repositório, e cada aviso chega assinado. Se preferir decidir quando, lança-o com um botão ou a partir da sua integração contínua com a ligação de implementação.
O habitual
Enviar ficheiros à mão e cruzar os dedos
Aqui
Um push, e o GitHub avisa o servidor

Do push à implementação

webhook assinado
Um push para o ramo avisa por webhook e a implementação arranca sozinha GITHUB · PUSH main · a91f3c2 fix: checkout com cupão POST · HMAC HOSTSUAR · DEPLOY+ assinatura verificada ramo main: é implementado deploy #48 em curso
Aviso assinado · deploy #48 na fila

Publica

Implementação atómica, sem interrupção

Cada versão é clonada para a sua pasta, são ligados o seu .env e as suas pastas partilhadas e é executado o seu script. Só se tudo tiver corrido bem é publicada: muda uma ligação, e a anterior continua lá.

0 s

de interrupção: a versão nova é publicada ao mudar uma ligação

Implementação atómica

~/deploy/tienda/

releases/

├─ 20260904-1830 · publicada

└─ 20260905-1012 · a clonar e a executar o script…

shared/

├─ .env → ligado em cada versão

└─ storage/ → ligado em cada versão

current → releases/20260904-1830

A preparar a nova versão; a anterior continua online

Volta atrás

Rollback num clique, a partir do histórico

Data, quem a lançou, commit, duração e o registo completo de cada implementação. As últimas versões ficam no servidor: voltar a qualquer uma demora segundos, porque não é preciso clonar nada.

5 versões

guardadas por defeito; você decide quantas

Ler o guia completo

Histórico de implementações

5 versões guardadas
DataAcionadorTempo
hoje 10:12 · a91f3c2 Push 38 s
ontem 18:30 · e07b9d4 Manual 41 s
ontem 11:05 · 4c1d8e7 Rollback 2 s
seg 09:48 · 4c1d8e7 Push 35 s

ontem 18:30 · e07b9d4

a versão continua no servidor

Voltar a esta versão

Assistente

Sabe que projeto é e prepara-o.

Escolhe o tipo de projeto e o assistente propõe a raiz web, o script, as pastas partilhadas e se é precisa base de dados. Depois ajusta-o você.
  • PHP

    Laravel

    Composer, caches otimizadas e publicação a partir de public.

    Raiz web
    public/
    Partilhado
    storage
    Base de dados
    prepara-a
    Assets com Node
    se o assinalar
  • PHP

    Symfony

    Composer, ambiente prod e publicação a partir de public.

    Raiz web
    public/
    Partilhado
    var/log
    Base de dados
    prepara-a
    Assets com Node
    se o assinalar
  • PHP

    WordPress

    Base de dados, wp-config.php e uploads persistentes.

    Raiz web
    raiz
    Partilhado
    wp-content/uploads, wp-config.php
    Base de dados
    prepara-a
    Assets com Node
    se o assinalar
  • PHP

    PHP / Composer

    Uma base limpa para aplicações PHP com Composer.

    Raiz web
    raiz
    Partilhado
    —
    Base de dados
    prepara-a
    Assets com Node
    se o assinalar
  • Estático

    Frontend compilado

    Compila com Node e publica o resultado de dist.

    Raiz web
    dist/
    Partilhado
    —
    Base de dados
    não é necessário
    Assets com Node
    sempre
  • Estático

    HTML estático

    Publica o repositório tal como está, sem instalar nada.

    Raiz web
    raiz
    Partilhado
    —
    Base de dados
    não é necessário
    Assets com Node
    —
  • Personalizado

    Outro projeto

    Sem suposições: é você que decide a raiz, o script e a persistência.

    Raiz web
    raiz
    Partilhado
    —
    Base de dados
    prepara-a
    Assets com Node
    se o assinalar

O que inclui

O que é preciso para implementar a sério.

Cinco decisões do motor que não se veem num «deploy a partir do Git» qualquer, e que vai notar no dia em que algo falhar.

Script e Node

Os seus comandos, em cada versão, com Node se for necessário

Composer, npm, artisan… comando a comando ou como um script Bash completo, com o commit, os caminhos e o seu .env como variáveis. Se usar Node e a conta não o tiver, é instalado antes.
Composer npm ci artisan Node por NVM

se um comando falhar, a versão anterior continua online

Script de implementação

modelo · Laravel
Laravel Symfony WordPress PHP Node / Vite Nenhuma

composer install --no-dev --prefer-dist --optimize-autoloader

npm ci && npm run build # Node instalado pelo NVM se faltar

php artisan migrate --force # opcional: o rollback não desfaz dados

php artisan config:cache && php artisan route:cache

Se um comando falhar, o deploy para e a anterior continua online.

Base de dados

A base de dados, criada ao ligar

Marque «preparar também a base de dados» e o Deploy+ cria uma base de dados MySQL vazia, um utilizador exclusivo e escreve a ligação no seu .env ou wp-config.php. A palavra-passe não fica guardada em lado nenhum.

MySQL

base de dados, utilizador e ficheiro numa só operação

Base de dados · ao ligar

pronta
  • Base MySQL vazia mi_app
  • Utilizador exclusivo com todas as permissões mi_app_usr
  • Ligação escrita em .env sem mexer em nada manualmente

DB_DATABASE=mi_app

DB_USERNAME=mi_app_usr

DB_PASSWORD=•••••••••••• # não é guardado no painel

Configuração

O .env e os uploads sobrevivem a cada versão

O .env é conservado automaticamente e edita-o a partir do painel. Os caminhos que marcar, como storage ou uploads, ficam em shared e são ligados em cada versão nova. O perfil do projeto já propõe os seus.
O habitual
Ficheiros enviados e .env dentro do código, à mercê de cada deploy
Aqui
Fora do código: nem um deploy nem um rollback lhes mexem

Partilhado entre versões

~/deploy/tienda/

shared/ → releases/20260905-1012/

.enveditável

storage/do perfil

public/uploads/sua

Ligadas em cada nova versão; um rollback também não lhes mexe.

Consola

Consola em direto e comandos sobre o que está publicado

Durante a implementação vê cada passo com o seu tempo e, se algo falhar, as últimas linhas. Depois, um comando quando precisar sobre a versão publicada, sem abrir um terminal.

6 passos

ligar, clonar, partilhados, script, ativar, limpar

Executar um comando

sobre current · máx. 2 min
$php artisan queue:restart Executar

~/deploy/tienda/current

$ php artisan queue:restart

Broadcasting queue restart signal.

✓ concluído em 0,4 s

Segurança

Um token com o mínimo, cifrado e fora do registo

Ler o repositório e, se quiser que sejamos nós a criar o webhook, gerir webhooks. Nada mais. Cada aviso de push é verificado com a assinatura do fornecedor.
só de leitura cifrado assinatura HMAC

revogue-o quando quiser: só deixa de funcionar o deploy

Permissões do token

o mínimo, e cifrado
FornecedorClonarWebhook
GitHubcontents + metadata · read+ webhooks
GitLabread_repository+ api
Bitbucketrepositories · read+ webhooks
Gitea / Forgejoleitura+ webhooks
Outro Gitutilizador + token—

Cifrado, apenas para clonar, nunca no registo.

Tudo isto está incluído em todos os planos de alojamento e nas contas de um plano Multiconta, sem custo.

Ler o guia completo →

Dúvidas

Antes de ligar o primeiro repositório.

Em que planos está incluído o Deploy+?

Em todos os planos de alojamento, sem custo adicional. A ferramenta está na área de cliente, dentro das opções do seu serviço de alojamento.

Funciona com repositórios privados?

Sim, com repositórios públicos e privados. Em ambos os casos é necessário um token de acesso do GitHub: crie um fine-grained, limitado ao repositório que vai implementar e com as permissões Contents: Read-only e Metadata: Read-only. Não precisamos de permissões de escrita sobre o seu código.

O meu site vai abaixo durante a implementação?

Não. Cada implementação é clonada numa versão nova, os ficheiros partilhados são ligados e os seus scripts são executados antes de a publicar: só quando tudo correu bem é que a ligação simbólica current passa para a versão nova, e essa mudança é instantânea. Se um script falhar, o deploy para e a versão anterior continua online.

Como volto à versão anterior se algo correr mal?

A partir do histórico, com o botão Rollback sobre qualquer deploy anterior. Demora segundos porque não se clona nada: só muda a versão para onde aponta current. Por predefinição são conservadas as 5 últimas versões, e pode ajustar quantas pretende guardar.

Posso executar composer, npm ou comandos do artisan?

Sim. Cada repositório tem um editor de scripts onde define os comandos que são executados em cada versão antes de a publicar: composer install --no-dev, npm run build, php artisan config:cache… O sistema filtra os comandos perigosos. Para usar Node.js e npm, instale-os primeiro a partir do Gestor de pacotes do cPanel.

O que acontece ao .env e às pastas de uploads?

Não se perdem entre implementações. O .env é detetado e preservado automaticamente, e pode adicionar os caminhos que quiser (storage/app, uploads…) como ficheiros partilhados: são guardados à parte e ligados em cada versão nova.

O seu próximo push, já implementado.

O Deploy+ está em todos os planos de alojamento, nas opções do seu serviço. Se vem de outro fornecedor, ajudamo-lo a configurá-lo.