mirror of
https://github.com/nextcloud/all-in-one.git
synced 2025-12-19 22:16:49 +00:00
to wiki
Signed-off-by: lll <2844835+flll@users.noreply.github.com>
This commit is contained in:
parent
17362bc234
commit
42a39397e4
1 changed files with 1 additions and 149 deletions
150
reverse-proxy.md
150
reverse-proxy.md
|
|
@ -713,155 +713,7 @@ Add the following `web.config` file to the root of the site you created as the r
|
|||
|
||||
<summary>click here to expand</summary>
|
||||
|
||||
**Disclaimer:** It might be possible that the config below is not working 100% correctly, yet. Improvements to it are very welcome!
|
||||
|
||||
This setup integrates Nextcloud All-in-One (AIO) with Tailscale, using Caddy as a reverse proxy.
|
||||
Since Tailscale currently only allows communication with localhost(127.0.0.1), we use a sidecar with Caddy to communicate with AIO.
|
||||
|
||||
- Enhanced security with ACL usage within Tailnet
|
||||
- ACME certificate issuance without port forwarding (Tailnet only)
|
||||
- Possibility to expose Nextcloud externally using Tailscale's `serve.json` configuration (This document does not provide an example of `serve.json`)
|
||||
|
||||
|
||||
### 1. Set Environment Variables
|
||||
|
||||
Set the following environment variables:
|
||||
|
||||
```env
|
||||
TS_HOSTNAME=nextcloud # Hostname in Tailnet
|
||||
NC_DOMAIN=nextcloud.your-tailnet.ts.net # Format: {$TS_HOSTNAME}.{$tailnetdomain}.ts.net
|
||||
TS_AUTH_KEY=tskey-client-kXGGbs6CNTRL # OAuth client key recommended
|
||||
TS_EXTRA_ARGS=--advertise-tags=tag:nextcloud # For OAuth client key usage
|
||||
```
|
||||
|
||||
>[!NOTE]
|
||||
> Ensure NC_DOMAIN is in the correct format.
|
||||
> When using OAuth client key, set tags in TS_EXTRA_ARGS and define them in ACL.
|
||||
>
|
||||
> For more detailed information, please refer to:
|
||||
> https://tailscale.com/blog/docker-tailscale-guide
|
||||
|
||||
### 2. Configure Docker Compose File
|
||||
Create a compose.yml file with the following content. Replace environment variables as appropriate.
|
||||
|
||||
#### compose.yml
|
||||
|
||||
```yml
|
||||
services:
|
||||
nextcloud-aio-mastercontainer:
|
||||
image: nextcloud/all-in-one:latest
|
||||
init: true
|
||||
restart: always
|
||||
container_name: nextcloud-aio-mastercontainer # This line cannot be changed.
|
||||
volumes:
|
||||
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
ports:
|
||||
- 0.0.0.0:8080:8080
|
||||
environment:
|
||||
APACHE_PORT: 11000
|
||||
APACHE_IP_BINDING: 127.0.0.1
|
||||
SKIP_DOMAIN_VALIDATION: true
|
||||
|
||||
caddy:
|
||||
image: caddy:alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NC_DOMAIN=nextcloud.your-tailnet.ts.net # Change this to your domain ending with .ts.net in the format {$TS_HOSTNAME}.{tailnetdomain}
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./Caddyfile
|
||||
target: /etc/caddy/Caddyfile
|
||||
- type: volume
|
||||
source: caddy_certs
|
||||
target: /certs
|
||||
- type: volume
|
||||
source: caddy_data
|
||||
target: /data
|
||||
- type: volume
|
||||
source: caddy_config
|
||||
target: /config
|
||||
- type: volume
|
||||
source: tailscale_sock
|
||||
target: /var/run/tailscale/ # Mount the volume for /var/run/tailscale/tailscale.sock
|
||||
read_only: true
|
||||
network_mode: service:tailscale
|
||||
|
||||
tailscale:
|
||||
image: tailscale/tailscale:latest
|
||||
environment:
|
||||
- TS_HOSTNAME=nextcloud # Enter the hostname for your tailnet
|
||||
- TS_AUTH_KEY=tskey-client-kXGGbs6CNTRL # OAuth client key recommended
|
||||
- TS_EXTRA_ARGS=--advertise-tags=tag:nextcloud # Tags are required when using OAuth client
|
||||
init: true
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
- type: volume
|
||||
source: tailscale
|
||||
target: /var/lib/tailscale
|
||||
- type: volume
|
||||
source: tailscale_sock
|
||||
target: /tmp # Mounting the entire /tmp folder to access tailscale.sock
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
|
||||
volumes:
|
||||
nextcloud_aio_mastercontainer:
|
||||
name: nextcloud_aio_mastercontainer # This line cannot be changed.
|
||||
caddy_certs:
|
||||
name: caddy_certs
|
||||
caddy_data:
|
||||
name: caddy_data
|
||||
caddy_config:
|
||||
name: caddy_config
|
||||
tailscale:
|
||||
name: tailscale
|
||||
tailscale_sock:
|
||||
name: tailscale_sock
|
||||
|
||||
networks:
|
||||
nextcloud-aio:
|
||||
name: nextcloud-aio
|
||||
driver: bridge
|
||||
enable_ipv6: false
|
||||
driver_opts:
|
||||
com.docker.network.driver.mtu: "9001" # Jumbo Frame
|
||||
com.docker.network.bridge.host_binding_ipv4: "127.0.0.1" # Harden aio
|
||||
```
|
||||
|
||||
>[!IMPORTANT]
|
||||
> Make sure to replace `NC_DOMAIN`, `TS_HOSTNAME`, `TS_AUTH_KEY`, and `TS_EXTRA_ARGS` with your actual values before running the docker compose file.
|
||||
|
||||
|
||||
### 3. Create Caddyfile
|
||||
Create a Caddyfile in the current directory with the following content:
|
||||
|
||||
#### Caddyfile
|
||||
|
||||
```Caddyfile
|
||||
https://{$NC_DOMAIN}:443 {
|
||||
reverse_proxy nextcloud-aio-apache:11000
|
||||
}
|
||||
```
|
||||
|
||||
>[!NOTE]
|
||||
> Do not manually replace the `{$NC_DOMAIN}` variable. It will be automatically populated with the value set in your environment variables.
|
||||
|
||||
|
||||
|
||||
### 4. Set Up Nextcloud AIO
|
||||
1. Run `docker compose up -d`
|
||||
1. Connect to https://ip.address.of.server:8080/
|
||||
1. Enter the configured $NC_DOMAIN
|
||||
1. Provision Nextcloud
|
||||
1. Connect to `https://$NC_DOMAIN/` (e.g., https://nextcloud.your-tailnet.ts.net/)
|
||||
1. Setup complete!
|
||||
It's too long to write here, so please jump to **this guide:** https://github.com/nextcloud/all-in-one/discussions/5439
|
||||
|
||||
</details>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue