Gitea — Personal Repositori Untuk Git
Ada banyak alasan untuk memakai repositori seperti Github maupun Bitbucket tetapi untuk anda yang menginginkan repositori pribadi dan portabel ada baiknya anda melihat Gitea.
Repositori Portabel
Gitea dibangun memakai bahasa Go atau Golang yang memungkinkan untuk membangun aplikasi dengan produk akhir yaitu single binary release, artinya hanya ada satu file executeable yang dihasilkan dan keuntungan utama adalah kemudahan dalam pendistribusian maupun instalasi atau deployment.
Lalu apa hubungannya dengan repositori portabel?
Gitea release juga menyediakan binary release untuk mesin kecil seperti Raspberry Pi artinya dalam kasus tertentu seperti misalnya anda sering berpindah tempat dan membutuhkan repositori khusus ketika anda bekerja maka Gitea yang berjalan di Raspberry Pi bisa menjadi pilihan,
Bayangkan saja anda mencolokkan drive eksternal hanya saja drive eksternal ini bisa diakses melalui WiFi dan berfungsi khusus sebagai repositori.
Dari sudut pandang yang lain anda juga bisa “meng-upgrade” repositori dengan memindahkan data data dari Raspberry Pi ke mesin yg lebih besar tanpa banyak merubah instalasi dan prosesnya bisa semudah copy-paste.
Raspberry Pi + Gitea
Saya asumsikan anda mempunyai akses Raspberry Pi melalui SSH dan memakai Raspbian, kemudian ikuti langkah berikut untuk menginstall Gitea.
- Instal Git
pi@raspberrypi: $ sudo apt-get install git
2. Download Gitea untuk platform yang anda pakai, saya memakai Raspberry Pi 2

3. Buat symlink, jalankan Gitea dan pengesetan konfigurasi
pi@raspberrypi: $ ln -s gitea-1.4.2-linux-arm7 gitea

Secara default gitea akan memakai direktori dimana gitea berada untuk menyimpan data-data repositori. Lebih lanjut anda bisa mengkustomisasi melalui file app.ini atau untuk mudahnya anda bisa memakai antar muka web gitea pada default port 3000 (dan sesuaikan alamat ip dari Raspberry Pi)
http://192.168.1.102:3000

Kustomisasi diatas akan membuat file app.ini di direktori custom/conf yang kemudian anda bisa meng-edit-nya secara manual jika diperlukan.
Kenapa memakai SQLite? proses instalasi di Raspberry Pi 2 jauh lebih cepat dibandingkan jika memakai MySQL (kecuali jika and memakai Raspberry Pi 3).
4. Buat user dan kalau anda biasa memakai Github maka akan sangat mudah memakai interface gitea ini.

Gitea sebagai Service
Supaya Gitea berjalan juga pada saat boot OS artinya anda tidak perlu capek-capek menjalankan Gitea secara manual maka anda perlu membuat berkas service systemd.
pi@raspberrypi: $ sudo nano /etc/systemd/system/gitea.service

Pastikan user, group dan path sudah benar pada berkas gitea.service karena disini biasanya terjadi masalah. Untuk menjalankan service ini
pi@raspberrypi: $ sudo systemctl restart gitea
dan untuk menjalankan service gitea pada saat Raspberry Pi boot jalankan saja perintah berikut
pi@raspberrypi: $ sudo systemctl enable gitea
Ekspansi dengan USB Drive
Data-data repositori bisa anda simpan dalam USB Drive bersama dengan berkas executable gitea dan efeknya yaitu anda bisa dengan aman melepas USB Drive dari Raspberry Pi! 👏

Sayangnya Raspberry Pi dengan Raspbian tidak bisa auto-mount USB Drive pada saat boot OS sehingga anda perlu melakukan sedikit langkah ekstra.
Raspberry Pi pada saat boot akan membaca berkas /etc/fstab untuk mengenali semua drive sehingga anda harus meng-edit berkas tersebut.

Yang perlu anda tambahkan adalah baris terakhir pada berkas tersebut.
UUID merupakan ID USB Drive yang akan di mount pada saat boot dan direktori /media/usb1 adalah direktori dimana USB akan di mount, uid & gid adalah id dari user dan group yang nantinya mempunyai hak akses penuh ke USB Drive (samakan dengan user yang menjalankan Gitea).
pi@raspberrypi: $ sudo apt-get install ntfs-3gpi@raspberrypi: $ ls -l /dev/disk/by-uuidpi@raspberrypi: $ id -g pipi@raspberrypi: $ id -u pi
Jangan lupa reboot dan pastikan direktori mount dalam hal ini yaitu /media/usb1 ada.
Secara utuh dalam satu USB Drive anda bisa memiliki repositori lengkap beserta berkas executeable gitea.

Hack
Lalu apakah mungkin untuk menjalankan Gitea secara langsung pada USB Drive?
Sangat mungkin apalagi untuk lingkungan Windows hanya saja anda perlu memperhatikan perubahan letter drive pada berkas app.ini (yang tidak portabel) atau option pada CLI gitea dan saya rasa portabilitas agak sedikit dikorbankan atau menjemukan karena harus selalu mengedit letter drive jika anda melepas USB Drive apalagi harus berpindah-pindah komputer dan juga mungkin permission issues yang timbul jika misalnya anda memakai USB Drive lintas OS 😫.
Jadi solusi yang tepat menurut saya adalah dibutuhkan dedicated komputer yang khusus berfungsi sebagai repositori.
Ok cukup sekian.
Keep code and happy hacking!