Quando si tratta di hosting Git, hai un certo numero di opzioni disponibili. GitHub, Gitlab e Bitbucket sono soluzioni popolari, ma eseguire il proprio server Git è un’alternativa che vale la pena considerare.
Impostare un server Git permette di creare repository privati senza le restrizioni dei piani gratuiti dei provider.
In questa guida, spiegheremo come impostare un server Git su Linux. Questa configurazione è buona se avete pochi repository e i collaboratori sono esperti di tecnologia. Altrimenti, dovresti considerare l’installazione di un’applicazione git self-hosted come Gitea, Gogs, o Gitlab.
Il server Git può essere impostato su qualsiasi macchina Linux remota o anche sul tuo sistema locale.
Impostare il server Git #
Il primo passo è installare Git sul tuo server.
Se stai usando Debian o Ubuntu, aggiorna l’indice dei pacchetti locali e installa git eseguendo i seguenti comandi come utente sudo:
sudo apt update && sudo apt install git
Per installare il pacchetto git sui server CentOS digita:
sudo yum install git
In seguito, creare 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 memorizzati sotto questa directory. Non abbiamo impostato una password per l’utente “git”, il login sarà possibile solo usando le chiavi ssh.
Passa all’utente “git” usando il comando su
:
sudo su - git
Esegui i seguenti comandi per creare la directory SSH e impostare i permessi corretti:
mkdir -p ~/.ssh && chmod 0700 ~/.ssh
Creare un file chiamato ~/.ssh/authorized_keys
che conterrà le chiavi SSH degli utenti autorizzati:
touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
Ecco fatto. La configurazione del server è completa. Ora sei pronto a creare il tuo primo repository Git.
Esegui il seguente comando per avviare un nuovo repository vuoto:
git init --bare ~/projectname.git
Puoi nominare la directory come vuoi. L’importante è creare il repository sotto la home directory dell’utente “git”.
Initialized empty Git repository in /home/git/projectname.git/
Configurazione del repository Git locale #
Per essere in grado di spingere le modifiche git locali al server Git dovrai aggiungere la chiave pubblica SSH del tuo utente locale al file authorized_keys
dell’utente “git” remoto.
Se avete già una coppia di chiavi SSH creata sul vostro sistema locale, potete 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 ottieni un messaggio di errore che dice No such file or directory
, significa che non hai una coppia di chiavi SSH generate sulla tua macchina locale.
Per generare una nuova coppia di chiavi SSH usa il seguente comando:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Copia l’output del comando cat
sopra e torna alla console del server Git.
Sul server, apri il tuo editor di testo e incolla la chiave pubblica che hai copiato dalla tua macchina locale nel file ~/.ssh/authorized_keys
:
sudo nano /home/git/.ssh/authorized_keys
L’intero testo della chiave pubblica dovrebbe essere su una sola riga.
Si presume che il pacchetto Git sia già installato sulla tua macchina locale. Se non lo è, installatelo nello stesso modo spiegato nelle sezioni precedenti.
Se avete un progetto esistente non revisionato, navigate nella directory del progetto. Se stai iniziando da zero, crea la directory del progetto e naviga verso di essa:
cd /path/to/local/project
Inizializzare un repository git:
git init .
L’ultimo passo è aggiungere il git remoto al tuo repository locale:
git remote add origin git@git_server_ip:projectname.git
Non dimenticare di sostituire git_server_ip
con il tuo hostname o indirizzo IP del server Git.
Per verificare che tutto sia impostato correttamente, crea un file di prova :
touch test_file
Aggiungi le modifiche all’area di staging:
git add .
Commettere le modifiche:
git commit -m "descriptive message"
Spingere le modifiche del repository locale su un repository remoto:
git push -u origin master
Se tutto è impostato correttamente, l’output dovrebbe essere simile a questo:
Per aggiungere un nuovo collaboratore, basta copiare la sua chiave pubblica SSH nel file ~/.ssh/authorized_keys
dell’utente “git”.
Si possono usare gli stessi passi per creare nuovi repository. È importante notare che il repository remoto deve esistere prima di aggiungere il git remoto al tuo repository locale.
Conclusione #
In questo tutorial, ti abbiamo mostrato come impostare il tuo server Git privato e creare repository.