भाग - मुफ्त टियर GCP पर एक Git सर्वर स्थापित करना चाहते हैं - 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

यदि Gitea पेज curl के मानक आउटपुट के रूप में प्रदर्शित होता है, तो यह ठीक है।

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