5.3 KiB
navigation, title, main
navigation | title | main | ||
---|---|---|---|---|
true | Nextcloud |
|
:ellipsis{left=0px width=40rem top=10rem blur=140px}
Nextcloud
::alert{type="info"} 🎯 Goals: Install Nextcloud to manage your photos and files across all your devices. ::
Nextcloud is a self-hosted solution that allows you to access and synchronize your data across all your devices. It also includes collaboration features, calendar, and more. It’s a great alternative to services like Google Drive, iCloud, or OneDrive.
Installation
::alert{type="info"} :::list{type="info"}
- We'll be using the Docker image maintained by LinuxServer.io ::: ::
File structure:
root
└── docker
└── nextcloud
├── config
├── data
├── compose.yaml
└── .env
Open Dockge, click on compose
, name the stack nextcloud
and paste the following:
---
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
environment:
- PUID=${PUID}
- PGID=${GUID}
- TZ=Etc/UTC
volumes:
- /docker/nextcloud/config:/config
- /docker/nextcloud/data:/data
ports:
- ${PORT}:443
restart: unless-stopped
::alert{type="info"} :::list{type="info"}
- If you’re using a NAS or network-shared drive via Samba, replace
/docker/nextcloud/data
with the path to your shared folder. ::: ::
Find your PUID
and GUID
by running the following command:
id username
Then fill out the .env
file with your preferred port and the values found above, for example:
PUID=1000
GUID=1000
PORT=4545
Deploy the stack and visit http://yourserverip:4545
to complete the setup.
::alert{type="danger"} :::list{type="danger"}
- If it fails: check your firewall rules. ::: ::
Exposing Nextcloud with Swag
The goal of this setup is to access Nextcloud remotely from all your devices. We’ll use Swag to expose the app.
::alert{type="info"} :::list{type="info"}
- We assume you have a subdomain
nextcloud.yourdomain.com
with aCNAME
pointing toyourdomain.com
in your DNS zone. And unless you’re using Cloudflare Zero Trust, port443
on your router must be forwarded to port443
on your server using NAT rules. ::: ::
In Dockge, go to your SWAG stack and edit the compose to add Nextcloud's network:
services:
swag:
container_name: # ...
# ...
networks:
# ...
- nextcloud
networks:
# ...
nextcloud:
name: nextcloud_default
external: true
::alert{type="info"} :::list{type="info"}
- We assume the Nextcloud network is named
nextcloud_default
. You can confirm connectivity by visiting the SWAG dashboard at http://yourserverip:81. ::: ::
Redeploy the stack and wait for SWAG to become fully operational.
In Nextcloud’s files, edit the config.php
file:
::alert{type="success"} ✨ Tip: You can use File Browser to navigate and edit files instead of using terminal commands. ::
sudo vi /docker/nextcloud/config/www/nextcloud/config/config.php
Enter edit mode with i
and paste the following before the final );
:
'trusted_proxies' => [gethostbyname('swag')],
'overwrite.cli.url' => 'https://nextcloud.example.com/',
'overwritehost' => 'nextcloud.example.com',
'overwriteprotocol' => 'https',
Also add your domain in the array
section. It should look like this:
array (
0 => '192.168.0.1:444', # This line may differ—don’t change it!
1 => 'nextcloud.yourdomain.com', # Add your domain here
),
Press Esc
, then save and exit by typing :x
and hitting Enter.
In Swag’s folders, create the file nextcloud.subdomain.conf
:
sudo vi /docker/swag/config/nginx/proxy-confs/nextcloud.subdomain.conf
Enter edit mode with i
and paste the following:
## Version 2024/04/25
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name nextcloud.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app nextcloud;
set $upstream_port 443;
set $upstream_proto https;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
# Hide proxy response headers from Nextcloud that conflict with ssl.conf
proxy_hide_header Referrer-Policy;
proxy_hide_header X-Content-Type-Options;
proxy_hide_header X-Frame-Options;
proxy_hide_header X-XSS-Protection;
# Disable proxy buffering
proxy_buffering off;
}
}
Press Esc
, save and exit with :x
then Enter.
That’s it—you’ve exposed Nextcloud! Don’t forget to install the desktop and mobile apps.
::alert{type="success"} ✨ Tip: You can natively protect this app with Authentik by following these instructions. ::