Configuração do Forgejo Git Server
Visão Geral
O Forgejo é uma alternativa self-hosted ao GitHub/GitLab, fornecendo um servidor Git completo com interface web, controle de acesso, issues, pull requests e muito mais.
🚀 Acesso Inicial
URL de Acesso
- Web Interface: http://3.208.54.208
- SSH Clone:
git@3.208.54.208:2222
Primeira Configuração
- Acesse a interface web em http://3.208.54.208
- Será direcionado para o setup inicial
⚙️ Configuração do Setup Wizard
1. Configuração do Banco de Dados
Database Type: PostgreSQL
Host: forgejo-db:5432
Username: forgejo
Password: forgejo123
Database Name: forgejo
SSL Mode: Disable
2. Configurações Gerais
Site Title: BITIO Git Server
Repository Root Path: /data/git/repositories
Git LFS Root Path: /data/lfs
Run User: git
SSH Server Domain: 3.208.54.208
SSH Port: 2222
HTTP Port: 3000
Application URL: http://3.208.54.208/
Log Path: /data/forgejo/log
3. Configurações Opcionais
Email Settings (Recomendado)
SMTP Host: seu-smtp.com
SMTP Port: 587
From: git@bitio.com.br
Username: sua-conta-smtp
Password: sua-senha-smtp
Enable TLS: true
Server and Third-Party Service Settings
Enable Local Mode: true
Disable Gravatar: false
Enable Federated Avatar Lookup: true
Enable OpenID Sign-In: false
Disable Self-Registration: true (recomendado para uso corporativo)
Enable CAPTCHA: true
Require Sign-In to View Pages: false
Default Branch Name: main
👤 Configuração do Administrador
Primeira Conta de Admin
Admin Username: admin
Password: [senha forte]
Confirm Password: [mesma senha]
Email Address: admin@bitio.com.br
⚠️ Importante: Esta será sua conta principal de administração.
🔧 Configurações Pós-Setup
1. Configurações de Site
Vá para Site Administration > Configuration:
Repository Settings
Default Branch: main
Default Private: true (recomendado para projetos corporativos)
Max Creation Limit: 100 per user
Disable HTTP Git: false
Enable Git LFS: true
Security Settings
Min Password Length: 8
Password Complexity: true
Enable Two-Factor Authentication: true
Login Attempts: 5
Login Attempt Ban Length: 10 minutes
2. Organizações e Equipes
Criar Organização BITIO
- Settings > Organizations > Create Organization
- Organization Name: BITIO
- Visibility: Private
- Description: Repositórios do projeto BITIO
Configurar Equipes
Equipe: Developers
Permissions: Write
Members: [adicionar desenvolvedores]
Equipe: DevOps
Permissions: Admin
Members: [adicionar administradores]
3. Webhooks e Integrações
Webhook para CI/CD (Exemplo)
Payload URL: https://seu-ci.com/webhook
Content Type: application/json
Secret: [token secreto]
Events: Push, Pull Request
🔐 Configuração SSH
Setup de Chaves SSH
No servidor (já configurado):
# Chave SSH já configurada durante deploy
ls -la ~/.ssh/
# authorized_keys contém a chave pública
Para usuários desenvolvedores:
- Gerar chave SSH (se não tiver):
ssh-keygen -t ed25519 -C "seu.email@bitio.com.br"
-
Adicionar chave no Forgejo:
- Settings > SSH / GPG Keys
- Add Key
- Colar conteúdo de
~/.ssh/id_ed25519.pub
-
Testar conexão:
ssh -T git@3.208.54.208 -p 2222
Configuração Git Local
# Configurar Git globalmente
git config --global user.name "Seu Nome"
git config --global user.email "seu.email@bitio.com.br"
# Configurar SSH para usar porta 2222
cat >> ~/.ssh/config << EOF
Host bitio-git
HostName 3.208.54.208
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519
EOF
📂 Gestão de Repositórios
Criar Repositório
-
Via Interface Web:
- New Repository
- Owner: BITIO (organização)
- Repository name: nome-do-projeto
- Visibility: Private
- Initialize: com README, .gitignore, License
-
Via Git CLI:
# Criar repositório local
mkdir meu-projeto && cd meu-projeto
git init
echo "# Meu Projeto" >> README.md
git add . && git commit -m "Initial commit"
# Adicionar remote (usando SSH config)
git remote add origin bitio-git:BITIO/meu-projeto.git
git push -u origin main
Migrar Repositório Existente
# Clonar repositório original
git clone --mirror https://github.com/usuario/repo-original.git
# Adicionar novo remote
cd repo-original.git
git remote set-url --push origin bitio-git:BITIO/repo-migrado.git
# Push completo
git push --mirror
🔒 Controle de Acesso
Níveis de Permissão
| Nível | Permissões |
|---|---|
| Read | Clone, pull, visualizar código |
| Write | Read + push para branches não protegidas |
| Admin | Write + configurações, webhooks, delete |
Branch Protection
Para branches principais (main/develop):
- Settings > Branches
- Add Rule
- Branch name: main
- Protections:
- Restrict pushes
- Require pull request reviews
- Dismiss stale reviews
- Require status checks
📊 Monitoramento e Logs
Logs de Aplicação
# Via Docker
docker logs forgejo -f --tail 100
# Logs internos do Forgejo
ssh ubuntu@3.208.54.208 'tail -f /mnt/forgejo_data/forgejo/data/log/forgejo.log'
Métricas de Uso
- Admin Panel > System Status
- Repository Statistics
- User Activity Logs
🚀 Operações Comuns
Backup Manual
# Backup de dados (no servidor)
sudo tar -czf forgejo-backup-$(date +%Y%m%d).tar.gz -C /mnt/forgejo_data forgejo/
# Backup de banco de dados
docker exec forgejo-db pg_dump -U forgejo forgejo > forgejo-db-backup-$(date +%Y%m%d).sql
Atualização do Forgejo
# No servidor
cd /mnt/forgejo_data/forgejo
docker compose pull
docker compose down
docker compose up -d
Restart de Serviços
# Restart completo
cd /mnt/forgejo_data/forgejo && docker compose restart
# Restart apenas Forgejo
docker restart forgejo
⚠️ Troubleshooting
Problemas de SSH
# Verificar se SSH está funcionando
ssh -T git@3.208.54.208 -p 2222 -v
# Se der timeout, verificar firewall
sudo ufw status | grep 2222
Problemas de Banco
# Verificar conexão com PostgreSQL
docker exec forgejo-db psql -U forgejo -d forgejo -c "SELECT version();"
Espaço em Disco
# Verificar uso do volume
df -h /mnt/forgejo_data
# Limpar logs antigos
docker exec forgejo find /data/log -name "*.log" -mtime +30 -delete