Hi Habr!
O chionn ghoirid lorg mi mi fhìn ann an suidheachadh far an robh e riatanach a bhith ag obair taobh a-staigh lìonra corporra le ruigsinneachd neo-choileanta air an eadar-lìn agus, mar a shaoileadh tu bhon tiotal, chaidh Telegram a bhacadh ann. Tha mi cinnteach gu bheil an suidheachadh seo eòlach air mòran.
Is urrainn dhomh a dhèanamh às aonais teachdairean sa bhad, ach b’ e Telegram a bha a dhìth orm airson obair. Cha robh e comasach an neach-dèiligidh a chuir a-steach air inneal-obrach, agus cha robh e comasach laptop pearsanta a chleachdadh. Tha e coltach gur e fuasgladh eile a bhith ga chleachdadh
Gu fortanach, is e pròiseact le còd fosgailte a th’ ann an Webogram aig a bheil còd stòr ri fhaighinn ann an
Chan eil an stàladh agus an cur air bhog fhèin duilich, ge-tà, ann an suidheachaidhean obrach taobh a-staigh lìonra le ruigsinneachd dùinte air frithealaichean Telegram, bidh thu nas dualtaiche a bhith tàmailteach na soirbheachail, leis gu bheil an dreach lìn a’ cur iarrtasan gu frithealaichean Telegram bho inneal an neach-cleachdaidh.
Gu fortanach, is e fuasgladh gu math sìmplidh a tha seo (ach chan eil e gu math follaiseach). Bu mhath leam rabhadh a thoirt dhut nach e mise ùghdar an fhuasglaidh seo. Chaidh agam air a lorg a-staigh
Fon gearradh gheibh thu suidheachadh ceum air cheum den sgàthan Webogram agad agus suidheachadh neach-ionaid a bhith a’ cur an cuid iarrtasan gu frithealaichean Telegram a’ cleachdadh nginx.
Mar eisimpleir, thagh mi Ubuntu Server 18.04.3 a chaidh a chuir a-steach às ùr agus ùrachadh.
Rabhadh: Cha bhith an oideachadh seo a’ toirt a-steach stiùireadh mu bhith a’ stèidheachadh àrainn ann an nginx. Feumaidh tu seo a dhèanamh leat fhèin. Tha an oideachadh a’ gabhail ris gu bheil thu mu thràth air àrainn a rèiteachadh le ssl, agus gu bheil cothrom aig an fhrithealaiche fhèin air a bheil thu an dùil a rèiteachadh air na frithealaichean Telegram (ann an dòigh sam bith a thogras tu)
Gabhaidh sinn ris gur e ip an fhrithealaiche seo 10.23.0.3, agus is e mywebogram.localhost an t-ainm fearainn
Stèidhichte air na gnàthasan sin, bheir mi eisimpleirean de rèiteachaidhean. Na dì-chuimhnich na luachan atharrachadh gu do chuid fhèin.
Mar sin, tòisichidh sinn:
Gus Webogram a ruith, feumaidh sinn nodejs. Gu gnàthach, ma stàlaicheas sinn e bho stòran Ubuntu, gheibh sinn nodejs dreach 8.x. Feumaidh sinn 12.x:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
Bidh sinn a’ taghadh an àite far am bi ar Webogram stèidhichte.
Mar eisimpleir, leig dhuinn a chuir ann am freumh an eòlaire dachaigh. Gus seo a dhèanamh, clone an stòr oifigeil don t-seirbheisiche againn:
cd ~ && git clone https://github.com/zhukov/webogram.git
Is e an ath cheum na h-eisimeileachd gu lèir a stàladh gus an tagradh a ruith:
cd webogram && npm install
Feuch sinn ruith deuchainn. Ruith an òrdugh:
npm start
Às deidh sin, feuchaidh sinn ri fhosgladh sa bhrobhsair
http://10.23.0.3:8000/app/index.html
Ma tha thu air a h-uile càil a dhèanamh ceart gu ruige seo, fosglaidh duilleag cead Webogram.
A-nis feumaidh sinn an aplacaid a rèiteachadh gus a ruith mar sheirbheis. Gus seo a dhèanamh, cruthaichidh sinn faidhle
sudo touch /lib/systemd/system/webogram.service
fosgail e ann an deasaiche sam bith agus thoir an sealladh a leanas dha (cuir a-steach do shlighe gu WorkDirectory)
[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
An uairsin ruithidh sinn na h-òrdughan a leanas:
A 'cur an gnìomh atharrachaidhean
sudo systemctl daemon-reload
Dèan comas air autorun:
sudo systemctl enable webogram.service
Feuch an tòisich sinn air an t-seirbheis:
sudo systemctl start webogram.service
Às deidh na ceumannan a chrìochnachadh, bidh Webogram fhathast ri fhaighinn air port 8000.
Leis gum bi sinn a’ stèidheachadh ruigsinneachd don Webogram againn tro nginx, dùinidh sinn port 8000 airson iarrtasan bhon taobh a-muigh.
Bidh sinn a’ cleachdadh goireas udf airson seo (no dòigh sam bith a tha iomchaidh dhut):
sudo ufw deny 8000
Ma cho-dhùnas tu fhathast udf a chleachdadh, ach gu bheil e ciorramach air an fhrithealaiche, cuir barrachd riaghailtean ris (gus nach tuit a h-uile càil às a chèile) agus leig le udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
An ath rud, tòisichidh sinn ag atharrachadh rèiteachadh nginx.
Mar a thug mi rabhadh gu h-àrd, thathas a’ gabhail ris gu bheil àrainn le ssl air a rèiteachadh mu thràth air an t-seirbheisiche agad. Cha bhith mi a’ tarraing d’ aire ach gu na dh’ fheumar a chur ris an fhaidhle rèiteachaidh fearainn gus an obraich e gu ceart:
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;
}
}
Na chuireas sinn ris an config nginx:
- Bidh sinn ag atharrachadh an àite freumh, a nì iarrtasan neach-ionaid gu port 8000, air am freagair Webogram
- Bidh sinn a’ dùnadh an àite freumh a’ cleachdadh basic-auth. Is e ceum samhlachail a tha seo gus an tagradh againn a dhùnadh bho shùilean eagallach agus bho bhotan. (Agus cuideachd gus duilgheadasan le bacadh a sheachnadh)
- Tha dòrlach de dh’ àiteachan le proxy_path air frithealaiche Telegram dìreach mar na puingean crìochnachaidh againn tro am bi sinn a’ cur ar n-iarrtasan an aghaidh
Cuideachd, cruthaichidh sinn faidhle /etc/nginx/passwd.htpasswd;
gus am bi rudeigin aig nginx airson faclan-faire luchd-cleachdaidh a sgrùdadh.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
Ath-thòisich nginx:
sudo systemctl restart nginx
A-nis cha bhi Webogram ri fhaighinn ach aig
Chan eil mòran air fhàgail: nì sinn atharrachaidhean beaga air a’ phròiseact fhèin.
Fosgail am faidhle ann an deasaiche ~/webogram/app/js/lib/mtproto.js
Agus thoir a thoiseach don fhoirm a leanas:
/*!
* 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
}
...
Às deidh seo, feumaidh tu duilleag an tagraidh sa bhrobhsair ùrachadh.
Fosgail tòcan do bhrobhsair agus thoir sùil air iarrtasan lìonra an aplacaid. Ma dh’ obraicheas a h-uile càil agus gu bheil iarrtasan XHR a’ dol chun t-seirbheisiche agad, thèid a h-uile càil a dhèanamh ceart, agus tha Webogram a-nis air a chuir a-steach tro nginx.
Tha mi an dòchas gum bi an oideachadh seo feumail do chuideigin eile a bharrachd orm.
Mòran taing dhan a h-uile duine a leugh gu deireadh.
Ma tha duilgheadas sam bith aig duine no ma rinn mi mearachd sam bith, bidh mi toilichte freagairt agus feuchainn ri do chuideachadh anns na beachdan no ann am PM.
Source: www.habr.com