পর্ব - বিনামূল্যে GCP টিয়ারে একটি গিট সার্ভার তৈরি করতে চাই - Gitea পরিচিতি

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

নমস্কার, আমি অদক্ষ।
এবার GCE-তে Gitea ইনস্টল করা এবং WireGuard VPN কনফিগারেশন নিয়ে আলোচনা করা হবে।

প্রয়োজনীয় জিনিসপত্র ইনস্টল করুন

এটি খুব ভালো নয়, তবে আমি root ব্যবহারকারী হিসাবে এগিয়ে যাব।
বিস্তারিত জানার জন্য অফিসিয়াল ডকুমেন্টেশন দেখুন।

apt install -y git mariadb-server mariadb-client
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
ufw allow 3000/tcp
ufw reload

আমি wget ব্যবহার করে সর্বশেষ বাইনারিটি নিয়ে আসব।

wget -O gitea https://dl.gitea.com/gitea/1.22.4/gitea-1.22.4-linux-amd64
chmod +x gitea
mv gitea /usr/local/bin/gitea

DB কনফিগারেশন

mysql -u root -p
CREATE DATABASE gitea;
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ডেমন ফাইল কনফিগারেশন

Systemd-এর জন্য অফিসিয়াল conf ফাইলের উদাহরণ

আমি সাধারণত Supervisor দিয়ে সেটআপ করি, তবে মাঝে মাঝে Systemd ব্যবহার করার চেষ্টা করি।
আমি নিম্নলিখিতভাবে কনফিগার করেছি:

$ sudo cat /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target

[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/bin/gitea
Restart=always
Environment=USER=gitea HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target
systemctl enable gitea
systemctl start gitea
systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-11-24 15:16:30 UTC; 3 days ago
   Main PID: 3276 (gitea)
      Tasks: 9 (limit: 1136)
     Memory: 114.6M
        CPU: 2min 4.743s
     CGroup: /system.slice/gitea.service
             └─3276 /usr/local/bin/gitea
~~~

যদি এটি এভাবে Active থাকে, তাহলে ঠিক আছে।

WireGuard VPN সেটআপ করুন

আমি প্রায়শই WireGuard ক্লায়েন্ট-সাইড সেটআপ করি, কিন্তু এটি ক্লান্তিকর হয়ে উঠেছে, তাই আমি যতটা সম্ভব জেনারেট করার সিদ্ধান্ত নিয়েছি।
wg-genconf/wg-client.sh at main · haturatu/wg-genconf · GitHub
এটি একটি কিছুটা খারাপ ইন্টারেক্টিভ স্ক্রিপ্ট, তবে এটি মূলত আমার নিজের ব্যবহারের জন্য।
অবশেষে, এটি একটি সহজ সেটআপ যা "সার্ভার সাইডে নিম্নলিখিতগুলি সেট করুন।" সরাসরি সার্ভারের conf ফাইলে পেস্ট করে শেষ হয়।
যদি এটি নিচে সংযুক্ত বলে মনে হয়, আমি Gitea-এর স্ট্যান্ডার্ড পোর্ট 3000-এ curl করার চেষ্টা করব।

wg-quick up wg0
wg

সার্ভার সাইড

wg-quick down wg0
wg-quick up wg0
wg
ping -c 5 10.1.0.6
curl 10.1.0.6:3000

যদি curl-এর স্ট্যান্ডার্ড আউটপুট হিসাবে Gitea পৃষ্ঠাটি প্রদর্শিত হয়, তাহলে ঠিক আছে।

DNS কনফিগারেশন

আমি DNS রেকর্ডে git.mydomain.jp-এর গন্তব্যকে VPN সার্ভারের A রেকর্ড হিসাবে IP ঠিকানায় সেট করেছি, nslookup দিয়ে কখন এটি প্রতিফলিত হয়েছে তা পরীক্ষা করেছি, এবং যেহেতু এটি প্রতিফলিত হয়েছে, আমি পরবর্তী ধাপে যাব।

Nginx দিয়ে রিভার্স প্রক্সি

যেহেতু DNS সফলভাবে আপডেট হয়েছে, আমি certbot দিয়ে একটি সার্টিফিকেটও পাব।

server {
    if ($host = git.mydomain.jp) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name git.mydomain.jp;

    location / {
        proxy_pass http://10.1.0.6:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
    }
}

server {
    listen 443 ssl;
    server_name git.mydomain.jp;

    location / {
        proxy_pass http://10.1.0.6:3000/; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

    }
    ssl_certificate /usr/local/etc/letsencrypt/live/git.mydomain.jp/fullchain.pem; # managed by Certbot
    ssl_certificate_key /usr/local/etc/letsencrypt/live/git.mydomain.jp/privkey.pem; # managed by Certbot
}

যাইহোক, একটি SSL সার্টিফিকেট পেতে হলে

certbot --nginx -d  git.mydomain.jp

এটি দিয়ে পাওয়া যায়।
সিনট্যাক্স চেক করুন এবং রিস্টার্ট করুন

nginx -t
service nginx reload

ব্রাউজারে পরীক্ষা করুন

Image
এটি সফলভাবে কাজ করেছে।

এখন, Q-তে চালিয়ে যাওয়া যাক।

Related Posts