Roll Your Own Google Docs with NextCloud and OnlyOffice in Docker

What is Nextcloud?

Nextcloud is a suite of client-server software for creating and using file hosting services. It is enterprise-ready with comprehensive support options. Being free and open-source software, anyone is allowed to install and operate it on their own private server devices. -https://en.wikipedia.org/wiki/Nextcloud

What is ONLYOFFICE Document Server?

ONLYOFFICE Document Server is an online office suite comprising viewers and editors for texts, spreadsheets and presentations, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time. -https://github.com/ONLYOFFICE/DocumentServer

Installing Docker

  1. Log into the Linux based device
  2. Run the following commands in the terminal
    # install prerequisites
    sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y
    # add docker gpg key
    curl -fsSL https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release)/gpg | sudo apt-key add -
    # add docker software repository
    sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release) $(lsb_release -cs) stable"
    # install docker
    sudo apt install docker-ce docker-compose containerd.io -y
    # enable and start docker service
    sudo systemctl enable docker && sudo systemctl start docker
    # add the current user to the docker group
    sudo usermod -aG docker $USER
    # reauthenticate for the new group membership to take effect
    su - $USER

Running Nextcloud and ONLYOFFICE

  1. Now that Docker is installed, run the following commands to setup the Nextcloud Docker container and run it
    # create working directories
    mkdir ~/docker/mariadb -p && mkdir ~/docker/nextcloud -p && mkdir ~/docker/onlyoffice/{logs,data,lib,db} -p
    # set owner of working directories
    sudo chown "$USER":"$USER" /home/"$USER"/docker -R
    # create nextcloud network
    docker network create nextcloud
    # run the mariadb docker container
    docker run -d --name mariadb --network nextcloud --network-alias db -e MYSQL_ROOT_PASSWORD=r00tp@ss -e MYSQL_USER=nextcloud_rw -e MYSQL_PASSWORD=N3xtCl0ud! -e MYSQL_DATABASE=nextcloud -v /home/$USER/docker/mariadb:/var/lib/mysql --restart=unless-stopped mariadb:latest
    # run the nextcloud docker container
    docker run -d --name nextcloud --network nextcloud -p 8080:80 -e MYSQL_HOST=db -e MYSQL_USER=nextcloud_rw -e MYSQL_PASSWORD=N3xtCl0ud! -e MYSQL_DATABASE=nextcloud -v /home/$USER/docker/nextcloud:/var/www/html --restart=unless-stopped nextcloud:latest
    # generate a 32 character random string
    echo $(head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32)
    # copy the output string to the clipboard
    # run the onlyoffice document server container
    docker run -d --name onlyoffice --network nextcloud -p 8081:80 -v ~/docker/onlyoffice/logs:/var/log/onlyoffice -v ~/docker/onlyoffice/data:/var/www/onlyoffice/Data -v ~/docker/onlyoffice/lib:/var/lib/onlyoffice -v ~/docker/onlyoffice/db:/var/lib/postgresql -e JWT_ENABLED=true -e JWT_SECRET='<% random string from clipboard %>' --restart=unless-stopped onlyoffice/documentserver
  2. Open a web browser and navigate to http://DNSorIP:8080
  3. The Nextcloud setup screen should be displayed
  4. Enter a username and password to create an admin account
  5. Click the Install button
  6. Choose to Install recommended apps or select Cancel to skip them
  7. Welcome to Nextcloud

Setting Up ONLYOFFICE

  1. Click the user avatar > Apps
  2. Select Office & text from the left navigation
  3. Scroll down to find the OnlyOffice app > Click Download and enable
  4. After the download completes, click the user avatar > Settings
  5. Click ONLYOFFICE in the left navigation
  6. Enter the document server URL (http://DNSorIP:8081) in the Document Editing Service address field and paste the JWT_SECRET generated earlier into the Secret Key field > Click Save
  7. Once Nextcloud has connected to the document server successfully, click on Files in the top navigation
  8. Click the + icon > Select New Document
  9. Give the document a name and press Enter
  10. The new document should load in a word processor inside the web browser and be ready for editing

Documentation: https://hub.docker.com/_/nextcloud, https://hub.docker.com/r/onlyoffice/documentserver