Gogs - Open Source Self-Hosted Git Server
Gogs - Introdução
editarO Gogs é uma ferramenta Open Source de serviço de Git (um dos vários tipos de VCS - Version Control System existentes) que foi criada com o intuito de ser uma opção de fácil utilização, instalação, manutenção, leve, cross-platform e self-hosted. Criado com a linguagem de programação Go da Google sua sigla vem de Go Git Service - Gogs.
Por ter sido feito em Go e devido a linguagem ser de distribuição em multiplataformas (e devido a binários independentes), o Gogs consegue funcionar em qualquer sistema que consiga compilar Go, entre eles: Linux, Windows, Mac OS X e ARM, sendo este um diferencial do Gogs.
Self-Hosted
editarO Self-Hosted significa ter um serviço ou sistema no qual o administrador tem controle total sobre a ferramenta, devido a sua hospedagem ser feita em uma máquina que está em posse do administrador, conseguindo então gerenciar a instalação, execução e demais tarefas envolvidas, além de ter controle nos arquivos, nos usuários, níveis de segurança, permissões, entre outros. Mas fica em responsabilidade do administrador, também, toda a manutenção, eventuais updates e problemas que possam surgir durante o uso do serviço, para tal o Gogs oferece um Fórum para usuários.
Vantagens
editar- Total controle sobre o serviço
- Privacidade - Controle da base de usuários e possibilidade de repositório de privados;
- Segurança - Realizar o controle de papéis de um usuário dentro de um repositório;
- Independência - Esse é um quesito importante, já que o serviço independe de internet, por exemplo, para estar disponível;
- Gratuidade de Software - Escrita na linguagem de programação de código aberto Go, da Google, esse serviço é gratuito, totalmente Open Source;
- Portabilidade/Multiplataforma - o Gogs roda em Linux, Windows e Mac;
- Facilidades (Flexibilidade) - O Gogs pode ser executado, instalado e rodar em vários tipos de instâncias e em vários lugares, por ser leve é muito fácil ter o seu próprio git;
- Integração - Possibilidade de integração com alguns outros serviços (por exemplo, WebHook para integração de Slack ou para envio de e-mail). O Gogs também fornece integração com alguns projetos facilmente, como o Taiga.io, por exemplo, facilitando e muito o seu workflow;
Desvantagens
editar- Custo de Hardware - Para a hospedagem do serviço é necessário um servidor. Para isso há o custo de uma máquina física ou virtual;
- Manutenção - Atualizações e upgrades são feitos manualmente tendo que ser parado o serviço.
Instalação
editarO Gogs, como os seus desenvolvedores o anunciam, é um sistema de fácil instalação e nesse tutorial vamos ensinar como você pode instalar e ter um servidor git Gogs rodando em sua máquina para os mais diversos projetos.
Requerimentos de Hardware
editar- Um Raspberry Pi ou um Droplet do Digital Ocean já tem o que é necessário para que você consiga rodar sua instância do Gogs. Há como também rodar em uma Docker de 64MB como um CaaS (Container as a Service)
- Uma CPU dual-core com 512MB de RAM é o mínimo para uma instância que será utilizada por times.
- CPUs com mais cores são necessárias quando o time que usufruirá da instância for grande, entretanto o uso de RAM permanece baixo.
Pré-requisistos
editar- Banco de Dados (Necessário escolher um dos listados abaixo):
- MySQL: Versão >= 5.5.3
- PostgreSQL
- MSSQL
- TiDB (Experimental, conexão via protocolo MySQL)
- ou Nenhum com SQLite3
- LEMBRE-SE: Use scripts/mysql.sql para criar um database chamado gogs (default). Se você criá-lo manualmente certifique-se que o encoding é utf8mb4.
- Git (bash)
- Versão >= 1.7.1 para ambos servidor e cliente
- No Windows é recomendado sempre a última Versão
- Servidor SSH funcional
- Ignore se você for usar apenas o protocolo HTTP/HTTPS ou se irá usar o builtin SSH Server (Servidor SSH pré-instalado)
- É recomendado o Cygwin OpenSSH ou Copssh no Windows
Há 5 formas de instalar o Gogs:
- Instalar pelos binários
- Instalar pela source
- Instalar por pacotes
- Instalar com o Vagrant
- Instalar em um Container Docker
Instalando em um Container Docker
editarEsta é uma das maneiras mais fáceis de instalar o Gogs mas antes de seguir para instalação certifique-se de ter o Docker instalado em sua máquina. A seguir como instalar em uma máquina linux Ubuntu:
1. Instale os seguintes pacotes para permitir ao apt usar repositórios sobre o protocolo HTTPS:
$ sudo apt-get install apt-transport-https
$ sudo apt-get install ca-certificates
$ sudo apt-get install curl
$ sudo apt-get install software-properties-common
2. Adicione a chave GPG oficial do Docker
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Verifique que o 'fingerprint' da chave é 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88.
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
ATENÇÃO: O fingerprint da chave pode mudar devido a atualizações, sempre verique aqui sua chave.
3. Use o seguinte comando para configurar o repositório da versão stable (estável):
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
ATENÇÃO: certifique-se da sua arquitetura, no exemplo acima o repositório adicionado está atrelado a arquitetura '64 bits'.
4. Atualize o índice de pacotes do apt e por fim instale o Docker
$ sudo apt-get update
$ sudo apt-get install docker docker.io
5. Depois de instalado a Docker é preciso baixar o Gogs, é possível baixar a última versão estável do Gogs pela Docker (recomendado), basta rodar o simples comando
docker pull gogs/gogs
Caso você tenha baixado o projeto direto pelo Github do Gogs será preciso criar o container e executar os binários descompactados.
6. Após o termino do download da imagem do Gogs para Docker execute o seguinte comando para rodar o container:
docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
7. O Gogs já está executando, agora basta acessar o endereço http://127.0.0.1:10080/ ou http://localhost:10080/, nesse primeiro momneto será solicitado a configuração do repositório, no Tipo de Banco de Dados configure o SQLite, é a forma mais simples e a que vamos usar nesse tutorial, mude o endereço do campo URL do Aplicativo de http://localhost:3000/ para http://127.0.0.1:10080/ e o campo Porta SSH de 22 para 10022. Agora basta clicar no fim da página em Instalar Gogs para finalizar as configurações.
OBS: Caso queira modificar alguma configuração do gogs procure a pasta custom/conf/app.ini as configurações ficam neste arquivo app.ini, neste link você consegue ver como configurar seu Gogs.
8. Agora, com o Gogs configurado, é preciso criar uma conta de usuário, que será assumida automaticamente pelo Gogs como uma conta de administrador. Acesse http://127.0.0.1:10080/user/sign_up e crie um usuário com senha e e-mail, confirme a senha e o captcha solicitado. Após criada a conta do administrador o Gogs te redirecionará para a página de login, insira os dados e o Gogs te redirecionará para a sua dashboard. Pronto, seu Gogs já está configurado e executando, basta usá-lo!
Instalando pelos binários
editarOutra forma de realizar a instalação do Gogs através de binário. A seguir como instalar em uma máquina linux Ubuntu:
1. Antes de iniciar, certifique-se que já tenha um descompactador instalado (exemplo, unzip)
$ sudo apt-get install unzip
2. Faça o download do arquivo (a versão utilizada para esse tutorial foi a v0.10.8 para Ubuntu 64 bits)
$ wget https://dl.gogs.io/0.10.8/linux_amd64.zip
3. Realize a descompactação do arquivo
$ unzip linux_amd64.zip
4. Acesse a pasta que foi descompactada (nesse caso chamada de gogs/)
$ cd gogs/
5. Para execução do Gogs rode o comando
$ ./gogs web
6. Pronto! A partir de agora o Gogs já está sendo executado. Para realizar a primeira configuração basta acessar http://0.0.0.0:3000.