cipi app create

cipi app create suporta dois tipos de aplicativos: Laravel (padrão) e Personalizado (--custom). Laravel aplicativos obtêm um ambiente totalmente isolado: Usuário Linux, pool PHP-FPM ou Laravel Octane (FrankenPHP) desde v5.0, Nginx vhost, banco de dados (MariaDB por padrão; opcional PostgreSQL já que v4.8.0), Supervisor trabalhador, entrada crontab, versões com tempo de inatividade zero do Deployer, SSH implantar chave e compilar automaticamente .env. Aplicativos personalizados são mais simples – veja aplicativos personalizados para obter detalhes.

Laravel aplicativo (padrão — PHP-FPM)

festa
$ cipi app create

Laravel Octane (FrankenPHP)

festa
$ cipi app create --octane
$ cipi app create --octane=frankenphp   # explicit (same as --octane)

Veja Laravel Octane para requisitos, conversão e como o vhost difere do FPM.

Não interativo (sinalizadores)

festa
$ cipi app create \
    --user=myapp \
    --domain=myapp.com \
    --repository=git@github.com:you/myapp.git \
    --branch=main \
    --php=8.5

# Laravel Octane (FrankenPHP) — v5.0+
$ cipi app create --user=myapp --domain=myapp.com \
    --repository=git@github.com:you/myapp.git --octane

# optional PostgreSQL (v4.8.0+, after cipi db install pgsql)
$ cipi app create --user=myapp --domain=myapp.com \
    --repository=git@github.com:you/myapp.git --engine=pgsql
--userNome de usuário do Linux para o aplicativo. Deve ser único, minúsculas, alfanuméricas.
--domainDomínio primário (por ex. myapp.com). Usado para Nginx vhost e APP_URL.
--repositoryURL SSH Git (por exemplo, git@github.com:you/repo.git). Deve ser SSH, não HTTPS.
--branchFilial para implantar. O padrão é main.
--phpVersão PHP para este aplicativo (por exemplo, 8.5). O padrão é PHP 8.5. Deve ser uma versão instalada - apenas 8.3, 8.4 e 8.5 são aceitos desde a v4.5.4 (o Deployer 8 requer PHP ≥ 8.3).
--octane / --octane=frankenphpSirva HTTP através de Laravel Octane (FrankenPHP) em vez de PHP-FPM (já quev5.0). Apenas Laravel aplicativos — rejeitados com --custom. Veja Laravel Octane.
--engineMecanismo de banco de dados: mariadb (padrão) ou pgsql (desde v4.8.0; requer cipi db install pgsql). Crie prompts interativos quando PostgreSQL for instalado. Grava correspondência .env / connection URL.
Se um token GitHub ou GitLab estiver configurado, Cipi adiciona automaticamente a chave de implantação SSH e cria o webhook no repositório — não são necessárias etapas manuais. Veja Configuração automática do Git para obter instruções de configuração e opções de fallback quando a configuração automática não estiver disponível.

Laravel Octane (FrankenPHP)

Desde v5.0, Laravel aplicativos podem servir HTTP via Laravel Octane com o FrankenPHP servidor em vez de por aplicativo Piscina de PHP-FPM. Aplicativos Octane e FPM clássicos são executados lado a lado no mesmo servidor Cipi.

O que Cipi configura

  • Aloca uma porta localhost em 8100–8999 e lojas octane / octane_port em apps.json
  • Nginx vhost usa proxy_pass para Octane e exibe arquivos estáticos de current/publicnenhum pool FPM por aplicativo
  • Supervisor programa ${app}-octane ao lado dos trabalhadores da fila
  • Modelo de implantador laravel-octane.php reinicia/recarrega Octane na implantação
  • .env: OCTANE_SERVER=frankenphp, OCTANE_HTTPS=true

Requisitos do aplicativo

Seu repositório Laravel deve incluir laravel/octane e correr php artisan octane:install --server=frankenphp. Octane começa após o primeiro implantação bem-sucedida.

