Problem with TLs termination with Nexcloud

Title: Nextcloud 34.0.4:4 Web UI TLS handshake fails on StartOS 0.4.0.1 — reproducible after clean reinstall

I have a newly installed Start9 server running StartOS 0.4.0.1.

I installed Nextcloud 34.0.4:4 from the StartOS Marketplace. Nextcloud installs successfully and its dashboard reports:

  • Status: Running
  • Web Interface: The web interface is ready
  • All startup tasks complete

However, attempting to open the Nextcloud Web UI in Brave results in:

ERR_CONNECTION_CLOSED

Other StartOS services work normally. In particular, I can access the Vaultwarden Web UI from the same Windows PC, so this appears to be specific to Nextcloud rather than a general StartOS HTTPS/LAN problem.

First Nextcloud installation

StartOS assigned:

https://gold-bipod.local:52388/

The same problem occurred using both the mDNS hostname and the server’s IPv4 address.

Windows PowerShell:

Test-NetConnection 192.168.0.19 -Port 52388

returned:

TcpTestSucceeded : True

Testing HTTP:

curl.exe -v http://192.168.0.19:52388/

successfully connected and returned:

HTTP/1.1 307 Temporary Redirect

location: https://192.168.0.19:52388/

However:

curl.exe -vk https://gold-bipod.local:52388/

failed during TLS negotiation with:

schannel: failed to receive handshake, SSL/TLS connection failed

I toggled both the Local IPv4 and Local mDNS Nextcloud Web UI interfaces off and back on. This made no difference.

Restarting Nextcloud also made no difference.

Clean reinstall

Because this was a new Nextcloud installation with no data to preserve, I completely uninstalled Nextcloud and installed it again from the Marketplace.

The fresh installation was assigned a different Web UI port:

https://gold-bipod.local:51273/

The exact same problem occurred.

HTTP test:

curl.exe -v http://192.168.0.19:51273/

successfully connects and returns:

HTTP/1.1 307 Temporary Redirect

location: https://192.168.0.19:51273/

HTTPS test:

curl.exe -vk https://192.168.0.19:51273/

reaches the server but fails:

schannel: failed to receive handshake, SSL/TLS connection failed

The equivalent HTTPS test using gold-bipod.local also fails during the TLS handshake.

Summary

  • StartOS: 0.4.0.1
  • Nextcloud: 34.0.4:4
  • Client OS: Windows
  • Browser: Brave
  • StartOS dashboard accessible normally
  • Vaultwarden Web UI accessible normally
  • Nextcloud status: Running
  • Nextcloud health check: Web Interface ready
  • Nextcloud TCP Web UI port reachable
  • HTTP request reaches the Nextcloud interface
  • HTTP correctly redirects to HTTPS
  • HTTPS connection fails during TLS handshake
  • Failure reproduced after completely uninstalling/reinstalling Nextcloud
  • Fresh installation received a different port but exhibits identical behaviour

It appears that the Nextcloud HTTP backend/interface is reachable, but TLS termination for the Nextcloud Web UI interface is failing before a TLS handshake/certificate exchange can complete.

Please advise whether this is a known compatibility/interface issue between Nextcloud 34.0.4:4 and StartOS 0.4.0.1, and whether there are any additional StartOS proxy/interface logs I can provide.

Thanks for the thorough write-up. One correction first: the 307 you get over plain HTTP comes from StartOS itself, which redirects HTTP to HTTPS on that port without contacting Nextcloud. So it doesn’t show that Nextcloud is reachable.

When you open an HTTPS address, StartOS connects to the Nextcloud container before it completes the handshake with your browser. If it can’t reach the container, the handshake fails, which would fit what you’re seeing. To check:

  1. Try to load the Nextcloud UI, then right away go to System → OS Logs. Copy the lines from that moment, especially any error mentioning a 10.0.3.x:80 address.
  2. Post the last ~100 lines of Nextcloud → Logs too.

Please mask any public IPs or domains before posting.

