What is this?
After my initial video on installing NextCloud via Docker, I really wanted to check out the NextCloud Talk functionality, and specifically on my iOS device. I'd love to get away from hosted chat and video voice services for my family, and having something that ntoifies you of an incoming message or call is important (something you don't get with Jitsi meet unfortunately).
The browser version of Talk worked without issue right out of the gate, but when I trie dto connect the iOS app to my server I kept hitting a wall where everything seemed to work, but the login step just showed a spinner in the UI on the device, and it never moved forward.
This video is about what I put together from several places to fix the issue.
Original Video for installing NextCloud via Docker:
It's worth knowing
It's worth knowing that I reached out to the NextCloud community on their forums at https://help.nextcloud.com, and got an immediate response with one of the iOS app developers. He attempted to connect to my install and ran the app on his side to get some loggingin in an attempt to help me understand what might be wrong.
This type of response is 100% what I love about open source projects. Communities like this are tremendous!
What Should Be Setup for Using Talk on iOS / Android?
You need a URL and a valid CA SSL Certificate. In other words, no IP address only and Self-Signed Certificates for the iOS / Android apps.
To do this, I use a domain I already own, and i have a wildcard entry in my domain registrar's DNS.
Go to your registrar's DNS settings for your domain, and add an A-Record. Create an entry for *. Yes, just an asterisk ( * ). Then point that to your NextCloud install's public IP (if you're running this from home, point it to your home's Public IP address).
After doing the above setup, I use NginX Proxy Manager, to create a url for my NextCloud install.
My Video on Setting up NginX Proxy Manager and using it with Docker is here:
Once you have NGinX Proxy Manager setup, you can add a URL for your nextcloud install like I did.
I create a new host entry, and enter a URL for my domain. mycloud.<your domain>.<com,org,net,io,whatever>, then enter the gateway IP of your NextCloud Docker network.
You can find this using Portainer, and clicking on the NextCloud App container link in the UI, then scrolling to the bottom and getting the gateway IP, or you can use the following commands in the terminal.
docker network ls
and then to see the specifics of a network use:
docker network inspect <network_name>
This will display the network information in JSON formatted text in your terminal. Find the 'Gateway' entry, and copy that IP address.
Paste that IP into the IP address space in your NGinX Proxy Manager IP space. Now enter the Port you setup for NextCloud in your initial install.
Enable "Block Common Exploits" and "Websocket Support" and save.
Click the entry in the table and make sure your NextCloud install opens in your browser using the neew URL.
Now, go back into NGinX Proxy Manager, and edit your entry. Move to the SSL tab, select "Request a New Certificate" from the drop down, enable "Force SSL" and "HSTS", enter your email address, and accept the Terms of Service for LetsEncrypt. Click Save.
If the pop-up closes with no error, you should now be able to navigate to your NextCloud install via SSL with no issues.
Now we need to address the Talk problem you might face on iOS / Android
We need to adjust a configuration file in order to allow our devices to connect to our NextCloud install through the Talk app.
Type the following in the terminal:
docker exec -it <name of your nextcloud app container> /bin/bash
This will put you into the NextCloud install inside of docker.
Next you need to edit the file under the config folder.
in this file you need to add two lilnes. Just make a spece right after
'installed' => true,
Add the following:
'forcessl' => true,
'overwriteprotocol' => 'https',
Now save with CTRL+O, then Enter / Return, then exit from nano with CTRL+X.
Now you can exit the docker shell with
Now, kill the app on your device, and restart it, go through the connection process, and it all should be working.