festa
# create an Octane app
$ cipi app create --user=myapp --domain=myapp.com \
    --repository=git@github.com:you/myapp.git --octane

# convert an existing FPM app → Octane (or the reverse)
$ cipi app convert myapp --to=octane
$ cipi app convert myapp --to=fpm

# tune Octane workers (also see app limits)
$ cipi app limits myapp --octane-workers=4

cipi app convert --to=octane|fpm reescreve o pool / vhost / Supervisor / Deployer modelo / .enve reaplica SSL quando um certificado já estiver presente.

Octane dica: manter a fila de longa duração funcionando cipi worker ou Horizon — Octane lida apenas com HTTP. Emparelhar com Reverb para WebSockets.

cipi app create --custom

Cria um aplicativo personalizado com implantação clássica (sem tempo de inatividade zero): o código é implantado em htdocs - não current/shared links simbólicos. Ideal para sites estáticos, SPAs (Vue, React, Svelte), WordPress, outro CMS ou qualquer projeto ou estrutura que não seja Laravel PHP.

Durante a criação você escolhe apenas a raiz do documento (padrão /, ou por ex. www, dist, public). Nginx está pré-configurado com index index.html index.php, try_files $uri $uri/ /index.php?$argse error_page 404 /404.html — não há prompts para try_files ou ponto de entrada.

Git opcional (somente SFTP)

O repositório Git é opcional para aplicativos personalizados. Laravel os aplicativos ainda exigem um repositório. Se você pular o repositório para um personalizado aplicativo, Cipi cria /home/<app>/htdocs com um espaço reservado index.html e faz não configure uma chave de implantação ou webhook — você carrega arquivos com SFTP (ou SCP/rsync) para ~/htdocscomo o usuário do aplicativo. A saída de integração explica isso “sem repo – apenas SFTP” fluxo de trabalho. Se você fornecer um repositório, o comportamento permanecerá inalterado: use cipi deploy <app> para puxar o código para htdocs.

O que está incluído e o que você adiciona

Aplicativos personalizados têm sem banco de dados, não .env, não cron e não trabalhadores da fila. Quando um repositório é configurado, uma chave de implantação e (com configuração automática do Git) webhook são mostrado; para aplicativos somente SFTP, eles são omitidos. O resumo pós-criação lista o acesso SSH e o próximo passos em conformidade.

Se o seu aplicativo personalizado precisar de um banco de dados (por exemplo, WordPress, Drupal), crie um com cipi db create --name=<app> após a implantação. Vejacipi dbpara backup, restauração e gerenciamento de senhas.

Com Git — exemplo não interativo:

festa
$ cipi app create --custom --user=mysite --domain=mysite.com \
    --repository=git@github.com:you/mysite.git --docroot=dist

Somente SFTP — omitir --repository e --branch:

festa
$ cipi app create --custom --user=mysite --domain=mysite.com --docroot=dist

Com um repositório, use cipi deploy <app> implantar; código é clonado em /home/<app>/htdocs.

app list / app show / app edit / app delete