2026-09-27T09:07:15+01:00  2026-09-27 08:07:15.644 UTC [27] LOG: checkpoint complete: wrote 20 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.909 s, sync=0.648 s, total=3.077 s; sync files=14, longest=0.150 s, average=0.047 s; distance=136 kB, estimate=198 kB; lsn=0/72BDF58, redo lsn=0/72BDF00
2026-09-27T09:10:00+01:00  crond: USER www-data pid 745 cmd php -f /var/www/html/cron.php
2026-09-27T09:12:12+01:00  2026-09-27 08:12:12.674 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:12:15+01:00  2026-09-27 08:12:15.593 UTC [27] LOG: checkpoint complete: wrote 19 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.809 s, sync=0.592 s, total=2.919 s; sync files=13, longest=0.183 s, average=0.046 s; distance=86 kB, estimate=187 kB; lsn=0/72D3AF8, redo lsn=0/72D3AA0
2026-09-27T09:15:00+01:00  crond: USER www-data pid 746 cmd php -f /var/www/html/cron.php
2026-09-27T09:17:12+01:00  2026-09-27 08:17:12.693 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:17:15+01:00  2026-09-27 08:17:15.349 UTC [27] LOG: checkpoint complete: wrote 16 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.508 s, sync=0.583 s, total=2.656 s; sync files=13, longest=0.174 s, average=0.045 s; distance=107 kB, estimate=179 kB; lsn=0/72EEA10, redo lsn=0/72EE9B8
2026-09-27T09:20:00+01:00  crond: USER www-data pid 747 cmd php -f /var/www/html/cron.php
2026-09-27T09:22:12+01:00  2026-09-27 08:22:12.449 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:22:15+01:00  2026-09-27 08:22:15.293 UTC [27] LOG: checkpoint complete: wrote 18 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.708 s, sync=0.616 s, total=2.845 s; sync files=15, longest=0.118 s, average=0.042 s; distance=109 kB, estimate=172 kB; lsn=0/730A060, redo lsn=0/7309FB8
2026-09-27T09:25:00+01:00  crond: USER www-data pid 748 cmd php -f /var/www/html/cron.php
2026-09-27T09:27:12+01:00  2026-09-27 08:27:12.359 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:27:14+01:00  2026-09-27 08:27:14.927 UTC [27] LOG: checkpoint complete: wrote 19 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.808 s, sync=0.549 s, total=2.569 s; sync files=14, longest=0.107 s, average=0.040 s; distance=119 kB, estimate=166 kB; lsn=0/7327E60, redo lsn=0/7327E08
2026-09-27T09:27:23+01:00  3:M 27 Sep 2026 08:27:23.067 * 1 changes in 3600 seconds. Saving...
2026-09-27T09:27:23+01:00  3:M 27 Sep 2026 08:27:23.067 * Background saving started by pid 14938
2026-09-27T09:27:23+01:00  14938:C 27 Sep 2026 08:27:23.156 * DB saved on disk
2026-09-27T09:27:23+01:00  14938:C 27 Sep 2026 08:27:23.157 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
2026-09-27T09:27:23+01:00  3:M 27 Sep 2026 08:27:23.169 * Background saving terminated with success
2026-09-27T09:30:00+01:00  crond: USER www-data pid 749 cmd php -f /var/www/html/cron.php
2026-09-27T09:32:12+01:00  2026-09-27 08:32:12.987 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:32:15+01:00  2026-09-27 08:32:15.723 UTC [27] LOG: checkpoint complete: wrote 20 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.909 s, sync=0.559 s, total=2.737 s; sync files=14, longest=0.127 s, average=0.040 s; distance=116 kB, estimate=161 kB; lsn=0/73450C8, redo lsn=0/7345038
2026-09-27T09:35:00+01:00  crond: USER www-data pid 750 cmd php -f /var/www/html/cron.php
2026-09-27T09:37:12+01:00  2026-09-27 08:37:12.763 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:37:16+01:00  2026-09-27 08:37:16.155 UTC [27] LOG: checkpoint complete: wrote 26 buffers (0.2%); 0 WAL file(s) added, 0 removed, 0 recycled; write=2.410 s, sync=0.721 s, total=3.393 s; sync files=15, longest=0.245 s, average=0.049 s; distance=118 kB, estimate=157 kB; lsn=0/73629B0, redo lsn=0/7362958
2026-09-27T09:40:00+01:00  crond: USER www-data pid 751 cmd php -f /var/www/html/cron.php
2026-09-27T09:42:12+01:00  2026-09-27 08:42:12.251 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:42:14+01:00  2026-09-27 08:42:14.659 UTC [27] LOG: checkpoint complete: wrote 17 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.607 s, sync=0.562 s, total=2.409 s; sync files=14, longest=0.130 s, average=0.041 s; distance=116 kB, estimate=153 kB; lsn=0/737FB70, redo lsn=0/737FAE0
2026-09-27T09:45:00+01:00  crond: USER www-data pid 752 cmd php -f /var/www/html/cron.php
2026-09-27T09:47:12+01:00  2026-09-27 08:47:12.711 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:47:15+01:00  2026-09-27 08:47:15.080 UTC [27] LOG: checkpoint complete: wrote 16 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.507 s, sync=0.573 s, total=2.369 s; sync files=13, longest=0.131 s, average=0.045 s; distance=77 kB, estimate=145 kB; lsn=0/73931F8, redo lsn=0/73931A0
2026-09-27T09:50:00+01:00  crond: USER www-data pid 753 cmd php -f /var/www/html/cron.php
2026-09-27T09:52:12+01:00  2026-09-27 08:52:12.109 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:52:14+01:00  2026-09-27 08:52:14.697 UTC [27] LOG: checkpoint complete: wrote 16 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.507 s, sync=0.573 s, total=2.589 s; sync files=13, longest=0.175 s, average=0.045 s; distance=102 kB, estimate=141 kB; lsn=0/73ACBF0, redo lsn=0/73ACB98
2026-09-27T09:55:00+01:00  crond: USER www-data pid 754 cmd php -f /var/www/html/cron.php
2026-09-27T09:57:12+01:00  2026-09-27 08:57:12.797 UTC [27] LOG: checkpoint starting: time
2026-09-27T09:57:15+01:00  2026-09-27 08:57:15.975 UTC [27] LOG: checkpoint complete: wrote 20 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.909 s, sync=0.681 s, total=3.178 s; sync files=14, longest=0.139 s, average=0.049 s; distance=119 kB, estimate=139 kB; lsn=0/73CAA90, redo lsn=0/73CAA38
2026-09-27T10:00:00+01:00  crond: USER www-data pid 755 cmd php -f /var/www/html/cron.php
2026-09-27T10:02:13+01:00  2026-09-27 09:02:13.075 UTC [27] LOG: checkpoint starting: time
2026-09-27T10:02:15+01:00  2026-09-27 09:02:15.912 UTC [27] LOG: checkpoint complete: wrote 20 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.909 s, sync=0.658 s, total=2.838 s; sync files=14, longest=0.216 s, average=0.047 s; distance=113 kB, estimate=136 kB; lsn=0/73E71B0, redo lsn=0/73E7158
2026-09-27T10:05:00+01:00  crond: USER www-data pid 756 cmd php -f /var/www/html/cron.php
2026-09-27T10:07:14+01:00  2026-09-27 09:07:14.011 UTC [27] LOG: checkpoint starting: time
2026-09-27T10:07:16+01:00  2026-09-27 09:07:16.105 UTC [27] LOG: checkpoint complete: wrote 15 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.407 s, sync=0.507 s, total=2.094 s; sync files=12, longest=0.109 s, average=0.043 s; distance=83 kB, estimate=131 kB; lsn=0/73FC100, redo lsn=0/73FC070
2026-09-27T10:10:00+01:00  crond: USER www-data pid 757 cmd php -f /var/www/html/cron.php
2026-09-27T10:12:14+01:00  2026-09-27 09:12:14.203 UTC [27] LOG: checkpoint starting: time
2026-09-27T10:12:16+01:00  2026-09-27 09:12:16.984 UTC [27] LOG: checkpoint complete: wrote 17 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.608 s, sync=0.638 s, total=2.782 s; sync files=14, longest=0.196 s, average=0.046 s; distance=121 kB, estimate=130 kB; lsn=0/741A6B8, redo lsn=0/741A660
2026-09-27T10:15:00+01:00  crond: USER www-data pid 758 cmd php -f /var/www/html/cron.php
2026-09-27T10:15:41+01:00  [Sun Sep 27 09:15:41.579664 2026] [mpm_prefork:notice] [pid 5:tid 5] AH00169: caught SIGTERM, shutting down
2026-09-27T10:15:41+01:00  3:signal-handler (1790500541) Received SIGTERM scheduling shutdown...
2026-09-27T10:15:41+01:00  2026-09-27 09:15:41.618 UTC [5] LOG: received smart shutdown request
2026-09-27T10:15:41+01:00  3:M 27 Sep 2026 09:15:41.672 * User requested shutdown...
2026-09-27T10:15:41+01:00  3:M 27 Sep 2026 09:15:41.672 * Saving the final RDB snapshot before exiting.
2026-09-27T10:15:41+01:00  2026-09-27 09:15:41.769 UTC [5] LOG: background worker "logical replication launcher" (PID 32) exited with exit code 1
2026-09-27T10:15:41+01:00  2026-09-27 09:15:41.770 UTC [27] LOG: shutting down
2026-09-27T10:15:41+01:00  2026-09-27 09:15:41.982 UTC [27] LOG: checkpoint starting: shutdown immediate
2026-09-27T10:15:42+01:00  3:M 27 Sep 2026 09:15:42.300 * DB saved on disk
2026-09-27T10:15:42+01:00  3:M 27 Sep 2026 09:15:42.301 * Module lua unloaded
2026-09-27T10:15:42+01:00  3:M 27 Sep 2026 09:15:42.301 # Valkey is now ready to exit, bye bye...
2026-09-27T10:15:43+01:00  2026-09-27 09:15:43.110 UTC [27] LOG: checkpoint complete: wrote 16 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.002 s, sync=0.408 s, total=1.341 s; sync files=13, longest=0.209 s, average=0.032 s; distance=89 kB, estimate=126 kB; lsn=0/7430BF0, redo lsn=0/7430BF0
2026-09-27T10:15:43+01:00  2026-09-27 09:15:43.120 UTC [5] LOG: database system is shut down
2026-09-27T10:15:43+01:00  container-runtime.service: Deactivated successfully.
2026-09-27T10:15:43+01:00  container-runtime.service: Consumed 32min 27.956s CPU time, 2.5G memory peak.
2026-09-27T10:15:46+01:00  Started container-runtime.service - StartOS Container Runtime.
2026-09-27T10:15:46+01:00  Listening on /media/startos/rpc/service.sock
2026-09-27T10:15:52+01:00  Initializing...
2026-09-27T10:15:54+01:00  Migrating 34.0.4:4 -> 34.0.4:5
2026-09-27T10:15:56+01:00  Initialization complete.
2026-09-27T10:15:56+01:00  Starting Nextcloud...
2026-09-27T10:15:56+01:00  adding callback 1
2026-09-27T10:15:56+01:00  daemon nextcloud waiting on chown,postgres,valkey
2026-09-27T10:15:56+01:00  Launching chown...
2026-09-27T10:15:57+01:00  daemon postgres waiting on pg-recover
2026-09-27T10:15:57+01:00  Launching pg-recover...
2026-09-27T10:15:57+01:00  daemon postgres waiting on pg-recover
2026-09-27T10:15:57+01:00  daemon nextcloud waiting on chown,postgres,valkey
2026-09-27T10:15:57+01:00  Launching valkey...
2026-09-27T10:15:57+01:00  daemon nextcloud waiting on chown,postgres,valkey
2026-09-27T10:15:57+01:00  daemon cron waiting on nextcloud
2026-09-27T10:15:57+01:00  daemon finish-upgrade waiting on nextcloud
2026-09-27T10:15:57+01:00  daemon long-running-tasks waiting on nextcloud,finish-upgrade
2026-09-27T10:15:57+01:00  daemon external-storage waiting on nextcloud
2026-09-27T10:15:57+01:00  daemon talk-turn waiting on nextcloud,finish-upgrade
2026-09-27T10:15:57+01:00  daemon office-suite waiting on nextcloud,finish-upgrade
2026-09-27T10:15:57+01:00  daemon nextcloud waiting on postgres,valkey
2026-09-27T10:15:57+01:00  daemon nextcloud waiting on postgres,valkey
2026-09-27T10:15:57+01:00  Launching postgres...
2026-09-27T10:15:57+01:00  PostgreSQL Database directory appears to contain a database; Skipping initialization
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.418 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.418 * oO0OoO0OoO0Oo Valkey is starting oO0OoO0OoO0Oo
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.418 * Valkey version=9.1.2, bits=64, commit=00000000, modified=1, pid=3, just started
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.418 # Warning: No config file specified, using the default config. In order to specify a config file use valkey-server /path/to/valkey.conf
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.449 * monotonic clock: X86 TSC @ 1612.88 ticks/us
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.449 * Running mode=standalone, port=6379.
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.449 * Static Module 'lua' successfully loaded
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.449 * Server initialized
2026-09-27T10:15:57+01:00  3:M 27 Sep 2026 09:15:57.449 * Ready to accept connections tcp
2026-09-27T10:15:57+01:00  2026-09-27 09:15:57.856 UTC [5] LOG: starting PostgreSQL 17.11 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
2026-09-27T10:15:57+01:00  2026-09-27 09:15:57.856 UTC [5] LOG: listening on IPv4 address "0.0.0.0", port 5432
2026-09-27T10:15:57+01:00  2026-09-27 09:15:57.856 UTC [5] LOG: listening on IPv6 address "::", port 5432
2026-09-27T10:15:57+01:00  2026-09-27 09:15:57.954 UTC [5] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2026-09-27T10:15:58+01:00  2026-09-27 09:15:58.043 UTC [29] LOG: database system was shut down at 2026-09-27 09:15:43 UTC
2026-09-27T10:15:58+01:00  daemon nextcloud waiting on postgres
2026-09-27T10:15:58+01:00  2026-09-27 09:15:58.135 UTC [5] LOG: database system is ready to accept connections
2026-09-27T10:15:58+01:00  daemon cron waiting on nextcloud
2026-09-27T10:15:58+01:00  daemon finish-upgrade waiting on nextcloud
2026-09-27T10:15:58+01:00  daemon long-running-tasks waiting on nextcloud,finish-upgrade
2026-09-27T10:15:58+01:00  daemon external-storage waiting on nextcloud
2026-09-27T10:15:58+01:00  daemon talk-turn waiting on nextcloud,finish-upgrade
2026-09-27T10:15:58+01:00  daemon office-suite waiting on nextcloud,finish-upgrade
2026-09-27T10:15:58+01:00  Launching nextcloud...
2026-09-27T10:15:58+01:00  Conf remoteip disabled.
2026-09-27T10:15:58+01:00  To activate the new configuration, you need to run:
2026-09-27T10:15:58+01:00   service apache2 reload
2026-09-27T10:15:58+01:00  => Configuring PHP session handler...
2026-09-27T10:15:58+01:00  ==> Using default PHP session handler
2026-09-27T10:15:58+01:00  => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/before-starting"
2026-09-27T10:15:58+01:00  ==> Skipped: the "before-starting" folder is empty (or does not exist)
2026-09-27T10:15:59+01:00  AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
2026-09-27T10:15:59+01:00  AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
2026-09-27T10:15:59+01:00  [Sun Sep 27 09:15:59.172197 2026] [mpm_prefork:notice] [pid 5:tid 5] AH00163: Apache/2.4.68 (Debian) PHP/8.5.11 configured -- resuming normal operations
2026-09-27T10:15:59+01:00  [Sun Sep 27 09:15:59.172211 2026] [core:notice] [pid 5:tid 5] AH00094: Command line: 'apache2 -D FOREGROUND'
2026-09-27T10:15:59+01:00  daemon long-running-tasks waiting on finish-upgrade
2026-09-27T10:15:59+01:00  daemon talk-turn waiting on finish-upgrade
2026-09-27T10:15:59+01:00  daemon office-suite waiting on finish-upgrade
2026-09-27T10:15:59+01:00  daemon long-running-tasks waiting on finish-upgrade
2026-09-27T10:15:59+01:00  daemon talk-turn waiting on finish-upgrade
2026-09-27T10:15:59+01:00  daemon office-suite waiting on finish-upgrade
2026-09-27T10:15:59+01:00  Launching cron...
2026-09-27T10:15:59+01:00  Launching finish-upgrade...
2026-09-27T10:15:59+01:00  Launching external-storage...
2026-09-27T10:15:59+01:00  Launching long-running-tasks...
2026-09-27T10:15:59+01:00  Launching talk-turn...
2026-09-27T10:15:59+01:00  Launching office-suite...
2026-09-27T10:15:59+01:00  crond: crond (busybox 1.37.0) started, log level 8

Upgraded to 4:5 before checking the logs to see if that cleared any issues. Noticed it’s seeing a data base at postgreSQl and skipping, not sure if that’s an issue.