เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NextCloud + ONLYOFFICE เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Docker

Hey Habr! เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ™เปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบปเบ™โ€‹เปƒเบˆโ€‹เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบ‚เบญเบ‡โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เป„เบ”เป‰โ€‹ "เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NextCloud เปเบฅเบฐ ONLYOFFICE เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ”เบฝเบงเบเบฑเบš Docker".

เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเป€เบกเบตเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบŠเบธเบ”เบซเป‰เบญเบ‡เบเบฒเบ™เบญเบญเบ™เป„เบฅเบ™เปŒเป€เบŠเบฑเปˆเบ™ Google Docs เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŸเบฑเบ‡เบ„เบฅเบฒเบงเปƒเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเบกเบตเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต. เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป„เบ”เป‰เปเบœเปˆเบฅเบฒเบกเป„เบ›เบ—เบปเปˆเบงเป€เบ–เบดเบ‡เปเบกเปˆเบ™ Microsoft, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ„เบญเบšเบ‡เปเบฒเบ•เบฐเบซเบผเบฒเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเป‰เบญเบ‡เบเบฒเบ™เบกเบฒเบ”เบปเบ™เบ™เบฒเบ™, เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบš Office 365 เปเบฅเบฐเบŠเบฑเบเบŠเบงเบ™เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบชเบฐเบซเบกเบฑเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบตเบ™เบœเบนเป‰เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบžเบฒเบเปƒเบ•เป‰ cat.

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŸเบฑเบ‡เบ„เบฅเบฒเบงเปเบฅเบฐเบŠเบธเบ”เบซเป‰เบญเบ‡เบเบฒเบ™เป€เบงเบฑเบšเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบˆเบธเบฅเบฐเบžเบฒเบ. เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบญเบญเบ™เป„เบฅเบ™เปŒเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเป€เบญเบเบฐเบชเบฒเบ™เปƒเบซเป‰เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเบ”เบตเป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ•เปเปˆเบฒ. เบ”เป‰เบฒเบ™ flip เบ‚เบญเบ‡ coin เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบŠเบปเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบŸเบฑเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบซเบ™เป‰เบญเบเบเปˆเบงเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบฑเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบงเบดเบชเบฒเบซเบฐเบเบดเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เปƒเบ”เป†เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบผเบทเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบšเบš end-to-end เปเบฅเบฐเบŠเบญเบšเปเบง open source เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบชเบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เบเบฑเบšเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเปƒเบ™ git repository เบชเปเบฒเบฅเบฑเบš 12 เป€เบ”เบทเบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ) เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŸเบฑเบ‡: NextCloud เปเบฅเบฐ OwnCloud, เปเบฅเบฐเบŠเบธเบ”เบซเป‰เบญเบ‡เบเบฒเบ™ ONLYOFFICE เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ”เบฝเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŸเบฑเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบ NextCloud เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบซเบผเบฑเบเบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš ONLYOFFICE เป€เบžเบทเปˆเบญเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเบเบฑเบšเบŠเบญเบšเปเบง. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบเบฒเบ™เบ‚เบฒเบ”เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบฑเป‰เบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™ 3 เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญ tutorial เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹:

เบšเปเปˆเบกเบตเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบฒเบกเบงเบดเบ”เบตเป‚เบญเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™ ONLYOFFICE เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš NextCloud เบเบฑเบš nginx เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบญเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™ api. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบŠเบตเบšเป€เบงเบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบง nginx เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ Document Service เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฐเปเบˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ (เบเบฐเปเบˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบ—เบตเปˆเบขเบทเบ™เบขเบฑเบ™เบชเบดเบ”เบ—เบดเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŸเบฑเบ‡เบ‚เปเป‰เบกเบนเบ™) เปเบฅเบฐเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ TLS. เบงเบดเบ—เบตเบเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบšเปเปˆเบ›เบญเบ”เป„เบžเปเบฅเบฐเบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™เบžเบฝเบ‡เบžเป, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ NextCloud, ONLYOFFICE เปเบฅเบฐ nginx เบ—เบปเปˆเบงเป„เบ›, เป€เบŠเบดเปˆเบ‡เปเบเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป‚เบ”เบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ docker-compose. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 1: เบšเบฑเบ™เบˆเบธ nginx

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เปเบ•เปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป€เบŠเบตเบšเป€เบงเบต proxy reverse. เบžเบงเบเป€เบฎเบปเบฒเบ—เปเบฒเบญเบดเบ”เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ docker-compose เบชเปเบฒเบฅเบฑเบš nginx: เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡.

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