Comando Descrição
cipi lista de aplicativos Liste todos os aplicativos com domínio, versão PHP e status ((suspended) quando off-line)
cipi aplicativo mostrar <app> Detalhes completos: domínio, PHP, chave de implantação, trabalhadores, webhook, estado de suspensão. Para aplicativos personalizados: digite "Personalizado", docroot; webhook (e chave de implantação) omitido quando somente SFTP sem um repositório.
cipi edição do aplicativo <app> --php=8.5 Versão PHP hot-swap. Atualiza pool FPM, soquete Nginx, Supervisor, crontab, Deployer configuração e .env - tempo de inatividade zero
cipi edição do aplicativo <app> --branch=develop Alterar o branch de implantação
cipi edição do aplicativo <app> --domain=new.example.com Renomeie o domínio primário (já que v4.6.2). Valida o formato e exclusividade, move o antigo primário para aliases, regenera o Nginx vhost, atualiza APP_URL, atualiza webhooks do Git quando configurados automaticamente e emite novamente Let's Encrypt quando já existia um certificado
cipi edição do aplicativo <app> --repository=<SSH-URL> Anexe ou altere o repositório Git (por exemplo, habilite a implantação em um aplicativo personalizado somente SFTP criado sem --repository). Combinável com --branch, --phpe --domain
cipi edição do aplicativo <app> --node-build='npm ci && npm run build' Execute uma compilação do Node após Composer fornecedores em cada implantação (desde v5.0). O implantador é executado .deployer/node-build.sh (falha fechada; comando é validado). Limpar com --no-node-build
cipi edição do aplicativo <app> --predeploy-snapshot Habilite um dump do banco de dados antes de cada implantação (desde v5.0). O mesmo comportamento de passar --snapshot em cada cipi deploy. Veja Pré-implantar snapshots de banco de dados
cipi conversão de aplicativo <app> --to=octane|fpm Converta entre PHP-FPM e Laravel Octane (desde v5.0). Veja Laravel Octane
cipi ambiente do aplicativo <app> [--show|--get|--set|--unset] Abra o aplicativo .env em nano ou gerenciar chaves de forma não interativa, pois v5.0.3 (--show/--get/--set/--unset, opcional --json). Sai com erro para aplicativos personalizados (não .env).
cipi execução do aplicativo <app> <cmd> [args…] Comando não interativo incluído na lista de permissões como usuário do aplicativo (desde v5.0.3). Veja app run
cipi app implantar-config <app> Opções de receita do Structured Deployer (desde v5.0.3). Veja implantação-config
cipi aplicativo webhook recriar <app> [--rotate-secret] Recrie o GitHub/GitLab implantar webhook; rotação secreta opcional atualizações CIPI_WEBHOOK_TOKEN (desde v5.0.6). DESCANSO: POST /api/apps/{name}/webhook/recreate(API 1.15.0+). Desde 5.0.6, app edit --repository= recria apenas a chave webhook/deploy quando a URL do repositório realmente muda.
cipi senha de redefinição do aplicativo <app> Gere novamente a senha SSH do usuário Linux do aplicativo. A nova senha é exibida em tela – salve-a imediatamente
cipi app reset-db-password <app> Gere novamente a senha do banco de dados do aplicativo (MariaDB ou PostgreSQL por aplicativo engine) e atualizar automaticamente DB_PASSWORD no aplicativo .env. Sai com erro para aplicativos personalizados (sem banco de dados).
cipi aplicativo excluir <app> Remova permanentemente o aplicativo, usuário, banco de dados (se Laravel), Nginx vhost, pool FPM e Supervisor trabalhadores. Para aplicativos personalizados, ignora a eliminação do banco de dados (nenhum foi criado). Pede confirmação.
cipi app delete <app> --force O mesmo que excluir, mas ignora o prompt de confirmação — para scripts, o painel API e cipi-cli

cipi app reverb

Laravel Reverb é o servidor WebSocket first-party do Laravel. O Cipi gere-o desde v5.0; a v5.1.2 é a release que o torna usável em produção — credenciais geradas, esquema derivado do certificado, limites de ligação mais altos e um proxy que já não engole as tuas próprias rotas.

Ativar o Reverb numa app Laravel configura quatro coisas: uma porta localhost 9000–9099, o programa Supervisor ${app}-reverb, um proxy nginx para /app/{key} e /apps/{id}/… no domínio da app, e as chaves REVERB_* / VITE_REVERB_* no .env.

bash
$ cipi app reverb enable myapp
$ cipi app reverb enable myapp --restart-supervisor   # aplica já o novo limite de ficheiros abertos
$ cipi app reverb status myapp
$ cipi app reverb disable myapp

