Nextcloud

Introduction

Data Node is the centre of your Private Cyberspace, where ALL your data resides.

1. Features

Currently Data Node is based on Nextcloud All-in-One, by default some features are turned off on machines with less than 4GByte of RAM and when required can be turn on manually for those machines.

Activation 4GByte or less more than 4GByte
Core Functions Yes Yes
Files Performance Yes Yes
Full Text Search no Yes
Imaginary no Yes
Office Functions no Yes
Talk Performance no Yes
Talk Recorder no Yes
BorgBackup no no
ClamAV no no

2. Versions

Minimum Supported Nextcloud Server Version: 32.0.3

Minimum Supported Nextcloud All-in-One: v12.3.0

3. Security

Vulnerabilities

System and Data Separation

Remote Boot Up Decryption

Just pull the power plug and your data is safe.

Stolen hardware cannot be used

Human check boot up - say the secret word when requesting boot up.

2. Value-Add

2.1. Infinite Disk

Although Nextcloud supports a lot of external storages, they all have feature limitations when compared to native local storage.

Infinite Disk provide a native local storage to nextcloud, supporting the maximum number of features.

Your Nextcloud data (files or databases) will revolutionary storage that:

  • never run out of capacity

Infinite Disk
smb server (apple time machine compatible)
continuous backup
unlimited disk size

2.2. Area Mesh

Virtual Private Mesh
secure remote boot
separate user, system, data links

2.3. Dynamic Alias

Dynamic Alias
built-in TOTP
public accounts
trust labels

Create Nextcloud User

Requirements

  1. Guest or Member Alias

Access Nextcloud

Steps

Guest alias

Community Entity -> Public Application -> Data Server
The username and password are located at Dynamic Alias -> Alias Details -> Hub Info

Member Alias

Personal Entity -> Community Cluster -> Cluster A -> Activated, click on https://data-bohcif8iew8e.jeiheaxi2iu4phea.1.88.io

Access Nextcloud as User from an external network

Requirements

Please make sure you are able to access app.contacttrace.com.au menu first.

  1. Go to Personal Entity -> Community Cluster -> Cluster A -> Access.
  2. Enter the Duration(Days) field, the minimum is 1 and the maximum is 300.
  3. Enter the Password and select the Submit button which will create the Access Token.

Steps

  1. Using an external network. go to https://data.quuvoo4ohcequuox.0.88.io or https://data-bohcif8iew8e.jeiheaxi2iu4phea.1.88.io
  2. Select Access Anonymously (access is limited to a maximum of 60 minutes) or Access with your Alias. When choosing "Access with your Alias", the password is the access token password and the access duration is based on the duration set by the owner of the account, which has a minimum of 1 day. Select the Submit button.
  3. Enter the Nextcloud Username and Password.

2-Factor Authentication (optional)

Setup

  1. After logging on to Nextcloud, go to Settings and select the 3-bar button on the upper top left.
  2. Navigate to Security and select ENABLE TOTP
  3. Copy the TOTP secret. In the example below, the TOTP secret is Z7WQNRBIP7XTSYF5
  4. Open a new tab on the browser and go to https://token.contacttrace.com.au and press the + button.
  5. Paste the TOTP secret into the Shared secret field. The Name field is used to identify the site that uses it. In the example below, the site is nextcloud . Press the add_button to continue.
  6. If successful, the One Time Password will be shown and it changes every 30 seconds.
  7. Go back to first tab, i.e: https://data.quuvoo4ohcequuox.0.88.io or https://data-bohcif8iew8e.jeiheaxi2iu4phea.1.88.io and enter the TOTP One Time Password in the Authentication code field. In the example below, the code is 537297. Press on the Verify button to continue.
  8. If successful, the Enable TOTP will be ticked.

Usage

  1. After entering the username and password on https://data.quuvoo4ohcequuox.0.88.io or https://data-bohcif8iew8e.jeiheaxi2iu4phea.1.88.io, there will be a prompt to enter the Authentication code.
  2. Open https://token.contacttrace.com.au to view the One Time Password, enter it into the Authentication code field and Submit

Device-specific password (optional)

Setup

