Tutoriais técnicos
Montar um repositório Git privado em VPS (2025) - Guia de implantação ultrarrápida do Gitea
Implante o Gitea rapidamente em uma VPS com Docker Compose e crie um repositório Git privado. Abrange mapeamento de portas SSH, HTTPS automático com Caddy, configuração de CI/CD com Gitea Actions e guia de backup de dados.

Para um desenvolvedor, o código é o ativo principal. O GitHub é ótimo, mas os repositórios privados gratuitos têm muitas limitações, a transferência de arquivos grandes é lenta e os dados dependem totalmente de terceiros.
Em 2025, montar um serviço Git privado na sua própria VPS se tornou a escolha predominante. Este artigo recomenda o Gitea — um serviço Git de código aberto leve, ultrarrápido e cheio de recursos. Ele não só consome menos recursos que o GitLab (roda com apenas 256 MB de memória), como também é mais atualizado e tem mais recursos que o Gogs.
Este artigo vai te ensinar a implantar o Gitea rapidamente com Docker Compose, configurar o acesso HTTPS e o encaminhamento de portas SSH, criando um "GitHub privado" que é totalmente seu.
Em 2025, o Gitea continua sendo a primeira escolha para serviços Git auto-hospedados, por motivos simples:
- Extremamente leve: Escrito em Go, compilado em um único arquivo, com consumo de recursos muito baixo (roda até em um Raspberry Pi).
- Recursos completos: Pull Requests, Issues, Wiki, Kanban, LFS e Packages, tudo incluído.
- CI/CD integrado: Suporta Gitea Actions, com sintaxe compatível com o GitHub Actions, o que é essencial para builds automatizados.
- Comunidade ativa: Em comparação com o "estagnado" Gogs, o Gitea itera rapidamente e oferece mais garantias de segurança (o Gogs teve recentemente uma vulnerabilidade de alta gravidade divulgada).
- Configuração da VPS: 1 núcleo e 1 GB de memória já bastam (recomenda-se 2 núcleos e 2 GB para uma melhor experiência).
- Sistema: Ubuntu 20.04+ / Debian 11+.
- Software: Docker e Docker Compose já instalados.
Acesse o provedor do seu domínio (como a Cloudflare) e adicione um registro A:
git.yourdomain.com->你的 VPS IP- Status do proxy: Desativado (somente DNS), para que o Caddy solicite o SSL automaticamente.
Vamos usar o Docker Compose para subir o Gitea e o Caddy (como proxy reverso) com um único comando.
mkdir -p ~/gitea/{data,config,caddy/data,caddy/config}
cd ~/gitea
Crie um arquivo docker-compose.yml:
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3 # 个人使用 SQLite 足够,无需独立数据库容器
restart: always
networks:
- gitea
volumes:
- ./data:/data # 持久化数据
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
# - "3000:3000" # Web端口,通过 Caddy 代理,无需对外暴露
- "2222:22" # SSH端口,映射到主机的 2222,避免冲突
caddy:
image: caddy:latest
container_name: caddy
restart: always
networks:
- gitea
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
- ./caddy/config:/config
Crie o ./caddy/Caddyfile e escreva a configuração do seu domínio:
git.yourdomain.com {
reverse_proxy server:3000
}
Observação: Substitua
git.yourdomain.compelo seu domínio real.
docker compose up -d
Acesse https://git.yourdomain.com e você verá o assistente de instalação. Basta alterar os itens principais abaixo e manter o restante nos valores padrão:
- Configuração do banco de dados: Mantenha o SQLite3.
- Configurações gerais:
- Nome do site: Dê um nome ao seu repositório, como "My Private Git".
- Porta do serviço SSH: Altere para 2222 (muito importante! Porque no Docker mapeamos a porta 22 interna para a 2222 externa).
- Domínio do serviço SSH: Informe o seu domínio
git.yourdomain.com. - URL base:
https://git.yourdomain.com/.
- Configuração da conta de administrador: Não deixe em branco; crie uma conta de administrador.
Clique em "Instalar agora" e, alguns segundos depois, seu serviço Git privado estará no ar!
Muitas pessoas travam no clone via SSH ao auto-hospedar o Git, porque a porta 22 da VPS geralmente está ocupada pelo login SSH. No docker-compose.yml, mapeamos a porta SSH do Gitea para a 2222.
Seu endereço de clone ficará assim:
ssh://[email protected]:2222/username/repo.git
Observe o :2222 extra na URL.
Se você não quiser digitar o número da porta toda vez, pode configurar no arquivo ~/.ssh/config do seu computador local:
Host git.yourdomain.com
HostName git.yourdomain.com
User git
Port 2222
IdentityFile ~/.ssh/id_rsa
Depois de configurar, você pode clonar como faz no GitHub (sem adicionar a porta manualmente):
git clone [email protected]:username/repo.git
O Gitea 1.19+ introduziu o Actions, com sintaxe compatível com o GitHub Actions. Para ativá-lo, precisamos adicionar um Runner.
Adicione o serviço runner em services:
runner:
image: gitea/act_runner:latest
container_name: act_runner
restart: always
depends_on:
- server
volumes:
- ./runner-data:/data
- /var/run/docker.sock:/var/run/docker.sock
environment:
- GITEA_INSTANCE_URL=http://server:3000
- GITEA_RUNNER_REGISTRATION_TOKEN=<你的Token>
- GITEA_RUNNER_NAME=vps-runner
- Acesse o painel de administração do Gitea -> Actions -> Runners -> Create new Runner e copie o Token.
- Substitua o
<你的Token>acima. - Reinicie o contêiner:
docker compose up -d.
Agora você pode criar o .gitea/workflows/demo.yaml no seu repositório e começar a experimentar os builds automáticos!
Os dados ficam todos no diretório ~/gitea/data, incluindo o arquivo do banco de dados (sqlite.db) e os arquivos dos repositórios Git.
Comando de backup:
# 打包整个 data 目录
tar -czvf gitea-backup-$(date +%Y%m%d).tar.gz ~/gitea/data
Recomenda-se combiná-lo com o Rclone para enviar automaticamente ao armazenamento de objetos na nuvem, garantindo que os dados estejam totalmente seguros.
Com Docker + Gitea, usando menos de 500 MB de memória, temos uma plataforma de hospedagem de código privado completa, comparável ao GitHub.
- Segurança: O código está nas suas mãos, sem se preocupar com mudanças nos termos de serviços de terceiros.
- Velocidade: Com uma rede local ou uma VPS de qualidade, o push/pull de arquivos grandes é rapidíssimo.
- Tranquilidade: SQLite + Docker, com custo de manutenção praticamente zero.
Este é o melhor ponto de partida para cada desenvolvedor construir sua base de conhecimento pessoal e seu repositório de código.