Reverb é só Laravel. Voltar a correr enable é seguro: não realoca a porta nem toca nas credenciais; recalcula host e esquema e preenche chaves .env em falta. O build Node tem de correr depois do enable. Ver node_build.

/app e /apps pertencem ao protocolo. Até 5.1.1 o proxy era location /app (prefixo nginx) — portanto /appointments e /application/… iam para o Reverb. Desde 5.1.2 o bloco é ~ ^/apps?(/|$). Uma app com a própria rota /app precisa de um subdomínio dedicado.

ws:// ou wss:// deriva do certificado. Um wildcard resolve para um host concreto. status mostra o URL do cliente e avisa se falta uma credencial, se há certificado mas o esquema ainda é http, ou se o Supervisor ainda tem o limite antigo. --restart-supervisor reinicia todos os queue workers do servidor.

disable restaura BROADCAST_CONNECTION (fallback log). Um clone recebe porta, credenciais e domínio próprios. Declara-se em workers.reverb. A migração 5.1.2 reescreve os vhosts gulosos (backup em /var/lib/cipi/vhost-backup-5.1.2) e preenche o .env sem sobrescrever — depois faz redeploy para o bundle Vite.

cipi app clone

Desde v5.0, clone um aplicativo Laravel existente em um novo aplicativo de teste (ou revisão) com seu próprio domínio. Conjuntos cloned_from em apps.json; faz não copie webhook ou IDs git. Se a origem tiver Reverb, o clone recebe porta, credenciais e host próprios (desde v5.1.2). Ver cipi app reverb.

festa
$ cipi app clone myapp --domain=staging.myapp.com
$ cipi app clone myapp --domain=staging.myapp.com --name=myapp-stg --branch=develop --with-db
$ cipi app clone myapp --domain=staging.myapp.com --no-db
--domainObrigatório. Domínio principal do novo aplicativo.
--nameNome de usuário Linux opcional para o clone.
--branchImplantar ramificação para o clone (o padrão é branch do aplicativo de origem).
--with-dbCrie um novo banco de dados para o clonar.
--no-dbIgnorar o provisionamento de banco de dados para o clonar.

cipi app limits

Desde v5.0, defina limites de recursos por aplicativo com limites rígidos aplicados por Cipi.

festa
$ cipi app limits myapp --fpm-max-children=20 --memory-limit=256M
$ cipi app limits myapp --octane-workers=4 --worker-procs=3
$ cipi app limits myapp   # show current limits
--fpm-max-childrenPHP-FPM pm.max_children para aplicativos FPM.
--memory-limitPHP memory_limit.
--octane-workersOctane contagem de trabalhadores para FrankenPHP aplicativos.
--worker-procsSupervisor processo de trabalho da fila contar.

app suspend / app unsuspend

Disponível desde v4.5.8. Coloque um aplicativo off-line sem excluí-lo – útil para faturamento retenções, janelas de manutenção ou sites de teste que você deseja que sejam totalmente escuros. A suspensão troca o Nginx vhost por uma estática HTTP 503 página veiculada de /var/www/cipi-suspended/.

festa
$ cipi app suspend myapp      # take offline (503 page)
$ cipi app unsuspend myapp    # restore normal vhost
Comando Descrição
cipi suspensão do aplicativo <app> Conjuntos suspended: true em apps.json, reconstrói o vhost para retorne 503 para todas as solicitações. Idempotente se já estiver suspenso.
cipi aplicativo cancelar suspensão <app> Limpa o sinalizador, restaura o Laravel/custom vhost normal e reaplica os blocos SSL. Idempotente se já estiver online.

Comportamento

  • HTTPS incluído — certbot clona o vhost de suspensão no :443 bloco, então HTTPS também mostra a página offline
  • Let's Encrypt ainda funciona - o /.well-known/acme-challenge/ caminho permanece público para que os certificados possam ser emitidos ou renovados enquanto estiverem suspensos
  • Sobrevive à regeneração vhost — alterações de alias, PHP edições e SSL instalações respeite a bandeira suspensa
  • Visível nas listagenscipi app list marca aplicativos suspensos; cipi domains acrescenta ⏸ suspended em cada linha