เบญเบฑเบ™เบ™เบตเป‰เบชเป‰เบฒเบ‡เบžเบฒเบŠเบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบžเบญเบ” 80 เปเบฅเบฐ 443 เป€เบ›เบตเบ”เปƒเบซเป‰เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบงเบฒเบ‡เปเบœเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเป‰เบเบฑเบš nginx/nginx-vhost.conf , เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบชเปเบฒเบฅเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบ›เบฑเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเป€เบŠเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡ เบซเบผเบทเปƒเบŠเป‰ Let's encrypt's certbot เปƒเบ™ /nginx/certificates. เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบกเบตเป‚เบŸเบ™เป€เบ”เบตเบชเปเบฒเบฅเบฑเบš office.yourdomain.com เปเบฅเบฐ cloud.yourdomain.com, เบžเป‰เบญเบกเบเบฑเบšเป„เบŸเบฅเปŒ fullchain1.pem เปเบฅเบฐ privkey1.pem เปƒเบ™เปเบ•เปˆเบฅเบฐเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบเบฒเบ™เป€เบŠเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰. www.akadia.com/services/ssh_test_certificate.html (เบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบทเปˆ .key เปเบฅเบฐ .crt เป€เบ›เบฑเบ™ .pem เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบš nginx).

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เป„เบŸเบฅเปŒ vhost. เบžเบงเบเป€เบฎเบปเบฒเบ—เปเบฒเบญเบดเบ”เบเปเบฒเบ™เบปเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบžเบญเบ” 80 เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‡เปˆเบฒเบเป†เป„เบ›เบซเบฒ https, เป€เบžเบฒเบฐเบงเปˆเบฒ เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ http เปƒเบ”เป†

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ virtual เปƒเบ™เบžเบญเบ” 443 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com ;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 2: เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™

เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ•เบนเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เปƒเบชเปˆ docker-compose.yml เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบžเบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

เปเบ•เปˆเบขเปˆเบฒเบฅเบทเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ nginx container เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™:

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 3: NextCloud

เบ—เปเบฒเบญเบดเบ”, เป€เบžเบตเปˆเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบซเบกเปˆ:

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

เปเบฅเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš nginx:

services:
...
  nginx:
    ...
    depends_on:
      - app 

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป‚เบซเบฅเบ”เบšเบฑเบ™เบˆเบธ.

docker-compose up -d  

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบ”เบปเบ™, nginx เบˆเบฐเป€เบฅเบตเปˆเบกเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเบซเบ™เป‰เบฒ NextCloud, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบชเปˆเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบšเปเบฅเบดเบซเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปƒเบ™ docker-compose.yml เป€เบกเบทเปˆเบญเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปเบฒเป€เบฅเบฑเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป„เบ”เป‰. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบฅเปเบ–เป‰เบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบเบทเบญเบšเบซเบ™เบถเปˆเบ‡เบ™เบฒเบ—เบตเปเบฅเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เป‰เบฒเบˆเปเบ„เบทเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เบซเบ™เป‰เบฒเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบง.

เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเปเบฅเบดเบเบฒเบ™ NextCloudเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NextCloud + ONLYOFFICE เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Docker

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 4: เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ NextCloud เปเบฅเบฐ ONLYOFFICE

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบš NextCloud, เป€เบŠเบดเปˆเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ ONLYOFFICE. เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเปเบœเบ‡เบ„เบงเบšเบ„เบธเบกเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™เบกเบธเบกเบ‚เบงเบฒเป€เบ—เบดเบ‡เบ‚เบญเบ‡เป€เบกเบ™เบน. เบŠเบญเบเบซเบฒเปเบญเบฑเบš ONLYOFFICE (เบžเบฒเบเปƒเบ•เป‰ Office & text เบซเบผเบทเปƒเบŠเป‰เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ), เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เป„เบ›เบ—เบตเปˆ Settings เบœเปˆเบฒเบ™เป€เบกเบ™เบนเปƒเบ™เปเบˆเบ‚เบงเบฒเป€เบ—เบดเบ‡เปเบฅเบฐเบ—เปˆเบฒเบ™เบ„เบงเบ™เบŠเบญเบเบซเบฒเบฅเบฒเบเบเบฒเบ™ ONLYOFFICE เปƒเบ™เป€เบกเบ™เบนเบ”เป‰เบฒเบ™เบŠเป‰เบฒเบ. เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเบ”เบฑเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NextCloud + ONLYOFFICE เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Docker

เบ—เบตเปˆเบขเบนเปˆเบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบšเบฒเบ‡เป„เบŸเบฅเปŒ js เปเบฅเบฐ css เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš (เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ ONLYOFFICE เบœเปˆเบฒเบ™ nginx). เบเบฐเปเบˆเบฅเบฑเบšเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆเบŠเบฑเป‰เบ™เปเบเบ Docker เบซเบผเบฒเบเบเบงเปˆเบฒเบเบฐเปเบˆเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ. เบ—เบตเปˆเบขเบนเปˆเบ—เบตเบชเบฒเบกเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบ NextCloud container เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบปเบ‡เบเบฑเบš ONLYOFFICE API, เปเบฅเบฐเบกเบฑเบ™เปƒเบŠเป‰เบŠเบทเปˆเป‚เบฎเบ”เบžเบฒเบเปƒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ Docker. เบ”เบต, เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบชเบธเบ”เบ—เป‰เบฒเบเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปƒเบซเป‰ ONLYOFFICE เบชเบฒเบกเบฒเบ”เบฎเป‰เบญเบ‡เบ‚เปเบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™ NextCloud API เป‚เบ”เบเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบเบซเบผเบทเบ—เบตเปˆเบขเบนเปˆ Docker เบžเบฒเบเปƒเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เป€เบ„เบทเบญเบ‚เปˆเบฒเบ Docker, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบŸเบงเปเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบซเบผเบฑเบ‡เบˆเบฒเบเบšเบฑเบ™เบ—เบถเบ, NextCloud เบˆเบฐเบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบฅเบฐเบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบŸเบฅเปŒเบ›เบฐเป€เบžเบ”เปƒเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเบ™เบตเป‰. เบ›เบฑเบšเปเบ•เปˆเบ‡เบ•เบฒเบกเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบซเบฑเบ™.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบ: เบšเปˆเบญเบ™เบ—เบตเปˆเบŠเบญเบเบซเบฒเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเป‚เบŸเป€เบ”เบตเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŸเบฑเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบ„เบฅเบดเบเปƒเบชเปˆ "+" เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปƒเบซเบกเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบญเบเบฐเบชเบฒเบ™, เบชเบฐเป€เบ›เบฃเบ”เบŠเบตเบ”เบซเบผเบทเบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต. เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ—เปˆเบฒเบ™เบˆเบฐเบชเป‰เบฒเบ‡เปเบฅเบฐเบ—เบฑเบ™เบ—เบตเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ ONLYOFFICE.

เป€เบกเบ™เบนเบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ NextCloud + ONLYOFFICE เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Docker

เป€เบชเบตเบกเบ›เบต 1

เป€เบ™เบทเป‰เบญเบซเบฒเป€เบ•เบฑเบกเบ‚เบญเบ‡ docker-compose.yml เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰: https://pastebin.com/z1Ti1fTZ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™