From 54e66e3af98203c74cf60fb10ed9578840d76b0c Mon Sep 17 00:00:00 2001 From: Max Buz <79866323+xopek-by@users.noreply.github.com> Date: Fri, 22 Sep 2023 17:31:13 +0200 Subject: [PATCH] Fully reordered file structure. All files splitted by servises. Manuals will be added where needed. --- README.md | 1 + ddns-cloudflare/cloudflare_example.env | 5 ++ ddns-cloudflare/ddns-cloudflare.yaml | 14 ++++ heimdall/heimdall.yaml | 15 ++++ immich/README.md | 4 ++ immich/immich.yaml | 98 ++++++++++++++++++++++++++ immich/immich_example.env | 23 ++++++ nextcloud/nextcloud.yaml | 48 +++++++++++++ nextcloud/nextcoud_example.env | 21 ++++++ nginx-proxy-manager/nginx-proxy.yaml | 14 ++++ nginx-proxy-manager/nginx_example.env | 5 ++ portainer/portainer.yaml | 14 ++++ portainer/portainer_example.env | 2 + webtop/webtop.yaml | 21 ++++++ webtop/webtop_example.env | 2 + 15 files changed, 287 insertions(+) create mode 100644 README.md create mode 100644 ddns-cloudflare/cloudflare_example.env create mode 100644 ddns-cloudflare/ddns-cloudflare.yaml create mode 100644 heimdall/heimdall.yaml create mode 100644 immich/README.md create mode 100644 immich/immich.yaml create mode 100644 immich/immich_example.env create mode 100644 nextcloud/nextcloud.yaml create mode 100644 nextcloud/nextcoud_example.env create mode 100644 nginx-proxy-manager/nginx-proxy.yaml create mode 100644 nginx-proxy-manager/nginx_example.env create mode 100644 portainer/portainer.yaml create mode 100644 portainer/portainer_example.env create mode 100644 webtop/webtop.yaml create mode 100644 webtop/webtop_example.env diff --git a/README.md b/README.md new file mode 100644 index 0000000..bba5b42 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +All yaml configs using stack.env variables, as they was designed to be used with Portainer \ No newline at end of file diff --git a/ddns-cloudflare/cloudflare_example.env b/ddns-cloudflare/cloudflare_example.env new file mode 100644 index 0000000..f4b79b4 --- /dev/null +++ b/ddns-cloudflare/cloudflare_example.env @@ -0,0 +1,5 @@ +# Cloudflare API key. User -> My Profile -> API tokens +CLOUDFLARE_API=your_api_key + +# Cloudflare zone, which will be used. Dashboard -> Web Sites +ZONE=your_zone \ No newline at end of file diff --git a/ddns-cloudflare/ddns-cloudflare.yaml b/ddns-cloudflare/ddns-cloudflare.yaml new file mode 100644 index 0000000..626665b --- /dev/null +++ b/ddns-cloudflare/ddns-cloudflare.yaml @@ -0,0 +1,14 @@ +version: '2' +services: + cloudflare-ddns: + container_name: ddns-cloudflare + image: oznu/cloudflare-ddns:latest + restart: always + env_file: + - stack.env + environment: + - API_KEY=${CLOUDFLARE_API} + - ZONE=${ZONE} + - PROXIED=true + - PUID=1000 + - PGID=1000 \ No newline at end of file diff --git a/heimdall/heimdall.yaml b/heimdall/heimdall.yaml new file mode 100644 index 0000000..def2477 --- /dev/null +++ b/heimdall/heimdall.yaml @@ -0,0 +1,15 @@ +version: "2.1" +services: + heimdall: + image: lscr.io/linuxserver/heimdall:latest + container_name: heimdall + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Warsaw + volumes: + - /home/mbuz/docker/heimdall/config:/config + ports: + - 80:80 + - 443:443 + restart: unless-stopped \ No newline at end of file diff --git a/immich/README.md b/immich/README.md new file mode 100644 index 0000000..fca327c --- /dev/null +++ b/immich/README.md @@ -0,0 +1,4 @@ +Sometimes Immich may return error 500 after startup. It helps to stop all containers and then start them in that order: +1. immich_postgres, immich_redis, immich_typesense +2. Here you need to wait 3-5 minutes to be sure, that typesense is running correctly +3. Rest of the containers, including immich_server \ No newline at end of file diff --git a/immich/immich.yaml b/immich/immich.yaml new file mode 100644 index 0000000..5754f90 --- /dev/null +++ b/immich/immich.yaml @@ -0,0 +1,98 @@ +version: "3.8" + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + command: [ "start.sh", "immich" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + env_file: + - stack.env + depends_on: + - redis + - database + - typesense + restart: unless-stopped + + immich-microservices: + container_name: immich_microservices + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.yml + # service: hwaccel + command: [ "start.sh", "microservices" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + env_file: + - stack.env + depends_on: + - redis + - database + - typesense + restart: unless-stopped + + immich-machine-learning: + container_name: immich_machine_learning + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + volumes: + - model-cache:/cache + env_file: + - stack.env + restart: unless-stopped + + immich-web: + container_name: immich_web + image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release} + env_file: + - stack.env + restart: unless-stopped + + typesense: + container_name: immich_typesense + image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd + environment: + - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} + - TYPESENSE_DATA_DIR=/data + # remove this to get debug messages + - GLOG_minloglevel=1 + volumes: + - tsdata:/data + restart: unless-stopped + + redis: + container_name: immich_redis + image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 + restart: unless-stopped + + database: + container_name: immich_postgres + image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 + env_file: + - stack.env + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + volumes: + - pgdata:/var/lib/postgresql/data + restart: unless-stopped + + immich-proxy: + container_name: immich_proxy + image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release} + environment: + # Make sure these values get passed through from the env file + - IMMICH_SERVER_URL + - IMMICH_WEB_URL + ports: + - 2283:8080 + depends_on: + - immich-server + - immich-web + restart: unless-stopped + +volumes: + pgdata: + model-cache: + tsdata: diff --git a/immich/immich_example.env b/immich/immich_example.env new file mode 100644 index 0000000..63d3a4a --- /dev/null +++ b/immich/immich_example.env @@ -0,0 +1,23 @@ +# 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=/path/to/media/folder + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=release + +# Connection secrets for postgres and typesense. You should change these to random passwords +TYPESENSE_API_KEY=some_random_text +DB_PASSWORD=strong_password + +# The values below this line do not need to be changed +################################################################################### +DB_HOSTNAME=immich_postgres +DB_USERNAME=postgres +DB_DATABASE_NAME=immich + +REDIS_HOSTNAME=immich_redis + +# Uncomment and change, if you need to use Immich with proxy +# IMMICH_WEB_URLL= +# IMMICH_SERVER_URL= \ No newline at end of file diff --git a/nextcloud/nextcloud.yaml b/nextcloud/nextcloud.yaml new file mode 100644 index 0000000..1f73bc7 --- /dev/null +++ b/nextcloud/nextcloud.yaml @@ -0,0 +1,48 @@ +version: '3.3' +services: + nextcloud: + image: lscr.io/linuxserver/nextcloud:latest + container_name: nextcloud + env_file: + - stack.env + environment: + - PUID=1000 + - PGID=1000 + - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} + - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} + - TZ=${TZ} + + volumes: + - ${CONFIG}:/config + - ${DATA}:/data + ports: + - 5443:443 + restart: unless-stopped + links: + - nextcloud-mariadb + depends_on: + - nextcloud-mariadb + + nextcloud-mariadb: + image: lscr.io/linuxserver/mariadb:latest + container_name: nextloud-mariadb + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TZ} + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + + volumes: + - ${MARIADB}:/config + ports: + - 5306:3306 + restart: unless-stopped + + +networks: + default: + name: nextcloud + driver: bridge \ No newline at end of file diff --git a/nextcloud/nextcoud_example.env b/nextcloud/nextcoud_example.env new file mode 100644 index 0000000..5173b10 --- /dev/null +++ b/nextcloud/nextcoud_example.env @@ -0,0 +1,21 @@ +# Overall and upload PHP limits +PHP_MEMORY_LIMIT=2048M +PHP_UPLOAD_LIMIT=5120M + +# Timezone +TZ=Europe/Warsaw + +# Where config will be stored +CONFIG=/path/to/config_folder + +# Where the data (files) will be stored +DATA=/path/to/data_folder + +# MySQL password for the root account +MYSQL_ROOT_PASSWORD=super_duper_strong_password + +# MySQL password for the nextcloud account +MYSQL_PASSWORD=another_one_strong_password + +# Folder, where database will be stored +MARIADB=/path/to/mariadb/folder \ No newline at end of file diff --git a/nginx-proxy-manager/nginx-proxy.yaml b/nginx-proxy-manager/nginx-proxy.yaml new file mode 100644 index 0000000..a569bde --- /dev/null +++ b/nginx-proxy-manager/nginx-proxy.yaml @@ -0,0 +1,14 @@ +version: '3.8' +services: + app: + image: jc21/nginx-proxy-manager:latest + restart: unless-stopped + env_file: + - stack.env + ports: + - 1080:80 + - 1081:81 + - 10443:443 + volumes: + - ${NGINX_DATA}:/data + - ${NGINX_LETSENCRYPT}:/etc/letsencrypt \ No newline at end of file diff --git a/nginx-proxy-manager/nginx_example.env b/nginx-proxy-manager/nginx_example.env new file mode 100644 index 0000000..02ae463 --- /dev/null +++ b/nginx-proxy-manager/nginx_example.env @@ -0,0 +1,5 @@ +# Where the proxy data will be stored +NGINX_DATA=/path/to/nginx/data_folder + +# Where the Letsencrypt data will be stored +NGINX_LETSENCRYPT=/path/to/letsencrypt/data_folder \ No newline at end of file diff --git a/portainer/portainer.yaml b/portainer/portainer.yaml new file mode 100644 index 0000000..c4612b3 --- /dev/null +++ b/portainer/portainer.yaml @@ -0,0 +1,14 @@ +version: "3" +services: + portainer: + image: portainer/portainer-ce:latest + ports: + - 9443:9443 + env_file: + - stack.env + volumes: + - ${PORTAINER_DATA}:/data + - /var/run/docker.sock:/var/run/docker.sock + restart: unless-stopped +volumes: + data: \ No newline at end of file diff --git a/portainer/portainer_example.env b/portainer/portainer_example.env new file mode 100644 index 0000000..226e64e --- /dev/null +++ b/portainer/portainer_example.env @@ -0,0 +1,2 @@ +# Path where thr Portainer data will be stored on the host +PORTAINER_DATA=/path/to/portainer/data \ No newline at end of file diff --git a/webtop/webtop.yaml b/webtop/webtop.yaml new file mode 100644 index 0000000..b0e9657 --- /dev/null +++ b/webtop/webtop.yaml @@ -0,0 +1,21 @@ +version: "2.1" +services: + webtop: + image: lscr.io/linuxserver/webtop:debian-mate + container_name: webtop + env_file: + - stack.env + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Warsaw +# - CUSTOM_USER=user +# - PASSWORD=password + volumes: + - /home/mbuz/docker/webtop:/config + ports: + - 3000:3000 + devices: + - /dev/dri:/dev/dri #optional + shm_size: "2gb" #optional + restart: unless-stopped \ No newline at end of file diff --git a/webtop/webtop_example.env b/webtop/webtop_example.env new file mode 100644 index 0000000..a4b2171 --- /dev/null +++ b/webtop/webtop_example.env @@ -0,0 +1,2 @@ +# Where webtop config will be stored +CONFIG=/path/to/webtop/data \ No newline at end of file