Suspender versus autenticação básica: cipi basicauth mostra um prompt de login, mas ainda executa seu aplicativo. app suspend pára PHP completamente e exibe uma página off-line estática — os visitantes nunca chegam a Laravel. Use suspender para “site fechado”; autenticação básica para “visualização somente para convidados”.

Também disponível através do DESCANSE API (POST /api/apps/{name}/suspend), cipi-cli (apps suspend) e o Módulo WHMCS (Suspender / Botões para cancelar a suspensão). Requer habilidade de token apps-suspend para acesso API.

cipi basicauth

Disponível desde v4.5.2. Proteja qualquer aplicativo – Laravel ou personalizado – atrás de um Nginx prompt de nome de usuário/senha. Útil para testar sites, ferramentas internas ou aplicativos que não estão prontos para tráfego público ainda.

Comando Descrição
cipi basicauth enable <app> [--user=NOME] [--password=PASS] Ative HTTP autenticação básica. As credenciais são geradas quando omitidas e mostradas uma vez tela – salve-os imediatamente
cipi basicauth desabilitar <app> Remova o prompt e limpe as credenciais armazenadas
cipi status de autenticação básica <app> Mostrar se a autenticação básica está habilitada e o usuário configurado

As credenciais são hash com openssl passwd -apr1 (não apache2-utils necessário) e armazenado em /etc/nginx/cipi-basicauth/<app>.htpasswd; o estado habilitado reside em apps.json. O auth_basic diretivas são injetadas por location bloco, para que a proteção sobreviva à regeneração do vhost (alterações de alias, PHP edições) e seja clonada no :443 bloquear por certbot — HTTPS também está coberto. Os desafios da ACME permanecem público, portanto a emissão e renovação de certificados nunca são bloqueadas. A autenticação básica é removida automaticamente em cipi app delete.

Isto é distinto de cipi auth, que gerencia o Composer auth.json para repositórios de pacotes privados.

Gerenciando variáveis ENV

Cada Laravel aplicativo tem um único .env arquivo morando em /home/<app>/shared/.env. Aplicativos personalizados não têm .env. Ele é criado e pré-preenchido por Cipi durante app create com o banco de dados credenciais, APP_KEY, APP_URL, configurações de cache/sessão/fila e o ficha webhook. O shared/ diretório é vinculado simbolicamente a cada versão, então o mesmo .env está sempre ativo, independentemente da versão atual.

Edite interativamente via CLI

A maneira mais segura de alterar os valores ENV é através do próprio Cipi — ele abre o arquivo em nano como o aplicativo usuário, com as permissões corretas:

festa
$ cipi app env myapp

Salvar com Ctrl+O então saia com Ctrl+X. As alterações entram em vigor imediatamente para novos solicitações — não é necessário reiniciar para a maioria dos valores. Se você alterar a conexão da fila ou o driver de cache, reinicie os trabalhadores:

festa
$ cipi worker restart myapp

Sinalizadores não interativos (v5.0.3+)

Desde v5.0.3, scripts, o painel API e a web GUI podem gerenciar .env sem abrir um editor:

festa
$ cipi app env myapp --show
$ cipi app env myapp --show --json
$ cipi app env myapp --get=APP_URL
$ cipi app env myapp --set=APP_DEBUG=false
$ cipi app env myapp --unset=LEGACY_KEY

DESCANSO: GET|PUT /api/apps/{name}/env (habilidadeapps-env, API 1.14+). MCP: AppEnvShow, AppEnvUpdate.

Edite diretamente via SSH

Você também pode editar o arquivo diretamente via SSH como root ou como usuário do aplicativo:

festa
# as root
$ nano /home/myapp/shared/.env

