Matou te siitia a matou Webogram faʻataʻitaʻiga ma sui e ala i le nginx

Ei Habr!

Talu ai nei na ou maua ai aʻu lava i se tulaga e tatau ai ona galue i totonu o se fesoʻotaʻiga tuʻufaʻatasia ma le le atoatoa le avanoa i luga ole Initaneti ma, e pei ona mafai ona e mateina mai le ulutala, Telegram na poloka i totonu. Ou te mautinoa o lenei tulaga ua masani ai le toatele.

E mafai ona ou faia e aunoa ma ni avefeau vave, ae o Telegram na ou manaʻomia mo le galuega. E le'i mafai ona fa'apipi'i le kalani i luga o se masini faigaluega, e le'i mafai fo'i ona fa'aogaina se komepiuta feavea'i. O le isi fofo e foliga mai o le faʻaaogaina fa'amatalaga aloaia i luga ole laiga, ae pei ona mafai ona e mateina, sa le avanoa foi. Na vave ona ou kolosia le filifiliga o le suʻeina o se faʻata le aloaia (Ou te faʻamoemoe mo mafuaaga manino).

O le mea e laki ai, o le Webogram o se poloketi faʻapipiʻi avanoa o loʻo maua ai le code source github lona tusitala (Mo le faafetai tele ia te ia!)
O le faʻapipiʻiina ma le faʻalauiloaina o ia lava e le faigata, peitaʻi, i tulaga o le gaioiga i totonu o se fesoʻotaiga ma poloka le avanoa i le Telegram servers, o le a sili atu ona e le fiafia nai lo le manuia, talu ai o le upega tafaʻilagi e tuʻuina atu talosaga i Telegram servers mai le masini a le tagata faʻaoga.

O le mea e laki ai, o se faʻaoga faigofie (ae leʻo manino). Ou te fia lapataia oe e le o aʻu le tusitala o lenei fofo. Sa mafai ona ou mauaina i totonu lala, lea na talanoaina ai se faafitauli e tutusa ma aʻu. Fofo fautuaina e le tagata fa'aoga github tecknojock, na fesoasoani tele ia te aʻu, ae ui i lea, ou te mautinoa e mafai ona fesoasoani i se isi tagata, o lea na ou filifili ai e tusi lenei aʻoaʻoga.

I lalo ifo o le tipi o le ae maua ai le laasaga taʻitasi o lau faʻata Webogram ma le seti o le suiina o ana talosaga i Telegram servers e faʻaaoga ai le nginx.

Mo se faʻataʻitaʻiga, na ou filifilia se Ubuntu Server 18.04.3 fou faʻapipiʻi ma faʻafouina.

Lapataiga: O lenei aʻoaʻoga o le a le aofia ai faʻatonuga ile faʻatulagaina o se vaega ile nginx. E tatau ona e faia lenei mea e oe lava ia. O le aʻoaʻoga e faʻapea ua uma ona e faʻatulagaina se vaega i le ssl, ma o le 'auʻaunaga lava ia e te fuafua e faʻapipiʻi ai e mafai ona maua i le Telegram servers (i soʻo se auala e te manaʻo ai)

Sei o tatou manatu o le ip o lenei server o le 10.23.0.3, ma o le igoa ole igoa ole mywebogram.localhost

Faʻavae i luga o nei feagaiga, o le a ou tuʻuina atu faʻataʻitaʻiga o faʻasalalauga. Aua ne'i galo e sui le tau ia oe.

O lea ia tatou amata:

Ina ia taʻavale Webogram, matou te manaʻomia nodejs. Ona o le faaletonu, afai matou te faʻapipiʻiina mai fale teu oloa Ubuntu, matou te maua le nodejs version 8.x. Matou te manaʻomia le 12.x:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 
sudo apt update && sudo apt -y install nodejs

Matou te filifilia le nofoaga o le a faʻavae ai la matou Webogram.

Mo se faʻataʻitaʻiga, seʻi o tatou tuʻuina i le aʻa o le lisi o fale. Ina ia faia lenei mea, faʻapipiʻi le fale teu oloa i la matou 'auʻaunaga:

cd ~ && git clone https://github.com/zhukov/webogram.git

O le isi laasaga o le faʻapipiʻi uma o faʻalagolago e manaʻomia e faʻatino ai le talosaga:

cd webogram && npm install

Se'i o tatou taumafai e fai se su'ega. Fa'atonu le fa'atonuga:

npm start

