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.
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] https://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] https://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 https://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 https://localhost, ou https://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.
Pronto, agora você já pode usar seu computador como servidor de repositórios git, crie as contas de usuários e grupos.