# or switch to the app user first
$ su - myapp
$ nano ~/shared/.env

Principais variáveis ENV definidas por Cipi

Variável Descrição Definido por
APP_KEY Chave de criptografia Laravel — gerada uma vez na criação do aplicativo Cipi
APP_URL Atualizado automaticamente por cipi ssl install Cipi
DB_CONNECTION mysql para MariaDB (compatível com drop-in), ou pgsql quando o aplicativo motor é PostgreSQL (v4.8.0+) Cipi
DB_DATABASE/DB_USERNAME/DB_PASSWORD Credenciais geradas automaticamente para o banco de dados isolado do aplicativo Cipi
CACHE_STORE database — usa o banco de dados do aplicativo Cipi
SESSION_DRIVER database Cipi
QUEUE_CONNECTION database Cipi
BROADCAST_CONNECTION Definida para reverb no enable; restaurada ao driver anterior (ou log) no disable (v5.1.2+) Cipi
REVERB_APP_ID / KEY / SECRET Geradas uma vez no primeiro cipi app reverb enable, depois nunca rodadas. Cipi (v5.1.2+)
REVERB_HOST / PORT / SCHEME Socket público derivado do certificado (https/443 ou http/80). Cipi (v5.1.2+)
VITE_REVERB_APP_KEY / HOST / PORT / SCHEME Cópias públicas, incorporadas pelo Vite no build. Redeploy após enable, mudança de domínio ou SSL. Cipi (v5.1.2+)
REVERB_SERVER_HOST / PORT Bind localhost do programa Supervisor. Removidas no disable; as credenciais ficam. Cipi
CIPI_WEBHOOK_TOKEN Segredo HMAC para validação do agente cipi webhook Cipi
CIPI_APP_USER Nome de usuário do Linux que possui este aplicativo Cipi
CIPI_MCP Ative ou desative o servidor MCP integrado em /cipi/mcp Usuário (true por padrão)
Não altere as credenciais do banco de dados manualmente. Se você precisar regenerar o banco de dados uso de senha cipi db password myapp (ou cipi app reset-db-password myapp) - atualiza o mecanismo e o .env atomicamente. Editá-los manualmente corre o risco de deixar os dois fora de sincronia.

Adicionando suas próprias variáveis

Adicione qualquer variável personalizada na parte inferior do arquivo como faria normalmente em um projeto Laravel. Eles são preservados nas implantações porque o .env mora em shared/ e é nunca substituído pelo Deployer.

ambiente
# your custom variables
STRIPE_KEY=sk_live_...
STRIPE_SECRET=sk_live_...
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org

cipi app run

Desde v5.0.3, execute um não interativo na lista de permissões comando como o aplicativo usuário — útil em CLI, painel API e web GUI “Comandos de aplicativos”. Editores, pagers, shells e REPLs estão bloqueados (nano, vim, less, bash, tinker,…). Sinalizadores interativos (por exemplo tail -f, php -a) são rejeitado.

festa
$ cipi app run myapp composer install --no-dev
$ cipi app run myapp npm ci
$ cipi app run myapp ls -la shared
$ cipi app run --commands          # list allowed binaries
$ cipi app run --commands --json

Os binários permitidos incluem composer, npm/npx/yarn/pnpm, ls/ll, cat/head/tail, sistema de arquivos ajudantes, arquivos, git, php, nodee find. DESCANSO: POST /api/apps/{name}/run (trabalho assíncrono, capacidade apps-run) e GET /api/run-commands (API 1.14+). MCP: AppRun, AppRunCommands.

v5.0.4+ fixo /usr/bin/env: '--': No such file or directory - todos os comandos da lista de permissões (incluindo comandos de aplicativos GUI) falharam antes desse patch. Corre cipi self-update.

cipi app logs