At the bottom of the list you find a button to create a new device-specific password. The generated password is used for configuring the new client. Ideally, generate individual tokens for every device you connect to your account, so you can disconnect those individually if necessary.

  1. Enter the device name. In the example below the name used is iPhone13.

  2. Click on the Create new app password button. If prompted enter the web authentication password. The app username and password will be displayed as in the example below. Click on the Done button.
    device_pw_enabled

  3. If successful the entry will be displayed.

Usage

If 2FA is enabled, the sync apps such as DAVx must use this new app password instead of the web authentication password.

Client Installation

Android

iOS

Internal Plugins

All-in-One

As of the 20250905_100617 version, the following 8 options are available during installation, we enable 6 of them by default.

CLAMAV_ENABLED=”no”
COLLABORA_ENABLED=”yes”
FULLTEXTSEARCH_ENABLED=”yes”
IMAGINARY_ENABLED=”yes”
ONLYOFFICE_ENABLED=”no”
TALK_ENABLED=”yes”
TALK_RECORDING_ENABLED=”yes”
WHITEBOARD_ENABLED=”yes”

Default Adjustment

Nextcloud comes with a lot of plugins (it calls them "apps"), most Private Cyberspace installations will have the following plugins installed and enabled by default.

  1. Activity
  2. Analytics ++
  3. AppAPI -
  4. Auditing / Logging
  5. Bookmarks ++
  6. Brute-force settings
  7. Calendar
  8. Client Push
  9. Collaborative tags
  10. Comments
  11. Contacts
  12. Contacts Interaction
  13. Custom CSS ++
  14. Custom menu ++
  15. Default encryption module -
  16. Dashboard
  17. Deck
  18. External storage support -
  19. Federation
  20. File reminders
  21. File sharing
  22. File download limit
  23. First run wizard
  24. Forms ++
  25. Full text search
  26. Full text search - Elasticsearch Platform
  27. Full text search - Files
  28. HTML Viewer ++
  29. LDAP user and group backend -
  30. Log Reader
  31. Mail ++
  32. Monitoring
  33. Music ++
  34. Nextcloud All In One -
  35. Nextcloud announcements --
  36. Nextcloud Office
  37. Nextcloud webhook support
  38. NCDownloader ++
  39. Notes
  40. Notifications
  41. OpenID Connect user backend ++
  42. Password policy
  43. PDF viewer
  44. PhoneTrack ++
  45. Photos
  46. Privacy
  47. Recommendations
  48. Related Resources
  49. Share by mail
  50. Support --
  51. Suspicious Login -
  52. Tables ++
  53. Talk
  54. Tasks
  55. Teams
  56. Text
  57. Two-Factor Authentication via Nextcloud notification -
  58. Two-Factor TOTP Provider
  59. Update notification
  60. Usage survey --
  61. User status
  62. Versions
  63. Weather status --
  64. Whiteboard

Below documents what has been done to Nextcloud plugins listed above by default (when your Private Cyberspace is first created).

  • Those 36 without any suffix are enabled when installed.
  • Those 4 with - suffix are disabled already when installed and remain disabled.
  • Those 1 with + suffix are disabled when installed but are enabled after install.
  • Those 4 with -- are enabled when installed but are disabled after install.
  • Those 10 with ++ are added and enabled after install.

Feel free to suggest some more "must have" plugins to be added to the above list!

External Software

Some external software are added in the Data Node to complement Nextcloud.

1. Photoprism

Currently Photoprism is installed in the Data Node to provide an AI driven multimedia album for your Private Cyberspace.

The files on Photoprism are accessed from within Nextcloud under the photoprism directory using via the WebDAV external storage with the following setting by default:

  • Encryption - Disabled
  • Preview - Disabled
  • Sharing - Disabled
  • Check Changes - Once every direct access
  • Mac NFD - Disabled
  • Read Only - Disabled

Note the default processing delays in Photoprism:
PHOTOPRISM_AUTO_INDEX - default 5 minutes.
PHOTOPRISM_AUTO_IMPORT - default 3 minutes.

Further work:

  • turn off requirement for review in order to show image in main view (by default).

1.1. Alternative

