x-common-environment: &common-environment PUID: 1000 PGID: 1000 TZ: &tz Europe/Paris services: bind9: image: ubuntu/bind9:9.18-22.04_beta container_name: bind9 restart: always volumes: - ./bind9/named.conf:/etc/bind/named.conf - ./bind9/local.db:/etc/bind/local.db - ./bind9/lan.db:/etc/bind/lan.db - ./bind9/guiotte.db:/etc/bind/guiotte.db environment: *common-environment ports: - "53:53/udp" swag: image: lscr.io/linuxserver/swag container_name: swag restart: always cap_add: - NET_ADMIN environment: <<: *common-environment URL: guiotte.fr SUBDOMAINS: wildcard VALIDATION: dns DNSPLUGIN: ovh EMAIL: florent@guiotte.fr volumes: - ./swag:/config ports: - 443:443 - 80:80 ddclient: image: lscr.io/linuxserver/ddclient:latest container_name: ddclient restart: unless-stopped environment: *common-environment volumes: - ./ddclient:/config - ddclient-cache:/run/ddclient-cache #- ddclient-cache:/var/cache/ddclient money: image: ihatemoney/ihatemoney container_name: money restart: always volumes: - money-data:/database environment: - ACTIVATE_DEMO_PROJECT=False - SESSION_COOKIE_SECURE=False - SECRET_KEY=yolo transmission: image: lscr.io/linuxserver/transmission:latest container_name: transmission environment: <<: *common-environment FILE__USER: /run/secrets/transmission-user FILE__PASS: /run/secrets/transmission-pw volumes: - transmission-config:/config - /storage/@media/download:/downloads - /storage/@media/download/torrent:/watch - ./transmission/eodl.sh:/eodl.sh ports: - 9091:9091 - 51413:51413 - 51413:51413/udp restart: unless-stopped secrets: - transmission-user - transmission-pw # WIP # radarr: # image: lscr.io/linuxserver/radarr:latest # container_name: radarr # environment: # - PUID=1000 # - PGID=1000 # - TZ=Europe/Helsinki # volumes: # - ./radarr:/config # - /mnt/storage/video/Films/:/movies # - /mnt/storage/download/:/downloads # ports: # - 7878:7878 # restart: unless-stopped #jackett: # image: lscr.io/linuxserver/jackett:latest # container_name: jackett # environment: # <<: *common-environment # AUTO_UPDATE: true #optional # RUN_OPTS: #optional # volumes: # - jackett-config:/config # - /mnt/storage/media/dl:/downloads # ports: # - 9117:9117 # restart: unless-stopped #sonarr: # image: lscr.io/linuxserver/sonarr:latest # container_name: sonarr # environment: *common-environment # volumes: # - sonarr-config:/config # - /mnt/storage/media:/data # #- /mnt/storage/video/Films/:/movies # #- /mnt/storage/download/:/downloads # ports: # - 8989:8989 # restart: unless-stopped syncthing: image: lscr.io/linuxserver/syncthing:latest container_name: syncthing hostname: drmanhattan environment: *common-environment volumes: - ./syncthing:/config - sync-notes:/notes - sync-audrey:/audrey-sync - ./data/signal-bkp:/signal-bkp - ./data/audrey-projets:/audrey-projets ports: - 22000:22000/tcp - 22000:22000/udp - 21027:21027/udp restart: unless-stopped lychee-db: image: lscr.io/linuxserver/mariadb:latest container_name: lychee-db restart: always volumes: - lychee-db:/config environment: <<: *common-environment FILE__MYSQL_ROOT_PASSWORD: /run/secrets/lychee-db-root-pw FILE__MYSQL_PASSWORD: /run/secrets/lychee-db-pw MYSQL_DATABASE: lychee MYSQL_USER: lychee secrets: - lychee-db-root-pw - lychee-db-pw lychee: image: lscr.io/linuxserver/lychee:latest container_name: lychee restart: always depends_on: - lychee-db volumes: - lychee-config:/config - lychee-pictures:/pictures environment: <<: *common-environment FILE__DB_PASSWORD: /run/secrets/lychee-db-pw DB_HOST: lychee-db DB_CONNECTION: mysql DB_USERNAME: lychee DB_DATABASE: lychee DB_PORT: 3306 APP_URL: https://pics.guiotte.fr TRUSTED_PROXIES: 172.22.0.0/24 secrets: - lychee-db-pw zotero-sync: image: lscr.io/linuxserver/nginx:latest container_name: zotero-sync environment: *common-environment volumes: - ./zotero-sync:/config - zotero-sync-data:/data restart: unless-stopped # Not in use anymore # subdomain still activated though #slides-notes: # build: slides-notes # container_name: slides-notes # restart: always # environment: *common-environment # volumes: # - ./slides-notes/slides:/app/slides nextcloud: image: lscr.io/linuxserver/nextcloud:latest container_name: nextcloud restart: unless-stopped depends_on: - nextcloud-db environment: *common-environment volumes: - nextcloud-config:/config - nextcloud-data:/data nextcloud-db: image: linuxserver/mariadb:latest container_name: nextcloud-db restart: unless-stopped environment: <<: *common-environment FILE__MYSQL_ROOT_PASSWORD: /run/secrets/nextcloud-db-root-pw FILE__MYSQL_PASSWORD: /run/secrets/nextcloud-db-pw MYSQL_DATABASE: database MYSQL_USER: user volumes: - nextcloud-db-config:/config secrets: - nextcloud-db-root-pw - nextcloud-db-pw hedgedoc: image: lscr.io/linuxserver/hedgedoc:latest container_name: hedgedoc depends_on: - hedgedoc-db environment: <<: *common-environment DB_HOST: hedgedoc-db DB_PORT: 3306 DB_USER: hedgedoc DB_NAME: hedgedoc FILE__DB_PASS: /run/secrets/hedgedoc-db-pw CMD_DOMAIN: pad.guiotte.fr CMD_PROTOCOL_USESSL: true CMD_ALLOW_FREEURL: true CMD_REQUIRE_FREEURL_AUTHENTICATION: true volumes: - hedgedoc-config:/config restart: unless-stopped secrets: - hedgedoc-db-pw hedgedoc-db: image: lscr.io/linuxserver/mariadb:latest container_name: hedgedoc-db restart: unless-stopped volumes: - hedgedoc-db:/config environment: <<: *common-environment FILE__MYSQL_ROOT_PASSWORD: /run/secrets/hedgedoc-db-root-pw FILE__MYSQL_PASSWORD: /run/secrets/hedgedoc-db-pw MYSQL_DATABASE: hedgedoc MYSQL_USER: hedgedoc secrets: - hedgedoc-db-root-pw - hedgedoc-db-pw homeassistant: image: lscr.io/linuxserver/homeassistant:latest container_name: homeassistant environment: <<: *common-environment volumes: - homeassistant-config:/config restart: unless-stopped devices: - /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20240219191913-if00:/dev/ttyACM0 # NOTE: Temporarily disable zigbee and wifi iot # # # #yee0: # build: ssh # container_name: yee0 # volumes: # - ./ssh/id_rsa:/root/.ssh/id_rsa # environment: # - SSH_HOSTNAME=192.168.1.5 # - SSH_USERNAME=alarm # - SSH_LOCAL_PORT=55443 # - SSH_DESTINATION=10.0.0.100 # - SSH_DESTINATION_PORT=55443 # #ports: # # - 55443:55443 # restart: unless-stopped # # #yee1: # build: ssh # container_name: yee1 # volumes: # - ./ssh/id_rsa:/root/.ssh/id_rsa # environment: # - SSH_HOSTNAME=192.168.1.5 # - SSH_USERNAME=alarm # - SSH_LOCAL_PORT=55443 # - SSH_DESTINATION=10.0.0.101 # - SSH_DESTINATION_PORT=55443 # #ports: # # - 55443:55443 # restart: unless-stopped gitea: image: gitea/gitea:latest #build: gitea container_name: gitea restart: unless-stopped environment: <<: *common-environment GITEA__database__DB_TYPE: mysql GITEA__database__HOST: gitea-db:3306 GITEA__database__NAME: gitea GITEA__database__USER: gitea GITEA__database__PASSWD: gitea GITEA__service__DISABLE_REGISTRATION: true GITEA__server__DOMAIN: git.guiotte.fr GITEA__server__SSH_DOMAIN: git.guiotte.fr GITEA__server__LANDING_PAGE: explore depends_on: - gitea-db volumes: - gitea-data:/data gitea-db: image: linuxserver/mariadb:latest container_name: gitea-db restart: unless-stopped environment: <<: *common-environment FILE__MYSQL_ROOT_PASSWORD: /run/secrets/gitea-db-root-pw FILE__MYSQL_PASSWORD: /run/secrets/gitea-db-pw MYSQL_DATABASE: gitea MYSQL_USER: gitea volumes: - gitea-db:/config secrets: - gitea-db-root-pw - gitea-db-pw nocodb: image: nocodb/nocodb:latest container_name: nocodb restart: unless-stopped environment: <<: *common-environment NC_DB_JSON_FILE: /run/secrets/nocodb-json volumes: - nocodb-data:/usr/app/data secrets: - nocodb-json nocodb-db: image: linuxserver/mariadb:latest container_name: nocodb-db restart: unless-stopped environment: <<: *common-environment FILE__MYSQL_ROOT_PASSWORD: /run/secrets/nocodb-db-root-pw FILE__MYSQL_PASSWORD: /run/secrets/nocodb-db-pw MYSQL_DATABASE: nocodb MYSQL_USER: nocodb volumes: - nocodb-db:/config secrets: - nocodb-db-root-pw - nocodb-db-pw jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: <<: *common-environment JELLYFIN_PublishedServerUrl: https://flix.guiotte.fr volumes: - jellyfin-config:/config - /storage/@media/video:/data/video - /storage/@media/music:/data/music ports: - 7359:7359/udp #optional Allows clients to discover Jellyfin on the local network - 1900:1900/udp #optional Service discovery used by DNLA and clients restart: unless-stopped devices: - /dev/dri:/dev/dri taskchampion: image: ghcr.io/gothenburgbitfactory/taskchampion-sync-server:latest container_name: taskchampion restart: unless-stopped environment: - "RUST_LOG=info" # Log every request - "DATA_DIR=/taskchampion-data" - "TASKCHAMPION_SYNC_SERVER_HOSTNAME=task.guiotte.fr" - "TASKCHAMPION_SYNC_SERVER_CLIENT_ID=${TASKCHAMPION_SYNC_SERVER_CLIENT_ID}" volumes: - taskchampion-data:/taskchampion-data vikunja: image: vikunja/vikunja container_name: vikunja restart: unless-stopped environment: <<: *common-environment VIKUNJA_SERVICE_PUBLICURL: https://todo.guiotte.fr VIKUNJA_DATABASE_PATH: /db/vikunja.db VIKUNJA_SERVICE_JWTSECRET: ${VIKUNJA_SERVICE_JWTSECRET} VIKUNJA_SERVICE_TIMEZONE: *tz VIKUNJA_MAILER_ENABLED: true VIKUNJA_MAILER_HOST: ${MAIL_SERVER} VIKUNJA_MAILER_PORT: ${MAIL_SMTP_PORT} VIKUNJA_MAILER_USERNAME: ${MAIL_USERNAME} VIKUNJA_MAILER_PASSWORD: ${MAIL_PASSWORD} VIKUNJA_MAILER_FORCESSL: ${MAIL_USE_SSL} VIKUNJA_SERVICE_ENABLEREGISTRATION: false volumes: - vikunja-data:/app/vikunja/files - vikunja-db:/db garage: image: dxflrs/garage:v2.1.0 container_name: garage restart: unless-stopped environment: <<: *common-environment volumes: - ./garage/garage.toml:/etc/garage.toml - garage-meta:/meta - ./data/garage-data:/data ports: # TODO: Remove? - 3900:3900 #s3_api - 3901:3901 #rpc - 3902:3902 #s3_web - 3903:3903 #k2v_api ente-db: image: postgres:15 container_name: ente-db restart: unless-stopped environment: <<: *common-environment POSTGRES_DB: ente_db POSTGRES_USER: pguser POSTGRES_PASSWORD_FILE: /run/secrets/ente-db-pw healthcheck: test: pg_isready -q -d ente_db -U pguser start_period: 40s start_interval: 1s volumes: - ente-db:/var/lib/postgresql/data secrets: - ente-db-pw ente-server: # named "museum" in the doc image: ghcr.io/ente-io/server container_name: ente-server restart: unless-stopped #ports: # - 8080:8080 # API depends_on: ente-db: condition: service_healthy environment: <<: *common-environment ENTE_DB_HOST: ente-db ENTE_DB_NAME: ente_db ENTE_DB_USER: pguser ENTE_S3_ARE_LOCAL_BUCKETS: false ENTE_S3_USE_PATH_STYLE_URLS: true ENTE_S3_B2_EU_CEN_ENDPOINT: https://s3.guiotte.fr ENTE_S3_B2_EU_CEN_REGION: garage ENTE_S3_B2_EU_CEN_BUCKET: ente ENTE_APPS_PUBLIC_ALBUMS: https://albums-photos.guiotte.fr ENTE_APPS_CAST: https://tele-photos.guiotte.fr ENTE_APPS_EMBED_ALBUMS: https://capsule-photos.guiotte.fr ENTE_APPS_ACCOUNTS: https://comptes-photos.guiotte.fr ENTE_INTERNAL_ADMIN: 1580559962386438 ENTE_INTERNAL_DISABLE_REGISTRATION: true ENTE_SMTP_HOST: ${MAIL_SERVER} ENTE_SMTP_PORT: ${MAIL_SMTP_PORT} ENTE_SMTP_USERNAME: ${MAIL_USERNAME} ENTE_SMTP_PASSWORD: ${MAIL_PASSWORD} ENTE_SMTP_SENDER_NAME: Ente ENTE_SMTP_EMAIL: ${MAIL_USERNAME} ENTE_SMTP_ENCRYPTION: ssl secrets: - ente-db-pw - ente-s3-key - ente-s3-secret # volumes: # - ./ente/config.yaml:/museum.yaml:ro command: > sh -c " export ENTE_DB_PASSWORD=$(cat /run/secrets/ente-db-pw); export ENTE_S3_B2_EU_CEN_KEY=$(cat /run/secrets/ente-s3-key | xargs); export ENTE_S3_B2_EU_CEN_SECRET=$(cat /run/secrets/ente-s3-secret | xargs); exec /museum " healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/ping"] interval: 60s timeout: 5s retries: 3 start_period: 120s ente-web: image: ghcr.io/ente-io/web container_name: ente-web restart: unless-stopped # Uncomment what you need to tweak. ports: - 3000:3000 # Photos web app - 3001:3001 # Accounts - 3002:3002 # Public albums - 3003:3003 # Auth - 3004:3004 # Cast - 3005:3005 # Share - 3006:3006 # Embed # Modify these values to your custom subdomains, if using any environment: <<: *common-environment ENTE_API_ORIGIN: https://ente.guiotte.fr ENTE_ALBUMS_ORIGIN: https://albums-photos.guiotte.fr ENTE_PHOTOS_ORIGIN: https://photos.guiotte.fr/ volumes: money-data: lychee-db: lychee-config: lychee-pictures: taskserver-data: taskserver-certs: transmission-config: nextcloud-data: nextcloud-config: nextcloud-db-config: ddclient-cache: hedgedoc-config: hedgedoc-db: homeassistant-config: zotero-sync-data: gitea-data: gitea-db: sonarr-config: jackett-config: sync-audrey: sync-notes: nocodb: nocodb-data: nocodb-db: jellyfin-config: taskchampion-data: vikunja-data: vikunja-db: garage-meta: ente-db: secrets: lychee-db-root-pw: file: lychee-db-root-pw.secret lychee-db-pw: file: lychee-db-pw.secret nextcloud-db-root-pw: file: nextcloud-db-root-pw.secret nextcloud-db-pw: file: nextcloud-db-pw.secret transmission-user: file: transmission-user.secret transmission-pw: file: transmission-pw.secret hedgedoc-db-root-pw: file: hedgedoc-db-root-pw.secret hedgedoc-db-pw: file: hedgedoc-db-pw.secret gitea-db-root-pw: file: gitea-db-root-pw.secret gitea-db-pw: file: gitea-db-pw.secret nocodb-db-root-pw: file: nocodb-db-root-pw.secret nocodb-db-pw: file: nocodb-db-pw.secret nocodb-json: file: nocodb-json.secret ente-db-pw: file: ente-db-pw.secret ente-s3-key: file: ente-s3-key.secret ente-s3-secret: file: ente-s3-secret.secret