در پی تحریم هایی که github برای ایرانی ها اعمال کرده کاربران ایرانی اجازه ساخت repository به صورت private ندارند و همچنین با توجه به فیلتر بودن gitlab بهترین جایگزین میتونه ساخت یک سرور git شخصی باشه
ابزار ها و برنامه های زیادی در این راستا وجود دارد که یکی از بهترین و کم دردسر ترین اونها gitea است.
در آموزش ما قرار است با استفاده از داکر ٬ نرم افزار Gitea رو روی سرور نصب کنیم . Gitea نیازمند یه databse هست تا اطلاعات رو ذخیره کنه . به این خاطر که ما از docker-compose استفاده میکنیم . پس نیاز داریم docker و docker-compose رو روی سرور نصب کنیم . بعد از نصب gitea ما با استفاده از nginx اون رو serve میکنیم . بعد از اجرای container ها با استفاده از nginx اون ها رو proxy pass میکنیم به ip سرور که در هر بار باز شدن ip سرور در مرورگر ما بتونیم به gitea که توسط داکر نصب شده وصل بشیم .
Gitea یک راه حل میزبانی کد است که در Go نوشته شده است و تحت مجوز MIT منتشر شده است.
با استفاده از gitea شما میتوانید پروژه های خود را به صورت تیمی یا انفرادی بر روی سرور خود مدیریت کنید و از سایت های مدیریت کد مانند gitlab و github بی نیاز شوید.
پیش نیاز های این اموزش :
در اولین گام به نصب nginx میپردازیم برای نصب nginx دستور زیر را وارد کنید:
sudo apt update
sudo apt install nginx
حال با دستور زیر دسترسی های لازم رو به nginx بدهید:
sudo ufw allow 'Nginx Full'
داکر پروسهها و نرمافزارها به صورت مجزا در محیط کاملا ایزولهای بر روی کرنل لینوکس راهاندازی میکند
ما برای نصب gitea روی سرور از docker استفاده میکنیم ( روش های دیگه ای هم داره اما نصب به وسیله داکر راحت ترین و بی دردسر ترین روش موجود میباشد )
اگر سرور شما در ایران هست به علت تحریم های docker باید از dns استفاده کنید
برای عوض کردن dns دستور زیر را وارد کنید:
sudo nano /etc/resolv.conf
در ویراشگر تمام nameserver هارو پاک کنید و این ۲ مقادیر رو وارد کنید :
nameserver 178.22.122.100
nameserver 185.51.200.2
فایل رو سیو کرده و خارج بشید.
چون قراره ما از docker-compose استفاده کنیم پس باید اون رو نصب کنیم اما خود docker-compose نیازمند docker-engine هست پس در اول باید خود docker رو نصب کنیم.
برای نصب داکر بروی سرور دستورات زیر را به ترتیب وارد کنید :
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
سپس دستور زیر را برای اضافه کردن repository داکر وارد کنید:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
و سرانجام دستورات زیر رو وارد کنید :
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
برای نصب docker-compose دستور زیر رو وارد کنید :
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
پس از دانلود docker-compose ٬ برای دادن دسترسی های مورد نیاز دستور زیر را وارد کنید :
sudo chmod +x /usr/local/bin/docker-compose
با استفاده از دستور زیر یک پوشه به اسم gitea ساخته و وارد آن شوید:
mkdir gitea
cd gitea/
حال با دستور زیر یه فایل به نام docker-compose.yml در داخل پوشه gitea بسازین :
touch docker-compose.yml
سپس با استفاده از دستور زیر این فایل رو با ویرایشگر متن باز کنید :
nano docker-compose.yml
حال متن زیر را با دقت در ویراشگر باز شده وارد کنید :
version: "3"
networks:
valhalla:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- APP_NAME="git Hub"
- USER_UID=2005
- USER_GID=2005
- DB_TYPE=postgres
- DB_HOST=gitea_db:5432
- DB_NAME=gitea_db
- DB_USER=gitea
- DB_PASSWD=test12345
restart: always
networks:
- valhalla
volumes:
- gitea_data:/data
ports:
- "3000:3000"
- "222:32223"
depends_on:
- gitea_db
gitea_db:
image: postgres:9.6
restart: always
environment:
- POSTGRES_DB=gitea_db
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=test12345
networks:
- valhalla
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
gitea_data:
postgres_data:
فایل رو سیو کرده و از آن خارج شوید.
سپس دستور زیر را وارد کرده تا Gitea با استفاده از فایلی که ساختیم نصب بشه:
sudo docker-compose up -d
نصب gitea به پایان رسید ادرس زیر را در مرورگر خود وارد کنید:
http://your_ip_addreess:3000
(دقت کنید به جای your_ip_address باید ip خودتون رو وارد کتید)
در صفحه زیر بر روی گزینه sing in کلیک کنید:
در قسمت general setting این تغییرات را اعمال کنید:
دقت کنید به جای (192.168.0.11) آدرس IP خود را وارد کنید.
حال در انتهای صفحه روی گزینه install gitea کلیک کنید.
وقتش رسیده است که با استفاده از تنظیمات nginx بتوانیم gitea را روی پورت 80 اجرا کنیم.
برای اینکار دستور زیر را وارد کنید:
sudo nano /etc/nginx/sites-available/gitea
در دستور بالا یک فایل کانفیگ برای nginx به اسم gitea ساختیم و برای edit کردن وارد آن شدیم حال کدهای زیر را وارد فایل کنید:
( دقت کنید در قسمت server_name به جای 192.168.0.11 آدرس IP خود را وارد کنید )
server {
listen 80;
server_name 192.168.0.11;
client_max_body_size 100M;
location = /favicon.ico { access_log off; log_not_found off; }
location / {
include proxy_params;
proxy_pass http://127.0.0.1:3000;
}
}
فایل را سیو کرده و خارح شوید.
سپس دستور زیر را وارد کنید:
sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
حال با وارد کردن دستور زیر nginx را ریستارت کرده تا تغییرات بالا اعمال شود:
sudo systemctl restart nginx
کار تمام است و اگر IP را بدون پورت 3000 باز کنید میبینید که gitea باز میشود و میتوانید از آن استفاده کنید.
در صفحه gitea از گزینه register برای خود یک حساب و سپس یک repository بسازید و از آن استفاده کنید.
10 مطلب برتر
ممنون از مقاله خوبتون، بسیار کاربردی بود.