αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ NextCloud + ONLYOFFICE αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™ Docker

ហេហេ! αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž”αž‘αž”αž„αŸ’αž αžΆαž‰αž‡αžΌαž“αž’αŸ’αž“αž€αž“αžΌαžœαž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž’αžαŸ’αžαž”αž‘ "αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ NextCloud αž“αž·αž„ ONLYOFFICE αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™ Docker".

αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž“αŸƒαžˆαž»αžαž€αžΆαžšαž·αž™αžΆαž›αŸαž™αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžŠαžΌαž…αž‡αžΆ Google Docs αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž›αžΎαž–αž–αž€αž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž˜αž“αž»αžŸαŸ’αžŸαžŠαŸ‚αž›αž•αŸ’αžαŸ„αžαž›αžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαŸ” αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž”αžΆαž“αžšαžΈαž€αžšαžΆαž›αžŠαžΆαž›αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ αžŠαŸ‚αž›αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Microsoft αžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‘αžΈαž•αŸ’αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αžΆαžšαž·αž™αžΆαž›αŸαž™αž™αžΌαžšαž˜αž€αž αžΎαž™ αž€αŸαžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αž”αžΆαž“αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžš Office 365 αž“αž·αž„αž”αž‰αŸ’αž…αž»αŸ‡αž”αž‰αŸ’αž…αžΌαž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž±αŸ’αž™αž”αŸ’αžαžΌαžšαž‘αŸ…αž‚αŸ†αžšαžΌαž‡αžΆαžœαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αž™αžΎαž„αžŸαžΌαž˜αž’αž‰αŸ’αž‡αžΎαž‰αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž†αŸ’αž˜αžΆαŸ”

αž˜αž½αž™αžšαž™αŸˆαž˜αž»αž“αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž›αžΎαž–αž–αž€ αž“αž·αž„αžˆαž»αžαž€αžΆαžšαž·αž™αžΆαž›αŸαž™αž‚αŸαž αž‘αŸ†αž–αŸαžšαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αŸ’αžšαžΆαžŸαžαŸ’αž“αžΆαžαžαžΌαž…αŸ” αž€αžΆαžšαž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž―αž€αžŸαžΆαžšαž±αŸ’αž™αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž’αž”αŸ’αž”αž”αžšαž˜αžΆ αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž›αŸ’αž’ αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž”αžšαž·αž˜αžΆαžŽαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΆαž”αž€αŸαžŠαŸ„αž™αŸ” αž•αŸ’αž“αŸ‚αž€αž˜αŸ’αžαžΆαž„αž‘αŸ€αžαž“αŸƒαž€αžΆαž€αŸ‹αž‚αžΊαžαžΆαž€αžΆαžšαž‡αž½αž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αž–αž€αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž“αŸαŸ‡αž‚αžΊαž˜αž·αž“αžŸαžΌαžœαž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‡αžΆαž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžœαŸαžŽαž“αŸƒαžŸαž αž‚αŸ’αžšαžΆαžŸαž“αŸ„αŸ‡αž‘αŸ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž’αŸ’αž“αž€αž˜αž·αž“αž˜αžΆαž“αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž¬αž…αžšαžΆαž…αžšαžŽαŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž–αžΈαž…αž»αž„αžŠαž›αŸ‹αž…αž»αž„ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž•αž„αžŠαŸ‚αžšαŸ”

αžŠαŸ„αž™αž‚αž·αžαž–αžΈαž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αŸ†αž–αžΈαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž‚αž˜αŸ’αžšαŸ„αž„αžŸαž€αž˜αŸ’αž˜αž…αŸ†αž“αž½αž“αž–αžΈαžš (αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ git αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž› 12 αžαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸαŸ‡) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž›αžΎαž–αž–αž€αŸ– NextCloud αž“αž·αž„ OwnCloud αž“αž·αž„αžˆαž»αžαž€αžΆαžšαž·αž™αžΆαž›αŸαž™ ONLYOFFICE αžŸαž€αž˜αŸ’αž˜αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αŸ” αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž–αž–αž€αž‘αžΆαŸ†αž„αž–αžΈαžšαž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αž‚αŸ’αž“αžΆ αž αžΎαž™αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ NextCloud αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž’αžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž—αžŸαŸ’αžαž»αžαžΆαž„αžŠαŸ‚αž›αžαžΆαžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™ ONLYOFFICE αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž•αžΆαžŸαž»αž€αž—αžΆαž–αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸ„αŸ‡ αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαžαž–αŸαžαŸŒαž˜αžΆαž“αžŸαŸ’αžαžΈαž–αžΈαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžαžΆαž„αž›αžΎαž”αžΆαž“αž›αŸαž…αž…αŸαž‰αž‡αžΆαžšαžΌαž”αžšαžΆαž„αž‘αžΎαž„αŸ” αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžœαžΈαžŠαŸαž’αžΌαž”αž„αŸ’αžšαŸ€αž“αž…αŸ†αž“αž½αž“ 3 αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž‰αŸ’αž…αžΌαž›αŸ–