The following Nextcloud Memories Plugin Set can be used instead of Photoprism to provide media album function.

  1. Mosquitto

MQTT server for messaging

OCC Commands

Data Node Search

Currently supported data sources:

  1. Bookmarks
  2. Calendar
  3. Contacts
  4. Deck
  5. Files
  6. Talk

Syntax

You can type the following into the search input box:

  • word will try to find posts with that word

  • “exact phrases” will try to find the term inside the quote marks. This allows looking only for direct matches, such as "look at my cluckers" to find posts explicitly telling you to look at someone’s cluckers.

  • -exclude will exclude the term prepended by a minus sign. This allows filtering out certain terms, such as animals -cats to find posts about animals without posts about cats.

  • +include will include the term after the plus sign. This allows searching for multiple terms that must be included, such as cat +dog to find posts about both cats and dogs.

the search syntax is the same as the one used on the hub server.

Examples

  • test nextcloud help
    will return all your files containing test OR nextcloud OR help in their path or content.

  • +test nextcloud help
    will return all your files containing the exact word test and that might contains nextcloud OR help in their path or content.
    For example, the file in the folder help/ that contains the string test the opensource project nextcloud or test anything or testing nextcloud but not testing anything.

  • +testing nextcloud -"testing nextcloud"
    will return all your files containing the exact word “testing” and that might contains nextcloud but does not contains the exact string testing nextcloud

  • nextcloud -test
    will return all your files containing nextcloud but does not contains words starting with test

Additional Servers

Some open source servers that can be added to the Data Node to complement Nextcloud.

1. File Browser

2. File Server

3. File Transfer

4. Data Vault

Nextcloud CSS

/* Custom CSS for Nextcloud 32.0.2 */

/* Make textarea for Custom CSS bigger */

textarea#theming-customcss-input {
  height: 40em;
}

/* Disable gradient for toolbar icons (NC 32.0.0) */

:root {
  --header-menu-icon-mask: linear-gradient() !important;
}

/* Remove rounded corners and margins for the content frame */

:root
{
  --body-container-radius: 0px !important;
  --body-container-margin: 0px !important;
}

[data-theme-light],
[data-theme-dark],
[data-theme-light-highcontrast],
[data-theme-dark-highcontrast] {
  --body-container-margin: 0px !important;
}

/* Also remove rounded corners in mobile view */

#content {
  border-radius: 0px !important;
}

/* Files: Fix navigation settings area to avoid buttons to be cut off at the top
   The correct fix would be to give .app-navigation-entry__settings a top margin,
   but this is already set at 0px with !important */

.app-files .app-navigation-entry__settings > li {
  margin-top: 4px;
}

/* Text editor: fix page width in Collectives (NC 32.0.0) */

/* Fixed in Collectives 3.3.0
.app-collectives .ProseMirror {
  padding: 4px 0 !important;
}
*/

/* Text editor: show table headers with bold text and regular text color */

div.text-editor__content-wrapper th .content {
  font-weight: bold !important;
  color: var(--color-main-text) !important;
}

/* Collectives: Adjust size of title headers in Collective to avoid descenders getting cut off */

.app-collectives input.title {
  height: 43px !important;
  font-size: 30px !important;
}

/* Collectives: Fix editable headers so they won't overlap the "Done" button
   This is already part of the default styles but does not get used */

.page-title {
  padding: 0 8px !important;
}

/* Collectives: fix colors for callout boxes - use element darker colors  */

/* Fixed in Collectives 3.3.0
.callout {
  --color-error: var(--color-element-error) !important;
  --color-info: var(--color-element-info) !important;
  --color-success: var(--color-element-success) !important;
  --color-warning: var(--color-element-warning) !important;  
}
*/

/* Collectives: fix main container width to make drag handles and
   header links visible */

.sheet-view [data-collectives-el=editor],
.sheet-view [data-collectives-el=reader] {
  width: 100% !important;
}
/* ... hide drag handle for read only view */
div[contenteditable=false] + div .drag-handle {
  display: none !important;
}
/* ... remove translation from outline popup, so it won't move to the left */
.editor--outline {
  translate: none !important;
}

