Nextcloud is very easy to setup as a container. You just need a MySQL/MariaDB server and a volume mount. Just make sure the volume is owned by www-data user (uid:gid 33:33). That's it.
Selfhosted
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.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
is marinade a typo for mariadb or is this some new thing that i missed
I swear I already double checked but Gboard's autocorrect always managed to mess up something
there's always ducking something
Their official image is easy to run, just one container needed: https://hub.docker.com/_/nextcloud
Linuxserver.io images are also good: https://hub.docker.com/r/linuxserver/nextcloud
+1 for the linuxserver.io container. It is easier to use than anything else I've found.
It all comes down to which webserver you want to use actually
Base official image and linuxserver.Io comes with Apache
With fpm you can choose
As others have commented, Nextcloud provide an all-in-one docker set up. I managed to follow the instructions and get it working.
However, in the end, I wanted this to replace my Dropbox subscription, and my files and reliable access to them are important to me. Given that, and my relatively low skill level, I didn't want to futz with troubleshooting failed updates and server issues, so I just went with a Hetzner storage share, which is their managed nextcloud subscription: https://www.hetzner.com/storage/storage-share
This is a completely valid option and one that more people should consider. You don't have to selfhosted everything, even if you can. I actually prefer to support existing instances of stuff in a lot of cases.
I use https://disroot.org for email and cloud, and I'm more than happy to kick them a hundred bucks a year to help support a community. Same with https://fosstodon.org for Mastodon. I'm fully capable of self-hosting these things, but instead I actively choose to support them instead so that their services can be extended to more than just myself. I chose those two because they send excess funds upstream to FOSS projects. I'm proud to rep those domains.
I remember cursing allot with trying nextcloud to work :D and than my serber crashed. I'm currently reinstalling everything but haven't had the courage to get going on nextcloud.
Here's my docker-compose.yml for nextcloud (with minor privacy changes) that includes onlyoffice and drawio containers. SSL is not included and should be handled by NPM and you'll need a proxy host for both drawio and onlyoffice. I use NPM in docker so I just add it to the docs network instead of exposing any additional ports. For onlyoffice the secret key gets regenerated each time the container starts so you'll need to update onlyoffice setting in nextcloud each time (unless someone has a better solution). You can get the secret key by logging into the onlyoffice container and running
cat /etc/onlyoffice/documentserver-example/local.json
I've been running this solution for a few years without any major issues.
docker-compose.yml
version: '3.5'
networks:
docs:
name: docs
driver: bridge
services:
nextcloud:
image: linuxserver/nextcloud
container_name: nextcloud
environment:
- PUID=1000
- PGID=1000
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=P@ssWord321!
- MYSQL_HOST=nextcloud_db
- TZ="America/Chicago"
volumes:
- /home/user/docker/configs/nextcloud:/config
- /home/user/docker/configs/nextcloud_data:/data
restart: unless-stopped
depends_on:
- nextcloud_db
networks:
- docs
nextcloud_db:
image: linuxserver/mariadb:110.4.21mariabionic-ls31
container_name: nextcloud_db
restart: always
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=P@ssWord123!
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=P@ssWord321!
volumes:
- /home/user/docker/configs/nextcloud_db/mysql:/config
restart: unless-stopped
networks:
- docs
onlyoffice:
image: onlyoffice/documentserver
container_name: onlyoffice
restart: always
depends_on:
- nextcloud
networks:
- docs
image-export:
image: jgraph/export-server
container_name: nextcloud-drawio-export
networks:
- docs
volumes:
- ./fonts:/usr/share/fonts/drawio
restart: unless-stopped
drawio:
image: jgraph/drawio
container_name: nextcloud-drawio
networks:
- docs
depends_on:
- image-export
environment:
- VIRTUAL_HOST=drawio.example.com
- VIRTUAL_PORT=8080
- EXPORT_URL=http://image-export:8000/
restart: unless-stopped
This compose looks like it should work, I'm not at a pc to test but it's near identical to my own; I would maybe change onlyoffice for collabra otherwise try this.
Op states they are using a Nas and server, so if NFS is being used you may need :Z on the end of any kind volume (or a non-NFS mount point if using podman/extended ACLS don't work).
I'm not sure if your goal is to set up nextcloud or to learn docker compose while setting up nextcloud. If you just want it up and running, you could use DockSTARTer to get it going. Heck, even if your goal is mainly learning, you can always tear apart the compose file that dockstarter generates and compare it to your own.
FYI docker images binding to an NFS mount can be tricky due to ACL extensions not being supported. Podman is especially bad for this.
A bit of a sidenote and definitely an unpopular opinion coming up... The nextcloud snap is perhaps the easiest and among the most stable ways to run NC. And I base this on my own experience, having installed and tested NC on numerous devices in several ways. You loose some tinkerability and the performance is nothing to write home about. And yes I know - snap no good - Canonical evil. That having been said, If stability and easy setup is what you want, it's worth considering.
I would recommend going with the Docker AIO install, it does a lot of the heavy lifting for you as well as dealing with backups and updates for long term maintenance.
I spun this up just today and had no issues whatsoever. Just a bad aftertase because the AIO package creates and manages other containers on the host, I'd love to have more control over those as well. But for the sake of comfortability I'll just have to accept that. And it truly works out of the box!
With nginx
https://github.com/nextcloud/docker#base-version---fpm
With caddy
https://caddy.community/t/example-docker-nextcloud-fpm-caddy-v2-webserver/9407
I oersonaly run fpm with caddy
Remember to create your admin account on first run and then add your trusted domain
Admin
- navigate to localhost:8080
- create admin acount
- write down your credestials
allowed domains
- docker ps
- copy container id of nextcloud:fpm
docker exec --user www-data container_id php occ config:system:set trusted_domains 2 --value=your_domain_name_here
- docker stop container_id
- docker start container_id