feat: add Nextcloud + OnlyOffice files stack
Deploy Caddyfile to valhalla / deploy (push) Successful in 2m20s
Deploy Caddyfile to valhalla / deploy (push) Successful in 2m20s
Replaces ownCloud with Nextcloud (postgres + redis) and adds OnlyOffice Document Server for Google Docs-style editing. Migration is staged: nextcloud.ginnoir.com for testing, files.ginnoir.com still points at ownCloud until cutover is verified. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
a937de7bda
commit
a1c57ca899
@@ -473,6 +473,27 @@ plane.ginnoir.com {
|
||||
}
|
||||
}
|
||||
|
||||
# =============================================================
|
||||
# FILES / DOCUMENTS — internal only
|
||||
# nextcloud.ginnoir.com is the staging domain during migration;
|
||||
# files.ginnoir.com still points at ownCloud until cutover.
|
||||
# office.ginnoir.com serves the OnlyOffice document server.
|
||||
# =============================================================
|
||||
nextcloud.ginnoir.com {
|
||||
import internal_only
|
||||
redir /.well-known/carddav /remote.php/dav 301
|
||||
redir /.well-known/caldav /remote.php/dav 301
|
||||
reverse_proxy nextcloud:80 {
|
||||
header_up X-Forwarded-Proto https
|
||||
header_up X-Real-IP {remote_host}
|
||||
}
|
||||
}
|
||||
|
||||
office.ginnoir.com {
|
||||
import internal_only
|
||||
reverse_proxy onlyoffice-docs:80
|
||||
}
|
||||
|
||||
# =============================================================
|
||||
# PHOTOS — internal only
|
||||
# =============================================================
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# files stack — Nextcloud + OnlyOffice document server.
|
||||
# User data on ZFS (/storage1/labdata/nextcloud/data).
|
||||
# Config/DB on SSD (/config/nextcloud/, /config/onlyoffice/).
|
||||
# Internal-only: files.ginnoir.com + office.ginnoir.com require LAN or tailnet.
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
container_name: nextcloud
|
||||
image: nextcloud:apache
|
||||
restart: unless-stopped
|
||||
networks: [files, edge]
|
||||
env_file:
|
||||
- stack.env
|
||||
volumes:
|
||||
- /config/nextcloud/html:/var/www/html
|
||||
- /storage1/labdata/nextcloud/data:/var/www/html/data
|
||||
- /storage1/Books:/mnt/books:ro
|
||||
depends_on:
|
||||
- nextcloud-postgres
|
||||
- nextcloud-redis
|
||||
labels:
|
||||
com.centurylabs.watchtower.enable: "false"
|
||||
|
||||
nextcloud-postgres:
|
||||
container_name: nextcloud-postgres
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
networks: [files]
|
||||
env_file:
|
||||
- stack.env
|
||||
volumes:
|
||||
- /config/nextcloud/pgdata:/var/lib/postgresql/data
|
||||
labels:
|
||||
com.centurylabs.watchtower.enable: "false"
|
||||
|
||||
nextcloud-redis:
|
||||
container_name: nextcloud-redis
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
networks: [files]
|
||||
labels:
|
||||
com.centurylabs.watchtower.enable: "false"
|
||||
|
||||
onlyoffice-docs:
|
||||
container_name: onlyoffice-docs
|
||||
image: onlyoffice/documentserver:latest
|
||||
restart: unless-stopped
|
||||
networks: [files, edge]
|
||||
env_file:
|
||||
- stack.env
|
||||
volumes:
|
||||
- /config/onlyoffice/data:/var/lib/onlyoffice
|
||||
- /config/onlyoffice/logs:/var/log/onlyoffice
|
||||
labels:
|
||||
com.centurylabs.watchtower.enable: "false"
|
||||
|
||||
networks:
|
||||
files:
|
||||
name: files
|
||||
driver: bridge
|
||||
edge:
|
||||
name: edge
|
||||
external: true
|
||||
@@ -0,0 +1,13 @@
|
||||
# Nextcloud
|
||||
NEXTCLOUD_ADMIN_USER=ginnoir
|
||||
NEXTCLOUD_ADMIN_PASSWORD=ctc2dq7ZlsgIKikQtemcGGwtqMTASfM
|
||||
NEXTCLOUD_TRUSTED_DOMAINS=files.ginnoir.com nextcloud.ginnoir.com
|
||||
POSTGRES_HOST=nextcloud-postgres
|
||||
POSTGRES_DB=nextcloud
|
||||
POSTGRES_USER=nextcloud
|
||||
POSTGRES_PASSWORD=WZn3ljZBEXE45EX4JvPrrBbqDkIPE2
|
||||
REDIS_HOST=nextcloud-redis
|
||||
|
||||
# OnlyOffice document server
|
||||
JWT_ENABLED=true
|
||||
JWT_SECRET=UhZ8tBlHbbsZhwgPKJKREhFI55RPe4SwBIAoz7xMGM
|
||||
Reference in New Issue
Block a user