diff --git a/.Caddyfile.swp b/.Caddyfile.swp new file mode 100644 index 0000000..b2f6f7f Binary files /dev/null and b/.Caddyfile.swp differ diff --git a/.env b/.env new file mode 100644 index 0000000..ec47729 --- /dev/null +++ b/.env @@ -0,0 +1,22 @@ +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=./library + +# The location where your database files are stored. Network shares are not supported for the database +DB_DATA_LOCATION=./postgres + +# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +# TZ=Etc/UTC + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=v2.7.5 + +# Connection secret for postgres. You should change it to a random password +# Please use only the characters `A-Za-z0-9`, without special characters or spaces +DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich diff --git a/.env.14jun2026 b/.env.14jun2026 new file mode 100644 index 0000000..0450dc0 --- /dev/null +++ b/.env.14jun2026 @@ -0,0 +1,22 @@ +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=./library + +# The location where your database files are stored. Network shares are not supported for the database +DB_DATA_LOCATION=./postgres + +# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +# TZ=Etc/UTC + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password +# Please use only the characters `A-Za-z0-9`, without special characters or spaces +DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich diff --git a/.env:Zone.Identifier b/.env:Zone.Identifier new file mode 100644 index 0000000..f5a6d96 --- /dev/null +++ b/.env:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\cck\Downloads\dockercomposefiles.zip diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fcf1adb --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +postgres/ +data/ +*.log +db-backups +library +plex diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..d095d2a --- /dev/null +++ b/Caddyfile @@ -0,0 +1,82 @@ +# Caddyfile + +# Gitea - Code Hosting + +git.ccktgp.online { + reverse_proxy gitea:3000 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } +} + + +plex.ccktgp.online { + # Reverse proxy to Plex + reverse_proxy plex:32400 { + # Plex specific headers + header_up X-Real-IP {remote_host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + + # Plex authentication headers + header_up X-Plex-Client-Identifier {http.request.header.X-Plex-Client-Identifier} + header_up X-Plex-Device {http.request.header.X-Plex-Device} + header_up X-Plex-Device-Name {http.request.header.X-Plex-Device-Name} + header_up X-Plex-Platform {http.request.header.X-Plex-Platform} + header_up X-Plex-Platform-Version {http.request.header.X-Plex-Platform-Version} + header_up X-Plex-Product {http.request.header.X-Plex-Product} + header_up X-Plex-Token {http.request.header.X-Plex-Token} + header_up X-Plex-Version {http.request.header.X-Plex-Version} + } + +} + +# Immich - Photo Backup & Gallery +photo.ccktgp.online { + # Main app and API + reverse_proxy immich-server:2283 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Microservices (if needed) + @machinelearning { + path /api/activities/* /api/jobs/* /api/search/* + } + reverse_proxy @machinelearning immich-server:2283 +} + +# Navidrome - Music Server +music.ccktgp.online { + reverse_proxy navidrome:4533 + + # WebSocket for real-time updates + @websockets { + path /ws + } + reverse_proxy @websockets navidrome:4533 +} + +# Nextcloud - File Sync & Collaboration +files.ccktgp.online { + reverse_proxy nextcloud:80 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Client endpoints for better performance + @client { + path /remote.php/dav/files/* /remote.php/webdav/* + } + reverse_proxy @client nextcloud:80 { + transport http { + read_timeout 3600s + } + } +} diff --git a/Caddyfile.4mar2026 b/Caddyfile.4mar2026 new file mode 100644 index 0000000..28860f6 --- /dev/null +++ b/Caddyfile.4mar2026 @@ -0,0 +1,82 @@ +# Caddyfile + +# Gitea - Code Hosting + +#git.ccktgp.club { +# reverse_proxy gitea:3000 { +# header_up Host {host} + # header_up X-Real-IP {remote} +# header_up X-Forwarded-For {remote} +# header_up X-Forwarded-Proto {scheme} +# } +#} +# + +git.ccktgp.club { + # Reverse proxy to Plex + reverse_proxy plex:32400 { + # Plex specific headers + header_up X-Real-IP {remote_host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + + # Plex authentication headers + header_up X-Plex-Client-Identifier {http.request.header.X-Plex-Client-Identifier} + header_up X-Plex-Device {http.request.header.X-Plex-Device} + header_up X-Plex-Device-Name {http.request.header.X-Plex-Device-Name} + header_up X-Plex-Platform {http.request.header.X-Plex-Platform} + header_up X-Plex-Platform-Version {http.request.header.X-Plex-Platform-Version} + header_up X-Plex-Product {http.request.header.X-Plex-Product} + header_up X-Plex-Token {http.request.header.X-Plex-Token} + header_up X-Plex-Version {http.request.header.X-Plex-Version} + } + +} + +# Immich - Photo Backup & Gallery +photo.ccktgp.club { + # Main app and API + reverse_proxy immich-server:2283 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Microservices (if needed) + @machinelearning { + path /api/activities/* /api/jobs/* /api/search/* + } + reverse_proxy @machinelearning immich-server:2283 +} + +# Navidrome - Music Server +music.ccktgp.club { + reverse_proxy navidrome:4533 + + # WebSocket for real-time updates + @websockets { + path /ws + } + reverse_proxy @websockets navidrome:4533 +} + +# Nextcloud - File Sync & Collaboration +files.ccktgp.club { + reverse_proxy nextcloud:80 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Client endpoints for better performance + @client { + path /remote.php/dav/files/* /remote.php/webdav/* + } + reverse_proxy @client nextcloud:80 { + transport http { + read_timeout 3600s + } + } +} diff --git a/Caddyfile.gitnaviimmichnextcloud b/Caddyfile.gitnaviimmichnextcloud new file mode 100644 index 0000000..65a5947 --- /dev/null +++ b/Caddyfile.gitnaviimmichnextcloud @@ -0,0 +1,60 @@ +# Caddyfile + +# Gitea - Code Hosting + +git.ccktgp.club { + reverse_proxy gitea:3000 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } +} + +# Immich - Photo Backup & Gallery +photo.ccktgp.club { + # Main app and API + reverse_proxy immich-server:2283 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Microservices (if needed) + @machinelearning { + path /api/activities/* /api/jobs/* /api/search/* + } + reverse_proxy @machinelearning immich-server:2283 +} + +# Navidrome - Music Server +music.ccktgp.club { + reverse_proxy navidrome:4533 + + # WebSocket for real-time updates + @websockets { + path /ws + } + reverse_proxy @websockets navidrome:4533 +} + +# Nextcloud - File Sync & Collaboration +files.ccktgp.club { + reverse_proxy nextcloud:80 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Proto {scheme} + } + + # Client endpoints for better performance + @client { + path /remote.php/dav/files/* /remote.php/webdav/* + } + reverse_proxy @client nextcloud:80 { + transport http { + read_timeout 3600s + } + } +} diff --git a/Caddyfile:Zone.Identifier b/Caddyfile:Zone.Identifier new file mode 100644 index 0000000..f5a6d96 --- /dev/null +++ b/Caddyfile:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\cck\Downloads\dockercomposefiles.zip diff --git a/dock.sh b/dock.sh new file mode 100755 index 0000000..6da72b7 --- /dev/null +++ b/dock.sh @@ -0,0 +1,3 @@ +docker compose down +docker compose up -d + diff --git a/docker-compose - Copy.yaml:Zone.Identifier b/docker-compose - Copy.yaml:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/docker-compose - Copy.yaml:Zone.Identifier differ diff --git a/docker-compose - workingcopy-3jan2026 b/docker-compose - workingcopy-3jan2026 new file mode 100644 index 0000000..8e00da8 --- /dev/null +++ b/docker-compose - workingcopy-3jan2026 @@ -0,0 +1,228 @@ + +networks: + caddy-net: + driver: bridge + gitea-net: + driver: bridge + immich-net: + driver: bridge + navidrome-net: + driver: bridge + nextcloud-net: + driver: bridge + plex-network: + driver: bridge + +services: + # Caddy Reverse Proxy + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + networks: + - caddy-net + - gitea-net + - immich-net + - navidrome-net + - nextcloud-net + - plex-network + + # Gitea - Code Hosting + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=sqlite3 # Use PostgreSQL for production + volumes: + - ./data/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + networks: + - gitea-net + deploy: + resources: + limits: + memory: 512M + + # Immich - Photo Gallery + immich-server: + container_name: immich_server + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /mnt/seagate8TB/photos:/mydata + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + + # Navidrome - Music Server + navidrome: + image: deluan/navidrome:latest + container_name: navidrome + restart: unless-stopped + environment: + - ND_SCANSCHEDULE=1h + - ND_LOGLEVEL=info + - ND_SESSIONTIMEOUT=24h + - ND_BASEURL=/ + volumes: + - ./data/navidrome:/data + - /music:/music # CHANGE THIS + networks: + - navidrome-net + deploy: + resources: + limits: + memory: 512M + + # Nextcloud - File Sync + nextcloud: + image: nextcloud:latest + container_name: nextcloud + restart: unless-stopped + environment: + - NEXTCLOUD_TRUSTED_DOMAINS=files.ccktgp.club # CHANGE THIS + - APACHE_DISABLE_REWRITE_IP=1 + - OVERWRITEPROTOCOL=https + - MYSQL_HOST=nextcloud_db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=your_secure_db_password_123 + volumes: + - ./data/nextcloud:/var/www/html + - ./data/nextcloud/apps:/var/www/html/custom_apps + - ./data/nextcloud/config:/var/www/html/config + - ./data/nextcloud/themes:/var/www/html/themes + networks: + - nextcloud-net + depends_on: + - nextcloud_db + deploy: + resources: + limits: + memory: 1G + + # MariaDB Database + nextcloud_db: + image: mariadb:10.6 + container_name: nextcloud_db + restart: always + environment: + - MYSQL_ROOT_PASSWORD=your_secure_root_password_123 + - MYSQL_PASSWORD=your_secure_db_password_123 + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + volumes: + - db_data:/var/lib/mysql + - ./db-backups:/backups + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + networks: + - nextcloud-net + + # Plex Media Server + # plex: + # image: lscr.io/linuxserver/plex:latest + # container_name: plex + # environment: + # - PUID=1000 + # - PGID=1000 + # - VERSION=docker + # - TZ=UTC # Change to your timezone + # - ADVERTISE_IP=http://git.ccktgp.club:32400 + # volumes: + # - ./plex/config:/config + # - ./plex/transcode:/transcode + # - /path/to/your/media:/data # Change to your media directory + # ports: + # - "32400:32400" # Expose Plex port internally + # networks: + # - plex-network + # restart: unless-stopped + +volumes: + caddy_data: + caddy_config: + gitea_data: + immich_data: + navidrome_data: + nextcloud_data: + db_data: + model-cache: + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..d2e2cf7 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,228 @@ + +networks: + caddy-net: + driver: bridge + gitea-net: + driver: bridge + immich-net: + driver: bridge + navidrome-net: + driver: bridge + nextcloud-net: + driver: bridge + plex-network: + driver: bridge + +services: + # Caddy Reverse Proxy + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + networks: + - caddy-net + - gitea-net + - immich-net + - navidrome-net + - nextcloud-net + - plex-network + + # Gitea - Code Hosting + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=sqlite3 # Use PostgreSQL for production + volumes: + - ./data/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + networks: + - gitea-net + deploy: + resources: + limits: + memory: 512M + + # Immich - Photo Gallery + immich-server: + container_name: immich_server + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /mnt/seagate8TB/photos:/mydata + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + + # Navidrome - Music Server + navidrome: + image: deluan/navidrome:latest + container_name: navidrome + restart: unless-stopped + environment: + - ND_SCANSCHEDULE=1h + - ND_LOGLEVEL=info + - ND_SESSIONTIMEOUT=24h + - ND_BASEURL=/ + volumes: + - ./data/navidrome:/data + - /music:/music # CHANGE THIS + networks: + - navidrome-net + deploy: + resources: + limits: + memory: 512M + + # Nextcloud - File Sync + nextcloud: + image: nextcloud:31.0.8 + container_name: nextcloud + restart: unless-stopped + environment: + - NEXTCLOUD_TRUSTED_DOMAINS=files.ccktgp.online # CHANGE THIS + - APACHE_DISABLE_REWRITE_IP=1 + - OVERWRITEPROTOCOL=https + - MYSQL_HOST=nextcloud_db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=your_secure_db_password_123 + volumes: + - ./data/nextcloud:/var/www/html + - ./data/nextcloud/apps:/var/www/html/custom_apps + - ./data/nextcloud/config:/var/www/html/config + - ./data/nextcloud/themes:/var/www/html/themes + networks: + - nextcloud-net + depends_on: + - nextcloud_db + deploy: + resources: + limits: + memory: 1G + + # MariaDB Database + nextcloud_db: + image: mariadb:10.6 + container_name: nextcloud_db + restart: always + environment: + - MYSQL_ROOT_PASSWORD=your_secure_root_password_123 + - MYSQL_PASSWORD=your_secure_db_password_123 + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + volumes: + - db_data:/var/lib/mysql + - ./db-backups:/backups + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + networks: + - nextcloud-net + + # Plex Media Server + # plex: + # image: lscr.io/linuxserver/plex:latest + # container_name: plex + # environment: + # - PUID=1000 + # - PGID=1000 + # - VERSION=docker + # - TZ=UTC # Change to your timezone + # - ADVERTISE_IP=http://git.ccktgp.club:32400 + # volumes: + # - ./plex/config:/config + # - ./plex/transcode:/transcode + # - /path/to/your/media:/data # Change to your media directory + # ports: + # - "32400:32400" # Expose Plex port internally + # networks: + # - plex-network + # restart: unless-stopped + +volumes: + caddy_data: + caddy_config: + gitea_data: + immich_data: + navidrome_data: + nextcloud_data: + db_data: + model-cache: + diff --git a/docker-compose.yaml-with-plex b/docker-compose.yaml-with-plex new file mode 100644 index 0000000..e944f83 --- /dev/null +++ b/docker-compose.yaml-with-plex @@ -0,0 +1,227 @@ + +networks: + caddy-net: + driver: bridge + gitea-net: + driver: bridge + immich-net: + driver: bridge + navidrome-net: + driver: bridge + nextcloud-net: + driver: bridge + plex-network: + driver: bridge + +services: + # Caddy Reverse Proxy + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + networks: + - caddy-net + - gitea-net + - immich-net + - navidrome-net + - nextcloud-net + - plex-network + + # Gitea - Code Hosting + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=sqlite3 # Use PostgreSQL for production + volumes: + - ./data/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + networks: + - gitea-net + deploy: + resources: + limits: + memory: 512M + + # Immich - Photo Gallery + immich-server: + container_name: immich_server + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + + # Navidrome - Music Server + navidrome: + image: deluan/navidrome:latest + container_name: navidrome + restart: unless-stopped + environment: + - ND_SCANSCHEDULE=1h + - ND_LOGLEVEL=info + - ND_SESSIONTIMEOUT=24h + - ND_BASEURL=/ + volumes: + - ./data/navidrome:/data + - /music:/music # CHANGE THIS + networks: + - navidrome-net + deploy: + resources: + limits: + memory: 512M + + # Nextcloud - File Sync + nextcloud: + image: nextcloud:latest + container_name: nextcloud + restart: unless-stopped + environment: + - NEXTCLOUD_TRUSTED_DOMAINS=files.ccktgp.club # CHANGE THIS + - APACHE_DISABLE_REWRITE_IP=1 + - OVERWRITEPROTOCOL=https + - MYSQL_HOST=nextcloud_db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=your_secure_db_password_123 + volumes: + - ./data/nextcloud:/var/www/html + - ./data/nextcloud/apps:/var/www/html/custom_apps + - ./data/nextcloud/config:/var/www/html/config + - ./data/nextcloud/themes:/var/www/html/themes + networks: + - nextcloud-net + depends_on: + - nextcloud_db + deploy: + resources: + limits: + memory: 1G + + # MariaDB Database + nextcloud_db: + image: mariadb:10.6 + container_name: nextcloud_db + restart: always + environment: + - MYSQL_ROOT_PASSWORD=your_secure_root_password_123 + - MYSQL_PASSWORD=your_secure_db_password_123 + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + volumes: + - db_data:/var/lib/mysql + - ./db-backups:/backups + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + networks: + - nextcloud-net + + # Plex Media Server + plex: + image: lscr.io/linuxserver/plex:latest + container_name: plex + environment: + - PUID=1000 + - PGID=1000 + - VERSION=docker + - TZ=UTC # Change to your timezone + - ADVERTISE_IP=http://git.ccktgp.club:32400 + volumes: + - ./plex/config:/config + - ./plex/transcode:/transcode + - /path/to/your/media:/data # Change to your media directory + ports: + - "32400:32400" # Expose Plex port internally + networks: + - plex-network + restart: unless-stopped + +volumes: + caddy_data: + caddy_config: + gitea_data: + immich_data: + navidrome_data: + nextcloud_data: + db_data: + model-cache: + diff --git a/docker-compose.yaml.gitnaviimmichnextcloud b/docker-compose.yaml.gitnaviimmichnextcloud new file mode 100644 index 0000000..c11bbc9 --- /dev/null +++ b/docker-compose.yaml.gitnaviimmichnextcloud @@ -0,0 +1,203 @@ + +networks: + caddy-net: + driver: bridge + gitea-net: + driver: bridge + immich-net: + driver: bridge + navidrome-net: + driver: bridge + nextcloud-net: + driver: bridge + +services: + # Caddy Reverse Proxy + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + networks: + - caddy-net + - gitea-net + - immich-net + - navidrome-net + - nextcloud-net + + # Gitea - Code Hosting + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + - DB_TYPE=sqlite3 # Use PostgreSQL for production + volumes: + - ./data/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + networks: + - gitea-net + deploy: + resources: + limits: + memory: 512M + + # Immich - Photo Gallery + immich-server: + container_name: immich_server + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: docker.io/valkey/valkey:8-bookworm@sha256:5b8f8c333bef895c925f56629d6ba90aea95a4f7391f62411e625267c600b19c + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + networks: +# - immich_default # Original network + - immich-net + # <-- Add this shared network + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + + # Navidrome - Music Server + navidrome: + image: deluan/navidrome:latest + container_name: navidrome + restart: unless-stopped + environment: + - ND_SCANSCHEDULE=1h + - ND_LOGLEVEL=info + - ND_SESSIONTIMEOUT=24h + - ND_BASEURL=/ + volumes: + - ./data/navidrome:/data + - /music:/music # CHANGE THIS + networks: + - navidrome-net + deploy: + resources: + limits: + memory: 512M + + # Nextcloud - File Sync + nextcloud: + image: nextcloud:latest + container_name: nextcloud + restart: unless-stopped + environment: + - NEXTCLOUD_TRUSTED_DOMAINS=files.ccktgp.club # CHANGE THIS + - APACHE_DISABLE_REWRITE_IP=1 + - OVERWRITEPROTOCOL=https + - MYSQL_HOST=nextcloud_db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=your_secure_db_password_123 + volumes: + - ./data/nextcloud:/var/www/html + - ./data/nextcloud/apps:/var/www/html/custom_apps + - ./data/nextcloud/config:/var/www/html/config + - ./data/nextcloud/themes:/var/www/html/themes + networks: + - nextcloud-net + depends_on: + - nextcloud_db + deploy: + resources: + limits: + memory: 1G + + # MariaDB Database + nextcloud_db: + image: mariadb:10.6 + container_name: nextcloud_db + restart: always + environment: + - MYSQL_ROOT_PASSWORD=your_secure_root_password_123 + - MYSQL_PASSWORD=your_secure_db_password_123 + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + volumes: + - db_data:/var/lib/mysql + - ./db-backups:/backups + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + networks: + - nextcloud-net +volumes: + caddy_data: + caddy_config: + gitea_data: + immich_data: + navidrome_data: + nextcloud_data: + db_data: + model-cache: + diff --git a/docker-compose.yaml:Zone.Identifier b/docker-compose.yaml:Zone.Identifier new file mode 100644 index 0000000..f5a6d96 --- /dev/null +++ b/docker-compose.yaml:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\cck\Downloads\dockercomposefiles.zip