Instalando o Gogs(git), Nginx, MariaDB no Linux Ubuntu/Mint

A Microsoft comprou o GitHub por US$ 7,5 Bilhões, e a internet ficou em polvorosa, você pode continuar usando o GitHub, segundo a Microsoft, ela irá manter o mesmo como está.

Existem diversas alternativas como GitLab e o BitBucket, também existem as opções de código aberto/livres que você pode instalar ai no seu servidor. O GitLab tem uma versão Community, o mesmo é escrito em Ruby e tem bastante recursos, em função dos muitos recursos ele exige pelo menos uma máquina com o mínimo de 4 GB de Ram, para servidores mais modestos nós temos disponivel o Gogs escrito em Golang, ele é simples mas atende todas as necessidades básicas para quem usa o GitHub e pode ser instalado ai no seu pc antigo com 512 MB de memória Ram.

Gogs – A painless self-hosted Git service


Neste tutorial vamos ver como instalar o Gogs no ubuntu, a partir do código fonte do Gogs, você também pode instalar o mesmo copiando os binários, mas se você assim como eu gosta de aprender as coisas a partir da base, abra ai seu bash e vamos nessa.

1- Instale o banco de dados MariaDB (mysql)

Para usar o Gogs com o MariaDB (mysql), é recomendado usar pelo menos a versão 10.2 do MariaDB, no momento(14/06/2018) que enscrevo este tutorial a versão que tem no repositório oficial do ubuntu é anterior a esta versão, portanto, irei instalar a partir do repositório oficial do MariaDB.

(caso seu ubuntu não seja o 18.04 nem o 16.04,  verifique no site do mariadb o repositório da sua distro)

#atualize os dados dos repositórios
sudo apt-get update
#instale o software que auxilia a adicionar novos repositórios
sudo apt-get install software-properties-common

#adicionando a chave do repositório mariadb
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

#[18.04] adicione o repositório, repositório abaixo para ubuntu 18.04
sudo add-apt-repository 'deb [arch=amd64] http://ftp.utexas.edu/mariadb/repo/10.3/ubuntu bionic main'
ou
#[16.04] adicione o repositório, repositório abaixo para ubuntu 16.04
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.3/ubuntu xenial main'

#atualize os dados dos repositórios novamente
sudo apt-get update
#instale o mariadb
sudo apt-get install mariadb-server
#no processo de instalação ele irá pedir a senha
#que você quer para o root do mariadb

#após o processo de instalação configure o mariadb,
#conforme explicado abaixo
sudo mysql_secure_installation

Após executar o comando mysql_secure_installation, ele irá pedir a senha do usúario do root informado na instalação do mariadb, após informar a senha ele irá perguntar se você deseja alterar a senha, diga  Não (N).  Nos próximos passos informe Sim (S) para todas as perguntas.

Crie um usúario git no mariadb, o mesmo terá privilégios no banco do Gogs

#acesse o banco de dados, informe a senha do root
mysql -u root -p
--crie o usúario git
--altere a senha abaixo para a senha desejada
CREATE USER 'git'@'localhost' IDENTIFIED BY 'senha';
--crie o banco de dados, é importante o character set está em utf8mb4
CREATE DATABASE gogs_production CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
--conceda permissão para o usúario git manipular o banco
GRANT ALL PRIVILEGES ON gogs_production.* TO 'git'@'localhost';
--grave a permissão
FLUSH PRIVILEGES;
--saia do mariadb
exit;

2- Instale o Nginx e o Git

 sudo apt-get install -y nginx git

Por enquanto não vamos mexer nas configuraçôes do nginx, vamos para os próximos passos.

3- Instalando o Gogs

Iremos criar um usúario no sistema chamado git, iremos colocar em sua pasta home, o executável da linguagem golang  (não iremos usar a do repósitorio do ubuntu que está algumas versões atrás, iremos usar do site oficial da linguagem).  Iremos colocar também na pasta home do usuário git os arquivos do programa gogs, bem como a  pasta de repósitorios, caso a gente precise alterar algo, saberemos que tudo está concentrado na pasta home do git.

Crie o usúario git no SO

#no bash, crie um usúario git
sudo adduser --disabled-login --gecos 'Gogs' git

Instale a linguagem golang

#log no usúario criado
sudo su - git

#crie uma pasta para instalar a golang, e acesse a mesma
mkdir local
cd local

#dowload go
#para saber a versão mais recente acesse https://golang.org/dl/
#no momento que faço este tutorial a versão stable é 1.10.3
wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
#extraia o arquivo baixado
tar zxvf go1.10.3.linux-amd64.tar.gz

#Configure o ambiente

cd ~
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc

Instale o gogs

#ainda logado com usúario git
#baixe e instale as dependências
go get -u github.com/gogs/gogs

# compile o programa principal
cd $GOPATH/src/github.com/gogs/gogs
go build

#ainda dentro do diretorio $GOPATH/src/github.com/gogs/gogs/
#crie o diretorio abaixo para customizar as configurações do gogs
mkdir -p custom/conf
#copie o arquivo de configuração
cp conf/app.ini custom/conf/

Configure o gogs

#abra o arquivo de configuraçao criado no passo anterior
nano custom/conf/app.ini

!! Na seção service você pode restringir o acesso externo, e a criação de novo usúarios, mudando a chave DISABLE_REGISTRATION para true somente o usúario administrador poderá criar novos usúarios, e mudando a chave REQUIRE_SIGNIN_VIEW para true somente usúarios logados terão acessos aos repositórios !!

Altere as seguintes linhas, nas seguintes sessões:

RUN_USER=git
...
[repository] seçao
ROOT=/home/git/gogs-repositories

[database] ;seçao -- altere a senha,para a senha criada para o usúario git do banco mariadb
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs_production
USER = git
PASSWD = senha

[service] ;seçao -- mude as duas chaves abaixo, para true
; Does not allow register and admin create account only
DISABLE_REGISTRATION = true
; User must sign in to view anything.
REQUIRE_SIGNIN_VIEW = true

Salve o arquivo com as teclas CTRL+x, e pressione S para confirmar

Vamos agora adicionar o Gogs a inicialização do sistema no init.d

#volte para a home do usúario git
cd ~
#copie o script que já vem preparado para o ubuntu(debian)
cp $GOPATH/src/github.com/gogs/gogs/scripts/init/debian/gogs ./gogs.init
#edite o mesmo
nano gogs.init

-mude essas duas linhas no inicio do arquivo de:

# Required-Start: $syslog $network
# Required-Stop: $syslog

para:

# Required-Start: $syslog $network mysql nginx
# Required-Stop: $syslog $local_fs

Mais embaixo no mesmo arquivo, informe o diretório para que o init.d possa encontrar o diretório de instalação do gogs mudando a linha WORKING_DIR para:

WORKINGDIR=/home/git/go/src/github.com/gogs/gogs

Salve o arquivo com as teclas CTRL+x, e pressione S para confirmar

Os próximos passos será feito com o seu usuário, faça logoff do usuário git e siga os próximos passos

#fazendo logoff do usuário git
exit
# mova o arquivo que editamos no passo anterior para a pasta dos scripts init
sudo mv /home/git/gogs.init /etc/init.d/gogs
#conceda permissão de execução ao mesmo
sudo chmod ug+x /etc/init.d/gogs
#e por fim habilite ele para que ele inicialize com o sistema
sudo update-rc.d gogs defaults 30 70

Vamos configurar agora o Nginx para que ele se comunique com o gogs:

!!Se você ja usava o nginx para outra coisa, você pode usar uma porta diferente da 80, mas se não usa, pode manter a porta 80 como iremos fazer neste passo!!

#apague o site padrão do nginx
#só apague se você não usa o nginx para outro serviço
#caso use para outro serviço, passe para o comando seguinte
sudo rm /etc/nginx/sites-enables/default

#vamos criar o arquivo do gogs no nginx
sudo nano /etc/nginx/sites-available/gogs

Cole o conteúdo abaixo no arquivo:

server {
    listen 80; #porta 80
    server_name git.example.com;

    location / {
        proxy_pass http://localhost:3000;
    }
}

Salve o arquivo com as teclas CTRL+x, e pressione S para confirmar

#crie um link da configuração criada, para o diretório
#de sites ativos do nginx
sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs

Vamos iniciar os serviços

#inicie o serviço do gogs
sudo service gogs start
#reinicie o serviço do nginx para que ele reconheça as novas configurações
sudo service nginx restart

Usando o seu browser, abra o endereço http://localhost, ou http://localhost:num_porta caso você tenha usando uma porta diferente de 80

Se essa for a primeira vez que acessa o gogs, será apresentado uma tela como essa para que o mesmo seja configurado:

Revise se os dados estão corretos, Database Type* deve está como MySql, na area  “Admin Account Settings”  informe o nome, email e a senha do usuário administrador. Após isto basta clicar em “Install Gogs”. Se você fez todos os passos corretamente o sistema irá configurar o banco de dados, e após isso irá exibir a tela inicial do sistema já com o seu usuário administrador logado.

Gogs Tela Inicial

 

Pronto, agora você já pode usar seu computador como servidor de repositórios git, crie as contas de usuários e grupos.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

code