/* Text editor: fix missing padding below HR */

div.ProseMirror > hr {
  padding-bottom: 1em !important;
}

/* Text editor: fix missing margin below code blocks */

.code-block {
  margin-bottom: 1em;
}

/* Calendar: Fix header to have the text centered */

.app-calendar .fc-col-header-cell div {
  margin-top: -10px;
}

/* Calendar: remove vertical scroll bar from header */

.app-calendar th .fc-scroller {
  overflow: hidden !important;
}

/* Calendar: fix detail view to be a full modal without the main toolbar visible and without unneccessary scrolling (NC 32.0.0) */

.calendar-edit-full {
  height: 100% !important;
  top: 0 !important;
}
	
.calendar-edit-full .app-full {
  height: inherit !important;
}

.calendar-edit-full .modal-wrapper--full>.modal-container {
  width: min(90vw, 70em) !important;
  border-radius: var(--border-radius-container, var(--border-radius-rounded)) !important;
  max-height: 90vh !important;
  margin-top: 5vh !important;
}

.calendar-edit-full .modal-wrapper .modal-container__content {
  padding-left: 1em;
  padding-right: 1em;
}


/* Notes: Fix "+ New note " button not to scroll */

.app-notes .app-navigation__body {
  overflow-y: hidden !important;
}

/* Notes: Fix top toolbar in editor */

.app-notes .text-menubar {
  margin-top: 8px !important;
  padding-bottom: 10px !important;
  padding-right: 16px;
}

/* Fix download and link icon in public shares */

.public-page-menu__wrapper .icon-download {
  background-image: var(--icon-download-white);
}

.public-page-menu__wrapper .icon-public {
  background-image: var(--icon-public-white);
}

/* Draw.io: Fix view so it won't show an additional scroll bar */

.app-drawio > #app-content {
  overflow: hidden;
}

/* Draw.io: Fill screen without header */

#content.app-drawio {
  margin: 0;
  height: 100%;
  padding-block-end: 0 !important;
  z-index: 2147483647;
}

/* Calendar: fix horizontal scrolling for calendar view (NC 32.0.0) */

.app-calendar > .app-content {
  overflow: hidden !important;
}

/* Calendar: Fix missing margin for "settings" button (NC 32.0.1) */

.navigation-calendar-settings {
  padding-right: 8px;
}

/* Notes: Fix too small margin for "settings" button (NC 32.0.1) */

.app-notes .app-navigation-entry-wrapper {
  padding-right: 6px;
}

/* Deck: Fix "settings" button (NC 32.0.1) - reported at <https://github.com/nextcloud/deck/issues/7338> */

.app-deck .settings-button {
  border-radius: var(--border-radius-element, var(--border-radius-pill)) !important;
}
.app-deck .settings-button__icon {
  padding-left: 4px;
  padding-top: 4px;
  opacity: 1 !important;
}

/* Bookmarks: Fix missing margins for "trash bin" and "settings" - reported at <https://github.com/nextcloud/bookmarks/issues/2335> */

.app-bookmarks .app-navigation-entry-wrapper:nth-last-child(2) {
  padding-left: 8px;
  padding-right: 8px;
}
.app-bookmarks .app-navigation-entry-wrapper:nth-last-child(1) {
  padding-left: 8px;
  padding-right: 8px;
  padding-bottom: 8px;
}

/* Fix for link previews in markdown documents:

   1) Remove the empty space when open graph is disabled (.widgets--list, .link-view-bubble__reference-list)
   2) Fix top/bottom margin for internal preview widgets (.link-view-bubble .widget-custom) */

.widgets--list {
  min-height: 0 !important;
}
.link-view-bubble__reference-list {
  padding: 0 !important;
}
.link-view-bubble .widget-custom {
  margin-top: 4px !important;
  margin-bottom: 0 !important;
}

CSS Change

The css configuration is stored in the app config database table, but you can use the occ config:app:* commands to obtain, modify or reset it as well. e.g.

occ config:app:get theming_customcss customcss
occ config:app:set theming_customcss customcss --value "body { background-color: red; }"
occ config:app:delete theming_customcss customcss