ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ!
ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΠΏΠΎΠΏΠ°Π» Π² ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Ρ Π½Π΅ΠΏΠΎΠ»Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ ΠΈ ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ β Telegram Π² Π½Π΅ΠΉ Π±ΡΠ» Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½. Π£Π²Π΅ΡΠ΅Π½, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΈΠΌ.
Π― Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³Ρ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π±Π΅Π· ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Telegram ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ Π±ΡΠ» Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΡΠ½ΡΠΉ Π½ΠΎΡΡΠ±ΡΠΊ β ΡΠΎΠΆΠ΅. ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ
Π ΡΡΠ°ΡΡΡΡ, Webogram β ΡΡΠΎ opensource-ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²
Π‘Π°ΠΌΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠ΅ΡΠΈ Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ Telegram Π²Π°Ρ ΡΠΊΠΎΡΠ΅Π΅ ΠΆΠ΄Π΅Ρ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΠΌ ΡΡΠΏΠ΅Ρ
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π΅Π±-Π²Π΅ΡΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡ Telegram Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π ΡΡΠ°ΡΡΡΡ, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ (Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ) ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. Π₯ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ, ΡΡΠΎ Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°Π²ΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ Π²
ΠΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ Π²Π°Ρ ΠΆΠ΄Π΅Ρ ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π΅ΡΠΊΠ°Π»Π° Webogram ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Telegram Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ nginx.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π²ΡΠ±ΡΠ°Π» ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Ubuntu Server 18.04.3.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΡΠΎΡΠΈΠ°Π»Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° Π² nginx. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. Π’ΡΡΠΎΡΠΈΠ°Π» ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ Π΄ΠΎΠΌΠ΅Π½ Ρ ssl, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°ΠΌ ΡΠ΅ΡΠ²Π΅Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ Telegram (Π»ΡΠ±ΡΠΌ Π½Π° Π²Π°Ρ Π²ΠΊΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ)
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ip Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° 10.23.0.3, Π° Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ mywebogram.localhost
ΠΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΡΡΠ΅ΠΉ, Ρ Π±ΡΠ΄Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ²ΠΎΠΈ.
ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ:
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Webogram, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ nodejs. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Ubuntu β ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ nodejs Π²Π΅ΡΡΠΈΠΈ 8.x. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° 12.x:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π°Ρ Webogram.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° β ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΡΠ½Π΅ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊ ΡΠ΅Π±Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ:
cd ~ && git clone https://github.com/zhukov/webogram.git
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
cd webogram && npm install
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm start
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
http://10.23.0.3:8000/app/index.html
ΠΡΠ»ΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²Ρ Π²ΡΠ΅ Π΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ β Ρ Π²Π°Ρ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Webogram.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ»
sudo touch /lib/systemd/system/webogram.service
ΠΎΡΠΊΡΠΎΠ΅ΠΌ Π΅Π³ΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΈ ΠΏΡΠΈΠ΄Π°Π΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄ (Π²ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ Π΄ΠΎ 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
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
sudo systemctl daemon-reload
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ:
sudo systemctl enable webogram.service
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡ:
sudo systemctl start webogram.service
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Webogram ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΠΏΠΎΡΡΡ 8000.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Webogram ΡΠ΅ΡΠ΅Π· nginx β Π·Π°ΠΊΡΠΎΠ΅ΠΌ ΠΏΠΎΡΡ 8000 Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· Π²Π½Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΡΡ udf (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ±):
sudo ufw deny 8000
ΠΠ° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ udf, Π½ΠΎ ΠΎΠ½ Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ β Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ» (ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π΅ ΡΠ°Π·Π²Π°Π»ΠΈΠ»ΠΎΡΡ) ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
ΠΠ°Π»Π΅Π΅, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ nginx.
ΠΠ°ΠΊ Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π» Π²ΡΡΠ΅ β ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π° ΠΠ°ΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ Π΄ΠΎΠΌΠ΅Π½ Ρ ssl. ΠΠ±ΡΠ°ΡΡ ΠΠ°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π»ΠΈΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄ΠΎΠΌΠ΅Π½Π° Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ:
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:
- ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ location, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΏΠΎΡΡ 8000, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Webogram
- ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ location Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ basic-auth. ΠΡΠΎ ΡΠΈΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π³, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π³Π»Π°Π· ΠΈ Π±ΠΎΡΠΎΠ². (Π ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ)
- ΠΡΡΠ° location Ρ proxy_path Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ° Telegram β ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· Π½Π°ΡΠΈ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΡ
Π’Π°ΠΊ ΠΆΠ΅, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» /etc/nginx/passwd.htpasswd;
, ΡΡΠΎΠ±Ρ nginx Π±ΡΠ»ΠΎ Ρ ΡΠ΅ΠΌ ΡΠ²Π΅ΡΡΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ nginx:
sudo systemctl restart nginx
Π’Π΅ΠΏΠ΅ΡΡ Webogram Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
ΠΡΡΠ°Π»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ: Π²Π½Π΅ΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΡΠ°ΠΉΠ» ~/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
}
...
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈΒ XHR Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ΄ΡΡ Π½Π° Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ β Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΈ Webogram ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· nginx.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΡΡΡΠΎΡΠΈΠ°Π» Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΅ΡΠ΅ ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΡΠΎΠΌΠ΅ ΠΌΠ΅Π½Ρ.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ Π΄ΠΎΡΠΈΡΠ°Π» Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°.
ΠΡΠ»ΠΈ Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Ρ Π΄ΠΎΠΏΡΡΡΠΈΠ» ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ β Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΠΈΠ»ΠΈ Π»Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com