Switching to AIO from 'basic' docker?

Support intro

Sorry to hear you’re facing problems. :slightly_frowning_face:

The community help forum (help.nextcloud.com) is for home and non-enterprise users. Support is provided by other community members on a best effort / “as available” basis. All of those responding are volunteering their time to help you.

If you’re using Nextcloud in a business/critical setting, paid and SLA-based support services can be accessed via portal.nextcloud.com where Nextcloud engineers can help ensure your business keeps running smoothly.

Getting help

In order to help you as efficiently (and quickly!) as possible, please fill in as much of the below requested information as you can.

Before clicking submit: Please check if your query is already addressed via the following resources:

(Utilizing these existing resources is typically faster. It also helps reduce the load on our generous volunteers while elevating the signal to noise ratio of the forums otherwise arising from the same queries being posted repeatedly).

I hope this is the right place for this question.

After using the docker version in the TrueNAS catalogue I discovered the AIO has the high performance backend built in, why is it not built into the regular docker? The TrueNAS version deploys this version: GitHub - nextcloud/docker: ⛴ Docker image of Nextcloud I really do not know why they don’t just use https://github.com/nextcloud/all-in-one via… https://hub.docker.com/r/nextcloud/all-in-one

So my main question is, I have a lot already loaded on my existing install and want to get the highspeed backend working and switching to the AIO seems like the easiest way to do that. BUT I am very concerned about just switching, how to map new volumes via docker YAML etc without breaking anything existing.

I assume there is likely a way to just switch it over with the right volume maps? Since all of the passwords should also be in nextcloud config files like config.php?

services:
  nextcloud-aio-mastercontainer:
    image: nextcloud/all-in-one:latest
    container_name: nextcloud-aio-mastercontainer
    restart: always
    ports:
      - "9991:9991"  # Use your custom port if needed
      - "8080:8080"
      - "8443:8443"
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config #some kind of different mapping here for the user, app and db files?
    environment:
      - TZ=America/Vancouver
    resources:
      limits:
        cpus: 4
        memory: 8192

I really don’t see why there are 2 versions that on a surface level look like they should be equivalent but one is lacking something like this highspeed backend.

The Basics

  • Nextcloud Server version (e.g., 29.x.x):
    • 32.0.0
  • Operating system and version (e.g., Ubuntu 24.04):
    • TrueNAS 25.04.2.1: Linux 6.12.15-production+truenas x86_64
  • Web server and version (e.g, Apache 2.4.25):
    • Not sure where to find this, unmodified from the stock docker
  • Reverse proxy and version _(e.g. nginx 1.27.2)
    • NGINX v2.12.6 as another TrueNAS app
  • PHP version (e.g, 8.3):
    • 8.3.26
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • no

Configuration

Nextcloud

# occ config:list system
{
    "system": {
        "upgrade.disable-web": true,
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "overwrite.cli.url": "https:\/\/localhost",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "pgsql",
        "version": "32.0.0.13",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_smtpsecure": "ssl",
        "mail_sendmailmode": "smtp",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "twofactor_enforced": "true",
        "twofactor_enforced_groups": [],
        "twofactor_enforced_excluded_groups": [
            "admin",
            "no2fa"
        ],
        "logtimezone": "America\/Vancouver",
        "default_phone_region": "CA",
        "loglevel": 2,
        "maintenance": false,
        "maintenance_window_start": 1,
        "preview_imaginary_url": "***REMOVED SENSITIVE VALUE***",
        "overwriteprotocol": "https",
        "bulkupload.enabled": true,
        "chunkSize": "5120MB",
        "forbidden_filename_basenames": [
            "con",
            "prn",
            "aux",
            "nul",
            "com0",
            "com1",
            "com2",
            "com3",
            "com4",
            "com5",
            "com6",
            "com7",
            "com8",
            "com9",
            "com\u00b9",
            "com\u00b2",
            "com\u00b3",
            "lpt0",
            "lpt1",
            "lpt2",
            "lpt3",
            "lpt4",
            "lpt5",
            "lpt6",
            "lpt7",
            "lpt8",
            "lpt9",
            "lpt\u00b9",
            "lpt\u00b2",
            "lpt\u00b3"
        ],
        "forbidden_filename_characters": [
            "<",
            ">",
            ":",
            "\"",
            "|",
            "?",
            "*",
            "\\",
            "\/"
        ],
        "forbidden_filename_extensions": [
            " ",
            ".",
            ".filepart",
            ".part"
        ],
        "app_install_overwrite": [],
        "defaultapp": "files",
        "overwritehost": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "127.0.0.1",
            "192.168.0.51",
            "localhost",
            "nc.home.mrnewlove.ca",
            "nc.home.mrnewlove.ca\/",
            "nextcloud",
            "nextcloud-init-sync.lock",
            "truenas-newlove.local"
        ]
    }
}

