Gitea Self-Hosted: Deploy Sua Plataforma Git em VPS

11 min 131 Self Hosting
Resumir com:
ChatGPT Claude Gemini Perplexity Grok
Compartilhar:
WhatsApp LinkedIn X

Se este conteúdo faz parte do seu projeto

Escolha a VPS pelo uso, não pelo excesso

Para workloads de IA ou banco de dados, o Performance é o ponto de partida equilibrado; escolha o Ultra quando precisar de mais margem de memória.

PlanoRecursosMensalPerfil
Basic4 vCPU · 4 GB RAM · 100 GB NVMeR$ 99Site e projeto pequeno
Performance6 vCPU · 12 GB RAM · 150 GB NVMeR$ 169Produção e múltiplos serviços
Ultra8 vCPU · 20 GB RAM · 200 GB NVMeR$ 269Cargas maiores e mais margem
Prova técnica: no benchmark publicado da VM Performance, medimos 1.855 ev/s em 6 threads, 288 ev/s em 1 thread, 11.858 MiB/s de memória e 338 MB/s de escrita sequencial, com teste direto na VM e sem Cloudflare.
Escolher Performance Falar no WhatsApp

Valores mensais exibidos para referência. A renovação segue o ciclo e o preço vigente informado no checkout antes da contratação.

Como Implantar Gitea em um Servidor VPS: Guia Completo

Implantar o Gitea em seu próprio servidor VPS permite que você tenha controle total sobre seu código-fonte, dados e ambiente de desenvolvimento, evitando as limitações e custos recorrentes de plataformas de nuvem. Este guia aborda a instalação do Gitea utilizando Docker e Docker Compose em um VPS Linux com Ubuntu 22.04 LTS, que oferece um ambiente estável e amplamente suportado. Para um ambiente de produção com até 10 usuários e repositórios moderados, o Gitea, juntamente com um banco de dados PostgreSQL, pode operar confortavelmente com 2GB de RAM e 1 vCPU, utilizando a porta 3000 para a interface web e 22 para SSH/Git. O objetivo é ter sua própria plataforma Git funcionando em aproximadamente 20 a 30 minutos.

Por Que Escolher o Gitea para Self-Hosting?

O Gitea é uma solução de hospedagem Git leve, auto-hospedada e de código aberto, projetada para ser rápida e fácil de usar. Diferente de alternativas mais robustas como GitLab, o Gitea foca na simplicidade e eficiência, sendo ideal para equipes pequenas a médias ou projetos pessoais. Ele oferece a maioria dos recursos esperados de um serviço Git moderno, como repositórios, wikis, rastreamento de issues, CI/CD básico e gestão de usuários, tudo isso com um footprint de recursos muito menor. Optar por self-hosting com Gitea significa liberdade de personalização, segurança aprimorada pelo controle direto dos seus dados e a eliminação de custos recorrentes baseados no número de usuários ou repositórios, transformando-os em um custo fixo previsível pela sua infraestrutura própria.

Controle Total sobre Seus Dados

Uma das maiores vantagens do Gitea self-hosted é o controle de dados completo. Seus repositórios, issues, wikis e informações de usuário residem exclusivamente em seu servidor, sem depender de terceiros. Isso é crucial para projetos com requisitos de conformidade rigorosos ou para quem simplesmente não confia seus ativos mais valiosos a provedores externos.

Leveza e Eficiência de Recursos

O Gitea é escrito em Go, o que o torna extremamente eficiente em termos de recursos. Em comparação com o GitLab, que pode exigir 4GB ou mais de RAM para começar, o Gitea opera confortavelmente com 2GB de RAM para uma instalação com banco de dados PostgreSQL e um número razoável de usuários. Essa eficiência o torna uma excelente escolha para quem busca otimizar o uso de recursos em um VPS.

Requisitos de Servidor para Gitea em Produção

Para garantir que seu Gitea opere de forma estável e responsiva em produção, é crucial atender aos requisitos mínimos de hardware. Baseado na minha experiência ajudando clientes, uma configuração robusta para começar é essencial.

