I am hosting more than 10 services currently but only Nextcloud sends me errors periodically and only Nextcloud is super extremely painfully slow. I quit this sh*t. No more troubleshooting and optimization.

There are mainly 4 services in Nextcloud I'm using:

  • Files: as simple server for upload and download binaries
  • Calendar (with DAVx5): as sync server without web UI
  • Notes: simple note-taking
  • Network folder: mounted on Linux dolphin

Could you recommend me the alternatives for these? All services are supposed to be exposed by HTTPS, so authentication like login is needed. And I've tried note-taking apps like Joplin or trillium but couldn't like it.

Thanks in advance.

you are viewing a single comment's thread
view the rest of the comments
[–] [B] 1 point 2 years ago (5 children)

This is concerning to me because I’ve been considering ditching Synology and spinning up nextcloud. I like Synology drive but I’m tired of the underpowered hardware and dumb roadblocks and vendor lock-in nonsense. I’m very curious what you end up doing!

  • source
  • hideshow 10 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    Not OP, but I run it on docker with postgres and redis, behind a reverse proxy. All apps on NC have pretty good performance and haven't had any weird issues. It's on an old xeon with 32gb and on spinning rust.

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    Do you have redis talking to nextcloud over the unix socket or just regular TCP? The former is apparently another way to speed up nextcloud, but I'm struggling to understand to get containers using the unix socket instead.

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    I have both Postgres and Redis talking to Nextcloud through their respective unix sockets; I store the sockets in a named volume, so I can mount it on whatever containers need to reach them.

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    Do you mind sharing your docker config, so I can try and replicate it. Thank you

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago

    Sure:

    POSTGRES


    version: '3.8'
    services:
      postgres:
        container_name: postgres
        image: postgres:14-alpine
        environment:
          POSTGRES_PASSWORD: "XXXXXXXXXXXXXXXX"
          PGDATA: "/var/lib/postgresql/data/pgdata"
        volumes:
          - type: bind
            source: ./data
            target: /var/lib/postgresql/data
          - type: volume
            source: postgres-socket
            target: /run/postgresql
        logging:
          driver: json-file
          options:
            max-size: 2m
        restart: unless-stopped
    networks:
      default:
        external:
          name: backend
    volumes:
      postgres-socket:
        name: postgres-socket
    

    REDIS


    version: '3.8'
    services:
      redis:
        image: redis:7.2-alpine
        command:
          - /data/redis.conf
          - --loglevel
          - verbose
        volumes:
          - type: bind
            source: ./data
            target: /data
          - type: volume
            source: redis-socket
            target: /var/run
        logging:
          driver: json-file
          options:
            max-size: 2m
        restart: unless-stopped
    networks:
      default:
        external:
          name: backend
    volumes:
      redis-socket:
        name: redis-socket
    

    Here's redis.conf, it took me a couple of tries to get it just right:

    # create a unix domain socket to listen on
    unixsocket /var/run/redis/redis.sock
    unixsocketperm 666
    # protected-mode no
    requirepass rrrrrrrrrrrrr
    bind 0.0.0.0
    port 6379
    tcp-keepalive 300
    daemonize no
    stop-writes-on-bgsave-error no
    rdbcompression yes
    rdbchecksum yes
    # maximum memory allowed for redis
    maxmemory 50M
    # how redis will evice old objects - least recently used
    maxmemory-policy allkeys-lru
    # logging
    # levels: debug verbose notice warning
    loglevel notice
    logfile ""
    always-show-logo yes
    

    NEXTCLOUD


    version: '3.8'
    services:
      nextcloud:
        image: nextcloud:27-fpm
        env_file:
          - data/environment.txt
        volumes:
          - type: bind
            source: ./data/html
            target: /var/www/html
          - type: volume
            source: redis-socket
            target: /redis
          - type: volume
            source: postgres-socket
            target: /postgres
          - type: tmpfs
            target: /tmp:exec
          - type: bind
            source: ./data/zz-docker.conf
            target: /usr/local/etc/php-fpm.d/zz-docker.conf
          - type: bind
            source: ./data/opcache_cli.conf
            target: /usr/local/etc/php/conf.d/opcache_cli.conf
        networks:
          - web
          - backend
        logging:
          driver: json-file
          options:
            max-size: 2m
        restart: unless-stopped
      crond:
        image: nextcloud:27-fpm
        entrypoint: /cron.sh
        env_file:
          - data/environment.txt
        volumes:
          - type: bind
            source: ./data/html
            target: /var/www/html
          - type: bind
            source: ./data/zz-docker.conf
            target: /usr/local/etc/php-fpm.d/zz-docker.conf
          - type: volume
            source: redis-socket
            target: /redis
          - type: volume
            source: postgres-socket
            target: /postgres
          - type: tmpfs
            target: /tmp:exec
        networks:
          - web
          - backend
        logging:
          driver: json-file
          options:
            max-size: 2m
        restart: unless-stopped
      collabora:
        image: collabora/code:23.05.5.4.1
        privileged: true
        environment:
          extra_params: "--o:ssl.enable=false --o:ssl.termination=true"
          aliasgroup1: 'https://my.nextcloud.domain.org:443'
        cap_add:
          - MKNOD
        networks:
          - web
        logging:
          driver: json-file
          options:
            max-size: 2m
        restart: unless-stopped
    networks:
      backend:
        external:
          name: backend
      web:
        external:
          name: web
    volumes:
      redis-socket:
        name: redis-socket
      postgres-socket:
        name: postgres-socket
    

    The environment.txt file is hostnames, logins, passwords, etc...

    POSTGRES_DB=nextcloud
    POSTGRES_USER=xxxxxxx
    POSTGRES_PASSWORD=yyyyyyyyyyyyyyyyyyy
    POSTGRES_SERVER=postgres
    POSTGRES_HOST=/postgres/.s.PGSQL.5432
    NEXTCLOUD_ADMIN_USER=aaaaa
    NEXTCLOUD_ADMIN_PASSWORD=hhhhhhhhhhhhhhhhhhh
    REDIS_HOST=redis
    REDIS_HOST_PORT=6379
    REDIS_HOST_PASSWORD=rrrrrrrrrrrrr
    

    The zz-docker.conf file sets some process tuning and log format, some might not even be necessary:

    [global]
    daemonize = no
    error_log = /proc/self/fd/2
    log_limit = 8192
    
    [www]
    access.log = /proc/self/fd/2
    access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
    catch_workers_output = yes
    decorate_workers_output = no
    clear_env = no
    
    user = www-data
    group = www-data
    
    listen = 9000
    listen = /var/www/html/.fpm-sock
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0666
    listen.backlog = 512
    
    pm = dynamic
    pm.max_children = 16
    pm.start_servers = 6
    pm.min_spare_servers = 4
    pm.max_spare_servers = 6
    pm.process_idle_timeout = 30s;
    pm.max_requests = 512
    

    The opcache_cli.conf file has a single line:

    opcache.enable_cli=1
    

    I don't remember why it's there but it's working so I'm not touching it :-D

    Good luck :-)

  • source
  • parent
  • [–] [B] 1 point 2 years ago (1 child)

    Also not OP. I run nextcloud on 10th gen i3 on spinning rust and performance is good. I run it on LXC container though so without docker

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    How did you Spin it up in an LXC Container? I cant find any install Tutorials or Files for that. Do you have a link or something for me?

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago (1 child)

    A confirmed, yet still not resolved bug caused me and about 200 other people lose data (metadata) for tons of files. Well, at least 200 reacted to the GitHub bugreport I filled. I think you can easily find it because it's the most upvoted yet unresolved issue.

    Besides this, it'd often give random errors and just not function properly. My favorites are the unexplained file locks: My brother in Christ, what do you mean error while deleting a file. It's 2023 holy shit, just delete the damn file. It's ridiculously unreliable and fragile. They have tons, thousands of bugreports open - yet they focus on pushing new, unwanted social features to become the new facebook and zoom. They definitely should focus on fixing the foundation first.

  • source
  • parent
  • hideshow 2 child comments
  • [–] [B] 1 point 2 years ago

    Nextcloud is great. I don't doubt that OP is having problems, and I understand how frustration can set in and one might throw in the towel and look for alternatives, but OP's experience is atypical. I've been running it for years without any issues. I should point out that I only use it for small-scale personal stuff, but it's good for me. I have it syncing on eight devices, including Linux, MacOS, and Windows desktops; Android phone; iPad; Raspberry Pi. My phone auto-uploads new camera photos. I'm using WebDAV/Fuse mounts on some machines. Everything is solid.

  • source
  • parent