Apps

# occ app:list
Enabled:
  - activity: 5.0.0-dev.0
  - bruteforcesettings: 5.0.0-dev.0
  - circles: 32.0.0
  - cloud_federation_api: 1.16.0
  - comments: 1.22.0
  - contactsinteraction: 1.13.1
  - dashboard: 7.12.0
  - dav: 1.34.2
  - federatedfilesharing: 1.22.0
  - federation: 1.22.0
  - files: 2.4.0
  - files_downloadlimit: 5.0.0-dev.0
  - files_pdfviewer: 5.0.0-dev.0
  - files_reminders: 1.5.0
  - files_sharing: 1.24.0
  - files_trashbin: 1.22.0
  - files_versions: 1.25.0
  - firstrunwizard: 5.0.0-dev.0
  - forms: 5.2.1
  - logreader: 5.0.0-dev.0
  - lookup_server_connector: 1.20.0
  - nextcloud_announcements: 4.0.0-dev.0
  - notifications: 5.0.0-dev.0
  - notify_push: 1.2.0
  - oauth2: 1.20.0
  - password_policy: 4.0.0-dev.0
  - photos: 5.0.0-dev.1
  - privacy: 4.0.0-dev.0
  - profile: 1.1.0
  - provisioning_api: 1.22.0
  - recommendations: 5.0.0-dev.0
  - related_resources: 3.0.0-dev.0
  - richdocuments: 9.0.0
  - richdocumentscode: 25.4.504
  - serverinfo: 4.0.0-dev.0
  - settings: 1.15.1
  - sharebymail: 1.22.0
  - spreed: 22.0.0
  - support: 4.0.0-dev.0
  - survey_client: 4.0.0-dev.0
  - systemtags: 1.22.0
  - text: 6.0.0-dev.0
  - theming: 2.7.0
  - twofactor_backupcodes: 1.21.0
  - twofactor_totp: 14.0.0
  - updatenotification: 1.22.0
  - user_status: 1.12.0
  - viewer: 5.0.0-dev.0
  - weather_status: 1.12.0
  - webhook_listeners: 1.3.0
  - workflowengine: 2.14.0
Disabled:
  - admin_audit: 1.22.0
  - app_api: 32.0.0 (installed 32.0.0)
  - encryption: 2.20.0
  - files_external: 1.24.0
  - suspicious_login: 10.0.0-dev.0
  - twofactor_nextcloud_notification: 6.0.0-dev.0
  - user_ldap: 1.23.0

TrueNAS YAML Config:

