My Blog
Εγκατάσταση Collabora Online Office σε Ubuntu & σύνδεση με Owncloud ή Nextcloud
Παρακαλώ πολύ το άρθρο να μην αναδημοσιευθεί χωρίς την άδειά μου. Ευχαριστώ.
Βήμα 1: Εφόσον έχουμε στήσει το cloud μας και έχουμε περάσει το πρόσθετο για διασύνδεση με collabora office
ετοιμάζουμε έναν νέο ubuntu server 19,04 είτε σε Virtual Machine με τα κατάλληλα ports ανοιχτά, είτε σε
Physical Machine επίσης με τα κατάλληλα ports ανοιχτά, είτε τέλος σε ένα VM Instance της Google,
πηγαίνουμε δηλαδή στο console.cloud.google.com (δημιουργούμε λογαριασμό αν δεν έχουμε, δίνει trial) και
στην καρτέλα Compute Engine/VM Instances , δημιουργούμε ένα νέο instance με τις εκόλουθες προδιαγραφές:
n1-standard-1 (1 vcpu, 3.75 GB memory) , (us-west1 (Oregon) , ubuntu 19,04 minimal)
κοστίζει μόνο $24,67 τον μήνα.
Βήμα 2: Ξεκινάμε τον server μας (σύνδεση με SSH δηλαδή μέσω client ή browser αν είναι google)
Βήμα 3: Αφού συνδεθούμε δίνουμε τις ακόλουθες εντολές (όπου μας ρωτήσει, πατάμε y και enter)
Δικαιώματα διαχειριστή πρώτα (αλλιώς κάθε εντολή με sudo μπροστά): sudo su
Και αμέσως μετά:
apt-get update
apt-get ugprade
apt-get dist-upgrade
apt-get install lamp-server^
a2enmod proxy
a2enmod proxy_http
a2enmod ssl
a2enmod proxy_http2
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html
a2enmod proxy_wstunnel
Βήμα 4: apt-get install docker.io
systemctl start docker
systemctl enable docker
Βήμα 5: apt-get update
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-apache
Βήμα 6:
Γι' αυτό το βήμα, πρώτα απ΄όλα θα χρειαστεί να φτιάξεις ένα subdomain της διευθυνσης σου.
για παράδειγμα εάν η διεύθυνση σου είναι nikos.com το subdomain θα είναι office.nikos.com
Μόλις φτιάξεις το subdomain από την υπηρεσία dns που έχεις (στο papaki, στο cloudflare, στο goddaddy, οπουδήποτε)
το A record του θα πρέπει να δείχνει στην εξωτερική IP του server σου, πχ 48.32.144.12 κτλπ.
(αν ο server σου είναι προσωπικός, άνοιξε ports στο router και βρες την εξωτερική ip από
whatismyip.com , εάν είναι στην google, στην δίνει απευθείας η Google την external IP)
Πήγαινε στην κονσόλα και γράψε την ακόλουθη εντολή
(αντικατέστησε στην εντολή με το δικό σου domain, πχ το .nikos\.com θα γίνει giorgos\.gr)
(επίσης αντικατέστησε το user με το username που θες και οπωσδήποτε τον κωδικό)
(ΠΡΟΣΟΧΗ, ΔΕΝ ΘΑ ΒΑΛΕΙ ΤΟ SUBDOMAIN ΠΟΥ ΕΦΤΙΑΞΕΣ, ΑΛΛΑ ΤΟ DOMAIN ΠΟΥ ΕΧΕΙΣ ΤΟ CLOUD ΣΟΥ)
Η εντολή:
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nikos\.com' -e 'username=user' -e 'password=484848' --cap-add MKNOD collabora/code
Βήμα 7:
Θα δημιουργήσουμε τώρα το vhost που θα συνδέσει το subdomain σου με τον server:
nano /etc/apache2/sites-available/office.nikos.com.conf
(εννοείται πριν δώσεις την εντολή κάνεις αντικατάσταση το subdomain)
(εάν το πρόγραμμα nano δεν είναι εγκατεστημένο, γράψε πρώτα: apt-get install nano)
Βήμα 8:
Στο παράθυρο του nano που θα ανοίξει, κάνε επικόλληση τα ακόλουθα (αλλάζοντας τα subdomain):
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName office.nikos.com
ServerAdmin webmaster@nikos.com
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Βήμα 9:
Πάτησε CTRL+X , μετά το Y και Enter για να κλείσει και να αποθηκευτεί το έγγραφο conf που μόλις δημιούργησες
Βήμα 10:
Θα ενεργοποιήσουμε τώρα το νέο έγγραφο:
a2ensite office.nikos.com.conf
και αμέσως μετά: systemctl reload apache2
Βήμα 11:
Τώρα θα φτιάξουμε το LetsEncrypt-Certificate (αλλάζουμε το subdomain πριν δώσουμε την εντολή):
certbot --authenticator standalone --installer apache -d office.nikos.com --pre-hook "service apache2 stop" --post-hook "service apache2 start"
και ΠΡΟΣΟΧΗ, μόλις μας ρωτήσει περιοχή κτλ θα απαντήσουμε και μόλις πάει στο τεχνικό κομμάτι και μας ρωτήσει
θα επιλέξουμε την επιλογή 2 (redirect)
Βήμα 12:
Το βήμα 11 δημιούργησε άλλο ένα καινούργιο conf file, σαν αυτό που φτιάξαμε στο βήμα 8.
Θα πρέπει να το κάνουμε επεξεργασία και να το αλλάξουμε.
Παρακάτω σας δίνω την εντολή, αλλάξτε την σύμφωνα με το δικό σας subdomain (προσοχή όμως μην αλλάξετε το -le-ssl):
nano /etc/apache2/sites-available/office.nikos.com-le-ssl.conf
Βήμα 13:
Στο παράθυρο του nano που άνοιξε, σβήστε σιγά σιγά ότι έχει μέσα και βάλτε τα ακόλουθα (κάντε τις αλλαγές πριν):
<VirtualHost *:443>
ServerName office.nikos.com:443
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/office.nikos.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office.nikos.com/privkey.pem
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of Collabora Online
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery
# Capabilities
ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://127.0.0.1:9980/lool
ProxyPassReverse /lool https://127.0.0.1:9980/lool
</VirtualHost>
Βήμα 14:
Αποθηκεύστε το έγγραφο και κλείστε το (με CTRL+X, Y και Enter)
Κάντε επανεκκίνηση του apache με: systemctl reload apache2
Βήμα 15:
Δείτε αν όλα πήγαν εντάξει στο ακόλουθο admin url: https://office.nikos.com/loleaflet/dist/admin/admin.html
Αν δεν ανοίγει:
Δείτε τα εξής:
τρεξτε την εντολή: docker ps και δείτε αν τρέχει το docker,
αν όχι ξανατρέξτε την εντολη του βήματος 6 και μετά ξαναελέγχουμε.
Επίσης μπορεί να υπάρχει θέμα με το port 9980, ανοίξτε το και IN και OUT
Εάν φταίει οτιδήποτε άλλο, κάτι δεν έχετε κάνει σωστά ή κάτι χρειάζεται να κάνετε επιπλέον
γιατί μπορεί να έχετε άλλη διανομή Linux, παλαιότερη, νεότερη κλπ
Όπως και να 'χει, επικοινωνήστε μαζί μου. 😉
Βήμα 16:
Από εδώ και κάτω προχωράμε εφόσον έχουμε τελειώσει με τα προηγούμενα.
This post is also available in: English