| @@ -0,0 +1,134 @@ | |||||
| #!/bin/bash | |||||
| # Warning: This BASH script is UNTESTED !!! | |||||
| # Before you start: Set DNS Record of Domain Name to this servers IP | |||||
| # More Infos: https://help.nextcloud.com/t/onlyoffice-compiled-with-mobile-edit-back/79282 | |||||
| # Change your parameters here: | |||||
| DOMAIN_NAME="office.notice.at" | |||||
| CERT_EMAIL="certbot-announcements@notice.at" | |||||
| SECRET="changeme" | |||||
| # Select Container (should already be ok) | |||||
| CONTAINER_NAME="nemskiller007/officeunleashed" | |||||
| # Install Docker | |||||
| apt-get update | |||||
| apt-get install docker docker.io | |||||
| # Install Docker Image | |||||
| docker pull $CONTAINER_NAME | |||||
| # Run Docker Image | |||||
| docker run -i -t -d -p 8000:80 --restart=always $CONTAINER_NAME | |||||
| # Lookup Container ID | |||||
| # Manually: docker ps -a | |||||
| CONTAINER_ID=$(docker ps -aqf "$CONTAINER_NAME") | |||||
| # Change passwords (secret) | |||||
| # Set request/inbox and request/outbox to true | |||||
| # MANUAL approach: | |||||
| #docker exec -it $CONTAINER_ID /bin/bash | |||||
| #nano /out/linux_64/onlyoffice/documentserver/server/Common/config/default.jsoni | |||||
| # Go on line 155 and replace every string with secret | |||||
| # written in it with your own password : | |||||
| # Example: | |||||
| # "browser": {"string": "myNewSuperSecurePassw0rd", "file": "", "tenants": {}}, | |||||
| # | |||||
| # Then on line 163 to 170 change all false by true | |||||
| # Example: | |||||
| # "request": { | |||||
| # "inbox": true, | |||||
| # "outbox": true | |||||
| # } | |||||
| #exit | |||||
| # Automated approach: | |||||
| CONFIG_PATH="/out/linux_64/onlyoffice/documentserver/server/Common/config/default.json" | |||||
| docker exec -i $CONTAINER_ID bash <<EOF | |||||
| sed -i 's/"secret"/"${SECRET}"/g' ${CONFIG_PATH} | |||||
| sed -i 's/"inbox": false,/"inbox": true,/g' ${CONFIG_PATH} | |||||
| sed -i 's/"outbox": false/"outbox": true/g' ${CONFIG_PATH} | |||||
| EOF | |||||
| # Restart the Docker Image | |||||
| docker stop $CONTAINER_ID | |||||
| docker start $CONTAINER_ID | |||||
| # Now, we've got a local installation. | |||||
| # but we may need to serve it for external domains. | |||||
| # With nginx ... and https | |||||
| # Install more tools | |||||
| apt-get install nginx certbot python3-certbot-nginx | |||||
| # create NGINX config | |||||
| cat >/etc/nginx/sites-available/$DOMAIN_NAME <<EOL | |||||
| upstream docservice { | |||||
| server ${DOMAIN_NAME}:8000; | |||||
| } | |||||
| map $http_host $this_host { | |||||
| "" $host; | |||||
| default $http_host; | |||||
| } | |||||
| map $http_x_forwarded_proto $the_scheme { | |||||
| default $http_x_forwarded_proto; | |||||
| "" $scheme; | |||||
| } | |||||
| map $http_x_forwarded_host $the_host { | |||||
| default $http_x_forwarded_host; | |||||
| "" $this_host; | |||||
| } | |||||
| map $http_upgrade $proxy_connection { | |||||
| default upgrade; | |||||
| "" close; | |||||
| } | |||||
| proxy_set_header Upgrade $http_upgrade; | |||||
| proxy_set_header Connection $proxy_connection; | |||||
| proxy_set_header X-Forwarded-Host $the_host; | |||||
| proxy_set_header X-Forwarded-Proto $the_scheme; | |||||
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |||||
| server { | |||||
| server_tokens off; | |||||
| server_name ${DOMAIN_NAME}; | |||||
| location / { | |||||
| proxy_pass http://docservice; | |||||
| proxy_http_version 1.1; | |||||
| } | |||||
| listen 0.0.0.0:80; | |||||
| listen [::]:80; | |||||
| server_name ${DOMAIN_NAME}; | |||||
| } | |||||
| EOL | |||||
| # symlink for enabling nginx config | |||||
| ln -s /etc/nginx/sites-available/$DOMAIN_NAME /etc/nginx/sites-enabled/$DOMAIN_NAME | |||||
| # reload nginx | |||||
| systemctl reload nginx.service | |||||
| # Obtain new certificate | |||||
| certbot certonly -n --agree-tos --email $CERT_EMAIL --redirect -d $DOMAIN_NAME | |||||
| # DONE! | |||||