Acompanhe os logs do aplicativo em tempo real. Os logs são rotacionados diariamente e mantidos por 14 dias. Por padrão, todos os registros são mostrados, incluindo Laravel registros diários (laravel-YYYY-MM-DD.log) de shared/storage/logs/.

festa
$ cipi app logs myapp                  # all logs (incl. Laravel daily logs)
$ cipi app logs myapp --type=nginx     # Nginx access + error
$ cipi app logs myapp --type=php       # PHP-FPM errors
$ cipi app logs myapp --type=worker    # queue worker output
$ cipi app logs myapp --type=deploy    # deploy history
$ cipi app logs myapp --type=laravel   # Laravel application logs
--type=nginxNginx logs de acesso e erros
--type=phpRegistro de erros PHP-FPM
--type=workerSupervisor / saída do trabalhador da fila
--type=deploySaída do implantador — histórico completo de implantação com carimbos de data/hora
--type=laravelLaravel logs de aplicativos de shared/storage/logs/ (rotação diária laravel-YYYY-MM-DD.log)

app artisan & app tinker

Execute os comandos Artisan e Tinker como o usuário do aplicativo com a versão PHP correta e open_basedir contexto — exatamente como seriam executados durante uma implantação.

festa
$ cipi app artisan myapp migrate:status
$ cipi app artisan myapp queue:retry all
$ cipi app artisan myapp db:seed --class=ProductionSeeder
$ cipi app artisan myapp cache:clear
$ cipi app tinker myapp

SSH como usuário do aplicativo

Cada aplicativo é executado sob seu próprio usuário Linux isolado. Às vezes você precisa trabalhar diretamente dentro desse ambiente do usuário - inspecione arquivos, execute scripts únicos ou depure algo que apenas se reproduz como o usuário correto.

SSH direto como usuário do aplicativo (recomendado)

Os usuários do aplicativo podem usar SSH diretamente no servidor com a senha gerada na criação do aplicativo:

festa
# connect as the app user (password auth)
$ ssh myapp@your-server-ip

# you are directly inside the app user's shell
myapp@server:~$ pwd
/home/myapp

myapp@server:~$ cd ~/current
myapp@server:~$ ls

A senha é mostrada quando o aplicativo é criado (ou usa cipi app reset-password myapp para regenerá-lo). Isso funciona para clientes SFTP, sessões remotas IDE e acesso de terminal.

Via cipi (caminho do administrador)

Se você já estiver conectado como cipi, você pode mudar diretamente para qualquer usuário do aplicativo:

festa
$ ssh cipi@your-server-ip
cipi@server:~$ sudo su - myapp

myapp@server:~$ pwd
/home/myapp

Redefinir a senha do usuário do aplicativo

Se você precisar gerar novamente a senha de um usuário do aplicativo (por exemplo, para SSH direto ou SFTP), use:

festa
$ cipi app reset-password myapp

A nova senha é exibida na tela – salve-a imediatamente.

Comandos úteis uma vez logado como usuário do aplicativo

festa
# navigate to the active release
myapp@server:~$ cd ~/current

# run artisan directly with the correct PHP version
myapp@server:~$ /usr/bin/php8.5 ~/current/artisan tinker

# inspect the shared .env
myapp@server:~$ cat ~/shared/.env

# tail all logs
myapp@server:~$ tail -f ~/logs/*.log

# check active releases (ll is a built-in alias for ls -al)
myapp@server:~$ ll ~/releases/

Cada usuário do aplicativo .bashrc define um prático ll='ls -al' apelido (desde v4.5.5) para listagens de diretórios mais rápidas por SSH, junto com o deploy e composer atalhos. Os aplicativos criados antes da versão 4.5.5 recebem o ll alias automaticamente no próximo cipi self-update através do 4.5.5 migração.

O usuário do aplicativo open_basedir limites de restrição PHP a /home/myapp. Isso é aplicado no nível PHP-FPM, não no nível do shell — você pode acessar qualquer arquivo que seu o usuário shell pode ler ao trabalhar no terminal.