Merge pull request #6 from jfroment/nextcloud-refactoring
Nextcloud refactoring
This commit is contained in:
		
						commit
						c18589d42f
					
				
							
								
								
									
										14
									
								
								.env.sample
								
								
								
								
							
							
						
						
									
										14
									
								
								.env.sample
								
								
								
								
							|  | @ -2,6 +2,9 @@ | |||
| TRAEFIK_DOMAIN=mydomain.com | ||||
| ACME_MAIL=my-email@my-provider.com | ||||
| 
 | ||||
| # General settings | ||||
| TZ="Europe/Paris" | ||||
| 
 | ||||
| # HTTP Auth | ||||
| HTTP_USER=myuser | ||||
| HTTP_PASSWORD='mypassword_encoded' # Keep these simple quotes! | ||||
|  | @ -10,12 +13,15 @@ HTTP_PASSWORD='mypassword_encoded' # Keep these simple quotes! | |||
| PGID=1000 | ||||
| PUID=1000 | ||||
| 
 | ||||
| # Database (for Owncloud) | ||||
| MYSQL_ROOT_PASSWORD=h4ckMePleAse889912101 | ||||
| MYSQL_DATABASE=nextcloud | ||||
| MYSQL_USER=nextcloud | ||||
| MYSQL_PASSWORD=h4ckMePleAse4256718 | ||||
| 
 | ||||
| # Nextcloud | ||||
| NEXTCLOUD_ADMIN_USER=admin | ||||
| NEXTCLOUD_ADMIN_PASSWORD=nextcloud_admin_password | ||||
| NEXTCLOUD_DB_NAME=nextcloud_db_name | ||||
| NEXTCLOUD_DB_USER=nextcloud | ||||
| NEXTCLOUD_DB_PASSWORD=nextcloud_db_password | ||||
| NEXTCLOUD_ADMIN_PASSWORD=h4ckMePleAse873214668 | ||||
| 
 | ||||