αž‚αŸ’αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžœαžΈαžŠαŸαž’αžΌαž‘αžΆαŸ†αž„αž”αžΈαž”αžΆαž“αž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαŸαžœαžΆαž―αž€αžŸαžΆαžš ONLYOFFICE αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„ NextCloud αž‡αžΆαž˜αž½αž™αž“αžΉαž„ nginx αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αŸ” αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž–αž½αž€αž‚αŸαž”αžΆαž“αž”αŸ’αžšαžΎαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž”αŸ†αž”αŸ‚αž€ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž…αŸ’αžšαž€αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž―αž€αžŸαžΆαžš api αŸ” αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž™αŸ„αž”αž›αŸ‹αž˜αž½αž™αž‘αŸ€αžαž‚αžΊαžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž―αž€αžŸαžΆαžš αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžœαžαŸ’αžαž» nginx αžŠαŸ„αž™αžŠαŸƒαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž―αž€αžŸαžΆαžš αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αžŸαŸ„αž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αžŸαŸ„αž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž˜αž»αž“αžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΈαžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαž–αž–αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™) αž“αž·αž„αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš TLS αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαžΆαž„αž›αžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž˜αž·αž“αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž“αž·αž„αž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› NextCloud, ONLYOFFICE αž“αž·αž„ nginx αž‘αžΌαž‘αŸ…αžŠαŸ‚αž›αž”αŸ†αž”αŸ‚αž€αžŸαŸ†αžŽαžΎαžŠαŸ„αž™αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ docker-compose αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž‡αŸ†αž αžΆαž“ αŸ— αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαžœαžΆαŸ”

αž‡αŸ†αž αžΆαž“αž‘αžΈ 1: αž’αž»αž„ nginx

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αŸ†αž αžΆαž“αž“αŸαŸ‡αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž„αžΆαžšαž…αŸ’αžšαžΎαž“αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαŸ” αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ docker-compose αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ nginx:stable imageαŸ”

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αž·αž˜αŸ’αž˜αž·αžαž–αžΈαžšαž“αŸ…αž›αžΎαž…αŸ’αžšαž€ 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 αž‘αŸ…αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž―αž€αžŸαžΆαžšαŸ–

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 αž¬αž”αŸ’αžšαžΎαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€) αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαžΆαž˜αžšαž™αŸˆαž˜αŸ‰αžΊαž“αž»αž™αž“αŸ…αž‡αŸ’αžšαž»αž„αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αžαžΆαž„αž›αžΎαž αžΎαž™αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αžΆαžαž» ONLYOFFICE αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΊαž“αž»αž™αžαžΆαž„αž†αŸ’αžœαŸαž„αŸ” αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ” αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž”αžΆαž“αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ NextCloud + ONLYOFFICE αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™ Docker

αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‘αžΈαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž―αž€αžŸαžΆαžš js αž“αž·αž„ css αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ (αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΎαž€αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ ONLYOFFICE αžαžΆαž˜αžšαž™αŸˆ nginx) αŸ” αžŸαŸ„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž‡αžΏαž‡αžΆαž€αŸ‹αž›αžΎαžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž―αž€αŸ„ Docker αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αžŸαŸ„αžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‡αžΆαž”αŸ‹αžšαž αžΌαžαŸ” αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‘αžΈαž”αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž’αž»αž„ NextCloud αžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ… ONLYOFFICE API αž αžΎαž™αžœαžΆαž”αŸ’αžšαžΎαžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαžΆαž„αž€αŸ’αž“αž»αž„αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž–αžΈ Docker αŸ” αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αžœαžΆαž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ ONLYOFFICE αž’αžΆαž…αž’αŸ’αžœαžΎαžŸαŸ†αžŽαžΎαžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ… NextCloud API αžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžαžΆαž„αž€αŸ’αžšαŸ… αž¬αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ Docker αžαžΆαž„αž€αŸ’αž“αž»αž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž”αžŽαŸ’αžαžΆαž‰ Docker αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ” αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αž‰αŸ’αž‡αžΆαŸ†αž„αž—αŸ’αž›αžΎαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž”αŸ’αžšαž—αŸαž‘αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€ NextCloud αž“αžΉαž„αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž’αŸ’αž“αž€αž“αžΌαžœαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› - αž§αž‘αžΆαž αžšαžŽαŸ αžαžΎαž”αŸ’αžšαž—αŸαž‘αž―αž€αžŸαžΆαžšαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŠαŸ„αž™αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸαŸ‡αŸ” αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžαžΆαž˜αžŠαŸ‚αž›αž’αŸ’αž“αž€αžƒαžΎαž‰αžŸαž˜αŸ”

αž‡αŸ†αž αžΆαž“αž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ– αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžšαž€αž’αŸ’αž“αž€αž€αŸ‚αžŸαŸ†αžšαž½αž›

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αžαžαž―αž€αžŸαžΆαžšαž•αŸ’αž‘αž»αž€αž–αž–αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž…αž»αž…αž›αžΎ β€œ+” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžαŸ’αž˜αžΈ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž“αžΉαž„αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαžαŸ’αž˜αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš αžŸαŸ€αžœαž—αŸ…αž”αž‰αŸ’αž‡αžΈ αž¬αž”αž‘αž”αž„αŸ’αž αžΆαž‰αŸ” αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž’αŸ’αž“αž€αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž αž αžΎαž™αž—αŸ’αž›αžΆαž˜αŸ—αž’αžΆαž…αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž”αŸ’αžšαž—αŸαž‘αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎ ONLYOFFICE αŸ”

αž˜αŸ‰αžΊαž“αž»αž™αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ NextCloud + ONLYOFFICE αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™ Docker

αž”αž“αŸ’αžαŸ‚αž˜αž†αŸ’αž“αžΆαŸ† ្០្០

αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž–αŸαž‰αž›αŸαž‰αž“αŸƒ docker-compose.yml αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ– https://pastebin.com/z1Ti1fTZ

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