Pular para o conteúdo principal

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

Primeira Configuração

  1. Acesse a interface web em http://3.208.54.208
  2. 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

  1. Settings > Organizations > Create Organization
  2. Organization Name: BITIO
  3. Visibility: Private
  4. 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:

  1. Gerar chave SSH (se não tiver):
ssh-keygen -t ed25519 -C "seu.email@bitio.com.br"
  1. Adicionar chave no Forgejo:

    • Settings > SSH / GPG Keys
    • Add Key
    • Colar conteúdo de ~/.ssh/id_ed25519.pub
  2. 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

  1. Via Interface Web:

    • New Repository
    • Owner: BITIO (organização)
    • Repository name: nome-do-projeto
    • Visibility: Private
    • Initialize: com README, .gitignore, License
  2. 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ívelPermissões
ReadClone, pull, visualizar código
WriteRead + push para branches não protegidas
AdminWrite + configurações, webhooks, delete

Branch Protection

Para branches principais (main/develop):

  1. Settings > Branches
  2. Add Rule
  3. Branch name: main
  4. 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