| # Portainer | ||||
| PORTAINER_ADMIN_PASSWORD=h4ckMePleAse | ||||
|  | @ -16,7 +16,8 @@ seedbox and personal media server. | |||
| | Jackett              | jackett.yourdomain.com     | [linuxserver/jackett](https://hub.docker.com/r/linuxserver/jackett)    | *latest*                | Tracker indexer     | | ||||
| | JDownloader          | jdownloader.yourdomain.com | [jlesage/jdownloader-2](https://hub.docker.com/r/jlesage/jdownloader-2)| *latest*                | Direct downloader   | | ||||
| | Tautulli (plexPy)    | tautulli.yourdomain.com    | [linuxserver/tautulli](https://hub.docker.com/r/linuxserver/tautulli)  | *latest*                | Plex stats and admin| | ||||
| | NextCloud            | nextcloud.yourdomain.com   | [wonderfall/nextcloud](https://hub.docker.com/r/wonderfall/nextcloud)  | *latest*                | Files management    | | ||||
| | NextCloud            | nextcloud.yourdomain.com   | [linuxserver/nextcloud](https://hub.docker.com/r/linuxserver/nextcloud)  | *latest*                | Files management    | | ||||
| | NextCloud-db (MariaDB) | not reachable   | [mariadb](https://hub.docker.com/r/_/mariadb)  | *10*                | DB for Nextcloud    | | ||||
| | Portainer            | portainer.yourdomain.com   | [portainer/portainer](https://hub.docker.com/r/portainer/portainer)    | *latest*                | Container management| | ||||
| | Netdata              | netdata.yourdomain.com     | [netdata/netdata](https://hub.docker.com/r/netdata/netdata)            | *latest*                | Server monitoring   | | ||||
| | Duplicati            | duplicati.yourdomain.com   | [linuxserver/duplicati](https://hub.docker.com/r/linuxserver/duplicati)| *latest*                | Backups             | | ||||
|  |  | |||
|  | @ -5,7 +5,8 @@ services: | |||
|         image: traefik | ||||
|         container_name: traefik | ||||
|         restart: always | ||||
|         command: --certificatesresolvers.le.acme.email=${ACME_MAIL} | ||||
|         command:  | ||||
|             - --certificatesresolvers.le.acme.email=${ACME_MAIL} | ||||
|         ports: | ||||
|             - "80:80" | ||||
|             - "443:443" | ||||
|  | @ -13,13 +14,13 @@ services: | |||
|             - /var/run/docker.sock:/var/run/docker.sock | ||||
|             - ./traefik:/etc/traefik:ro | ||||
|             - configtraefik:/config:ro | ||||
|         environment: | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             # Docker labels for enabling Traefik dashboard | ||||
|             - "traefik.http.routers.traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.traefik.entrypoints=secure" | ||||
|             - "traefik.http.routers.traefik.service=api@internal" | ||||
|             - "traefik.http.routers.traefik.tls.certresolver=le" | ||||
|             - "traefik.http.routers.traefik.middlewares=common-auth@file" | ||||
| 
 | ||||
|     deluge: | ||||
|  | @ -33,12 +34,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.deluge.rule=Host(`deluge.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.deluge.entrypoints=secure" | ||||
|             - "traefik.http.routers.deluge.tls.certresolver=le" | ||||
|             - "traefik.http.routers.deluge.middlewares=common-auth@file" | ||||
| 
 | ||||
|     plex: | ||||
|  | @ -58,14 +57,12 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|             - VERSION=latest | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400" | ||||
|             - "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.plex.entrypoints=secure" | ||||
|             - "traefik.http.routers.plex.tls.certresolver=le" | ||||
| 
 | ||||
|     jackett: | ||||
|         image: linuxserver/jackett | ||||
|  | @ -78,12 +75,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.jackett.rule=Host(`jackett.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.jackett.entrypoints=secure" | ||||
|             - "traefik.http.routers.jackett.tls.certresolver=le" | ||||
|             - "traefik.http.routers.jackett.middlewares=common-auth@file" | ||||
|      | ||||
|     sonarr: | ||||
|  | @ -97,12 +92,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.sonarr.rule=Host(`sonarr.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.sonarr.entrypoints=secure" | ||||
|             - "traefik.http.routers.sonarr.tls.certresolver=le" | ||||
|             - "traefik.http.routers.sonarr.middlewares=common-auth@file" | ||||
| 
 | ||||
|     radarr: | ||||
|  | @ -116,12 +109,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.radarr.rule=Host(`radarr.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.radarr.entrypoints=secure" | ||||
|             - "traefik.http.routers.radarr.tls.certresolver=le" | ||||
|             - "traefik.http.routers.radarr.middlewares=common-auth@file" | ||||
| 
 | ||||
|     bazarr: | ||||
|  | @ -134,12 +125,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.bazarr.rule=Host(`bazarr.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.bazarr.entrypoints=secure" | ||||
|             - "traefik.http.routers.bazarr.tls.certresolver=le" | ||||
|             - "traefik.http.routers.bazarr.middlewares=common-auth@file" | ||||
| 
 | ||||
|     lidarr: | ||||
|  | @ -152,12 +141,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.lidarr.rule=Host(`lidarr.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.lidarr.entrypoints=secure" | ||||
|             - "traefik.http.routers.lidarr.tls.certresolver=le" | ||||
|             - "traefik.http.routers.lidarr.middlewares=common-auth@file" | ||||
| 
 | ||||
|     tautulli: | ||||
|  | @ -170,12 +157,10 @@ services: | |||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.tautulli.rule=Host(`tautulli.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.tautulli.entrypoints=secure" | ||||
|             - "traefik.http.routers.tautulli.tls.certresolver=le" | ||||
| 
 | ||||
|     jdownloader: | ||||
|         image: jlesage/jdownloader-2 | ||||
|  | @ -187,40 +172,50 @@ services: | |||
|         environment: | ||||
|             - USER_ID=${PUID} | ||||
|             - GROUP_ID=${PGID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.services.jdownloader-seedbox.loadbalancer.server.port=5800" | ||||
|             - "traefik.http.routers.jdownloader.rule=Host(`jdownloader.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.jdownloader.entrypoints=secure" | ||||
|             - "traefik.http.routers.jdownloader.tls.certresolver=le" | ||||
|             - "traefik.http.routers.jdownloader.middlewares=common-auth@file" | ||||
| 
 | ||||
|     nextcloud-db: | ||||
|         image: mariadb:10 | ||||
|         container_name: nextcloud-db | ||||
|         command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW | ||||
|         restart: always | ||||
|         environment: | ||||
|             - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} | ||||
|             - MYSQL_DATABASE=${MYSQL_DATABASE} | ||||
|             - MYSQL_USER=${MYSQL_USER} | ||||
|             - MYSQL_PASSWORD=${MYSQL_PASSWORD} | ||||
|             - TZ=${TZ} | ||||
|         volumes:  | ||||
|             - nextclouddb:/var/lib/mysql | ||||
|         labels: | ||||
|             - "traefik.enable=false" | ||||
| 
 | ||||
|     # See init-setup-nextcloud.sh for first install | ||||
|     nextcloud: | ||||
|         image: wonderfall/nextcloud | ||||
|         depends_on: | ||||
|             - nextcloud-db | ||||
|         image: linuxserver/nextcloud | ||||
|         container_name: nextcloud | ||||
|         restart: always | ||||
|         environment: | ||||
|             - PGID=${PGID} | ||||
|             - PUID=${PUID} | ||||
|             - TZ=${TZ} | ||||
|         volumes: | ||||
|             - confignextcloud:/config | ||||
|             - nextclouddata:/data | ||||
|             - torrents:/torrents | ||||
|             - config:/seedbox-config | ||||
|         environment: | ||||
|             - GID=${PGID} | ||||
|             - UID=${PUID} | ||||
|             - TZ=Europe/Paris | ||||
|             - ADMIN_USER=${NEXTCLOUD_ADMIN_USER} | ||||
|             - ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} | ||||
|             - DOMAIN=nextcloud.${TRAEFIK_DOMAIN} | ||||
|             - DB_TYPE=sqlite3 | ||||
|             - DB_NAME=${NEXTCLOUD_DB_NAME} | ||||
|             - DB_USER=${NEXTCLOUD_DB_USER} | ||||
|             - DB_PASSWORD=${NEXTCLOUD_DB_PASSWORD} | ||||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.nextcloud.entrypoints=secure" | ||||
|             - "traefik.http.routers.nextcloud.tls.certresolver=le" | ||||
|             - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.scheme=https" | ||||
|             - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.port=443" | ||||
| 
 | ||||
|     portainer: | ||||
|         image: portainer/portainer | ||||
|  | @ -232,8 +227,6 @@ services: | |||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.portainer.rule=Host(`portainer.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.portainer.entrypoints=secure" | ||||
|             - "traefik.http.routers.portainer.tls.certresolver=le" | ||||
| 
 | ||||
|     netdata: | ||||
|         image: netdata/netdata | ||||
|  | @ -253,8 +246,6 @@ services: | |||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.netdata.rule=Host(`netdata.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.netdata.entrypoints=secure" | ||||
|             - "traefik.http.routers.netdata.tls.certresolver=le" | ||||
|             - "traefik.http.routers.netdata.middlewares=common-auth@file" | ||||
| 
 | ||||
|     duplicati: | ||||
|  | @ -264,7 +255,7 @@ services: | |||
|         environment: | ||||
|             - PUID=${PUID} | ||||
|             - PGID=${PGID} | ||||
|             - TZ=Europe/Paris | ||||
|             - TZ=${TZ} | ||||
|         volumes: | ||||
|             - configduplicati:/config | ||||
|             - backups:/backups | ||||
|  | @ -272,8 +263,6 @@ services: | |||
|         labels: | ||||
|             - "traefik.enable=true" | ||||
|             - "traefik.http.routers.duplicati.rule=Host(`duplicati.${TRAEFIK_DOMAIN}`)" | ||||
|             - "traefik.http.routers.duplicati.entrypoints=secure" | ||||
|             - "traefik.http.routers.duplicati.tls.certresolver=le" | ||||
|             - "traefik.http.routers.duplicati.middlewares=common-auth@file" | ||||
| 
 | ||||
| networks:  | ||||
|  | @ -326,6 +315,10 @@ volumes: | |||
|         driver: local-persist | ||||
|         driver_opts: | ||||
|             mountpoint: /data/config/jdownloader | ||||
|     nextclouddb: | ||||
|         driver: local-persist | ||||
|         driver_opts: | ||||
|             mountpoint: /data/nextcloud-db | ||||
|     confignextcloud: | ||||
|         driver: local-persist | ||||
|         driver_opts: | ||||
|  |  | |||
|  | @ -0,0 +1,21 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| echo "[$0] Loading variables..." | ||||
| source .env | ||||
| 
 | ||||
| echo "[$0] Installing nextcloud..." | ||||
| docker exec -it -u abc -w /config/www/nextcloud \ | ||||
|   nextcloud bash -c " \ | ||||
|     php occ maintenance:install \ | ||||
|       --database \"mysql\" \ | ||||
|       --database-host \"${MYSQL_DATABASE}\" \ | ||||
|       --database-name \"nextcloud-db\" \ | ||||
|       --database-user \"${MYSQL_USER}\" \ | ||||
|       --database-pass \"${MYSQL_PASSWORD}\" \ | ||||
|       --admin-user \"${NEXTCLOUD_ADMIN_USER}\" \ | ||||
|       --admin-pass \"${NEXTCLOUD_ADMIN_PASSWORD}\" \ | ||||
|       --admin-email \"${ACME_MAIL}\" \ | ||||
|       --data-dir \"/data\" \ | ||||
|   " | ||||
| 
 | ||||
| echo "[$0] Done." | ||||
|  | @ -1,6 +1,12 @@ | |||
| api: | ||||
|   dashboard: true | ||||
| 
 | ||||
| # Set Access logs timezone | ||||
| accessLog: | ||||
|   fields: | ||||
|     names: | ||||
|       StartUTC: drop | ||||
| 
 | ||||
| providers: | ||||
|   docker: | ||||
|     endpoint: "unix:///var/run/docker.sock" | ||||
|  | @ -26,6 +32,10 @@ entryPoints: | |||
|       middlewares: | ||||
|       - security-headers@file | ||||
| 
 | ||||
| # Allow self-signed certificates for https backends (nextcloud for example) | ||||
| serversTransport: | ||||
|   insecureSkipVerify: true | ||||
| 
 | ||||
| certificatesResolvers: | ||||
|   le: | ||||
|     acme: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue