- Hugo Update

- Deleted old Code
This commit is contained in:
Henrik Mertens 2025-07-17 18:16:58 +00:00
parent f9f5e848c6
commit fb5f6c802a
18 changed files with 2 additions and 1009 deletions

View file

@ -1,17 +1,4 @@
steps:
#docker-buildx-kontify:
# image: woodpeckerci/plugin-docker-buildx
# settings:
# platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm64/v8
# repo: git.mertens.digital/heri410/kontify
# registry: git.mertens.digital
# tags: latest
# password:
# from_secret: docker_password
# username:
# from_secret: docker_username
# dockerfile: ./Container/kontify/Dockerfile
# context: ./Container/kontify
docker-buildx-hugo:
image: woodpeckerci/plugin-docker-buildx
settings:
@ -23,5 +10,5 @@ steps:
from_secret: docker_password
username:
from_secret: docker_username
dockerfile: ./Container/hugo/Dockerfile
context: ./Container/hugo
dockerfile: ./hugo/Dockerfile
context: ./hugo

View file

@ -1,7 +0,0 @@
# Automatischer Caddy Proxy Server
Dieser Server erstellt automatisch Proxy Regeln für Docker Container.
Vor dem Start muss der Befehl
docker network create caddy
ausgeführt werden.

View file

