diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3844927..c04b564 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,60 +11,60 @@ updates: schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "firefly" #immich - package-ecosystem: "docker-compose" directory: "/projects/immich" schedule: - interval: "monthly" + interval: "weekly" + labels: + - "immich" #n8n - package-ecosystem: "docker-compose" directory: "/projects/n8n" schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "n8n" #paperless - package-ecosystem: "docker-compose" directory: "/projects/paperless" schedule: - interval: "monthly" + interval: "weekly" + labels: + - "paperless" #tandoor - package-ecosystem: "docker-compose" directory: "/projects/tandoor" schedule: - interval: "monthly" + interval: "weekly" + labels: + - "tandoor" #jellyseer - package-ecosystem: "docker-compose" directory: "/projects/jellyseer" schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "jellyseer" #jellyfin - package-ecosystem: "docker-compose" directory: "/projects/jellyfin" schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "jellyfin" #vaultwarden - package-ecosystem: "docker-compose" directory: "/projects/vaultwarden" schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "vaultwarden" #nextcloud - package-ecosystem: "docker-compose" directory: "/projects/nextcloud" schedule: interval: "weekly" labels: - - "dependencies" - - "auto-merge" + - "nextcloud" diff --git a/.github/workflows/dependabotautomerge.yml b/.github/workflows/dependabotautomerge.yml deleted file mode 100644 index b3d52ed..0000000 --- a/.github/workflows/dependabotautomerge.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Auto-merge Dependabot PRs - -on: - pull_request: - types: [opened, synchronize, reopened] - -permissions: - contents: write - pull-requests: write - -jobs: - automerge: - if: github.event.pull_request.user.login == 'dependabot[bot]' - runs-on: ubuntu-latest - - steps: - - name: Debug token presence - run: | - if [ -z "${{ secrets.GITHUB_TOKEN }}" ]; then - echo "TOKEN IS EMPTY" - exit 1 - else - echo "TOKEN EXISTS" - fi - - - name: Auto-merge - if: contains(github.event.pull_request.labels.*.name, 'auto-merge') - uses: fastify/github-action-merge-dependabot@v3 - with: - github-token: ${{ secrets.GH_TOKEN }} diff --git a/projects/firefly/docker-compose.yml b/projects/firefly/docker-compose.yml index 56c4fa5..ad03dea 100644 --- a/projects/firefly/docker-compose.yml +++ b/projects/firefly/docker-compose.yml @@ -27,7 +27,7 @@ services: - dokploy-network cron: - image: alpine:3.23.4 + image: alpine:3.24.1 restart: unless-stopped container_name: firefly_iii_cron environment: @@ -41,7 +41,7 @@ services: - dokploy-network db: - image: mariadb:12.2 + image: mariadb:12.3 hostname: db container_name: firefly_iii_db restart: unless-stopped diff --git a/projects/immich/docker-compose.yml b/projects/immich/docker-compose.yml index aadf5d5..cea33b4 100644 --- a/projects/immich/docker-compose.yml +++ b/projects/immich/docker-compose.yml @@ -3,10 +3,15 @@ version: "3.9" services: immich-server: image: ghcr.io/immich-app/immich-server:v2.7.5 + deploy: + resources: + limits: + cpus: "1.25" + memory: 2G labels: - rclone.storage=storagebox-crypt volumes: - - /media/storagebox-crypt/immich/library:/usr/src/app/upload + - /opt/media/storagebox/immich/library:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro depends_on: immich-redis: @@ -36,7 +41,11 @@ services: immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:v2.7.5 - + deploy: + resources: + limits: + cpus: "1.75" + memory: 2.5G volumes: - immich-model-cache:/cache environment: @@ -52,7 +61,11 @@ services: immich-redis: image: redis:6.2-alpine - + deploy: + resources: + limits: + cpus: "0.25" + memory: 256M volumes: - immich-redis-data:/data healthcheck: diff --git a/projects/jellyfin/docker-compose.yml b/projects/jellyfin/docker-compose.yml index 274c7b2..f88028c 100644 --- a/projects/jellyfin/docker-compose.yml +++ b/projects/jellyfin/docker-compose.yml @@ -2,10 +2,15 @@ version: "3.8" services: jellyfin: image: jellyfin/jellyfin:10 + deploy: + resources: + limits: + cpus: "2.0" + memory: 2G volumes: - config:/config - cache:/cache - - /mnt/seedbox/media:/media + - /opt/media/seedbox/media:/media:ro restart: "unless-stopped" environment: - JELLYFIN_PublishedServerUrl=https://${JELLYFIN_HOST} diff --git a/projects/mealie/README.md b/projects/mealie/README.md new file mode 100644 index 0000000..e69de29 diff --git a/projects/mealie/docker-compose.yml b/projects/mealie/docker-compose.yml new file mode 100644 index 0000000..dbb84fe --- /dev/null +++ b/projects/mealie/docker-compose.yml @@ -0,0 +1,36 @@ +services: + mealie: + image: ghcr.io/mealie-recipes/mealie:latest + deploy: + resources: + limits: + cpus: "1.0" + memory: 1G + volumes: + - mealie-data:/app/data/ + environment: + PUID: 1000 + PGID: 1000 + + # Basic settings + BASE_URL: ${BASE_URL} + API_DOCS: ${API_DOCS} + ALLOW_SIGNUP: ${ALLOW_SIGNUP} + DEFAULT_GROUP: ${DEFAULT_GROUP} + DEFAULT_HOUSEHOLD: ${DEFAULT_HOUSEHOLD} + TZ: ${TZ} + SECURITY_MAX_LOGIN_ATTEMPTS: ${SECURITY_MAX_LOGIN_ATTEMPTS} + SECURITY_USER_LOCKOUT_TIME: ${SECURITY_USER_LOCKOUT_TIME} + DAILY_SCHEDULE_TIME: ${DAILY_SCHEDULE_TIME} + + # Email settings + SMTP_HOST: ${SMTP_HOST} + SMTP_PORT: ${SMTP_PORT} + SMTP_AUTH_STRATEGY: ${SMTP_AUTH_STRATEGY} + SMTP_FROM_NAME: ${SMTP_FROM_NAME} + SMTP_FROM_EMAIL: ${SMTP_FROM_EMAIL} + SMTP_USER: ${SMTP_USER} + SMTP_PASSWORD: ${SMTP_PASSWORD} + +volumes: + mealie-data: {} diff --git a/projects/n8n/docker-compose.yml b/projects/n8n/docker-compose.yml index 0a67d8a..57a3a73 100644 --- a/projects/n8n/docker-compose.yml +++ b/projects/n8n/docker-compose.yml @@ -1,6 +1,6 @@ services: n8n: - image: docker.n8n.io/n8nio/n8n:2.17.7 + image: docker.n8n.io/n8nio/n8n:2.29.10 restart: always labels: - rclone.storage=storagebox-crypt @@ -14,7 +14,7 @@ services: - N8N_SECURE_COOKIE=false - N8N_RESTRICT_FILE_ACCESS_TO=/home/node volumes: - - /media/storagebox-crypt/paperless/consume:/home/node/paperless/consume:rw + - /opt/media/storagebox/paperless/consume:/home/node/paperless/consume:rw - n8n_data:/home/node/.n8n volumes: diff --git a/projects/nextcloud/docker-compose.yml b/projects/nextcloud/docker-compose.yml index e9cbfb1..2637fa8 100644 --- a/projects/nextcloud/docker-compose.yml +++ b/projects/nextcloud/docker-compose.yml @@ -1,6 +1,6 @@ services: nextcloud: - image: nextcloud:33.0.2 + image: nextcloud:34.0.3 restart: unless-stopped labels: - rclone.storage=storagebox-crypt @@ -8,7 +8,7 @@ services: - traefik.http.routers.nextcloud.middlewares=nextcloud-buffering volumes: - nextcloud_data:/var/www/html - - /media/storagebox-crypt/nextcloud:/mnt/storagebox + - /opt/media/storagebox/nextcloud:/mnt/storagebox environment: - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} - MYSQL_HOST=nextcloud_db diff --git a/projects/paperless/docker-compose.yml b/projects/paperless/docker-compose.yml index 8f50a27..ff94bf8 100644 --- a/projects/paperless/docker-compose.yml +++ b/projects/paperless/docker-compose.yml @@ -1,16 +1,21 @@ version: '3.8' services: paperless: - image: ghcr.io/paperless-ngx/paperless-ngx:2.20.10 + image: ghcr.io/paperless-ngx/paperless-ngx:3.0.5 + deploy: + resources: + limits: + cpus: "1.0" + memory: 1.5G container_name: paperless restart: unless-stopped labels: - rclone.storage=storagebox-crypt volumes: - - /media/storagebox-crypt/paperless/data:/usr/src/paperless/data - - /media/storagebox-crypt/paperless/media:/usr/src/paperless/media - - /media/storagebox-crypt/paperless/export:/usr/src/paperless/export - - /media/storagebox-crypt/paperless/consume:/usr/src/paperless/consume + - /opt/media/storagebox/paperless/data:/usr/src/paperless/data + - /opt/media/storagebox/paperless/media:/usr/src/paperless/media + - /opt/media/storagebox/paperless/export:/usr/src/paperless/export + - /opt/media/storagebox/paperless/consume:/usr/src/paperless/consume environment: PAPERLESS_REDIS: ${PAPERLESS_REDIS} PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE} @@ -21,6 +26,8 @@ services: PAPERLESS_ALLOWED_HOSTS: ${PAPERLESS_ALLOWED_HOSTS} PAPERLESS_DBHOST: ${PAPERLESS_DBHOST} PAPERLESS_DBPASS: ${PAPERLESS_DBPASS} + PAPERLESS_OCR_OUTPUT_TYPE: ${PAPERLESS_OCR_OUTPUT_TYPE} + PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000"] interval: 30s @@ -30,7 +37,12 @@ services: - dokploy-network redis: - image: redis:8.6.1 + image: redis:8.10.1 + deploy: + resources: + limits: + cpus: "0.25" + memory: 256M container_name: paperless-redis restart: unless-stopped volumes: @@ -41,6 +53,11 @@ services: db: container_name: paperless-db image: postgres:16 + deploy: + resources: + limits: + cpus: "0.75" + memory: 1G restart: unless-stopped volumes: - paperlessdb:/var/lib/postgresql/data diff --git a/projects/rclone/README.md b/projects/rclone/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/projects/rclone/README.md @@ -0,0 +1 @@ + diff --git a/projects/rclone/docker-compose.yml b/projects/rclone/docker-compose.yml new file mode 100644 index 0000000..82ea969 --- /dev/null +++ b/projects/rclone/docker-compose.yml @@ -0,0 +1,95 @@ +version: "3.9" + +services: + rclone-seedbox: + image: rclone/rclone:v1.75.0 + container_name: rclone-seedbox + restart: unless-stopped + + cap_add: + - SYS_ADMIN + + devices: + - /dev/fuse:/dev/fuse + + security_opt: + - apparmor:unconfined + + ports: + - "5572:5572" + + command: > + mount seedbox: /data + --config /config/rclone.conf + --allow-other + --buffer-size 256M + --dir-cache-time 1h + --vfs-cache-mode full + --vfs-cache-max-size 512M + --vfs-read-chunk-size 64M + --vfs-read-chunk-size-limit 256M + --poll-interval 1m + --timeout 15m + --contimeout 15m + --retries 10 + --low-level-retries 20 + --log-level INFO + --allow-non-empty + --rc + --rc-addr :5572 + --rc-web-gui + --rc-web-gui-no-open-browser + --rc-allow-origin * + --rc-user ${RCLONE_USER} + --rc-pass ${RCLONE_PASS} + + volumes: + - /opt/rclone/config:/config + - /opt/media/seedbox:/data:rshared + - ./logs/seedbox:/logs + + + rclone-storagebox-crypt: + image: rclone/rclone:v1.75.0 + container_name: rclone-storagebox-crypt + restart: unless-stopped + + cap_add: + - SYS_ADMIN + + devices: + - /dev/fuse:/dev/fuse + + security_opt: + - apparmor:unconfined + + ports: + - "5573:5573" + + command: > + mount storagebox-crypt: /data + --config /config/rclone.conf + --allow-other + --buffer-size 256M + --dir-cache-time 12h + --vfs-cache-mode full + --vfs-cache-max-size 512M + --vfs-read-chunk-size 64M + --vfs-read-chunk-size-limit 256M + --poll-interval 1m + --timeout 1m + --log-level INFO + --allow-non-empty + --rc + --rc-addr :5573 + --rc-web-gui + --rc-web-gui-no-open-browser + --rc-allow-origin * + --rc-user ${RCLONE_USER} + --rc-pass ${RCLONE_PASS} + + volumes: + - /opt/rclone/config:/config + - /opt/rclone/ssh:/root/.ssh:ro + - /opt/media/storagebox:/data:rshared + - ./logs/storagebox:/logs diff --git a/projects/tandoor/README.md b/projects/tandoor/README.md deleted file mode 100644 index 0eee743..0000000 --- a/projects/tandoor/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# [tandoor](https://tandoor.dev) - -## tandoor - -### General - -- Compose Path: `./projects/tandoor/docker-compose.yml` - -### Environment - -POSTGRES_HOST: #db name (not container-name) -POSTGRES_PORT: #default: `5432` -POSTGRES_USER: #database user -POSTGRES_PASSWORD: #database password -POSTGRES_DB: #database name -SECRET_KEY: #32 digits token - use [it-tools token-generator](https://it-tools.tech/token-generator?length=32) to get one - -### Domains - -- Service Name: `tandoor` -- Container Port: `80` -- HTTPS: `true` -- Certificate Provider: `Let's Encrypt` - -### Volume Backups - -- Task Name: `staticfiles` -- Schedule `0 0 * * *` -- Service Name: `tandoor` -- Volume: `tandoor-tandoor-xxx` -- Keep Latest Backups: `7` -- Enabled: true \ No newline at end of file diff --git a/projects/tandoor/docker-compose.yml b/projects/tandoor/docker-compose.yml deleted file mode 100644 index 86bfca5..0000000 --- a/projects/tandoor/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '3.8' -services: - tandoor: - restart: unless-stopped - image: vabene1111/recipes:2.5.3 - labels: - - rclone.storage=storagebox-crypt - environment: - POSTGRES_HOST: ${POSTGRES_HOST} - POSTGRES_PORT: ${POSTGRES_PORT} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} - SECRET_KEY: ${SECRET_KEY} - volumes: - - staticfiles:/opt/recipes/staticfiles - - /media/storagebox-crypt/tandoor/mediafiles:/opt/recipes/mediafiles - networks: - - dokploy-network - - db: - container_name: tandoor_db - restart: unless-stopped - image: postgres:16-alpine - volumes: - - /media/storagebox-crypt/tandoor/postgresql:/var/lib/postgresql/data - environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} - networks: - - dokploy-network - -volumes: - staticfiles: - -networks: - dokploy-network: - external: true diff --git a/projects/vaultwarden/docker-compose.yml b/projects/vaultwarden/docker-compose.yml index a867ed1..9f6148d 100644 --- a/projects/vaultwarden/docker-compose.yml +++ b/projects/vaultwarden/docker-compose.yml @@ -1,6 +1,6 @@ services: vaultwarden: - image: vaultwarden/server:1.35.8 + image: vaultwarden/server:1.37.1 restart: always environment: DOMAIN: ${DOMAIN}