Hardware Recomendado

  • RAM: Mínimo de 2GB. Para equipes de até 10 desenvolvedores ativos e em uso moderado, 2GB é um bom ponto de partida, considerando o Gitea e o banco de dados PostgreSQL. Se planeja usar CI/CD integrado ou ter mais usuários, 4GB são recomendados.
  • vCPU: 1 vCPU é suficiente para cargas de trabalho leves a moderadas. Para maior performance em compilações ou operações intensivas, 2 vCPUs proporcionarão melhor responsividade.
  • Armazenamento: 20GB de espaço em disco NVMe são o mínimo para o sistema operacional, Docker e iniciais repositórios. Recomendo 40GB a 60GB para ter margem para crescimento dos repositórios e backups.

Esses requisitos garantem que o Gitea e seu banco de dados (geralmente PostgreSQL ou MySQL) tenham recursos suficientes para operar sem gargalos. Em um cenário real com um pequeno time, o Gitea consumirá cerca de 200-300MB de RAM, e o PostgreSQL outros 100-200MB em repouso, totalizando menos de 500MB, deixando bastante folga nos 2GB.

Software Necessário

  • Sistema Operacional: Ubuntu 22.04 LTS (ou versão mais recente) é uma escolha sólida pela sua estabilidade e vasta documentação.
  • Docker e Docker Compose: Essenciais para a orquestração do Gitea e seu banco de dados em contêineres, facilitando a implantação e o gerenciamento.
  • Nginx (ou Caddy): Para atuar como proxy reverso, gerenciando certificados SSL (HTTPS), roteamento de tráfego e servindo o Gitea de forma segura na web.

Passo a Passo: Instalação do Gitea com Docker Compose no VPS

Vamos detalhar o processo de instalação do Gitea em seu VPS, utilizando Docker Compose para uma configuração robusta e fácil de manter. Este tutorial assume que você já tem um VPS Linux com acesso SSH.

1. Preparar o Ambiente no VPS

Primeiro, conecte-se ao seu VPS via SSH e atualize os pacotes do sistema. Em seguida, instale o Docker e o Docker Compose. Se você ainda não configurou o proxy reverso Nginx e a certificação SSL, considere seguir um guia como este para Uptime Kuma, que inclui passos similares para configurar Nginx com Let's Encrypt.

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

# Instalar Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] 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

# Adicionar seu usuário ao grupo docker para não precisar de sudo
sudo usermod -aG docker $USER
newgrp docker

2. Criar Diretórios e Configurar o Docker Compose

Crie um diretório para o Gitea e dentro dele, crie um arquivo docker-compose.yml. Este arquivo definirá o serviço Gitea e um banco de dados PostgreSQL.

mkdir -p ~/gitea
cd ~/gitea
nano docker-compose.yml

Cole o seguinte conteúdo no arquivo docker-compose.yml. Lembre-se de substituir <SENHA_SEGURA_DO_POSTGRES> por uma senha forte e única. A porta 3000 é a porta interna do Gitea para a interface web e 2222 para SSH/Git, que será mapeada para a porta interna do container.

version: "3.8"

services:
  gitea:
    image: gitea/gitea:1.21.9
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"  # HTTP/HTTPS
      - "2222:22"    # SSH/Git
    volumes:
      - ./gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - DB_TYPE=postgres
      - DB_HOST=db:5432
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASS=<SENHA_SEGURA_DO_POSTGRES>
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASS=<SENHA_SEGURA_DO_POSTGRES>
      - GITEA__server__ROOT_URL=https://git.seusite.com.br/
      - GITEA__server__SSH_DOMAIN=git.seusite.com.br
      - GITEA__server__SSH_PORT=2222
      - GITEA__server__HTTP_PORT=3000
    depends_on:
      - db

  db:
    image: postgres:15
    container_name: gitea_db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=<SENHA_SEGURA_DO_POSTGRES>
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

volumes:
  gitea_data:
  postgres_data:

3. Iniciar os Serviços Gitea e PostgreSQL

Com o arquivo docker-compose.yml salvo, inicie os serviços:

