اې حبره!
پدې وروستیو کې ما خپل ځان په داسې حالت کې وموند چې په کوم کې دا اړینه وه چې د کارپوریټ شبکې دننه انټرنیټ ته د نامناسب لاسرسي سره کار وکړو او لکه څنګه چې تاسو د سرلیک څخه اټکل کولی شئ ، ټیلیګرام پدې کې بند شوی و. زه ډاډه یم چې دا وضعیت ډیری خلکو ته پیژندل شوی.
زه د فوري میسنجرونو پرته کولی شم، مګر دا ټیلیګرام و چې ما د کار لپاره اړتیا درلوده. دا ممکنه نه وه چې پیرودونکي په کاري ماشین کې نصب کړي، او نه دا ممکنه وه چې شخصي لپ ټاپ وکاروئ. بله حل داسې ښکاري چې دا کارول دي
خوشبختانه، ویبگرام د خلاصې سرچینې پروژه ده چې د سرچینې کوډ په کې شتون لري
پخپله نصب کول او لانچ کول ستونزمن ندي ، په هرصورت ، په شبکه کې د عملیاتو شرایطو کې چې د ټیلیګرام سرورونو ته بند شوي لاسرسي سره ، تاسو به د بریا په پرتله ډیر نا امید اوسئ ، ځکه چې د ویب نسخه د کارونکي ماشین څخه د ټیلیګرام سرورونو ته غوښتنې لیږي.
خوشبختانه ، دا یو خورا ساده (مګر خورا څرګند ندی) فکس دی. زه غواړم تاسو ته خبرداری ورکړم چې زه د دې حل لیکوال نه یم. ما په دې کې موندلی وم
د کټ لاندې به تاسو د خپل ویبګرام عکس ګام په ګام ترتیب ومومئ او د نګینکس په کارولو سره د ټیلیګرام سرورونو ته د هغې غوښتنې پراکسي تنظیم کړئ.
د مثال په توګه ، ما یو تازه نصب شوی او تازه شوی اوبنټو سرور 18.04.3 غوره کړ.
پاملرنه: په دې ټیوټوریل کې به په نګینکس کې د ډومین تنظیم کولو لارښوونې شاملې نه وي. تاسو باید دا پخپله وکړئ. ټیوټوریل داسې انګیري چې تاسو دمخه د ایس ایس ایل سره ډومین تنظیم کړی دی ، او دا چې پخپله سرور چې تاسو یې د تنظیم کولو پلان لرئ د ټیلیګرام سرورونو ته لاسرسی لري (په هر ډول چې تاسو یې غواړئ)
راځئ فرض کړو چې د دې سرور ip 10.23.0.3 دی، او د ډومین نوم mywebogram.localhost دی
د دې کنوانسیونونو پراساس ، زه به د تشکیلاتو مثالونه وړاندې کړم. مه هیروئ چې ارزښتونه په خپل ځان بدل کړئ.
نو اجازه راکړې چې:
د ویبګرام چلولو لپاره، موږ نوډز ته اړتیا لرو. په ډیفالټ ، که موږ دا د اوبنټو ذخیره کولو څخه نصب کړو ، نو موږ به د نوډج نسخه 8.x ترلاسه کړو. موږ 12.x ته اړتیا لرو:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
موږ هغه ځای غوره کوو چیرې چې زموږ ویبگرام به میشته وي.
د مثال په توګه، راځئ چې دا د کور لارښود په ریښه کې ځای په ځای کړو. د دې کولو لپاره، زموږ سرور ته رسمي ذخیره کلون کړئ:
cd ~ && git clone https://github.com/zhukov/webogram.git
بل ګام د غوښتنلیک چلولو لپاره اړین ټول انحصارونه نصب کول دي:
cd webogram && npm install
راځئ چې د ازموینې چلولو هڅه وکړو. کمانډ چل کړئ:
npm start
له هغې وروسته، موږ هڅه کوو چې دا په براوزر کې خلاص کړو
http://10.23.0.3:8000/app/index.html
که تر دې وخته پورې تاسو هر څه په سمه توګه ترسره کړي وي، د ویبګرام واک پاڼه به پرانیزي.
اوس موږ اړتیا لرو چې د خدمت په توګه چلولو لپاره غوښتنلیک تنظیم کړو. د دې کولو لپاره، راځئ چې یو فایل جوړ کړو
sudo touch /lib/systemd/system/webogram.service
په هر مدیر کې یې پرانیزئ او لاندې بڼه یې ورکړئ (د کاري لارښود ته خپله لاره دننه کړئ)
[Unit]
Description=Webogram mirror
[Service]
WorkingDirectory=/home/tg/webogram
ExecStart=/usr/bin/npm start
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
بیا موږ لاندې کمانډونه چلوو:
د بدلونونو پلي کول
sudo systemctl daemon-reload
اتومات فعال کړئ:
sudo systemctl enable webogram.service
راځئ چې خدمت پیل کړو:
sudo systemctl start webogram.service
د مرحلو بشپړولو وروسته ، ویبگرام به په 8000 پورټ کې شتون ته دوام ورکړي.
څرنګه چې موږ به د نګینکس له لارې زموږ ویبګرام ته لاسرسی تنظیم کړو، موږ به د بهر څخه د غوښتنو لپاره 8000 بندر بند کړو.
د دې لپاره موږ د udf افادیت (یا ستاسو لپاره مناسبه طریقه کاروو):
sudo ufw deny 8000
په هغه حالت کې چې تاسو لاهم د udf کارولو پریکړه کوئ، مګر دا په سرور کې غیر فعال شوی، نور قواعد اضافه کړئ (تر څو هر څه جلا نشي) او udf فعال کړئ:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
بیا، راځئ چې د نګینکس ترتیب بدلولو پیل وکړو.
لکه څنګه چې ما پورته خبرداری ورکړ، داسې انګیرل کیږي چې د ایس ایس ایل سره یو ډومین لا دمخه ستاسو په سرور کې ترتیب شوی. زه به یوازې ستاسو پام هغه څه ته واړوم چې د ډومین ترتیب کولو فایل کې د سم کار کولو لپاره اضافه کولو ته اړتیا لري:
server {
...
location ^~ /pluto/apiw1/ {
proxy_pass https://pluto.web.telegram.org/apiw1/;
}
location ^~ /venus/apiw1/ {
proxy_pass https://venus.web.telegram.org/apiw1/;
}
location ^~ /aurora/apiw1/ {
proxy_pass https://aurora.web.telegram.org/apiw1/;
}
location ^~ /vesta/apiw1/ {
proxy_pass https://vesta.web.telegram.org/apiw1/;
}
location ^~ /flora/apiw1/ {
proxy_pass https://flora.web.telegram.org/apiw1/;
}
location ^~ /pluto-1/apiw1/ {
proxy_pass https://pluto-1.web.telegram.org/apiw1/;
}
location ^~ /venus-1/apiw1/ {
proxy_pass https://venus-1.web.telegram.org/apiw1/;
}
location ^~ /aurora-1/apiw1/ {
proxy_pass https://aurora-1.web.telegram.org/apiw1/;
}
location ^~ /vesta-1/apiw1/ {
proxy_pass https://vesta-1.web.telegram.org/apiw1/;
}
location ^~ /flora-1/apiw1/ {
proxy_pass https://flora-1.web.telegram.org/apiw1/;
}
location ^~ /DC1/ {
proxy_pass http://149.154.175.10:80/;
}
location ^~ /DC2/ {
proxy_pass http://149.154.167.40:80/;
}
location ^~ /DC3/ {
proxy_pass http://149.154.175.117:80/;
}
location ^~ /DC4/ {
proxy_pass http://149.154.175.50:80/;
}
location ^~ /DC5/ {
proxy_pass http://149.154.167.51:80/;
}
location ^~ /DC6/ {
proxy_pass http://149.154.175.100:80/;
}
location ^~ /DC7/ {
proxy_pass http://149.154.167.91:80/;
}
location ^~ /DC8/ {
proxy_pass http://149.154.171.5:80/;
}
location / {
auth_basic "tg";
auth_basic_user_file /etc/nginx/passwd.htpasswd;
proxy_pass http://localhost:8000/;
proxy_read_timeout 90s;
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
هغه څه چې موږ د nginx ترتیب کې اضافه کوو:
- موږ د ریښې ځای بدلوو، کوم چې به د 8000 پورټ ته د پراکسي غوښتنه وکړي، کوم چې ویبگرام ځواب ورکوي
- موږ د بنسټیز سند په کارولو سره د ریښې ځای بندوو. دا یو خالص سمبولیک ګام دی چې زموږ غوښتنلیک د سترګو او بوټو څخه بند کړئ. (او همدارنګه د بلاک کولو سره د ستونزو څخه مخنیوي لپاره)
- د ټیلیګرام سرور کې د پراکسي_پاټ سره یو شمیر ځایونه په حقیقت کې زموږ پای ټکي دي چې له لارې به یې موږ خپلې غوښتنې پراکسي کړو
همدارنګه، راځئ چې یو فایل جوړ کړو /etc/nginx/passwd.htpasswd;
نو دا چې nginx د کارن پاسورډونو چک کولو لپاره یو څه لري.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
nginx بیا پیل کړئ:
sudo systemctl restart nginx
اوس ویبګرام به یوازې په کې شتون ولري
لږ څه پاتې دي: موږ به پخپله پروژه کې کوچني بدلونونه وکړو.
فایل په مدیر کې خلاص کړئ ~/webogram/app/js/lib/mtproto.js
او خپل پیل لاندې شکل ته راوړو:
/*!
* Webogram v0.7.0 - messaging web application for MTProto
* https://github.com/zhukov/webogram
* Copyright (C) 2014 Igor Zhukov <[email protected]>
* https://github.com/zhukov/webogram/blob/master/LICENSE
*/
angular.module('izhukov.mtproto', ['izhukov.utils'])
.factory('MtpDcConfigurator', function () {
var sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora']
var dcOptions = Config.Modes.test
? [
{id: 1, host: 'mywebogram.localhost/DC1', port: 80},
{id: 2, host: 'mywebogram.localhost/DC2', port: 80},
{id: 3, host: 'mywebogram.localhost/DC3', port: 80}
]
: [
{id: 1, host: 'mywebogram.localhost/DC4', port: 80},
{id: 2, host: 'mywebogram.localhost/DC5', port: 80},
{id: 3, host: 'mywebogram.localhost/DC6', port: 80},
{id: 4, host: 'mywebogram.localhost/DC7', port: 80},
{id: 5, host: 'mywebogram.localhost/DC8', port: 80}
]
var chosenServers = {}
function chooseServer (dcID, upload) {
if (chosenServers[dcID] === undefined) {
var chosenServer = false,
i, dcOption
if (Config.Modes.ssl || !Config.Modes.http) {
var subdomain = sslSubdomains[dcID - 1] + (upload ? '-1' : '')
var path = Config.Modes.test ? 'apiw_test1' : '/apiw1/'
chosenServer = 'https://mywebogram.localhost/' + subdomain + path
return chosenServer
}
for (i = 0; i < dcOptions.length; i++) {
dcOption = dcOptions[i]
if (dcOption.id == dcID) {
chosenServer = 'http://' + dcOption.host + '/apiw1'
break
}
}
chosenServers[dcID] = chosenServer
}
...
له دې وروسته ، تاسو اړتیا لرئ په براوزر کې د غوښتنلیک پا pageه تازه کړئ.
خپل د براوزر کنسول خلاص کړئ او د غوښتنلیک شبکې غوښتنې وګورئ. که هرڅه کار کوي او د XHR غوښتنې ستاسو سرور ته ځي، نو هر څه په سمه توګه ترسره شوي، او ویبگرام اوس د نګینکس له لارې پراکسي شوی.
زه امید لرم چې دا لارښود به زما پرته بل چا ته ګټور وي.
د هرچا څخه ډیره مننه چې تر پایه یې لوستل.
که څوک کومه ستونزه ولري یا ما کومه غلطي کړې وي، زه به په ځواب کې خوشحاله یم او هڅه به وکړم چې په نظرونو یا PM کې ستاسو سره مرسته وکړم.
سرچینه: www.habr.com