Γιατί gitea
Με την microsoft να αγοράζει το github πολύς κόσμος αναζητάει μια ανεξάρτητη λύση για τα repositories του. Προσωπικά επέλεξα το gitea ως μια εύκολη και ελαφριά λύση που μπορεί να τρέξει με ελάχιστες απαιτήσεις σε hardware όπως ένα Raspbery pi ή σε ενα μικρό instance στην scaleway.
Εγκατάσταση του gitea
Η εγκατάσταση του gitea είναι απλή καθώς είναι τα πάντα μέσα σε ένα εκτελέσιμο αρχείο το οποίο θα βρούμε εδώ. Διαλέγουμε την τελευταία έκδοση και την σωστή αρχιτεκτονική και επαληθεύουμε αν είναι το σωστό.
wget -O gitea https://dl.gitea.io/gitea/1.8.2/gitea-1.8.2-linux-amd64
wget -O gitea https://dl.gitea.io/gitea/1.8.2/gitea-1.8.2-linux-amd64.asc
gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.8.2-linux-amd64.asc gitea-1.8.2-linux-amd64
chmod +x gitea
sudo mv gitea /usr/local/bin/gitea
Κάνουμε ένα γρήγορο έλεγχο αν τρέχει σωστά
/usr/local/bin/gitea web
και τερματίζουμε με control-C
.
Ενσωματωση του gitea στο σύστημα
Θα φτιάξουμε πρώτα ένα χρήστη με όνομα git
adduser \
--system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git
και κάποιους κατάλογους
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
Μετά την εγκατάσταση καλό είναι να αυξήσουμε την ασφάλεια του συστήματος με τις παρακάτω εντολές
chmod 750 /etc/gitea
chmod 644 /etc/gitea/app.ini
Δημιουργία service με το systemd
Θα φτιάξουμε ένα αρχείο /etc/systemd/system/gitea.service
με τα παρακάτω περιεχώμενα
Και θα ενεργοποιήσουμε και ξεκινήσουμε την υπηρεσία
sudo systemctl enable gitea
sudo systemctl start gitea
Ρύθμιση του gitea
Θα ανοίξουμε το αρχείο /etc/gitea/app.ini
και θα κάνουμε τις αλλαγές που θέλουμε. Μερικές απο τις αλλαγές που έκανα (έχει περάσει κάμποσος καιρός και πιθανά να έχω ξεχάσει κάτι).
[repository]
ROOT = /home/git/gitea-repositories
[server]
SSH_DOMAIN = archimedes.secrethost.gr
DOMAIN = archimedes.secrethost.gr
HTTP_PORT = 3000
ROOT_URL = http://archimedes.secrethost.gr/
[service]
DISABLE_REGISTRATION = true
Άλλαζα την πόρτα που μιλάει απο την 80 στην 3000, ώστε να μπορέσω να το βάλω πίσω από ένα web server.
Πίσω από τον nginx
Οι βασικές ρυθμίσεις για τον server είναι οι παρακάτω;
server {
server_name archimedes.secrethost.gr;
location / {
proxy_pass http://localhost:3000;
}
}
Το πλήρες αρχείο είναι λίγο ποιο πολύπλοκο γιατί έχει πιστοποιητικά απο το let’s encrypt.
Το αποτέλεσμα
Πολύ εύκολα και με μικρό κόστος φτιάξαμε την δική μας λύση για να αντικαταστήσουμε το github. Το Gitea είναι πανάλαφρο και εξαιρετικά γρήγορο ακόμα και σε server με ελάχιστη δύναμη. Με issue tracker και wiki σε κάθε αποθετήριο αντικαθιστά άψογα τις λύσεις του εμπορίου.