ãããããã«ïŒ èšäºã®ç¿»èš³ãã玹ä»ããŸã
ãã¯ãããžãŒå¿åã®äººã
ã®ç掻ã«ããããGoogle ããã¥ã¡ã³ããã¯ã©ãŠã ã¹ãã¬ãŒãžãªã©ã®ãªã³ã©ã€ã³ ãªãã£ã¹ ã¹ã€ãŒãã®äŸ¡å€ãéå°è©äŸ¡ããããšã¯ã§ããŸããã ãã¯ãããžãŒãéåžžã«æ®åãããããé·å¹Žãªãã£ã¹ ã¢ããªã±ãŒã·ã§ã³åžå Žãç¬å ããŠãã Microsoft ã§ãããæè¿ã§ã¯ Office 365 Web ã¢ããªã±ãŒã·ã§ã³ã®éçºãšããŠãŒã¶ãŒãèªç€ŸãµãŒãã¹ã䜿çšããããã®ãµãã¹ã¯ãªãã·ã§ã³ ã¢ãã«ã«åãæ¿ãããã説åŸããããšã«æ³šåããŠããŸãã cat ã®äžã«ç¬èªã®ã¹ãã¬ãŒãžãã€ã³ã¹ããŒã«ããŠæ§æããããã»ã¹ã«èå³ã®ããæ¹ãæåŸ
ããŸãã
å°ãåã«ãç§ãã¡ã¯å°èŠæš¡äŒæ¥ã§ã®äœ¿çšã®ããã«ç°¡åã«å°å
¥ã§ããã¯ã©ãŠã ã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ãšãªãŒãã³ãœãŒã¹ã® Web ãªãã£ã¹ ã¹ã€ãŒããæ€èšããŸããã ãã¹ãŠã®ææžããªã³ã©ã€ã³ã«ä¿ã€äž»ãªåæ©ã¯ãäºåæç¶ããæå°éã«æããååŒéãå°ãªãã«ãããããããé©åãªããžãã¹æ
£è¡ãå®è·µããããšã§ãã è£ãè¿ãã°ããã®ãµãŒãã¹ãæäŸããããã«ã¯ã©ãŠã ãµãŒããŒãã¬ã³ã¿ã«ããããšã¯ããµãŒããŒããã©ãã£ãã¯ãžã®ç©ççãªã¢ã¯ã»ã¹ãç£æ»ããæ段ããªããããäŒæ¥ã®æ·å°å
ã«çŽæ¥ä¿ç®¡ãããããå®å
šæ§ãå£ãããšã«ãªããŸãã ãããã£ãŠããšã³ãããŒãšã³ãã®æå·åãšãªãŒãã³ãœãŒã¹ ãœãããŠã§ã¢ãå¿
èŠã§ãã
ãªãŒãã³ãœãŒã¹ ãœãªã¥ãŒã·ã§ã³ã«é¢ããå ¥æå¯èœãªæ å ±ããã¹ãŠèæ ®ããçµæãã¯ã©ãŠã ã¹ãã¬ãŒãžçšã«éçºããã 12 ã€ã®ã¢ã¯ãã£ããªãããžã§ã¯ã (éå» 3 ãæéãGit ãªããžããªã«ã³ãããããã£ã) ã§ãã NextCloud ãš OwnCloud ãšãå¯äžã®ã¢ã¯ãã£ã㪠ONLYOFFICE ãªãã£ã¹ ã¹ã€ãŒããèŠã€ãããŸããã ã©ã¡ãã®ã¯ã©ãŠã ã¹ãã¬ãŒãž ããŒã«ãã»ãŒåãæ©èœãåããŠãããNextCloud ãéžæãã決å®ã¯ããŠãŒã¶ãŒããœãããŠã§ã¢ãå¿«é©ã«æäœã§ããããã« ONLYOFFICE ãšçµ±åã§ãããšãã蚌æ ã®ååšã«åºã¥ããŠããŸãã ãããããµãŒãã¹ã®å±éãéå§ãããšãäžèšã®ãµãŒãã¹ã®çµ±åã«é¢ããæ å ±ãäžè¶³ããŠããããšãæããã«ãªããŸããã çµ±åæ¹æ³ã«é¢ãã XNUMX ã€ã®ãã¥ãŒããªã¢ã« ãããªãèŠã€ãããŸããã
www.youtube.com/watch?v=GAd-x_sP6ng www.youtube.com/watch?v=ceOld6P16wI www.youtube.com/watch?v=DvTXyl-OOZA
XNUMX ã€ã®ãããªã®ãããããå ±æ nginx ã䜿çšã㊠NextCloud ãšåãç©çãµãŒããŒã« ONLYOFFICE ããã¥ã¡ã³ã ãµãŒãã¹ãã€ã³ã¹ããŒã«ãããšãã質åã«ã¯çããŠããŸããã 代ããã«ãããã¥ã¡ã³ã ãµãŒãã¹ API ã«å¥ã®ããŒãã䜿çšãããªã©ã®åé¢ææ³ã䜿çšããŸããã ãã XNUMX ã€ã®ææ¡ã¯ãDocument Service çšã«å¥ã®ãµãŒããŒããããã€ããDocument Service ã«çµã¿èŸŒãŸãã nginx ã€ã³ã¹ã¿ã³ã¹ãæåã§æ§æããŠãã¢ã¯ã»ã¹ ã㌠(ããŒã¿ ã¯ã©ãŠããžã®ã¢ã¯ã»ã¹æš©ã確èªããæ¢ç¥ã®ã¢ã¯ã»ã¹ ããŒ) ãš TLS 蚌ææžãã€ã³ã¹ããŒã«ããããšã§ããã äžèšã®ã¢ãããŒãã¯å®å šã§ã¯ãªããååãªå¹æããªããšèãããããããNextCloudãONLYOFFICEãããã³ docker-compose ã䜿çšããŠãã¡ã€ã³åã§ãªã¯ãšã¹ããåé¢ããäžè¬ç㪠nginx ãçµ±åããŸããã ããã§ã¯ããã®æ¹æ³ã«ã€ããŠæ®µéçã«èª¬æããŸãã
ã¹ããã 1: nginx ã³ã³ãããŒ
ããã¯éåžžã«ç°¡åãªã»ããã¢ããã§ããããã®æé ã§ã¯ãªããŒã¹ ãããã· ãµãŒããŒãæ§æããããã«æãå€ãã®äœæ¥ãå¿ èŠã«ãªããŸãã ãŸããnginx:stable ã€ã¡ãŒãžã® docker-compose æ§æãäœæããŸããã
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 ã«ããããããèªå·±çœ²å蚌ææžãšããŠçæããã蚌ææžããŸã㯠/nginx/certificates ã® Let's encrypt ã® certbot ã䜿çšããŠçæããã蚌ææžã®ã¹ãã¢ãå®çŸ©ãããŸãã ãã®å Žæã«ã¯ãoffice.yourdomain.com ãš cloud.yourdomain.com ã®ãã©ã«ããŒãå«ãŸããããããã«èšŒææžãã§ãŒã³ãšãµãŒããŒã®ç§å¯ããŒã® fullchain1.pem ãã¡ã€ã«ãš privkey1.pem ãã¡ã€ã«ãå«ãŸããŠããå¿
èŠããããŸãã èªå·±çœ²å蚌ææžãçæããæ¹æ³ã®è©³çŽ°ã«ã€ããŠã¯ããã¡ããã芧ãã ããã
ãã®åŸãvhost ãã¡ã€ã«ãå®çŸ©ããŸããã ãŸããããŒã 80 ã®åäœã https ãžã®åçŽãªãªãã€ã¬ã¯ããšããŠå®çŸ©ããŸãã http ãã©ãã£ãã¯ãèš±å¯ããããªã
server {
listen 80;
location / {
return 301
https://$host$request_uri;
}
}
次ã«ããµãŒãã¹çšã«ããŒã 443 äžã« XNUMX ã€ã®ä»®æ³ãµãŒããŒãäœæããŸããã
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 ã§æå®ããããŒã¿ããŒã¹è³æ Œæ å ±ãå ¥åããå¿ èŠããããŸããã»ããã¢ãããå®äºãããšããã°ã€ã³ã§ããããã«ãªããŸãã ç§ãã¡ã®å ŽåãåŸ æ©ã«ã¯ XNUMX åè¿ãããããã¯ã©ãŠã ãµãŒãã¹ã«ãã°ã€ã³ããåã«ãã°ã€ã³ ããŒãžãããã«æŽæ°ããå¿ èŠããããŸããã
NextCloudãµãŒãã¹èšå®ç»é¢
ã¹ããã 4: NextCloud ãš ONLYOFFICE ãæ¥ç¶ãã
ãã®ã¹ãããã§ã¯ãONLYOFFICE æ©èœã«æ¥ç¶ãã NextCloud ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã ã¡ãã¥ãŒã®å³äžé ã«ããã¢ããªã±ãŒã·ã§ã³ ã³ã³ãããŒã« ããã«ããå§ããŸãããã ONLYOFFICE ã¢ããªãèŠã€ã㊠(ãOffice ãšããã¹ãããŸãã¯æ€çŽ¢ã䜿çš)ãã€ã³ã¹ããŒã«ããŠã¢ã¯ãã£ãåããŸãã
ãã®åŸãå³äžé ã®ã¡ãã¥ãŒãã [èšå®] ã«ç§»åãããšãå·ŠåŽã®ã¡ãã¥ãŒã« ONLYOFFICE é ç®ã衚瀺ãããã¯ãã§ãã ããã«å ¥ã£ãŠãã ããã 以äžã«ç€ºãã¢ãã¬ã¹ãç»é²ããå¿ èŠããããŸãã
çµ±åã¢ããªã±ãŒã·ã§ã³ã®èšå®
æåã®ã¢ãã¬ã¹ã¯ããã©ãŠã¶ãŒã§å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ããããã€ãã® js ããã³ css ãã¡ã€ã«ã«çŽæ¥ãªã³ã¯ããããã«äœ¿çšãããŸã (ããã¯ãnginx çµç±ã§ ONLYOFFICE ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãéãããã«å¿
èŠãªãã®ã§ã)ã æ°žç¶çãªèªèšŒããŒããã Docker åé¢å±€ãä¿¡é Œãããããç§å¯ããŒã¯äœ¿çšãããŸããã XNUMX çªç®ã®ã¢ãã¬ã¹ã¯ãNextCloud ã³ã³ãããŒã ONLYOFFICE API ã«çŽæ¥æ¥ç¶ããããã«äœ¿çšãããDocker ã®ããã©ã«ãã®å
éšãã¹ãåã䜿çšããŸãã æåŸã®ãã£ãŒã«ãã¯ãONLYOFFICE ãå€éš IP ã¢ãã¬ã¹ããŸã㯠Docker ãããã¯ãŒã¯ã䜿çšããŠããå Žåã¯å
éš Docker ã¢ãã¬ã¹ã䜿çšã㊠NextCloud API ã«ãªã¯ãšã¹ããè¿ãããã«äœ¿çšãããŸãããããã¯ãã®äŸã§ã¯äœ¿çšãããŸããã ãã¡ã€ã¢ãŠã©ãŒã«èšå®ã§ãã®çš®ã®å¯Ÿè©±ãèš±å¯ãããŠããããšã確èªããŠãã ããã
ä¿ååŸãNextCloud ã¯æ¥ç¶ããã¹ããããã¹ãŠãæ£ããå Žåã¯ãçµ±åã«é¢é£ããèšå® (ããšãã°ããã®çµ±åã§ç·šéã§ãããã¡ã€ã«ã®çš®é¡ãªã©) ã衚瀺ãããŸãã å¿ èŠã«å¿ããŠã«ã¹ã¿ãã€ãºããŠãã ããã
æåŸã®ã¹ããã: ãšãã£ã¿ãŒãèŠã€ããå Žæ
ã¯ã©ãŠã ã¹ãã¬ãŒãž ãã©ã«ããŒã«æ»ããã+ããã¯ãªãã¯ããŠæ°ãããã¡ã€ã«ãäœæãããšãããã¥ã¡ã³ããã¹ãã¬ããã·ãŒãããŸãã¯ãã¬ãŒã³ããŒã·ã§ã³ãäœæããããã®æ°ãããªãã·ã§ã³ã衚瀺ãããŸãã 圌ãã®å©ããåããŠãONLYOFFICE ã䜿çšããŠãããã®çš®é¡ã®ãã¡ã€ã«ãäœæããããã«ç·šéã§ããããã«ãªããŸãã
ãã¡ã€ã«äœæã¡ãã¥ãŒ
ãµããªã¡ã³ã1
docker-compose.yml ã®å®å
šãªå
容ã¯æ¬¡ã®å Žæã«ãããŸãã
åºæïŒ habr.com