ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅, Π₯Π°Π±Ρ!
Π‘ΠΊΠΎΡΠΎ ΡΡΠ΅ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΡ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π° ΠΌΡΠ΅ΠΆΠ° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΏΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ β Telegram Π±Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½. Π‘ΠΈΠ³ΡΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΡΠ° Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠΎΠ³Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Π±Π΅Π· ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡΡΠΈ, Π½ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Telegram ΠΌΠΈ Π±Π΅ΡΠ΅ Π½ΡΠΆΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΈΡΠ½ΠΈΡ Π»Π°ΠΏΡΠΎΠΏ Π½Π΅ Π±Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡ. ΠΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌ, Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ , Π½ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠΈΡΠ΅ β ΡΡ ΡΡΡΠΎ Π±Π΅ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°. ΠΠ°ΡΠΈΠ°Π½ΡΡΡ Ρ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ Π²Π΅Π΄Π½Π°Π³Π° Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°ΠΌ (Π½Π°Π΄ΡΠ²Π°ΠΌ ΡΠ΅ ΠΏΠΎ Π΄ΠΎΡΡΠ° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ).
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, Webogram Π΅ open-source ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠΈΠΉΡΠΎ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΠΎΡ Π°Π²ΡΠΎΡΠ° ΠΌΡ (ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° ΡΠΎΠ²Π°!)
Π‘Π°ΠΌΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π½ΠΈΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π² ΠΌΡΠ΅ΠΆΠ° Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π½Π° Telegram, ΠΏΠΎ-ΡΠΊΠΎΡΠΎ Π²ΠΈ ΠΎΡΠ°ΠΊΠ²Π° ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΡΠΏΠ΅Ρ
, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π± Π²Π΅ΡΡΠΈΡΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π½Π° Telegram ΠΎΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΎ (Π½ΠΎ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ) Π΄Π° ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΠΈ. ΠΡΠΊΠ°ΠΌ Π΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄Ρ, ΡΠ΅ Π½Π΅ ΡΡΠΌ Π°Π²ΡΠΎΡ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π£ΡΠΏΡΡ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅ΡΡ Π² , Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΠΌΠΎΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ github , ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΡΠΌ ΡΠΈΠ³ΡΡΠ΅Π½, ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ΡΠΈΡ Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΡΠΎΠ·ΠΈ ΡΡΡΠΎΡΠΈΠ°Π».
ΠΠΎΠ΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ½ΠΎ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ 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. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΎΠΌΠ΅Π½Π° Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°:
ΡΡΡΠ²ΡΡ {
...
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /pluto/apiw1/ {
proxy_pass https://pluto.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /venus/apiw1/ {
proxy_pass https://venus.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /aurora/apiw1/ {
proxy_pass https://aurora.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /vesta/apiw1/ {
proxy_pass https://vesta.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /flora/apiw1/ {
proxy_pass https://flora.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /pluto-1/apiw1/ {
proxy_pass https://pluto-1.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /venus-1/apiw1/ {
proxy_pass https://venus-1.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /aurora-1/apiw1/ {
proxy_pass https://aurora-1.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /vesta-1/apiw1/ {
proxy_pass https://vesta-1.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /flora-1/apiw1/ {
proxy_pass https://flora-1.web.telegram.org/apiw1/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC1/ {
proxy_pass http://149.154.175.10:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC2/ {
proxy_pass http://149.154.167.40:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC3/ {
proxy_pass http://149.154.175.117:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC4/ {
proxy_pass http://149.154.175.50:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC5/ {
proxy_pass http://149.154.167.51:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC6/ {
proxy_pass http://149.154.175.100:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC7/ {
proxy_pass http://149.154.167.91:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ^~ /DC8/ {
proxy_pass http://149.154.171.5:80/;
}
ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / {
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 ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ°ΠΌΠΎ Π½Π° Π°Π΄ΡΠ΅ΡΠ° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π±ΡΠ΄Π°Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°ΡΠΎΠ»Π°, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ Π·Π°Π΄Π°Π»ΠΈ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° htpasswd.
ΠΡΡΠ°Π½Π° ΠΌΠ°Π»ΠΊΠΎ: Π½Π΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΌΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΠ°ΠΉΠ»Π° ~/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 <igor.beatle@gmail.com>
* 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
