|
|
@@ -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! |
|
|
|
|
|
|
|
|