היי הבר! אני מציג לתשומת לבך את התרגום של המאמר .
קשה להמעיט בערכם של חבילות משרד מקוונות כמו Google Docs ואחסון בענן בחייהם של אנשים בעלי אוריינטציה טכנולוגית. הטכנולוגיה הפכה לנפוצה כל כך שאפילו מיקרוסופט, ששולטת זה מכבר בשוק יישומי המשרד, התמקדה לאחרונה בפיתוח אפליקציית האינטרנט Office 365 ובשכנוע משתמשים לעבור למודל מנוי לשימוש בשירותים שלהם. אנו מזמינים את המעוניינים בתהליך התקנה והגדרת אחסון משלהם מתחת לחתול.
לפני זמן מה בדקנו פתרונות אחסון בענן וחבילות קוד פתוח למשרדי אינטרנט שניתן לפרוס בקלות לשימוש במיקרו-מיזם. המניע העיקרי לשמירת כל התיעוד באינטרנט הוא לצמצם את הניירת למינימום וליישם שיטות עסקיות טובות למרות נפח העסקאות הנמוך. הצד השני של המטבע הוא שהשכרת שרת ענן כדי לספק שירות זה פחות מאובטחת מאשר אחסונו ישירות בחצרים של הארגון, מכיוון שאין לך שום אמצעי לבקרת גישה פיזית לשרת או לתעבורה שלך. לכן נדרשות גם הצפנה מקצה לקצה ותוכנת קוד פתוח.
בהתחשב בכל המידע הזמין על פתרונות קוד פתוח, מצאנו שני פרויקטים פעילים (עם התחייבויות במאגר git ב-12 החודשים האחרונים) שפותחו עבור אחסון בענן: NextCloud ו- OwnCloud, וחבילת המשרד הפעילה היחידה של ONLYOFFICE. לשני כלי האחסון בענן יש בערך אותה פונקציונליות, וההחלטה לבחור ב-NextCloud התבססה על קיומן של ראיות לכך שניתן לשלב אותו עם ONLYOFFICE לאינטראקציה נוחה של המשתמש עם התוכנה. עם זאת, כשהתחלנו לפרוס את השירותים, התברר חוסר המידע על שילוב השירותים הנ"ל. מצאנו 3 סרטוני הדרכה כיצד לשלב:
אף אחד משלושת הסרטונים לא ענה על השאלה של התקנת שירות המסמכים ONLYOFFICE באותו שרת פיזי כמו NextCloud עם nginx משותף. במקום זאת, הם השתמשו בטכניקות הפרדה כגון שימוש ביציאות נפרדות עבור ממשק ה-Document Service API. אפשרות נוספת שהוצעה הייתה לפרוס שרת נפרד עבור Document Service, הגדרה ידנית של מופע nginx המובנה ב-Document Service כדי להתקין מפתח גישה (מפתח גישה ידוע מראש שמאשר את הזכות לגשת לענן הנתונים) ותעודות TLS. הגישות הנ"ל נחשבו לא בטוחות ולא יעילות מספיק, אז שילבנו את NextCloud, ONLYOFFICE ו-nginx נפוץ, שמפריד בקשות לפי שמות דומיין, באמצעות docker-compose. הנה מידע צעד אחר צעד כיצד לעשות זאת.
שלב 1: מיכל nginx
זוהי הגדרה פשוטה מאוד, אך שלב זה דורש את מירב העבודה כדי להגדיר את שרת ה-proxy ההפוך. יצרנו תחילה את תצורת docker-compose עבור התמונה nginx:stable.
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, ומגדיר חנות לאישורים שנוצרו כאישורים בחתימה עצמית או באמצעות שימוש ב-certbot של Let's encrypt ב-/nginx/certificates. מיקום זה צריך להכיל תיקיות עבור office.yourdomain.com ו-cloud.yourdomain.com, עם קבצי fullchain1.pem ו-privkey1.pem בכל אחד עבור שרשרת האישורים והמפתח הפרטי של השרת, בהתאמה. תוכל לקרוא עוד על איך ליצור תעודה בחתימה עצמית כאן. (שם .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
שלב 4: חיבור NextCloud ו-ONLYOFFICE
בשלב זה, תצטרך להתקין את האפליקציה עבור NextCloud, המחברת את הפונקציונליות של ONLYOFFICE. נתחיל עם לוח הבקרה של האפליקציה בפינה השמאלית העליונה של התפריט. מצא את אפליקציית ONLYOFFICE (תחת Office וטקסט או באמצעות חיפוש), התקן והפעל אותה.
לאחר מכן עבור להגדרות דרך התפריט בפינה השמאלית העליונה ואתה אמור למצוא את הפריט ONLYOFFICE בתפריט השמאלי. תיכנס לזה. יהיה עליך לרשום את הכתובות כפי שמצוין להלן.
הגדרות יישום אינטגרציה
הכתובת הראשונה משמשת לקישור לכמה קבצי js ו-css ישירות מהאפליקציה הפועלת בדפדפן (זה מה שאנחנו צריכים כדי לפתוח גישה לשירות ONLYOFFICE דרך nginx). המפתח הסודי אינו בשימוש מכיוון שאנו סומכים על שכבת הבידוד של Docker יותר מאשר על מפתח האימות המתמיד. הכתובת השלישית משמשת את מיכל NextCloud כדי להתחבר ישירות ל-ONLYOFFICE API, והיא משתמשת בשם המארח הפנימי המוגדר כברירת מחדל מ- Docker. ובכן, השדה האחרון משמש כך ש-ONLYOFFICE יכול להחזיר בקשות ל-NextCloud API באמצעות כתובת IP חיצונית או כתובת Docker פנימית אם אתה משתמש ברשתות Docker, אבל זה לא משמש במקרה שלנו. ודא שהגדרות חומת האש שלך מאפשרות אינטראקציות מסוג זה.
לאחר השמירה, NextCloud יבדוק את החיבור ואם הכל תקין, יראה לכם הגדרות הקשורות לאינטגרציה – למשל אילו סוגי קבצים ניתן לערוך על ידי אינטגרציה זו. התאם אישית כראות עיניך.
השלב האחרון: היכן למצוא את העורך
אם תחזור לתיקיות אחסון הענן שלך ותלחץ על ה-"+" כדי ליצור קובץ חדש, תהיה לך אפשרות חדשה ליצור מסמך, גיליון אלקטרוני או מצגת. בעזרתם, תוכלו ליצור ומיד לערוך קבצים מסוג זה באמצעות ONLYOFFICE.
תפריט יצירת קבצים
מוסף 1
את התוכן המלא של docker-compose.yml ניתן למצוא כאן:
מקור: www.habr.com