@ -1,96 +0,0 @@
version: "3.7"
services:
traefik:
image: "traefik"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --providers.docker.exposedByDefault=false
- --log.level=DEBUG
- --providers.docker.network=proxy
- --serversTransport.insecureSkipVerify=true
- --api
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
#- "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
#Lets Encrypt TLS Challenge
#- --certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
#- --certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}
#- --certificatesresolvers.letsencrypt.acme.storage=/acme.json
#- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
#Logging
- "--accesslog=true"
- "--accesslog.filePath=/logs/access.log"
ports:
- "80:80"
- "443:443"
networks:
- proxy
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./data/letsencrypt:/letsencrypt"
- ./data/logs/:/logs/
labels:
# Dashboard
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.zuhause.mertens.digital`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.routers.traefik.entrypoints=websecure"
#- "traefik.http.routers.traefik.middlewares=authtraefik"
#- "traefik.http.middlewares.authtraefik.basicauth.users=user:$2a$12$zeG4z6/dM28JONNH54/jo.pZD0BUuzw0mbD0GFMQqe00lFYCPzKm." # user/password
# global redirect to https
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
# middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
restart: unless-stopped
# Automatic Container Updates
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# whoami:
# image: traefik/whoami
# command:
# - --port=2001
# - --name=test
# ports:
# - "2001:2001"
# networks:
# - proxy
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.whoami.entrypoints=websecure"
# - "traefik.http.routers.whoami.rule=Host(`whoami.dev.mertens.digital`)"
# - "traefik.http.routers.whoami.tls=true"
# - "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
# - "traefik.http.services.whoami.loadbalancer.server.port=2001"
# Cleanup unused Docker Container
janitor:
image: flaviostutz/docker-janitor
environment:
- RUN_ON_STARTUP=true
- PRUNE_VOLUMES=true
- SLEEP_TIME=86400
- UNUSED_TIME=24h
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
proxy:
external: true

View file

@ -1,41 +0,0 @@
Only working with this modified config File
```
{
"$schema": "https://raw.githubusercontent.com/Ylianst/MeshCentral/master/meshcentral-config-schema.json",
"settings": {
"plugins":{"enabled": false},
"mongoDb": "mongodb://mongodbadmin:mongodbpasswd@mongodb:27017",
"cert": "mesh.dev.mertens.digital",
"_WANonly": true,
"_LANonly": true,
"_sessionKey": "MyReallySecretPassword1",
"port": 80,
"_aliasPort": 443,
"redirPort": 81,
"_redirAliasPort": 80,
"AgentPong": 300,
"TLSOffload": true,
"SelfUpdate": false,
"AllowFraming": false,
"WebRTC": false
},
"domains": {
"": {
"_title": "MyServer",
"_title2": "Servername",
"minify": true,
"NewAccounts": true,
"localSessionRecording": false,
"_userNameIsEmail": true,
"certUrl": "https://mesh.dev.mertens.digital:443"
}
},
"_letsencrypt": {
"__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before>",
"_email": "myemail@mydomain.com",
"_names": "myserver.mydomain.com",
"production": false
}
}
```

View file

@ -1,54 +0,0 @@
version: '3'
networks:
meshcentral-tier:
driver: bridge
proxy:
external: true
services:
mongodb:
restart: always
container_name: mongodb
image: mongo:latest
env_file:
- .env
volumes:
# mongodb data-directory - A must for data persistence
- ./data/mongodb_data:/data/db
networks:
- meshcentral-tier
meshcentral:
restart: always
container_name: meshcentral
# use the official meshcentral container
image: ghcr.io/ylianst/meshcentral:latest
depends_on:
- mongodb
#ports:
# MeshCentral will moan and try everything not to use port 80, but you can also use it if you so desire, just change the config.json according to your needs
#- 443:443
#- 80:80
env_file:
- .env
volumes:
# config.json and other important files live here. A must for data persistence
- ./data/meshcentral/data:/opt/meshcentral/meshcentral-data
# where file uploads for users live
- ./data/meshcentral/user_files:/opt/meshcentral/meshcentral-files
# location for the meshcentral-backups - this should be mounted to an external storage
- ./data/meshcentral/backup:/opt/meshcentral/meshcentral-backups
# location for site customization files
- ./data/meshcentral/web:/opt/meshcentral/meshcentral-web
labels:
- 'traefik.enable=true'
- "traefik.http.routers.mesh.entrypoints=websecure"
- "traefik.http.routers.mesh.rule=Host(`mesh.dev.mertens.digital`)"
- "traefik.http.routers.mesh.tls=true"
- "traefik.http.routers.mesh.tls.certresolver=letsencrypt"
- "traefik.http.services.mesh.loadbalancer.server.port=80"
#- "traefik.http.services.mesh.loadbalancer.server.scheme=https"
networks:
- meshcentral-tier
- proxy

View file

@ -1,12 +0,0 @@
<?php
$CONFIG = array (
'enabledPreviewProviders' => [
'OC\Preview\MP3',
'OC\Preview\TXT',
'OC\Preview\MarkDown',
'OC\Preview\OpenDocument',
'OC\Preview\Krita',
'OC\Preview\Imaginary',
],
'preview_imaginary_url' => 'http://preview:9000',
);

View file

@ -1,144 +0,0 @@
version: '3'
services:
app:
image: nextcloud
restart: always
networks:
- proxy
- nextcloud
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`${HOSTNAME}`)"
- "traefik.http.routers.nextcloud.service=nextcloud"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
- "traefik.http.routers.nextcloud.tls=true"
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
- "traefik.http.services.nextcloud.loadbalancer.passhostheader=true"
- "traefik.http.routers.nextcloud.middlewares=compresstraefik"
- "traefik.http.middlewares.compresstraefik.compress=true"
volumes:
- ./data/nextcloud/www:/var/www/html
#- ./default-config/preview.config.php:/var/www/html/config/preview.config.php
depends_on:
#- clamav
- preview
- db
- redis
environment:
- POSTGRES_HOST=db
- REDIS_HOST=redis
- POSTGRES_DB=nextcloud
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- NEXTCLOUD_TRUSTED_DOMAINS=${HOSTNAME}
- OVERWRITEPROTOCOL=https
- TRUSTED_PROXIES=${NEXTCLOUD_TRUSTED_PROXIES}
- APACHE_DISABLE_REWRITE_IP=1
preview:
image: docker.io/nextcloud/aio-imaginary:latest
restart: always
networks:
- nextcloud
environment:
- PORT=9000
command: -concurrency 50 -enable-url-source
collabora-code:
image: collabora/code
container_name: collabora-code
cap_add:
- MKNOD
ports:
- 9980:9980
environment:
- "domain=cloud\\.dev\\.mertens\\.digital"
- username=admin
- "extra_params=--o:ssl.enable=false --o:ssl.termination=true"
- password=CREATE-A-SECURE-PASSWORD-HERE
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.collabora.entrypoints=websecure"
- "traefik.http.routers.collabora.rule=Host(`${COLLABORA_FQDN}`)"
- "traefik.http.routers.collabora.tls=true"
- "traefik.http.routers.collabora.tls.certresolver=letsencrypt"
- "traefik.http.services.collabora.loadbalancer.server.port=9980"
#- "traefik.http.services.collabora.loadbalancer.passhostheader=true"
networks:
- proxy
# clamav:
# image: "clamav/clamav:stable_base"
# container_name: "clamav"
# networks:
# - nextcloud
# volumes:
# - ./data/clamav/virus_db:/var/lib/clamav/ # Virus database
# restart: unless-stopped
# Does Not Work
#notify_push:
# image: icewind1991/notify_push
# restart: always
# networks:
# - nextcloud
# - caddy
# labels:
# caddy: ${HOSTNAME}
# caddy.handle_path: /push/*
# caddy.handle_path.0_reverse_proxy: "{{upstreams http 7867}}"
# depends_on:
# - db
# - redis
# - app
# volumes:
# - ./data/nextcloud/www:/var/www/html:ro
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# environment:
# - PORT=7867
# - "NEXTCLOUD_URL=http://app" # don't go through the proxy to contact the nextcloud server
# entrypoint: ./notify_push --allow-self-signed --dump-config redis://:@redis --log-level debug /var/www/html/config/config.php
cron:
image: nextcloud
restart: always
volumes:
- ./data/nextcloud/www:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
networks:
- nextcloud
db:
image: postgres:alpine
restart: always
networks:
- nextcloud
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./data/db:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
redis:
image: redis:alpine
restart: always
networks:
- nextcloud
networks:
nextcloud:
internal: true
proxy:
external: true

View file

@ -1,12 +0,0 @@
<?php
$CONFIG = array (
'enabledPreviewProviders' => [
'OC\Preview\MP3',
'OC\Preview\TXT',
'OC\Preview\MarkDown',
'OC\Preview\OpenDocument',
'OC\Preview\Krita',
'OC\Preview\Imaginary',
],
'preview_imaginary_url' => 'http://preview:9000',
);

View file

@ -1,115 +0,0 @@
version: '3'
services:
app:
image: nextcloud
restart: always
networks:
- caddy
- nextcloud
labels:
caddy: ${HOSTNAME}
caddy.reverse_proxy: "{{upstreams http 80}}"
caddy.0_redir: "/.well-known/carddav /remote.php/dav 301"
caddy.1_redir: "/.well-known/caldav /remote.php/dav 301"
caddy.header: "Strict-Transport-Security max-age=15552000"
caddy.tls: "internal"
volumes:
- ./data/nextcloud/www:/var/www/html
- ./default-config/preview.config.php:/var/www/html/config/preview.config.php
depends_on:
- clamav
- preview
# - db
- redis
environment:
- POSTGRES_HOST=db
- REDIS_HOST=redis
- POSTGRES_DB=nextcloud
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- NEXTCLOUD_TRUSTED_DOMAINS=${HOSTNAME}
- OVERWRITEPROTOCOL=https
- TRUSTED_PROXIES=${NEXTCLOUD_TRUSTED_PROXIES}
- APACHE_DISABLE_REWRITE_IP=1
preview:
container_name: "preview"
image: docker.io/nextcloud/aio-imaginary:latest
restart: always
networks:
- nextcloud
environment:
- PORT=9000
command: -concurrency 50 -enable-url-source
clamav:
image: "clamav/clamav:stable_base"
container_name: "clamav"
networks:
- nextcloud
volumes:
- ./data/clamav/virus_db:/var/lib/clamav/ # Virus database
restart: unless-stopped
# Does Not Work
#notify_push:
# image: icewind1991/notify_push
# restart: always
# networks:
# - nextcloud
# - caddy
# labels:
# caddy: ${HOSTNAME}
# caddy.handle_path: /push/*
# caddy.handle_path.0_reverse_proxy: "{{upstreams http 7867}}"
# depends_on:
# - db
# - redis
# - app
# volumes:
# - ./data/nextcloud/www:/var/www/html:ro
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# environment:
# - PORT=7867
# - "NEXTCLOUD_URL=http://app" # don't go through the proxy to contact the nextcloud server
# entrypoint: ./notify_push --allow-self-signed --dump-config redis://:@redis --log-level debug /var/www/html/config/config.php
cron:
image: nextcloud
restart: always
volumes:
- ./data/nextcloud/www:/var/www/html
entrypoint: /cron.sh
depends_on:
# - db
- redis
networks:
- nextcloud
# db:
# image: postgres:alpine
# restart: always
# networks:
# - nextcloud
# environment:
# POSTGRES_USER: ${POSTGRES_USER}
# POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
# volumes:
# - ./data/db:/var/lib/postgresql/data
# - /etc/localtime:/etc/localtime:ro
redis:
image: redis:alpine
restart: always
networks:
- nextcloud
networks:
nextcloud:
internal: true
caddy:
external: true

View file

@ -1,154 +0,0 @@
version: '2.2'
services:
sharelatex:
restart: always
image: tuetenk0pp/sharelatex-full
container_name: sharelatex
labels:
- "traefik.enable=true"
# handle https traffic
- "traefik.http.routers.sharel-secured.rule=Host(`overleaf.mertens.digital`)"
- "traefik.http.routers.sharel-secured.tls=true"
- "traefik.http.routers.sharel-secured.tls.certresolver=letsencrypt"
- "traefik.http.routers.sharel-secured.entrypoints=websecure"
- "traefik.http.middlewares.sharel-secured.forwardauth.trustForwardHeader=true"
# Docker loadbalance
- "traefik.http.services.sharel.loadbalancer.server.port=80"
- "traefik.http.services.sharel.loadbalancer.server.scheme=http"
- "traefik.http.services.sharel.loadbalancer.sticky.cookie=true"
- "traefik.http.services.sharel.loadbalancer.sticky.cookie.name=io"
- "traefik.http.services.sharel.loadbalancer.sticky.cookie.httponly=true"
- "traefik.http.services.sharel.loadbalancer.sticky.cookie.secure=true"
- "traefik.http.services.sharel.loadbalancer.sticky.cookie.samesite=io"
# labels:
# caddy: overleaf.mertens.digital
# caddy.reverse_proxy: "{{upstreams http 80}}"
networks:
- proxy
- default
depends_on:
mongo:
condition: service_healthy
redis:
condition: service_started
ports:
- 8088:80
- 8080:8080
links:
- mongo
- redis
stop_grace_period: 60s
volumes:
- ./data/sharelatex_log:/var/log/sharelatex/
- ./data/sharelatex:/var/lib/sharelatex
environment:
SHARELATEX_APP_NAME: Overleaf Mertens
SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
SHARELATEX_REDIS_HOST: redis
REDIS_HOST: redis
ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file'
ENABLE_CONVERSIONS: 'true'
EMAIL_CONFIRMATION_DISABLED: 'true'
TEXMFVAR: /var/lib/sharelatex/tmp/texmf-var
#Proxy
SHARELATEX_SECURE_COOKIE: 'true'
SHARELATEX_BEHIND_PROXY: 'true'
## Set for SSL via nginx-proxy
#VIRTUAL_HOST: 103.112.212.22
SHARELATEX_SITE_URL: https://overleaf.mertens.digital
# SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance
# SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
# SHARELATEX_ADMIN_EMAIL: support@it.com
# SHARELATEX_LEFT_FOOTER: '[{"text": "Powered by <a href=\"https://www.sharelatex.com\">ShareLaTeX</a> 2016"},{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
# SHARELATEX_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'
SHARELATEX_EMAIL_FROM_ADDRESS: ${SHARELATEX_EMAIL_FROM_ADDRESS}
# SHARELATEX_EMAIL_AWS_SES_ACCESS_KEY_ID:
# SHARELATEX_EMAIL_AWS_SES_SECRET_KEY:
SHARELATEX_EMAIL_SMTP_HOST: ${SHARELATEX_EMAIL_SMTP_HOST}
SHARELATEX_EMAIL_SMTP_PORT: 25
SHARELATEX_EMAIL_SMTP_SECURE: "false"
SHARELATEX_EMAIL_SMTP_USER: ${SHARELATEX_EMAIL_SMTP_USER}
SHARELATEX_EMAIL_SMTP_PASS: ${SHARELATEX_EMAIL_SMTP_PASS}
SHARELATEX_EMAIL_SMTP_TLS_REJECT_UNAUTH: "true"
SHARELATEX_EMAIL_SMTP_IGNORE_TLS: "true"
#SHARELATEX_EMAIL_SMTP_NAME: '127.0.0.1'
SHARELATEX_EMAIL_SMTP_LOGGER: "true"
#SHARELATEX_CUSTOM_EMAIL_FOOTER: "This system is run by department x"
################
## Server Pro ##
################
# SANDBOXED_COMPILES: 'true'
# SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
# SANDBOXED_COMPILES_HOST_DIR: '/var/sharelatex_data/data/compiles'
# DOCKER_RUNNER: 'false'
## Works with test LDAP server shown at bottom of docker compose
# SHARELATEX_LDAP_URL: 'ldap://ldap:389'
# SHARELATEX_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com'
# SHARELATEX_LDAP_SEARCH_FILTER: '(uid={{username}})'
# SHARELATEX_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com'
# SHARELATEX_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone'
# SHARELATEX_LDAP_EMAIL_ATT: 'mail'
# SHARELATEX_LDAP_NAME_ATT: 'cn'
# SHARELATEX_LDAP_LAST_NAME_ATT: 'sn'
# SHARELATEX_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true'
# SHARELATEX_TEMPLATES_USER_ID: "578773160210479700917ee5"
# SHARELATEX_NEW_PROJECT_TEMPLATE_LINKS: '[ {"name":"All Templates","url":"/templates/all"}]'
# SHARELATEX_PROXY_LEARN: "true"
mongo:
restart: always
image: mongo:4.4
container_name: mongo
expose:
- 27017
volumes:
- ./data/mongo_data:/data/db
healthcheck:
test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
interval: 10s
timeout: 10s
retries: 5
redis:
restart: always
image: redis:5
container_name: redis
expose:
- 6379
volumes:
- ./data/redis_data:/data
# nginx-proxy:
# image: jwilder/nginx-proxy
# container_name: nginx-proxy
# ports:
# #- "80:80"
# - "443:443"
# volumes:
# - /var/run/docker.sock:/tmp/docker.sock:ro
# - /home/sharelatex/tmp:/etc/nginx/certs
networks:
proxy:
external: true

View file

@ -1,117 +0,0 @@
version: '3.5'
services:
photoprism:
image: photoprism/photoprism:latest
depends_on:
- mariadb
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- "2342:2342" # HTTP port (host:container)
labels:
- "traefik.enable=true"
- "traefik.http.routers.photo.rule=Host(`${SERVER_DOMAIN}`)"
- "traefik.http.routers.photo.service=nextcloud"
- "traefik.http.routers.photo.entrypoints=websecure"
- "traefik.http.services.photo.loadbalancer.server.port=2343"
- "traefik.http.routers.photo.tls=true"
- "traefik.http.routers.photo.tls.certresolver=letsencrypt"
- "traefik.http.services.photo.loadbalancer.passhostheader=true"
- "traefik.http.routers.photo.middlewares=compresstraefik"
- "traefik.http.middlewares.compresstraefik.compress=true"
#- "traefik.http.routers.photoprism.rule=Host(`${SERVER_DOMAIN}`)"
#- "traefik.http.routers.photoprism.tls=true"
#- "traefik.http.routers.photoprism.tls.certresolver=myresolver"
#caddy: ${SERVER_DOMAIN}
#caddy.reverse_proxy: "{{upstreams http 2342}}"
#caddy.@denied.not.remote_ip: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8"
#caddy.reverse_proxy: "@denied {{upstreams 2342}}"
#caddy.tls: "internal"
networks:
- proxy
- photoprism
environment:
PHOTOPRISM_ADMIN_USER: "admin" # superadmin username
PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PW} # initial superadmin password (minimum 8 characters)
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
PHOTOPRISM_SITE_URL: ${SERVER_URL} # server URL in the format "http(s)://domain.name(:port)/(path)"
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow)
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow)
PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW files
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW files (reduces performance)
PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow)
PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
PHOTOPRISM_DATABASE_PASSWORD: ${MYSQL_PW} # MariaDB or MySQL database user password
PHOTOPRISM_SITE_CAPTION: "Henriks Fotos"
PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description
PHOTOPRISM_SITE_AUTHOR: "Henrik Mertens" # meta site author
## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean):
# PHOTOPRISM_INIT: "tensorflow"
working_dir: "/photoprism" # do not change or remove
volumes:
- /mnt/helmut/homes/henrik/Fotos:/photoprism/originals/Fotos
- /mnt/helmut/homes/henrik/photoprism/originals:/photoprism/originals # Original media files (DO NOT REMOVE)
- /mnt/helmut/homes/henrik/photoprism/import:/photoprism/import
- "./data/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
mariadb:
restart: unless-stopped
image: mariadb:10.10
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "./data/mysql:/var/lib/mysql" # DO NOT REMOVE
networks:
- photoprism
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: ${MYSQL_PW}
MARIADB_ROOT_PASSWORD: ${MYSQL_PW}
## Watchtower upgrades services automatically (optional)
## see https://docs.photoprism.app/getting-started/updates/#watchtower
## activate via "COMPOSE_PROFILES=update docker compose up -d"
#watchtower:
# restart: unless-stopped
# image: containrrr/watchtower
# profiles: ["update"]
# environment:
# WATCHTOWER_CLEANUP: "true"
# WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
# volumes:
# - "/var/run/docker.sock:/var/run/docker.sock"
# - "~/.docker/config.json:/config.json" # optional, for authentication if you have a Docker Hub account
networks:
photoprism:
internal: true
proxy:
external: true

View file

@ -1,99 +0,0 @@
version: '3.5'
services:
photoprism:
image: photoprism/photoprism:latest
depends_on:
- mariadb
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
#ports:
# - "2342:2342" # HTTP port (host:container)
labels:
caddy: ${SERVER_DOMAIN}
caddy.reverse_proxy: "{{upstreams http 2342}}"
#caddy.@denied.not.remote_ip: "192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8"
#caddy.reverse_proxy: "@denied {{upstreams 2342}}"
caddy.tls: "internal"
networks:
- caddy
- photoprism
environment:
PHOTOPRISM_ADMIN_USER: "admin" # superadmin username
PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PW} # initial superadmin password (minimum 8 characters)
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
PHOTOPRISM_SITE_URL: ${SERVER_URL} # server URL in the format "http(s)://domain.name(:port)/(path)"
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow)
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow)
PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW files
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW files (reduces performance)
PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow)
PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
PHOTOPRISM_DATABASE_PASSWORD: ${MYSQL_PW} # MariaDB or MySQL database user password
PHOTOPRISM_SITE_CAPTION: "Henriks Fotos"
PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description
PHOTOPRISM_SITE_AUTHOR: "Henrik Mertens" # meta site author
## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean):
# PHOTOPRISM_INIT: "tensorflow"
working_dir: "/photoprism" # do not change or remove
volumes:
- /mnt/helmut/homes/henrik/Fotos:/photoprism/originals/Fotos
- /mnt/helmut/homes/henrik/photoprism/originals:/photoprism/originals # Original media files (DO NOT REMOVE)
- /mnt/helmut/homes/henrik/photoprism/import:/photoprism/import
- "./data/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
mariadb:
restart: unless-stopped
image: mariadb:10.10
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "./data/mysql:/var/lib/mysql" # DO NOT REMOVE
networks:
- photoprism
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: ${MYSQL_PW}
MARIADB_ROOT_PASSWORD: ${MYSQL_PW}
## Watchtower upgrades services automatically (optional)
## see https://docs.photoprism.app/getting-started/updates/#watchtower
## activate via "COMPOSE_PROFILES=update docker compose up -d"
#watchtower:
# restart: unless-stopped
# image: containrrr/watchtower
# profiles: ["update"]
# environment:
# WATCHTOWER_CLEANUP: "true"
# WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
# volumes:
# - "/var/run/docker.sock:/var/run/docker.sock"
# - "~/.docker/config.json:/config.json" # optional, for authentication if you have a Docker Hub account
networks:
photoprism:
internal: true
caddy:
external: true

View file

@ -1,49 +0,0 @@
version: '3'
services:
restic-server:
image: restic/rest-server
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.rest-server.entrypoints=websecure
- traefik.http.routers.rest-server.rule=Host(`restic-zuhause.mertens.digital`)
- traefik.http.routers.rest-server.tls=true
- traefik.http.routers.rest-server.tls.certresolver=letsencrypt
- traefik.http.services.rest-server.loadbalancer.server.port=8000
networks:
- proxy
# networks:
# - caddy
# labels:
# caddy: restic-zuhause.mertens.digital
# caddy.reverse_proxy: "{{upstreams 8000}}"
volumes:
- /mnt/helmut/backup/restic:/data
environment:
OPTIONS: "--private-repos --append-only"
networks:
proxy:
external: true
# whoami:
# image: traefik/whoami
# command:
# - --port=2001
# - --name=test
# ports:
# - "2001:2001"
# networks:
# - proxy
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.whoami.entrypoints=websecure"
# - "traefik.http.routers.whoami.rule=Host(`whoami.dev.mertens.digital`)"
# - "traefik.http.routers.whoami.tls=true"
# - "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
# - "traefik.http.services.whoami.loadbalancer.server.port=2001"

View file

@ -1,49 +0,0 @@
version: '3'
services:
woodpecker-server:
image: woodpeckerci/woodpecker-server:next
restart: always
volumes:
- ./data/woodpecker:/var/lib/woodpecker/
environment:
- WOODPECKER_LOG_LEVEL=info
- WOODPECKER_OPEN=true
- WOODPECKER_HOST=${WOODPECKER_HOST}
- WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
- WOODPECKER_GITEA=true
- WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL}
- WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT}
- WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_SECRET}
networks:
- proxy
- woodpecker
labels:
- "traefik.enable=true"
- "traefik.http.routers.woodpecker.rule=Host(`woodpecker.mertens.digital`)"
- "traefik.http.routers.woodpecker.entrypoints=websecure"
- "traefik.http.routers.woodpecker.tls=true"
- "traefik.http.routers.woodpecker.tls.certresolver=letsencrypt"
- "traefik.http.services.woodpecker.loadbalancer.server.port=8000"
woodpecker-agent:
image: woodpeckerci/woodpecker-agent:next
#command: agent
restart: always
depends_on:
- woodpecker-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- woodpecker
environment:
# - WOODPECKER_LOG_LEVEL=debug
- WOODPECKER_SERVER=woodpecker-server:9000
- WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
- WOODPECKER_MAX_WORKFLOWS=2
networks:
woodpecker:
internal: true
proxy:
external: true

View file

@ -1,22 +0,0 @@
FROM python:latest
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
git \
sqlite3
COPY RUN.sh /RUN.sh
RUN chmod +x /RUN.sh
WORKDIR /
RUN git clone https://github.com/jahir/kontify.git
WORKDIR "/kontify"
#ENTRYPOINT [ "/bin/bash" ]
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ENTRYPOINT [ "/bin/bash" ]
CMD [ "/RUN.sh" ]

View file

@ -1,15 +0,0 @@
# kontify Docker Build
This Images runs [_kontify_](https://github.com/jahir/kontify/blob/master/README.md) in a Container.
---
To make this Container work you have to create a Config and a Database first. This can be seen in the [_kontify_](https://github.com/jahir/kontify/blob/master/README.md) Repository.
## Run this Container
docker run \
--name knotify \
-v <config Folder>:/config
The Database and the Config File is copied into the kontify Folder to be read by the Programm. After the Command is finished the Database is copied back into the Config Folder.

View file

@ -1,8 +0,0 @@
#/bin/bash
cp /config/kontify.yaml /kontify/kontify.yaml
cp /config/kontify.sqlite /kontify/kontify.sqlite
python /kontify/kontify.py
cp /kontify/kontify.sqlite /config/kontify.sqlite