Can't access seafile using a dynamic DNS

Hello, I am running a seafile server on my raspberry 4B. I followed the official documentation, and the server is all and well, and accessible from within NAT at address http://192.168.1.195:8000.

Now, I was trying to be able to access the server from outside my homeNAT/VPN. I registered an afraidDNS xxx.mooo.com domain, which works well.

However, the seahub interface is not accessible from the outside typing http://xxx.mooo.com:8000, it still works fine in NAT but can’t access it from the outside, it gets a white stuck page. As a matter of fact, if I access "http://xxx.mooo.com" i get shown my router login page

My SERVICE_URL is correct (http://xxx.mooo.com:8000).
I have forwarded port 80 to the raspberry.
My 000-default.conf looks like:

<VirtualHost *:8000>
ServerName xxx.mooo.com
DocumentRoot /var/www/html
Alias /media  /home/pi/drives/HDD800/seafile/seafile-server-latest/seahub/media

RewriteEngine On

<Location /media>
    Require all granted
</Location>

#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]

#
# seahub
#
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/

Hello, there are some things that are unclear to me.

First, why have you forwarded the port 80? You want to access seafile with xxx.mooo.com:8000 right?

Second, it looks like your domain is resolved to a local IP address, for whatever reason. I’m not familiar with such a service but trying host xxx.mooo.com should quickly answer the question.

And last, your Apache config listen on port 8000 and try to redirect to some local service on port 8000 too. Again, I’m not totally familiar with this but I just don’t see how it could work without just looping endlessly or some buggy behavior like that.

So my guess would be:

  • Check the type of IP address to which your domain is resolved (routable or not) and fix it if needed
  • Keep the port forwarding on port 80 and access Seafile with http://xxx.mooo.com
  • In Apache config, listen on port 80

And, well, you’ll probably need to support https at some point.

Hi, thank you. I am sorry I don’t really understand much either, however I just tried to follow the documentations.
In “deploying seafile behind a NAT” it is said If you deployed Seafile behind Apache/Nginx you need to configure port forward for all the components listed below. and it refers to port 80 for http. So I opened 80 on my router since I don’t use https (433) yet.

As for apache, i followed the “config seahub with apache” and copied exactly the vhost sample. However I see now that for some reson I put port :800 in the actual 000-default file. I will try to change this to :80 as it should be.

I’m sorry, could you expand a bit on this? Thank you.

I opened ports 8000 and 8083 on the router and now I can access my seafile at xxx.mooo.com:8000. However on the guide it says that I shouldn’t need to open these ports since I deployed with apache. Also, if I visit xxx.mooo.com I still get my router page, even tough I changed the virualhost to listen on :80.

Sorry my answer was quickly written (so is this one, hope it will be clearer though).

First I see I missed something yesterday, your SERVICE_URL is not completely correct, you have to drop the port number (see here, there’s a small edit to do in seahub_settings.py too).

Then I just can’t figure out what’s happening with your domain pointing to your router admin panel. Is this happening both inside and outside your local network? What do your port forwarding rules look like?

The port was opened but not forwarded.

Hello, I have done as you suggested:

  • The SERVICE_URL was set to http://x.mooo.com (without the port ending)
  • On my router, only port 80 is forwarded to the raspberry (i removed the 8000 and 8082 forwarding)
  • If i visit http://x.mooo.com from the outside network i can perfectly use seafile.
  • The apache virtualhost, configured as described in the seafile docs, listens on *:80.

Now, if I visit http://x.mooo.com from within my vpn, I get the router homepage. But from the outside network everything is fine. If you could point me a way of solving this issue, I would be really happiest. Thank you really much, I believe I had just messed the ports up.