|
- #!/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!
-
|