Gitea και πείτε αντιο στο github

Γιατί 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 σε κάθε αποθετήριο αντικαθιστά άψογα τις λύσεις του εμπορίου.

4 «Μου αρέσει»

Μια hosted λύση όπως το GitHub με μια self hosted όπως το gitea εδώ, λόγω αυτής της διάφορας δεν θα μπορούσε να συγκριθεί, ιδιαίτερα για τις ανάγκες προγραμματιστών που θελουν να έχουν δημοσιευμένα τα προγράμματα τους χωρίς δικό τους server. Καλύτερη σύγκριση θα ήταν με το Gitlab η ίσως το bitbucket(?)

2 «Μου αρέσει»

To gitea μια χαρά καλύπτει τις ανάγκες ενός προγραμματιστή ή μιας εταιρείας. Το github και το bitbucket , αλλά και το gitlab, είναι υπηρεσίες και σαν κόστος, αν θέλεις να τις χρησιμοποιήσεις επί πληρωμή είναι ακριβότερες.

Μπορεί να συγκριθεί με το Gitlab, το gogs (που είναι κλώνος του), το gitbucket το phabricator και πολλά άλλα. Αυτό που μου αρέσει στο github είναι η ευκολία εγκατάστασης του, η ταχύτητα του (είναι γραμμένο σε go), η ελάχιστη συντήρηση που θέλει και οι ελάχιστες απαιτήσεις σε υπολογιστική ισχύ.

Το Gitlab όταν είχα προσπαθήσει να το εγκαταστήσω είχα φάει τα μούτρα μου, παρότι καλώς γνώστης του RoR. Βέβαια για να λέμε όλα, αυτό ήταν πριν χρόνια και πριν την επανάσταση των containers. Σήμερα πρέπει να είναι πολύ εύκολο.

Σαν κάτι που μπορείς να το βάλεις σε ένα raspberry, είναι πιστεύω μια καλή λύση.

Αν φτάσεις στο σημείο να περιορίζεσαι από το free πακέτο του GitLab μάλλον είσαι μεγαλύτερης κλίμακας από έναν απλό προγραμματιστή. Κανείς δεν είπε ότι δεν καλύπτει τις ανάγκες ενός προγραμματιστή το gitea. Αλλά το να έχεις τον κώδικα σου σε μια όχι self hosted πλατφόρμα ανάμεσα στα πολλά κακα έχει ένα καλό, έχεις πρόσβαση σε περισσότερο κόσμο. Μια self hosted λύση θα έπρεπε να συγκρίνεται με self hosted λύσεις και το GitHub δεν πλασάρει αυτό στον απλό προγραμματιστή αλλά το γεγονός ότι όλοι έχουν GitHub και θα παίξεις το παιχνίδι με τα αστέρια και την δημοσιότητα.
Προσωπικά το GitHub το χρησιμοποιώ όχι γιατί δεν υπάρχει κάτι καλύτερο, αλλά γιατί ο περισσότερος κόσμος αυτή τη στιγμή έχει πρόσβαση εκεί για contribute. Αυτό έχει δείξει η εμπειρία μου που παράλληλα διατηρώ mirrored και σε άλλες υπηρεσίες.

Η σύγκριση με το github είναι στο κατά πόσο κάνεις την δουλεία σου ή όχι. Πέραν των θετικών που μπορεί να έχει το github όμως, από την στιγμή που πέρασε στον έλεγχο της Microsoft, τουλάχιστον για μένα, θα πρέπει να ελαχιστοποιηθεί η χρήση του.

Τώρα απλά υπάρχουν κάποια πράγματα, που είναι πειραματικά, ή είναι κακής ποιότητας, και δεν θέλω να είναι προσβάσιμα από όλο τον κόσμο. Από τον να πληρώνω την Microsoft, προσωπικά τουλάχιστον, προτιμώ να πληρώνω την scaleway. Και να έχω κάποια απο τα αποθετήρια μου εκεί, και να επιλέγω αν θα είναι δημόσια ή όχι.

Από εκεί και μετά, ο καθένας επιλέγει, ανάλογα με τις ανάγκες του και τις ιδιοτροπίες του, το τι θέλει προσμετρώντας τα θετικά και τα αρνητικά κάθε λύσης. Εξάλλου, αν το να χρησιμοποιείς κάτι είναι μονόδρομος, και πρέπει να έχουμε τα πάντα στο github, τότε γιατί να μπαίνουμε και στον κόπο να μην έχουμε και το λειτουργικό μονόδρομο της Microsoft;

Η αλήθεια είναι πως τα πράγματα που δεν θες να είναι προσβάσιμα σε κόσμο εντάσσονται στο use case του self hosting.
Σχετικά με τα σενάρια στα οποία χρειάζεται να είναι προσβάσιμος ο κώδικας σε άλλους contributors, προφανώς και η ιστορία με τη Microsoft είναι κακός οιωνός. Μέχρι όμως να μεταφερθεί ο κόσμος σε εναλλακτικές λύσεις ή ακόμη καλύτερα να υπάρξει ένας τρόπος αναζήτησης/indexing σε όλες τις πλατφόρμες ώστε να μη κερδίζει το GitHub λόγω δημοφιλίας και user reach, ένα καλό πλάνο είναι να συντηρείς τον κώδικα σου σε κάποια ελεύθερη υπηρεσία ή server και να κρατάς ένα mirror σε υπηρεσίες σαν το GitHub.

1 «Μου αρέσει»

Και κατά φωνή σήμερα στο bloomberg :innocent:

Open-Source ‘Great Satan’ No More, Microsoft Wins Over Skeptics

Microsoft is relying on GitHub and experts in rival programming tools to win back developers

https://www.bloomberg.com/news/articles/2019-06-03/open-source-great-satan-no-more-microsoft-wins-over-skeptics

Ισως αν το ακούσουμε αρκετές φορές να το πιστέψουμε κιόλας.

Ποιος είπε ότι σε self hosting δεν μπορείς να μοιράζεσαι τα project σου με άλλους ?
Μπορείς να τρέχεις τον δαίμονα της dataplicity
και μέσα από το domain του wormhole μπορεί να βγει το git προς τον έξω κόσμο…
Και όλα αυτά εντελως δωρεάν!!
Υ.Γ οποίο project χρειάζεται να γίνει private μπορεί να αλλάξει πολύ εύκολα μέσα από το web interface του gogs/gitea .
Υ.Γ.2 Το gogs δεν είναι το original project και το gitea ο κλωνος?

Ναι ισχύει και μεταξύ τους δεν υπάρχει καθαρός νικητής.

Όντως το gogs είναι πιο σταθερό και secure , ενώ το gitea είναι πιο πλούσιο σε features, ενώ παράλληλα πιο ταχέως αναπτυσσόμενο …