Кстати, если хотите попробовать запустить это в Docker, вот docker-compose файл, который настраивает Nextcloud, MariaDB, Redis, Collabora и Nginx Proxy Manager в одном пакете, с монтированием NFS-томов. Вы можете настроить свои шары в TrueNAS, исправить разрешения на этих шарах, изменить пути к файлам в этом файле, чтобы они соответствовали вашей структуре, изменить несколько паролей и можете начинать работу. Вы даже можете настроить это как стек в Portainer, если вы не знакомы с docker-compose.
```yaml
services:
nextcloud:
image: nextcloud
container_name: nextcloud
restart: unless-stopped
networks:
- cloud
- nginx
depends_on:
- nextclouddb
- redis
ports:
- 9090:80 # используйте любой свободный порт слева от двоеточия
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York # отредактируйте до вашей временной зоны
- NEXTCLOUD_DATA_DIR=/mnt/ncdata # ВНИМАНИЕ!! Я перемещаю каталог данных из /var/www/html, чтобы он мог быть отдельным набором данных в TrueNAS
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=password1 # измените это. Должен совпадать с password1 ниже при изменении
- MYSQL_HOST=nextclouddb
- REDIS_HOST=redis
volumes:
- type: volume
source: html
target: /var/www/html
volume:
nocopy: true
- type: volume
source: data
target: /mnt/ncdata
volume:
nocopy: true
nextclouddb:
image: mariadb:11.4
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
networks:
- cloud
volumes:
- type: volume
source: database
target: /var/lib/mysql
volume:
nocopy: true
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York # измените на соответствие вашей временной зоне
- MYSQL_ROOT_PASSWORD=password2 # измените это, должно совпадать с password2 ниже
- MYSQL_PASSWORD=password1 # измените это, должно совпадать с password1 выше
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
collabora:
image: collabora/code
container_name: collabora
restart: unless-stopped
networks:
- cloud
- nginx
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
- password=password3 # измените это
- username=nextcloud
- domain=collabora.yourdomain.com # измените, чтобы соответствовать вашему домену
- extra_params=--o:ssl.enable=true
ports:
- 9980:9980 # используйте любой доступный порт, который не конфликтует
redis:
image: redis:alpine
container_name: redis
restart: unless-stopped
volumes:
- type: volume
source: redis
target: /data
volume:
nocopy: true
networks:
- cloud
nginx-proxy:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
networks:
- nginx
volumes:
- type: volume
source: nginx
target: /data
volume:
nocopy: true
- type: volume
source: letsencrypt
target: /etc/letsencrypt
volume:
nocopy: true
networks:
cloud:
name: cloud # Эта сеть не должна использоваться повторно
driver: bridge
nginx:
name: nginx # эта сеть может быть повторно использована в будущих развертываниях, которые могут использовать Nginx proxy manager
driver: bridge
volumes: # измените эти пути к файлам, чтобы они соответствовали вашим NFS-шарам
html:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/html"
data:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/data"
database:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/database"
redis:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/redis"
nginx:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/nginx"
letsencrypt:
driver_opts:
type: "nfs"
o: "vers=4,addr=192.168.50.3,nolock,soft,rw"
device: ":/mnt/slow_pool/nextcloud/letsencrypt"