this post was submitted on 27 Nov 2023
10 points (100.0% liked)

Self-Hosted Main

515 readers
1 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

For Example

We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.

Useful Lists

founded 1 year ago
MODERATORS
 

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
[–] xiongmao1337@alien.top 1 points 1 year 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!

[–] dangernoodle01@alien.top 1 points 1 year ago (1 children)

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.

[–] rangerelf@alien.top 1 points 1 year ago (1 children)

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.

[–] ilikepie71@alien.top 1 points 1 year ago (1 children)

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.

[–] rangerelf@alien.top 1 points 1 year ago (1 children)

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.

[–] ilikepie71@alien.top 1 points 1 year ago (1 children)

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

[–] rangerelf@alien.top 1 points 1 year 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 :-)

[–] jimheim@alien.top 1 points 1 year 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.

[–] spokale@alien.top 1 points 1 year ago

I dumped synology and just use proxmox for the automatic ZFS support, then I can run my apps in either containers or VMs and even do GPU passthrough if needed.

[–] qfla@alien.top 1 points 1 year ago (1 children)

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

[–] D4nYCS@alien.top 1 points 1 year ago (1 children)

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?

[–] qfla@alien.top 1 points 1 year ago

I create LXC container and then just install apache2, php and mariadb by hand with apt, then I install nextcloud from sources.

You can try this tutorial as its very close to what I did: https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html