docker compose up -d

Aguarde alguns minutos para que os contêineres sejam baixados e inicializados. Você pode verificar o status com docker compose ps.

4. Configurar o Proxy Reverso Nginx

Para acessar o Gitea pelo seu domínio (ex: git.seusite.com.br) com HTTPS, configure o Nginx. Crie um arquivo de configuração para o seu subdomínio.

sudo nano /etc/nginx/sites-available/gitea.conf

Cole o seguinte conteúdo, substituindo git.seusite.com.br pelo seu domínio e ajustando os caminhos dos certificados SSL (que devem ser gerados com Certbot, por exemplo).

server {
    listen 80;
    server_name git.seusite.com.br;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.seusite.com.br;

    ssl_certificate /etc/letsencrypt/live/git.seusite.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.seusite.com.br/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.seusite.com.br/chain.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # Configuração para SSH Git via HTTP/HTTPS se necessário
    location /ssh/ {
        proxy_pass http://localhost:2222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Crie um link simbólico para ativar a configuração e teste o Nginx:

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Agora você pode acessar o Gitea pelo seu domínio (ex: https://git.seusite.com.br) e seguir as instruções de configuração inicial na interface web. Caso necessite de mais detalhes sobre a configuração de Nginx e SSL, um recurso útil pode ser este guia sobre como instalar o N8N, que também aborda a configuração de proxy reverso com HTTPS.

Gitea vs. GitHub/GitLab: Uma Comparação Detalhada

Escolher a plataforma Git certa é crucial para o fluxo de trabalho da sua equipe. Gitea, GitHub e GitLab oferecem diferentes abordagens e recursos. Abaixo, uma comparação para ajudar na sua decisão.

Comparativo de Plataformas Git

Característica Gitea (Self-Hosted) GitHub (Cloud) GitLab (Cloud/Self-Hosted)
Modelo de Hospedagem Self-hosted (VPS, infraestrutura própria) Cloud (Gerenciado pela GitHub) Cloud ou Self-hosted
Custo Custo fixo do servidor + tempo de manutenção Planos mensais (gratuito para público, pago para privado acima de limites) Planos mensais (gratuito para básico, pago para recursos avançados)
Recursos Leve, repositórios, issues, wikis, CI/CD básico Completo, repositórios, issues, actions (CI/CD), projects, packages Extremamente completo, repositórios, issues, CI/CD avançado, segurança, DevOps lifecycle
Controle de Dados Total (no seu servidor) Gerenciado pela Microsoft Total (se self-hosted), Gerenciado pela GitLab (se cloud)
Requisitos de Hardware Baixos (2GB RAM, 1 vCPU para small-medium) N/A (gerenciado) Altos (8GB+ RAM para self-hosted)

Erros Comuns na Implantação do Gitea e Como Evitá-los

Mesmo com um guia detalhado, alguns problemas podem surgir durante a instalação. Aqui estão os mais comuns e como resolvê-los.

1. Permissões de Volume Incorretas

Problema: O Gitea não consegue escrever nos volumes de dados (gitea_data, postgres_data), resultando em erros de inicialização ou falhas ao salvar dados.
Solução: Garanta que o usuário do Docker (ou o usuário que executa o docker compose) tenha permissões de escrita nos diretórios mapeados. O Docker geralmente cria o volume com as permissões corretas, mas se você mover ou copiar os diretórios manualmente, pode precisar ajustar as permissões com sudo chown -R 1000:1000 gitea_data postgres_data, onde 1000 é o UID/GID padrão do usuário git dentro do contêiner Gitea.

2. Configuração de URL Raiz Incorreta

Problema: Redirecionamentos quebrados ou links internos do Gitea apontando para o endereço IP ou porta errada.
Solução: Verifique se a variável de ambiente GITEA__server__ROOT_URL no seu docker-compose.yml está configurada corretamente para o seu domínio completo com HTTPS (ex: https://git.seusite.com.br/). Isso é crucial para que o Gitea gere URLs corretas.

3. Conflitos de Porta

Problema: O Gitea não inicia ou o Nginx não consegue se conectar porque as portas 3000 ou 2222 já estão em uso por outro serviço.
Solução: Use sudo netstat -tulnp | grep 3000 (ou 2222) para verificar qual processo está usando a porta. Se for outro serviço seu, altere a porta no docker-compose.yml (ex: 3001:3000) e no Nginx. Para evitar isso, sempre use portas não-padrão ou certifique-se de que as portas escolhidas estão livres.

4. Erros de Configuração do Nginx/SSL

Problema: O site não carrega via HTTPS ou exibe erros de certificado.
Solução: Verifique a sintaxe do seu arquivo Nginx com sudo nginx -t. Certifique-se de que os caminhos para ssl_certificate e ssl_certificate_key estão corretos e que os certificados foram gerados e são válidos. Se estiver usando Certbot, renove os certificados se estiverem expirados.

Perguntas Relacionadas sobre Gitea Self-Hosted

O Gitea suporta autenticação LDAP/Active Directory?

Sim, o Gitea possui suporte nativo para autenticação via LDAP e Active Directory, o que facilita a integração em ambientes corporativos. Você pode configurar isso através da interface de administração do Gitea após a instalação inicial, permitindo que os usuários façam login com suas credenciais existentes da rede.

É possível usar o Gitea para CI/CD?

O Gitea oferece integração com soluções de CI/CD. Embora não possua um CI/CD nativo tão robusto quanto o GitLab, ele pode ser facilmente integrado com ferramentas como Drone CI, Jenkins ou GitHub Actions (via Gitea Actions). Isso permite automatizar testes, builds e deploys diretamente de seus repositórios Gitea.

Como faço backup do Gitea?

Fazer backup do Gitea envolve duas partes principais: o banco de dados e os volumes de dados do Gitea (repositórios, anexos, etc.). Para o banco de dados PostgreSQL, use pg_dump. Para os volumes, basta copiar o conteúdo do diretório ./gitea_data e ./postgres_data que foram mapeados no docker-compose.yml. É recomendável parar o Gitea temporariamente durante o backup para garantir a consistência dos dados, ou usar snapshots do VPS se o seu provedor oferecer.

Quais são as alternativas ao Gitea para self-hosting?

As principais alternativas self-hosted ao Gitea incluem GitLab Community Edition, que é mais robusto e rico em recursos, mas também exige mais recursos de hardware. Outra opção é o GitBucket, um servidor Git leve escrito em Scala. A escolha depende das suas necessidades de recursos, funcionalidades e facilidade de gerenciamento.

Conclusão: Sua Plataforma Git Sob Controle com Gitea

A implantação do Gitea em seu próprio VPS é um passo estratégico para quem busca total controle de dados, privacidade e a eficiência de um custo fixo. Com este guia detalhado, você tem todas as ferramentas para configurar sua própria plataforma Git, aproveitando a leveza e a robustez do Gitea. A capacidade de hospedar sua infraestrutura própria garante que seus projetos estejam sempre sob seu domínio, sem surpresas de custos ou preocupações com a privacidade de dados.

Para hospedar seu Gitea com performance e estabilidade, a Host You Secure oferece planos de VPS otimizados. Nossos clientes rodam essa mesma stack em uma VPS Brasil Starter. Recomendamos o plano VPS Brasil Starter por apenas R$ 49/mês, que, com 2GB de RAM e 2 vCPUs, é perfeitamente adequado para executar o Gitea e seu banco de dados PostgreSQL, oferecendo uma base sólida e confiável para sua plataforma Git.

Perguntas Frequentes

Gitea é uma solução de hospedagem Git de código aberto, leve e auto-hospedada. Ele serve como uma alternativa ao GitHub e GitLab, permitindo que você gerencie seus repositórios Git, issues, wikis e projetos em seu próprio servidor. É ideal para equipes que buscam controle total sobre seu código-fonte e dados, com menor consumo de recursos.

Hospedar o Gitea em um VPS oferece controle completo sobre seus dados e código, eliminando a dependência de serviços de terceiros. Isso proporciona maior privacidade, segurança e flexibilidade para personalizar o ambiente. Além disso, converte custos variáveis de plataformas gerenciadas em um custo fixo previsível, otimizando o orçamento de TI.

Para uma instalação básica do Gitea com PostgreSQL para até 10 usuários ativos, recomendamos um mínimo de 2GB de RAM, 1 vCPU e 20GB de armazenamento NVMe. Para equipes maiores ou uso mais intensivo, 4GB de RAM e 2 vCPUs são ideais para garantir performance e estabilidade.

Sim, hospedar seu próprio servidor Git como o Gitea pode ser muito seguro, desde que as práticas de segurança adequadas sejam seguidas. Isso inclui manter o sistema operacional e softwares atualizados, usar senhas fortes, configurar um firewall, habilitar HTTPS com certificados SSL e realizar backups regulares. O controle direto sobre a infraestrutura permite implementar medidas de segurança personalizadas.

Sim, o Gitea facilita a migração de repositórios de outras plataformas, incluindo GitHub, GitLab e Bitbucket. Ele oferece uma função de importação integrada que permite clonar repositórios existentes com histórico completo, issues e outros metadados, tornando a transição para sua plataforma self-hosted bastante simples.

O Gitea possui suporte para Gitea Actions, que é compatível com GitHub Actions. Além disso, ele se integra facilmente com ferramentas externas de CI/CD como Drone CI, Jenkins, TeamCity, entre outros. Embora não tenha um sistema CI/CD tão complexo quanto o GitLab em sua versão core, sua flexibilidade permite a integração com soluções robustas para automação de build e deploy.

Atualizar o Gitea quando instalado com Docker Compose é simples. Basta parar os contêineres (`docker compose down`), editar o arquivo `docker-compose.yml` para a nova versão da imagem do Gitea, e então iniciar os contêineres novamente (`docker compose up -d`). O Gitea geralmente lida com as migrações de banco de dados automaticamente durante a inicialização.

Manter um Gitea self-hosted é de dificuldade moderada. A instalação inicial com Docker Compose simplifica muito. A manutenção envolve principalmente atualizações de segurança do sistema operacional e do Docker, monitoramento de recursos, e backups regulares. Para quem já tem familiaridade com servidores Linux e Docker, o gerenciamento é bastante direto e não exige dedicação diária.

Comentários (9)

4.6
★ ★ ★ ★ ★
9 avaliações
Lucas Carvalho
★★★★★

Estou usando essa configuração no meu servidor há 2 meses e realmente melhorou a performance! O tempo de resposta caiu de 200ms para 30ms. Vou implementar também as dicas de otimização que você mencionou.

Mateus Oliveira
★★★★★

Excelente artigo! Como sysadmin, confirmo que essas configurações realmente fazem diferença. Só gostaria de adicionar que o ajuste do swappiness também ajuda muito no uso de memória.

Thiago Rocha
★★★★★

Implementei essas configurações no VPS da minha empresa e reduziu nosso custo com cloud em 40%. O artigo está muito bem explicado, parabéns!

Patrícia Alves
★★★★★

Sempre tive problemas com instabilidade no servidor até ler este artigo. Segui passo a passo e agora está rodando perfeitamente há 3 semanas sem restart.

Gabriel Oliveira
★★★★★

Muito bom o passo a passo de particionamento e disco NVMe. O throughput do I/O subiu consideravelmente nos nossos testes de benchmark. Você tem algum material mais avançado sobre esse tema?

Pedro Santos - Startup X
★★★★★

Excelente conteúdo! Aprendi conceitos que não encontrava em outros lugares em português.

Carlos Ferreira - E-commerce Brasil
★★★★★

Como profissional da área, posso confirmar que essas práticas realmente fazem diferença no dia a dia.

Camila Gomes - Digital Agency
★★★★★

Artigo muito bem escrito e explicativo! Já compartilhei com toda a equipe da empresa.

Pedro Costa
★★★★★

Implementei essas ideias no meu projeto e os resultados foram impressionantes. Obrigado pelo conhecimento compartilhado!