Pular para o conteúdo

Vários projetos, mídia e atualização

Cada projeto blog é um processo separado, com a sua pasta, o seu usuário, o seu arquivo de ambiente e o seu serviço. Por isso, uma VPS pode receber mais de um projeto sem que eles dividam banco ou arquivos.

Repita em cada projeto os passos de VPS e variáveis. Estes são os itens que mudam de um projeto para o outro:

ItemPrimeiro projetoSegundo projeto
Pasta/srv/<projeto>/srv/<projeto-2>
Usuário do serviçoslash-<projeto>slash-<projeto-2>
Arquivo de ambiente/etc/slash-<projeto>.env, com PORT=4330/etc/slash-<projeto-2>.env, com outra PORT, por exemplo 4331
Bloco do Caddyo domínio do projeto e reverse_proxy 127.0.0.1:4330outro domínio e reverse_proxy 127.0.0.1:4331
Serviço do systemdslash-<projeto>slash-<projeto-2>

Cada projeto usa o próprio banco e a própria pasta storage/. A PORT de um projeto não pode ser a de outro, e o bloco do Caddy liga cada domínio à porta do projeto dele. Cada serviço tem o limite de memória de 1 GB do arquivo de exemplo, que cobre o painel e o build de um projeto.

O usuário é slash- seguido do nome do projeto. O useradd aceita até 32 caracteres, então um nome de projeto com mais de 26 caracteres ganha outra forma: slash-, os 17 primeiros caracteres do nome, um hífen e 8 caracteres de hash do nome completo. O slash create já grava esse nome nos arquivos de exemplo da pasta deploy/, então use-o como vier lá.

A pasta storage/ precisa estar no mesmo disco do projeto. Ela guarda o banco, os backups, as mídias e a cópia de trabalho dos builds. A publicação troca a pasta do site por rename, que não atravessa discos. Se storage/ estiver em outro disco, por um link ou uma montagem, a publicação falha. A mensagem no log do pedido diz Troca do site recusada (EXDEV), e o log aparece em Ver log, na tela Publicação.

Os envios aceitos são JPEG, PNG, WebP, AVIF, GIF e PDF.

Cada arquivo pode ter até 10 MB. Uma foto de celular pode passar desse tamanho. Imagens com mais de 100 megapixels são recusadas, seja qual for o teto de bytes.

Para aumentar o teto de bytes, mude MAX_MEDIA_BYTES em src/panel/ports/media.ts do projeto, por exemplo para 20 * 1024 * 1024, e reinicie o serviço com sudo systemctl restart slash-<projeto>. O corpo aceito pelo envio é esse valor mais 1 MB, para os campos do formulário. Se houver Caddy na frente, confira que ele também aceita o corpo maior.

Os originais e as variantes ficam em storage/media e entram nos backups.

A 1.1.0 não traz comando para atualizar um projeto já criado. Os comandos do slash são create, check, approve, verify, module, backup e admin, e nenhum troca a versão de um projeto existente.

Duas coisas guardam a versão de um projeto. O slash.lock na raiz do projeto registra a tag e o commit de onde vieram o ui, o panel e cada módulo. E o slash.lock dentro de cada backup registra a versão em que ele foi feito.

Por isso, antes de mexer na versão, faça um backup com slash backup e guarde uma cópia fora da VPS. A restauração confere a versão: um backup de versão mais nova do painel é recusado, e a tela de Backup só restaura backups da mesma versão. Veja Backup e restauração.

Estes são os limites que o código da 1.1.0 aplica. Os valores vêm do código da versão.

LimiteValorO que controla
backup.keptAutomatic7 backupsBackups automáticos guardados. Os mais antigos são apagados ao criar um novo.
backup.keptPreRestore3 backupsBackups de segurança feitos antes de cada restauração. Os mais antigos são apagados.
comments.maxLength2.000 caracteresTamanho padrão de um comentário. O módulo Comentários pode mudar esse valor.
media.maxBytes10 MBMaior arquivo que um envio aceita.
media.maxPixels100 megapixelsMaior imagem, em pixels, que o processamento aceita.
password.minLength12 caracteresTamanho mínimo da senha do painel.
public.bodyMaxBytes32 KBTamanho máximo do corpo de um formulário público.
rate.accountLogin3 tentativas por horaPedidos de recuperação de senha por e-mail digitado.
rate.addressLogin20 tentativas a cada 15 minutosTentativas de entrar, recuperar a senha ou aceitar convite por endereço, somando todos os e-mails.
rate.comments3 tentativas por minutoComentários enviados por endereço.
rate.login5 tentativas a cada 15 minutosTentativas de entrar, recuperar a senha ou aceitar convite por endereço e e-mail.
rate.metrics120 tentativas por minutoEnvios de métricas de visita e clique.
rate.newsletter3 tentativas por minutoInscrições na newsletter por endereço.
secret.minLength32 caracteresTamanho mínimo do PANEL_SECRET.