O Plane é uma ferramenta open source de gestão de projetos - questões, ciclos, módulos e páginas, no mesmo terreno do Jira e do Linear - e uma das aplicações auto-alojadas mais pesadas que se podem colocar num VPS pequeno. A Community Edition traz uma pilha de treze contentores, pelo que a parte interessante deste guia está em dimensionar bem o servidor e não em escrever docker compose up.
Porquê alojar o Plane por conta própria?
O plano alojado cobra por utilizador. Alojar por conta própria elimina esse custo e mantém o histórico de questões, os anexos e os dados de projeto numa infraestrutura que o utilizador controla, o que conta quando o registo contém nomes de clientes, falhas de segurança ou pontos de roteiro ainda não divulgados. A Community Edition está licenciada sob AGPL-3.0, pelo que pode ser usada numa equipa comercial sem qualquer licença paga.
A contrapartida é real: as atualizações, as cópias de segurança e a instância Postgres ficam do seu lado. Se ninguém na equipa quiser essa tarefa, a versão alojada é a resposta honesta.
Pré-requisitos
A documentação do Plane enuncia os requisitos sem ambiguidade:
- 2 núcleos de CPU, x64/AMD64 ou AArch64/ARM64
- 4 GB de RAM no mínimo, 8 GB recomendados em produção
- Ubuntu, Debian, CentOS ou Amazon Linux 2/2023
- Docker Engine 20.10+ e Docker Compose v2
- Portas 80 e 443 acessíveis, além de um domínio a apontar para o servidor
Esse mínimo de 4 GB não é folga. A pilha arranca web, admin, space, api, worker, beat-worker, migrator, live, um proxy, mais postgres:15.7-alpine, valkey/valkey:7.2.11-alpine, rabbitmq:3.13.6-management-alpine e minio/minio. Treze contentores em repouso consomem a maior parte de 4 GB antes de o primeiro utilizador iniciar sessão.
Se ainda lhe falta servidor, a Contabo, a Hetzner Cloud e a DigitalOcean têm planos que ultrapassam a fasquia; veja a tabela abaixo e a nossa comparação completa de VPS.
Passo 1: Escolher um plano acima dos 4 GB
É aqui que falha a maioria das instalações do Plane. O plano mais barato de quase todos os fornecedores tem 1 GB de RAM, um quarto do mínimo documentado.
| Plano | vCPU / RAM / Disco | Preço | Veredicto para o Plane |
|---|---|---|---|
| Contabo Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5,50 EUR/mês s/ IVA | Cumpre os 8 GB recomendados |
| Hetzner CX33 | 4 / 8 GB / 80 GB NVMe | 8,49 EUR/mês s/ IVA | Cumpre os 8 GB recomendados |
| Hetzner CX23 | 2 / 4 GB / 40 GB NVMe | 5,49 EUR/mês s/ IVA | Exatamente o mínimo; chega a uma equipa pequena |
| DigitalOcean, droplet de entrada | 1 / 1 GB / 25 GB | 6 USD/mês | Demasiado pequeno - o Plane não corre aqui |
Instale o Ubuntu 24.04 LTS, crie um utilizador sem privilégios de root e ative a firewall:
sudo apt update && sudo apt upgrade -y
sudo adduser plane
sudo usermod -aG sudo plane
sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443
sudo ufw enable
Passo 2: Instalar o Docker
O Plane precisa do Compose v2. Instale a partir do repositório da própria Docker para obter o docker-compose-plugin em vez do script v1 já descontinuado:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
Termine a sessão, volte a entrar e confirme a versão:
docker compose version
Passo 3: Apontar primeiro o DNS ao servidor
Faça-o antes de lançar o instalador. Ele pede o domínio durante a configuração e escreve-o em WEB_URL e CORS_ALLOWED_ORIGINS; se o DNS ainda não resolver, a emissão do certificado falha e ficará a editar ficheiros de ambiente depois.
Crie um registo A para plane.example.com a apontar para o endereço IP do VPS e aguarde que resolva:
dig +short plane.example.com
Passo 4: Executar o instalador oficial
O Plane distribui um único script de instalação que descarrega imagens já compiladas e escreve um docker-compose.yaml gerido:
curl -fsSL https://prime.plane.so/install/ | sh -
O script pergunta pelo domínio e depois propõe Express (valores por omissão) ou Advanced (define variáveis uma a uma). Para uma primeira instalação, Express é a escolha certa. No fim, o Plane responde nas portas 80 e 443, comandadas por LISTEN_HTTP_PORT e LISTEN_HTTPS_PORT.
Uma nota sobre o repositório: o docker-compose.yml do GitHub compila cada serviço a partir do código-fonte em vez de descarregar imagens. Esse é um fluxo pensado para quem contribui para o projeto - uma compilação exige bastante mais RAM do que a execução e vai falhar ou pôr um VPS de 4 GB em swap. Use o instalador.
Abra https://plane.example.com e crie a primeira conta. Essa conta passa a administrar a instância; o painel de administração está em /god-mode/, onde configura SMTP, restrições de registo e autenticação.
Passo 5: Salvaguardar o que realmente importa
Dois elementos guardam os seus dados: o volume PostgreSQL e o volume MinIO, onde reside cada ficheiro anexado. Um snapshot do VPS cobre ambos, mas uma cópia da base de dados que possa restaurar de forma seletiva vale muito:
docker exec plane-db pg_dump -U plane plane | gzip > plane-$(date +%F).sql.gz
Copie o ficheiro para fora do servidor. Uma cópia de segurança guardada no disco que está a salvaguardar não é uma cópia de segurança.
Comparação de VPS para alojar o Plane
| Fornecedor | Plano de entrada a partir de 4 GB | Preço (por mês) | Notas | Ligação |
|---|---|---|---|---|
| Contabo | Cloud VPS 4 - 4 vCPU, 8 GB, 100 GB SSD | 5,50 EUR s/ IVA | O caminho mais barato até aos 8 GB recomendados | Contabo |
| Hetzner Cloud | CX23 - 2 vCPU, 4 GB, 40 GB NVMe | 5,49 EUR s/ IVA | Cumpre o mínimo; CX33 a 8,49 com 8 GB | Hetzner |
| DigitalOcean | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Mais caro, mas a documentação e os snapshots são os melhores | DigitalOcean |
| Vultr | 2 vCPU, 4 GB, 80 GB SSD | 20 USD | O mais barato dos três; grande escolha de regiões | Vultr |
| Linode (Akamai) | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Desempenho previsível, API sólida | Linode |
O padrão salta à vista: os fornecedores norte-americanos cobram entre 20 e 24 USD pelo escalão de 4 GB, cerca de três a quatro vezes o equivalente europeu. Para um registo de questões auto-alojado que serve um único escritório numa única região, essa diferença é difícil de justificar.
Para ver todo o panorama, consulte a nossa comparação completa de VPS.
Onde as equipas ficam presas
Dimensionar pela página do produto em vez da documentação. O Plane parece uma aplicação web; comporta-se como uma pequena plataforma. Quatro GB são o mínimo, não o objetivo.
Saltar o SMTP. Sem correio configurado em /god-mode/, os convites nunca chegam e não consegue acrescentar ninguém ao espaço de trabalho. Deixe isso resolvido antes de integrar a equipa.
Esquecer o MinIO na cópia de segurança. Salvaguardar só o Postgres devolve-lhe todas as questões e comentários sem um único anexo.
O Plane compensa o trabalho de instalação se a sua equipa já vive dentro de um registo de questões e prefere não pagar por pessoa. Dimensione bem a máquina, guarde as cópias noutro sítio, e o serviço fica a correr sem dar trabalho.
Para mais projetos e sugestões de auto-alojamento, percorra a lista awesome-selfhosted ou a comunidade r/selfhosted.
Frequently asked questions
Posso alojar o Plane num VPS com 1 GB ou 2 GB de RAM?
Não. A documentação do Plane fixa o mínimo em 2 núcleos de CPU e 4 GB de RAM, e a pilha Compose da Community Edition arranca treze contentores, entre eles PostgreSQL, Valkey, RabbitMQ e MinIO. Numa máquina de 2 GB o instalador chega ao fim, mas os contentores são terminados por falta de memória assim que há utilização real. 4 GB são o mínimo viável e a documentação recomenda 8 GB em produção.
Como atualizo o Plane para uma versão mais recente?
Execute novamente o script de gestão que o instalador deixou no servidor e escolha a opção de atualização. Em alternativa, a partir da diretoria de instalação, corra docker compose pull e depois docker compose up -d. O contentor migrator aplica as migrações da base de dados no arranque, por isso faça antes uma cópia PostgreSQL e um snapshot. Leia primeiro as notas de lançamento, porque as versões maiores alteram por vezes variáveis de ambiente.
Preciso de um nome de domínio para pôr o Plane a funcionar?
Na prática sim. O instalador pede o domínio durante a configuração e escreve-o em WEB_URL e CORS_ALLOWED_ORIGINS, que o frontend e a API utilizam para comunicar entre si. Um simples endereço IP serve para um ensaio local mas quebra a configuração CORS assim que o endereço muda, e sem domínio não é possível emitir um certificado Let's Encrypt.