Introduzione

Quando si tratta di hosting Git, sono disponibili diverse opzioni. GitHub, Gitlab e Bitbucket sono soluzioni popolari, ma eseguire il proprio server Git è un'alternativa che vale la pena considerare.

La configurazione di un server Git consente di creare repository privati ​​senza le restrizioni dei piani gratuiti dei provider.
In questa guida, spieghiamo come impostare un server Git nudo su Linux. Questa configurazione è buona se hai pochi repository e i collaboratori sono esperti di tecnologia. In caso contrario, si dovrebbe prendere in considerazione l'installazione di un self-hosted applicazione git come Gitea, Gogs o Gitlab .

Il server Git può essere configurato su qualsiasi macchina Linux remota o anche sul tuo sistema locale.

Configurare il server Git

Il primo passo è installare Git sul tuo server.

Se stai usando Debian o Ubuntu, aggiorna l'indice del pacchetto locale e installa git eseguendo i seguenti comandi come utente sudo:

sudo apt update && sudo apt install git

Per installare il pacchetto git su server CentOS digitare:

sudo yum install git

Successivamente, crea un nuovo utente che gestirà i repository Git:

sudo useradd -r -m -U -d /home/git -s /bin/bash git

La home directory dell'utente è impostata su /home/git. Tutti i repository saranno archiviati in questa directory. Non abbiamo impostato una password per l'utente "git", l'accesso sarà possibile solo usando i tasti ssh.

Passa all'utente "git" usando il comando su:

sudo su - git

Eseguire i comandi seguenti per creare la directory SSH e impostare le autorizzazioni corrette:

mkdir -p ~/.ssh && chmod 0700 ~/.ssh

Creare un file denominato ~/.ssh/authorized_keys che conterrà le chiavi SSH degli utenti autorizzati:

touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys

Questo è tutto. L'installazione del server è completa. Ora sei pronto per creare il tuo primo repository Git.

Eseguire il comando seguente per avviare un nuovo repository vuoto:

git init --bare ~/projectname.git

Puoi nominare la directory come desideri. L'importante è creare il repository nella home directory dell'utente git.

Initialized empty Git repository in /home/git/projectname.git/

Configurare il repository Git locale

Per poter inviare le modifiche git locali al server Git, devi aggiungere la chiave pubblica SSH dell'utente locale al file authorized_keys dell'utente "git" remoto.

Se hai già una coppia di chiavi SSH creata sul tuo sistema locale, puoi visualizzare la chiave pubblica digitando:

cat ~/.ssh/id_rsa.pub

L'output dovrebbe essere simile al seguente:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== [email protected]

Se viene visualizzato un messaggio di errore No such file or directory, significa che non è stata generata una coppia di chiavi SSH sul computer locale.

Per generare una nuova coppia di chiavi SSH, utilizzare il comando seguente:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Copia l'output dal comando cat sopra e torna alla console del server Git.

Sul server, apri l'editor di testo e incolla la chiave pubblica che hai copiato dal tuo computer locale nel file ~/.ssh/authorized_keys:

vi /home/git/.ssh/authorized_keys

L'intero testo della chiave pubblica dovrebbe essere su un'unica riga.

Supponiamo che il pacchetto Git sia già installato sul tuo computer locale. In caso contrario, installarlo come spiegato nelle sezioni precedenti.

Se si dispone di un progetto non verificato esistente, accedere alla directory del progetto. Se stai iniziando da zero, crea la directory del progetto e naviga verso di essa:

cd /path/to/local/project

Inizializza un repository git:

git init .

L'ultimo passaggio è aggiungere git remote al repository locale:

git remote add origin [email protected]_server_ip:projectname.git

Non dimenticare di sostituire git_server_ip con l'hostname o l'indirizzo IP del server Git.

Per verificare che tutto sia configurato correttamente, creare un file di prova:

touch test_file

Aggiungi le modifiche all'area di gestione temporanea:

git add .

Conferma le modifiche:

git commit -m "descriptive message"

Invia le modifiche al repository locale in un repository remoto:

git push -u origin master

Se tutto è impostato correttamente, l'output dovrebbe assomigliare a questo:

Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git_server_ip:projectname.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

Per aggiungere un nuovo collaboratore, basta copiare la sua chiave SSH pubblica nel file ~/.ssh/authorized_keys dell'utente "git" .

È possibile utilizzare gli stessi passaggi per creare nuovi repository. È importante notare che il repository remoto deve esistere prima di aggiungere git remote al repository locale.

Conclusione

In questo tutorial, ti abbiamo mostrato come configurare il tuo server Git privato e creare repository.