nextcloud:
  ix_certificate_authorities: {}
  ix_certificates: {}
  ix_context:
    app_metadata:
      annotations:
        min_scale_version: 24.10.2.2
      app_version: 32.0.0
      capabilities:
      - description: Cron, Nextcloud, Nginx are able to change file ownership arbitrarily
        name: CHOWN
      - description: Cron, Nextcloud, Nginx are able to bypass file permission checks
        name: DAC_OVERRIDE
      - description: Cron, Nextcloud, Nginx are able to bypass permission checks for
          file operations
        name: FOWNER
      - description: Cron, Nextcloud, Nginx are able to bind to privileged ports (<
          1024)
        name: NET_BIND_SERVICE
      - description: Cron, Nextcloud, Nginx are able to use raw and packet sockets
        name: NET_RAW
      - description: Cron, Nextcloud, Nginx are able to change group ID of processes
        name: SETGID
      - description: Cron, Nextcloud, Nginx are able to change user ID of processes
        name: SETUID
      - description: Imaginary is able to modify process scheduling priority
        name: SYS_NICE
      categories:
      - productivity
      changelog_url: https://nextcloud.com/changelog/
      date_added: '2024-08-07'
      description: A file sharing server that puts the control and security of your
        own data back into your hands.
      home: https://nextcloud.com/
      host_mounts: []
      icon: https://media.sys.truenas.net/apps/nextcloud/icons/icon.svg
      keywords:
      - nextcloud
      - storage
      - sync
      - http
      - web
      - php
      lib_version: 2.1.53
      lib_version_hash: 87d1db998a9aab3355a78a686d640251822e640125e65ad1237c9902a59e32f1
      maintainers:
      - email: dev@truenas.com
        name: truenas
        url: https://www.truenas.com/
      name: nextcloud
      run_as_context:
      - description: Nextcloud runs as root user.
        gid: 0
        group_name: root
        uid: 0
        user_name: root
      - description: Postgres runs as non-root user.
        gid: 999
        group_name: postgres
        uid: 999
        user_name: postgres
      - description: Redis runs as any non-root user.
        gid: 568
        group_name: redis
        uid: 568
        user_name: redis
      - description: Nginx runs as root user.
        gid: 0
        group_name: root
        uid: 0
        user_name: root
      - description: Imaginary runs as non-root user.
        gid: 568
        group_name: imaginary
        uid: 568
        user_name: imaginary
      screenshots:
      - https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot1.png
      - https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot2.png
      - https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot3.png
      sources:
      - https://github.com/nextcloud/docker
      title: Nextcloud
      train: stable
      version: 2.0.34
    app_name: nextcloud
    is_install: false
    is_rollback: false
    is_update: true
    is_upgrade: false
    operation: UPDATE
    scale_version: TrueNAS-25.04.2.1
    upgrade_metadata: {}
  ix_volumes: {}
  labels: []
  network:
    certificate_id: null
    dns_opts: []
    web_port:
      bind_mode: published
      host_ips: []
      port_number: 9991
  nextcloud:
    additional_envs:
    - name: OVERWRITEHOST
      value: ***REMOVED SENSITIVE VALUE***
    admin_password: ***REMOVED SENSITIVE VALUE***
    admin_user: nextcloud_admin
    apt_packages:
    - ffmpeg
    cron:
      enabled: true
      schedule: '* * * * *'
    data_dir_path: /var/www/html/data
    db_password: ***REMOVED SENSITIVE VALUE***
    db_user: nextcloud
    host: 192.168.0.51
    imaginary:
      enabled: true
    max_execution_time: 120
    op_cache_interned_strings_buffer: 64
    op_cache_memory_consumption: 1024
    php_memory_limit: 4096
    php_upload_limit: 200
    postgres_image_selector: postgres_13_image
    redis_password: ***REMOVED SENSITIVE VALUE***
    tesseract_languages: []
  resources:
    gpus:
      kfd_device_exists: false
      nvidia_gpu_selection:
        '0000:37:00.0':
          use_gpu: false
          uuid: GPU-908f149d-1bdb-45d5-433a-fadea7b03575
      use_all_gpus: false
    limits:
      cpus: 8
      memory: 16384
  storage:
    additional_storage: []
    data:
      host_path_config:
        acl_enable: false
        path: /mnt/main-lts/truenas-apps/NextCloud/user_data
      type: host_path
    html:
      host_path_config:
        acl_enable: false
        path: /mnt/main-lts/truenas-apps/NextCloud/AppData
      type: host_path
    postgres_data:
      host_path_config:
        acl_enable: false
        auto_permissions: false
        path: /mnt/main-lts/truenas-apps/NextCloud/Postgres
      type: host_path

… something the TrueNAS folks could answer…

nope, there are many paths leading to successful HPB:Talk implementation. some folks prefer to keep these services separate to improve troubleshooting. why not simply add another docker container using High Performance Backend for Talk on Nextcloud with Docker or add the HPB:Talk to your existing docker stack?

1 Like

Official AiO migration docs https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-migrate-from-an-already-existing-nextcloud-installation-to-nextcloud-aio - no idea if there any TrueNas specifics you must follow. you also could review and adopt this guides How to docker-compose with notify_push (2024) and Nextcloud docker compose setup with Caddy (2024)

1 Like

That link basically says to just switch to the AIO version?

Looks like I would need to go through the full database migration to maintain content of Talk chats then?

Seems like a lot of risk to migrate over, does the backend only improve talk video chat performance? Or will it also improve the files performance? Trying to determine how much of a priority I should make this.

Edit: I am really surprised there is no built in server-to-server migration tool(like now you can migrate an entire server in cpanel) or even just a way to do a full backup archive that can be restored as well.

Edit2: Found the answer to if the highspeed backend helps file side performance, and I guess not. So that really drops this down to a low priority since we never host more then 2-3 personal calls.

please read the docs and use search. all the topics have been discussed many times already. this forum is not your personal search service.

AIO is an opinionated Nextcloud stack that orchestrates numerous images/containers for a, well, all in one Nextcloud deployment experience.

The other referenced image is the Nextcloud micro services image. It’s a building block for building custom Nextcloud stacks in a DIY manner.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.