A maeʻa lena, matou te taumafai e tatala i le browser

 http://10.23.0.3:8000/app/index.html

Afai e oʻo mai i lenei tulaga ua e faia mea uma saʻo, o le a tatala le itulau faʻatagaina Webogram.

Ole taimi nei e manaʻomia le faʻatulagaina o le talosaga e taʻavale o se auaunaga. Ina ia faia lenei mea, seʻi o tatou fatuina se faila

sudo touch /lib/systemd/system/webogram.service

tatala i so'o se fa'atonu ma tu'u i ai le fa'aaliga lea (ulufale i lou ala ile 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

Ona matou faʻatautaia lea o poloaiga nei:

Fa'aaogā suiga

sudo systemctl daemon-reload

Fa'agaoioi le autorun:

sudo systemctl enable webogram.service

Tatou amata le auaunaga:

sudo systemctl start webogram.service

A maeʻa laasaga, o le a faʻaauau pea ona maua le Webogram i luga o le taulaga 8000.

Talu ai o le a matou faʻatulagaina avanoa i la matou Webogram e ala i le nginx, matou te tapunia le taulaga 8000 mo talosaga mai fafo.

Matou te faʻaogaina le aoga udf mo lenei mea (poʻo soʻo se auala talafeagai mo oe):

sudo ufw deny 8000

I le tulaga e te filifili pea e faʻaaoga le udf, ae ua le atoatoa i luga o le 'auʻaunaga, faʻaopoopo nisi tulafono (ina ia le malepelepe mea uma) ma mafai ai le udf:

sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

O le isi, seʻi o tatou amata suia le configuration nginx.

E pei ona ou lapataia i luga, e manatu o se vaega ma ssl ua uma ona faʻatulagaina i lau 'auʻaunaga. O le a ou tosina atu i ai lou mafaufau i mea o le a manaʻomia ona faʻaopoopo i le faila o le faʻasologa o le domain ina ia galue lelei:


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;
  }
}

O mea matou te faʻaopopo i le nginx config:

  • Matou te suia le nofoaga autu, lea o le a sui talosaga i le taulaga 8000, lea e tali mai ai Webogram
  • Matou te tapunia le nofoaga autu e faʻaaoga ai le basic-auth. Ole la'asaga fa'atusa fa'atusa lea e tapunia ai la tatou talosaga mai le pu'eina o mata ma bots. (Ma ia aloese foi mai faafitauli i le polokaina)
  • O le tele o nofoaga ma proxy_path i luga o le Telegram server o loʻo i ai tonu a matou faʻaiʻuga lea o le a matou sui ai a matou talosaga.

E le gata i lea, tatou faia se faila /etc/nginx/passwd.htpasswd;ina ia i ai i le nginx se mea e siaki ai upu faʻaoga faʻaoga.

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg

Matou te siitia a matou Webogram faʻataʻitaʻiga ma sui e ala i le nginx

Toe amata le nginx:

sudo systemctl restart nginx

Ole taimi nei ole a maua na'o le Webogram ile mywebogram.localhost/app/index.html pe a maeʻa le saini ma le faʻaupuga na e faʻamatalaina pe a fatuina le poloaiga htpasswd ua ulufale.

E itiiti lava mea o totoe: o le a matou faia ni suiga laiti i le poloketi lava ia.

Tatala le faila i se faatonu ~/webogram/app/js/lib/mtproto.js

Ma aumai lona amataga i le fomu nei:

/*!
 * 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
      }
...
 

A maeʻa lenei mea, e tatau ona e faʻafouina le itulau talosaga i le browser.

Tatala lau fa'amafanafanaga su'esu'e ma va'ai i talosaga feso'otaiga a le talosaga. Afai e aoga mea uma ma talosaga XHR e alu i lau 'auʻaunaga, ona saʻo lea o mea uma, ma ua faʻaogaina nei le Webogram e ala i le nginx.

Matou te siitia a matou Webogram faʻataʻitaʻiga ma sui e ala i le nginx

Ou te faʻamoemoe o le a aoga lenei aʻoaʻoga i se isi tagata e ese mai ia te aʻu.

Faafetai tele i tagata uma na faitau seia oo i le iuga.

Afai ei ai se tasi e i ai ni faʻafitauli pe na ou faia ni mea le saʻo, o le a ou fiafia e tali ma taumafai e fesoasoani ia te oe i faʻamatalaga poʻo ile PM.

puna: www.habr.com

Faaopoopo i ai se faamatalaga