I am starting work with a group of friends and looking to setup a private service that has tools for team collaboration, file storage and sharing, and project management. I found that all these features are in Nextcloud AIO. I want to self-host the Docker AIO image but I am unsure how I can enable my mates to get access to the AIO containers I would be running for the different services I want to setup for our team to utilize. I am a networking noob so from the bit of research I did, it seems I might need to setup a reverse proxy to expose the containers to the internet with needing to buy a domain? Did I get this wrong? It would be great to hear the clear cut steps from an expert here! Apologies if this is already in a guide online. I did try to look for it but was kinda confused about it. Any bit of help will be immensely appreciated!
before doing anything, you should first clarify what kind of workload you expect and where you plan to run it.
Nextcloud AIO runs as one unified stack — you don’t give anyone access to individual containers. You just create user accounts inside Nextcloud, and AIO manages all internal services (Talk, Office, Mail, etc.) automatically.
or also large multimedia (videos, raw images, archives)?
Will it run at home or on remote infrastructure?
If you plan to host it at home, make sure you have high-speed internet connection with stable upload and low latency.
You’ll also need to buy domain, public IP is good way too.
Only after you define your use case does it make sense to choose hardware.
For small groups, even a modest server or mini PC can handle it well — but large media storage or heavy collaboration (Collabora, Talk, indexing) will require stronger setup.
I would recommend you review 101: Self-hosting information for beginners and other 101 guides before you start. Self-hosting requires lot of work and knowledge - maybe you better start with a hosted Nextcloud and later move an own instance once you feel more familiar with system administration.
Thank you @vawaver for the response and apologies for not being more specific. My team is of under 10 people and we want to securely save both small and large data. I want to test the setup and run it at one of my teammates’ home. I think the performance of our internet connection should be alright. I want the access to work over the internet. For my own tests, I have a MAC and a harddisk for backup storage. If my experiments work, I plan to help one of my teammates to do a final setup. Is there a way around buying a domain/public IP? I am kinda familiar with Docker so I can do the docker part from the documentation, I am just unsure how to setup my self-hosted Nextcloud for my other mates to use as well.
I agree I am a beginner to self-hosting and the most I have done is setup a Note-taking application from Docker. I do agree using a hosted Nextcloud would be the easiest way to start off but my team wants to keep the data locally on either of our systems due to the slight sensitive nature of our work. I understand that I might be skipping some steps of learning here but I would definitely appreciate any guides I could refer to accomplish this task.
Another thing I am wondering is if I could self-host the AIO setup locally, then ask my team to install the Nextcloud client app, have them create accounts there and then somehow link their accounts to my self-hosted setup and then we could possibly start collaborating that way? Does that sound like a possible workaround?
Presne tak — to bola nelogická formulácia. Ak bežà reverzný proxy, porty 80 a 443 idú na proxy, nie priamo na hosta s Nextcloudom.
Hi,
Nextcloud isn’t a peer-to-peer platform.
It’s a centralized server — one main installation that manages all users, files, and apps.
Everyone connects to this single instance through a web browser or the official Nextcloud client.
Clients only sync data; they don’t host or share anything themselves.
If you want your team to work remotely, you’ll need one properly configured and reachable server.
There are two basic setup options:
Direct setup (no proxy)
If you’re only running Nextcloud and nothing else on that host:
buy a cheap domain (5–10 €/year) and point it to your public IP (DNS A record),
forward ports 80 and 443 on your router directly to the machine running Nextcloud AIO,
during setup, use that domain — AIO will handle HTTPS automatically.
With reverse proxy
If you plan to host multiple services (for example Nextcloud, Jellyfin, Portainer, Plex, etc.),
then you should put Nextcloud AIO behind a reverse proxy such as NGINX Proxy Manager, Caddy or Traefik.
In that case:
forward ports 80 and 443 from your router to the proxy server,
and let the proxy route traffic internally to the AIO instance.
Avoid using Cloudflare or other CDN-based tunnels — they often cause problems with large uploads and Talk connections.
You can install AIO directly on Linux or run it inside a Proxmox VM for better isolation, snapshots, and easy rollback.
A single NVMe drive is perfectly fine — just make sure the host is stable and has enough resources for Docker containers.
Once it’s up, simply create user accounts in the admin panel — your teammates connect securely via your domain and start collaborating right away.
Without a domain your teammates can not access the service unless you all work locally in the same network. But even then you need a hostname - it is not possible to run Nextcloud just using a local IP address since you then can’t use HTTPS which is crucial for a number of security related functions. Browsers do not allow to use certain features if the website is not using HTTPS.
The usual way to run mostly any Docker based web application is to have a reverse proxy to handle the HTTPS stuff and forward incoming requests to the Docker container which runs Nextcloud. My recommendation for this is the Nginx Proxy Manager. This provides a web UI to set up services and als takes care about getting certificates from Let’s Encrypt etc. - however, you still need a public domain for this, even if it is just something using a DynDNS service for your dial up IP address at home.
About collaboration and a non public server: keep in mind, that using applications like Collabora needs a certain network bandwidth to be responsive. If you only have a small upstream connection with less then 100 MBit/s this may become a severe bottleneck.
I run Nextcloud for a team with around 20 people and host that on a server with 6 CPU cores and 32 GB RAM. 4 cores and 16 GB would also be sufficient, since the machine usually only allocates around 10-12 GB RAM and the CPU load is only about 10-15% most of the time - but I would not recommend less if you also want to use interactive applications like Collabora and not just file sharing.
Nextcloud also provides server side encryption - so even if you host it on a public server, you can encrypt all data in a way that only your team can read it and no one else:
It seems reverse proxy is the way for me. In terms of collaboration at this stage, I think we just need file storage, file sharing, messaging and project management. I wonder if these all will be possible with my old Macbook. And this is just an experiment. For the final implementation, I might get a better MiniPC for that. Also I want to keep it all in Docker for now. The constraint I need to work with is that the service needs to be self-hosted. I guess the access part for my teammates is something I will need to look into. But yeah the account creation makes sense. I will just need to make the accounts for them in the Nextcloud installation.