Π₯Π΅ΠΉ Π₯Π°Π±Ρ!
ΠΠ°ΡΠΊΠΎΡΠΎ ΡΠ΅ ΠΎΠ·ΠΎΠ²Π°Ρ Π² ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΡ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π° ΠΌΡΠ΅ΠΆΠ° Ρ Π½Π΅ΠΏΡΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΎΡ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ, Telegram Π±Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π² Π½Π΅Ρ. Π‘ΠΈΠ³ΡΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ·Π½Π°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ·ΠΈΠ½Π°.
ΠΠΎΠ³Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Π±Π΅Π· ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡΡΠΈ, Π½ΠΎ Telegram ΠΌΠΈ ΡΡΡΠ±Π²Π°ΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ Π±Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π½ΠΈΡΠΎ Π±Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π»ΠΈΡΠ΅Π½ Π»Π°ΠΏΡΠΎΠΏ. ΠΡΡΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, Webogram Π΅ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΡΠΈΠΉΡΠΎ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½
Π‘Π°ΠΌΠΎΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π΅ Π΅ ΡΡΡΠ΄Π½ΠΎ, Π½ΠΎ Π² ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² ΠΌΡΠ΅ΠΆΠ° Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π½Π° 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:
- ΠΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΠΏΠΎΡΡ 8000, Π½Π° ΠΊΠΎΠΉΡΠΎ Webogram ΠΎΡΠ³ΠΎΠ²Π°ΡΡ
- ΠΠ°ΡΠ²Π°ΡΡΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π»ΠΎΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° basic-auth. Π’ΠΎΠ²Π° Π΅ ΡΠΈΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½Π° ΡΡΡΠΏΠΊΠ° Π·Π° Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ Π»ΡΠ±ΠΎΠΏΠΈΡΠ½ΠΈ ΠΎΡΠΈ ΠΈ Π±ΠΎΡΠΎΠ²Π΅. (Π ΡΡΡΠΎ ΠΈ Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ΡΠΎ)
- ΠΡΠΏ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ 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.
ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈ Π½Π° Π½ΡΠΊΠΎΠΉ Π΄ΡΡΠ³ ΠΎΡΠ²Π΅Π½ Π½Π° ΠΌΠ΅Π½.
ΠΠ½ΠΎΠ³ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π° Π΄ΠΎ ΠΊΡΠ°Ρ.
ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΠΈΠΌΠ° Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠΌ Π΄ΠΎΠΏΡΡΠ½Π°Π» Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ ΡΠ΅ ΡΠ°Π΄Π²Π°ΠΌ Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΡ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΈΠ»ΠΈ Π² ΠΠ‘.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com