Sawubona Habr!
Muva nje ngizithole ngisesimweni lapho kudingekile ukusebenza ngaphakathi kwenethiwekhi yezinkampani ngokufinyelela okungaphelele ku-inthanethi futhi, njengoba ungaqagela esihlokweni, iTelegram ivinjiwe kuyo. Nginesiqiniseko sokuthi lesi simo siyasijwayele kwabaningi.
Ngingakwazi ukwenza ngaphandle kwezithunywa ezisheshayo, kodwa kwakuyiTelegram engangiyidinga emsebenzini. Kwakungenakwenzeka ukufaka iklayenti emshinini womsebenzi, futhi kwakungenakwenzeka ukusebenzisa i-laptop yomuntu siqu. Esinye isixazululo sibonakala siwukusebenzisa
Ngenhlanhla, i-Webogram iphrojekthi yomthombo ovulekile ikhodi yayo yomthombo itholakala kuyo
Ukufakwa nokuqaliswa ngokwayo akunzima, nokho, ezimweni zokusebenza ngaphakathi kwenethiwekhi enokufinyelela okuvinjiwe kumaseva weTelegram, uzodumazeka kakhulu kunokuphumelela, njengoba inguqulo yewebhu ithumela izicelo kumaseva weTelegram kusuka emshinini womsebenzisi.
Ngenhlanhla, lokhu kuyindlela elula (kodwa engabonakali kakhulu). Ngithanda ukukuxwayisa ukuthi angiyena umsunguli walesi sixazululo. Ngikwazile ukuyithola phakathi
Ngezansi kwesisikiwe uzothola ukusethwa kwesinyathelo ngesinyathelo kwesibuko sakho se-Webogram kanye nokusethwa kommeleli wezicelo zaso kumaseva weTelegram usebenzisa i-nginx.
Njengesibonelo, ngikhethe i-Ubuntu Server 18.04.3 esanda kufakwa futhi ebuyekeziwe.
Isexwayiso: Lesi sifundo ngeke sifake imiyalelo yokusetha isizinda ku-nginx. Udinga ukwenza lokhu ngokwakho. Isifundo sithatha ukuthi usuvele usimisile isizinda nge-ssl, nokuthi iseva ngokwayo ohlele ukuyilungisa inokufinyelela kumaseva eTelegramu (nganoma iyiphi indlela oyithandayo)
Ake sicabange ukuthi i-ip yalesi seva ngu-10.23.0.3, futhi igama lesizinda lithi mywebogram.localhost
Ngokusekelwe kulezi zivumelwano, ngizonikeza izibonelo zokucushwa. Ungakhohlwa ukushintsha amanani abe awakho.
Ngakho-ke ake siqale:
Ukuze usebenzise i-Webogram, sidinga ama-nodejs. Ngokuzenzakalelayo, uma siyifaka kumakhosombe e-Ubuntu, sizothola inguqulo ye-nodejs 8.x. Sidinga i-12.x:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
Sikhetha indawo lapho iWebogram yethu izozinzela khona.
Isibonelo, asibeke kuyimpande yohlu lwasekhaya. Ukwenza lokhu, fanisa inqolobane esemthethweni kuseva yethu:
cd ~ && git clone https://github.com/zhukov/webogram.git
Isinyathelo esilandelayo ukufaka konke okuncikile okudingekayo ukuze usebenzise uhlelo lokusebenza:
cd webogram && npm install
Ake sizame ukuhlola. Qalisa umyalo:
npm start
Ngemva kwalokho, sizama ukuyivula kusiphequluli
http://10.23.0.3:8000/app/index.html
Uma kuze kube manje wenze yonke into ngendlela efanele, ikhasi lokugunyazwa le-Webogram lizovuleka.
Manje sidinga ukumisa uhlelo lokusebenza ukuthi lusebenze njengesevisi. Ukwenza lokhu, masidale ifayela
sudo touch /lib/systemd/system/webogram.service
yivule kunoma imuphi umhleli bese unikeza ukubukeka okulandelayo (faka indlela yakho eya ku-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
Bese sisebenzisa imiyalo elandelayo:
Ukusebenzisa izinguquko
sudo systemctl daemon-reload
Nika amandla i-autorun:
sudo systemctl enable webogram.service
Asiqale isevisi:
sudo systemctl start webogram.service
Ngemva kokuqeda izinyathelo, i-Webogram izoqhubeka nokutholakala ku-port 8000.
Njengoba sizobe simisa ukufinyelela ku-Webogram yethu nge-nginx, sizovala i-port 8000 ngezicelo ezivela ngaphandle.
Sisebenzisa insiza ye-udf kulokhu (noma iyiphi indlela ekulungele):
sudo ufw deny 8000
Uma kwenzeka usanquma ukusebenzisa i-udf, kodwa ivaliwe kuseva, engeza imithetho eyengeziwe (ukuze yonke into ingahlukani) futhi unike amandla udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
Okulandelayo, ake siqale ukushintsha ukucushwa kwe-nginx.
Njengoba ngixwayise ngenhla, kucatshangwa ukuthi isizinda esine-ssl sesivele simisiwe kuseva yakho. Ngizodonsela ukunaka kwakho kulokho okuzodinga ukungezwa kufayela lokumisa isizinda ukuze lisebenze kahle:
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;
}
}
Esikwengeza ku-nginx config:
- Sishintsha indawo yempande, ezocela ummeleli ku-port 8000, lapho i-Webogram iphendula khona
- Sivala indawo yempande sisebenzisa i-basic-auth. Lesi isinyathelo esingokomfanekiso nje sokuvala uhlelo lwethu lokusebenza ekuhloleni amehlo nama-bots. (Futhi futhi ukugwema izinkinga ngokuvimba)
- Inqwaba yezindawo ezine-proxy_path kuseva yeTelegram ziyiziphetho zethu lapho sizomela izicelo zethu.
Futhi, masidale ifayela /etc/nginx/passwd.htpasswd;
ukuze nginx ibe nokuthile yokuhlola amaphasiwedi omsebenzisi.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
Qala kabusha i-nginx:
sudo systemctl restart nginx
Manje i-Webogram izotholakala kuphela ku-
Kuncane okusele: sizokwenza izinguquko ezincane kuphrojekthi ngokwayo.
Vula ifayela kusihleli ~/webogram/app/js/lib/mtproto.js
Futhi ulethe ukuqala kwayo ngendlela elandelayo:
/*!
* 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
}
...
Ngemva kwalokhu, udinga ukuvuselela ikhasi lohlelo lokusebenza esipheqululini.
Vula ikhonsoli yesiphequluli sakho bese ubheka izicelo zenethiwekhi yohlelo lokusebenza. Uma yonke into isebenza futhi izicelo ze-XHR ziya kuseva yakho, khona-ke yonke into yenziwa ngendlela efanele, futhi i-Webogram manje isisetshenziswa njenge-nginx.
Ngethemba ukuthi lesi sifundo sizoba usizo komunye umuntu ngaphandle kwami.
Sibonga kakhulu kubo bonke abafunde kwaze kwaba sekugcineni.
Uma noma ubani enobunzima noma ngenze noma yikuphi ukungalungi, ngizojabula ukuphendula futhi ngizame ukukusiza kumazwana noma ku-PM.
Source: www.habr.com