Skip Nav

Portainer Stacks / Docker Compose

On This Page
    All Docker & Compose Posts

    Docker Compose Stacks

    Backdoors and Breaches (b-b-shuffle.yml)

    # Backdoors and Breaches
    # https://github.com/p3hndrx/B-B-Shuffle
    
    services:
      shuffle:
        image: jonesckevin/b-b-shuffle:latest
        container_name: B-B-Shuffle
        ports:
          - "9500:80"
        networks:
          - docker-tools
    networks:
      docker-tools:
    

    Watchtower (watchtower.yml)

    # https://github.com/containrrr/watchtower.git
    services:
      watchtower:
        image: containrrr/watchtower
        container_name: watchtower
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        command: --interval 600 open-webui  # Check for updates every 10 minutes
        restart: unless-stopped
    

    VSCode Server (vscode-server.yml)

    vscode:
            command: 'code-server --install-extension esbenp.prettier-vscode ms-python.debugpy redhat.vscode-yaml redhat.vscode-xml gitlab.gitlab-workflow vscode-icons-team.vscode-icons yzhang.markdown-all-in-one mechatroner.rainbow-csv oderwat.indent-rainbow shd101wyy.markdown-preview-enhanced grapecity.gc-excelviewer bierner.markdown-mermaid bpruitt-goddard.mermaid-markdown-syntax-highlighting'
            image: 'lscr.io/linuxserver/code-server:latest'
            environment:
                - PUID=1000
                - PGID=1000
                - TZ=Etc/UTC
                - PASSWORD=thepassword
                - HASHED_PASSWORD=
                - SUDO_PASSWORD=thepassword
                - SUDO_PASSWORD_HASH=
                - DEFAULT_WORKSPACE=/config/workspace
            volumes:
                - './vscode:/config'
            ports:
                - '8443:8443'
            restart: 'always'
            hostname: vscode
            container_name: VSCode
    

    Velociraptor (velociraptor.yml)

    services:
      velociraptor:
        image: wlambert/velociraptor:latest
        container_name: Velociraptor
        hostname: velociraptor
        restart: unless-stopped
        ports:
          - "8600:8000"
          - "8601:8001"
          - "8609:8889"
        volumes:
          - ./velociraptor:/velociraptor/:rw
        environment:
          - VELOX_USER=${VELOX_USER}
          - VELOX_PASSWORD=${VELOX_PASSWORD}
          - VELOX_ROLE=${VELOX_ROLE}
          - VELOX_SERVER_URL=${VELOX_SERVER_URL}
          - VELOX_FRONTEND_HOSTNAME=${VELOX_FRONTEND_HOSTNAME}
    
    # .env
    # VELOX_USER=admin
    # VELOX_PASSWORD=admin
    # VELOX_ROLE=administrator
    # VELOX_SERVER_URL=http://10.1.1.16:8609
    # VELOX_FRONTEND_HOSTNAME=MedaRaptor
    # VELOX_SERVER_URL2=https://raptor.4n6post.com/
    

    Vaultwarden (vaultwarden.yml)

    services:
      Vaultwarden:
        image: vaultwarden/server:latest
        container_name: Hal-VaultWarden
        environment:
          SIGNUPS_ALLOWED: true
          INVITATIONS_ALLOWED: true
          DISABLE_ADMIN_TOKEN: false
          # apt install argon2 echo -n '$2TnXFVf6qgHxG^a#hj8@tex2HTNRXxpWH#6z!w10' | argon2 "$(openssl rand -base64 32)" -e -id -k 
          # 65540 -t 3 -p 4 Escape Output so that all 5 $ have two. eg. $$argon2id~ vs $argon2id~
          ADMIN_TOKEN: $$argon2id$$v=19$$m=65540,t=3,p=4$$MnBIa1JhMDlRQzN2ZVVWNHY3VHlZQkg5YlBLSnVrbFozbjNOQXVGTnFiaz0$$fT918w+4ozfZvdc+fHGJMl4dF1BV03KTcLFEytepLP8
          WEBSOCKET_ENABLED: false
        ports:
          - 9998:80
          - 9999:443
        volumes:
          - ./Vaultwarden/data:/data/
        restart: unless-stopped
      
    volumes:
      Vaultwarden:
    

    TheHive (thehive.yml)

    # https://docs.strangebee.com/cortex/installation-and-configuration/step-by-step-guide/#java-virtual-machine
    
    services:
      hal-thehive:
        image: thehiveproject/thehive4:4.1
        container_name: Thehive4
        restart: unless-stopped
        ports:
          - "8700:9000"
        volumes:
          - ./thehive/config/thehive/application.conf:/etc/thehive/application.conf
          - ./thehive/volumes/thehive/db:/opt/thp/thehive/db
          - ./thehive/volumes/thehive/index:/opt/thp/thehive/index
          - ./thehive/volumes/thehive/data:/opt/thp/thehive/data
        environment:
          - MAX_HEAP_SIZE=2G
          - HEAP_NEWSIZE=2G
        networks:
          - thehive
    networks:
      thehive: 
      
    volumes:
      thehive_db:
      thehive_index:
      thehive_data:
    

    Remmina (remmina.yml)

    services:
        remmina:
            hostname: remmina
            container_name: Remmina
            image: 'lscr.io/linuxserver/remmina:latest'
            restart: unless-stopped
            volumes:
                - './remmina/config:/config'
            ports:
                - '8901:3001'
                - '8900:3000'
            environment:
                - TZ=Etc/UTC
                - PGID=1000
                - PUID=1000
    

    Regex101 (regex101.yml)

    services:
      regex101:
        image: loopsun/regex101:latest
        container_name: regex101
        restart: always
        ports:
         - 8400:9090
    

    Portainer (portainer.yml)

    portainer-ce:
            image: 'portainer/portainer-ce:latest'
            volumes:
                - '/var/run/docker.sock:/var/run/docker.sock'
            ports:
                - '9000:9000'
            restart: 'always'
            hostname: portainer
            container_name: Portainer
    

    Planka (planka.yml)

    services:
      planka:
        image: ghcr.io/plankanban/planka:latest
        container_name: Planka
        restart: on-failure
        volumes:
          - ./Planka/user-avatars:/app/public/user-avatars
          - ./Planka/project-background-images:/app/public/project-background-images
          - ./Planka/attachments:/app/private/attachments
        ports:
          - 8200:1337
        environment:
          - BASE_URL=http://10.1.1.16:8200
          - DATABASE_URL=postgresql://postgres@postgres/planka
          - SECRET_KEY=notsecretkey
          - DEFAULT_ADMIN_EMAIL=planka@4n6post.com
          - DEFAULT_ADMIN_PASSWORD=planka@4n6post.com
          - DEFAULT_ADMIN_NAME=admin
          - DEFAULT_ADMIN_USERNAME=admin
        depends_on:
          - postgres
        networks:
          - planka-net
    
      postgres:
        image: postgres:14-alpine
        container_name: Planka_DB
        restart: on-failure
        volumes:
          - ./Planka/db-data:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=planka
          - POSTGRES_HOST_AUTH_METHOD=trust
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
          interval: 10s
          timeout: 5s
          retries: 5
        networks:
          - planka-net
    
    networks:
      planka-net: 
    
    volumes:
      db-data:
      user-avatars:
      project-background-images:
      attachments:
    

    Photopea (photopea.yml)

    services:
      photopea:
        image: eorendel/photopea:latest
        container_name: Photopea
        hostname: photopea
        restart: unless-stopped
        ports:
          - "8120:8887"
    

    Paperless (paperless.yml)

    paperless-redis:
            image: 'docker.io/library/redis:7'
            volumes:
                - './paperless/redisdata:/data'
            restart: 'always'
            hostname: paperless-redis
            container_name: Paperless-Redis
    
        paperless-db:
            image: 'docker.io/library/postgres:16'
            environment:
                - POSTGRES_PASSWORD=paperless
                - POSTGRES_USER=paperless
                - POSTGRES_DB=paperless
            volumes:
                - './paperless/pgdata:/var/lib/postgresql/data'
            restart: 'always'
            hostname: paperless-db
            container_name: Paperless-DB
    
        paperless-ngx:
            image: 'ghcr.io/paperless-ngx/paperless-ngx:latest'
            environment:
                - PAPERLESS_REDIS=redis://Paperless-Redis:6379
                - PAPERLESS_DBHOST=Paperless-DB
                - PAPERLESS_OCR_LANGUAGE=eng
                - USERMAP_UID=1000
                - USERMAP_GID=1000
                - PAPERLESS_OCR_LANGUAGES=fra
            volumes:
                - './paperless/data:/usr/src/paperless/data'
                - './paperless/media:/usr/src/paperless/media'
                - './paperless/export:/usr/src/paperless/export'
                - './paperless/consume:/usr/src/paperless/consume'
            ports:
                - '8000:8000'
            restart: 'always'
            hostname: paperless-ngx
            container_name: Paperless-NGX
    

    Ollama and WebUI (ollama-and-webui.yml)

    # https://gist.githubusercontent.com/usrbinkat/de44facc683f954bf0cca6c87e2f9f88/raw/0402e8441de57ccd8b00fe0db8ad40cae7d5fdb8/docker-compose.yaml
    services:
      open-webui:
        container_name: open-webui
        image: ghcr.io/open-webui/open-webui:main
        environment:
          - MODEL_DOWNLOAD_DIR=./models
          - OLLAMA_API_BASE_URL=http://ollama:11434
          - OLLAMA_API_URL=http://ollama:11434
          - LOG_LEVEL=debug
          - WEBUI_SECRET_KEY=your_secret_key  # Add this to prevent logouts after updates
        volumes:
          - ./data:/data
          - ./models:/models
          - ./open-webui:/app/backend/data  # Corrected path based on documentation
        ports:
          - "8081:8080"
        logging:
          driver: json-file
          options:
            max-size: "5m"
            max-file: "2"
        depends_on:
          - ollama
        extra_hosts:
          - "host.docker.internal:host-gateway"
        networks:
          - ollama
        restart: unless-stopped
        
      ollama:
        container_name: ollama
        image: ollama/ollama:latest
        #runtime: nvidia
        environment:
          - NVIDIA_VISIBLE_DEVICES=all
          - NVIDIA_DRIVER_CAPABILITIES=compute,utility
          - CUDA_VISIBLE_DEVICES=0
          - LOG_LEVEL=debug
        deploy:
          resources:
            reservations:
              devices:
                - driver: nvidia
                  capabilities: [gpu]
                  count: all
        volumes:
          - ./ollama:/root/.ollama
          - ./models:/models
        ports:
          - "11434:11434"
        logging:
          driver: json-file
          options:
            max-size: "5m"
            max-file: "2"
        networks:
          - ollama
        restart: unless-stopped
        
    volumes:
      data:
      models:
      ollama:
      open-webui:
    networks:
      ollama:
        driver: bridge
    

    Nextcloud + Postgres (nextcloud+postgres.yml)

    services:
      nc:
        image: nextcloud:apache
        environment:
          - POSTGRES_HOST=db
          - POSTGRES_PASSWORD=nextcloud
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
        ports:
          - 8500:80
        restart: always
        volumes:
          - ./nc_data:/var/www/html
      db:
        image: postgres:alpine
        environment:
          - POSTGRES_PASSWORD=nextcloud
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
        restart: always
        volumes:
          - ./db_data:/var/lib/postgresql/data
        expose:
          - 5432
    volumes:
      db_data:
      nc_data:
    

    n8n (n8n.yml)

    services:
      n8n:
        image: n8nio/n8n:latest
        restart: unless-stopped
        ports:
          - 8300:5678
        depends_on:
          - db
        environment:
          TZ: America/Toronto
          N8N_PORT: 5678
          DB_TYPE: postgresdb
          WEBHOOK_URL: http://10.1.3.16:8300
          DB_POSTGRESDB_HOST: db
          DB_POSTGRESDB_PORT: 5432
          DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
          DB_POSTGRESDB_USER: ${POSTGRES_USER}
          DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
          N8N_SECURE_COOKIE: false
        volumes:
          - ./n8n/n8n-data:/home/node/.n8n
      db:
        image: postgres:13-alpine
        volumes:
          - ./n8n/db-data:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 10s
          timeout: 5s
          retries: 5
        environment:
          TZ: America/Toronto
          POSTGRES_USER: ${POSTGRES_USER}
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
          POSTGRES_DB: ${POSTGRES_DB}
    
    volumes:
      n8n-n8n-data:
      n8n-db-data:
    
    
    # .env
    # POSTGRES_USER=postgres
    # POSTGRES_PASSWORD=postgres
    # POSTGRES_DB=postgres
    # N8N_SECURE_COOKIE=false
    

    Miniflux RSS (miniflux_rss.yml)

    ## RSS Feed Reader
    
    services:
      miniflux:
        image: miniflux/miniflux:latest
        ports:
          - "8050:8080"
        depends_on:
          - db
        environment:
          - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
          - RUN_MIGRATIONS=1
          - CREATE_ADMIN=1
          - ADMIN_USERNAME=admin
          - ADMIN_PASSWORD=password
      db:
        image: postgres:latest
        environment:
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        volumes:
          - miniflux-db:/var/lib/postgresql/data
    volumes:
      miniflux-db:
    

    MeTube (metube.yml)

    ## https://github.com/alexta69/metube
    ## YouTube Downloader WebGui
    
    services:
      metube:
        image: ghcr.io/alexta69/metube
        container_name: metube
        restart: unless-stopped
        ports:
          - "8081:8081"
        volumes:
          - ./downloads:/downloads
    

    Mermaid JS (mermaid-js.yaml)

    # https://github.com/mermaid-js/mermaid-live-editor
    
    services:
        mermaid-js:
            image: ghcr.io/mermaid-js/mermaid-live-editor
            ports:
                - '1105:8080'
    

    Mattermost (mattermost.yml)

    ## MatterMost - https://mattermost.com/
    ## Example Playbook - https://github.com/it33/playbook-templates/blob/main/cyber-crisis-response.json
    ### .env
    # MM_POSTGRES_USER=postmm
    # MM_POSTGRES_PASSWORD=postmm
    # MM_POSTGRES_DB=postmm
    # MM_USER_EMAIL=
    # MM_USER_PASSWORD=postmm
    
    
    
    services:
      mattermost:
          image: "mattermost/mattermost-enterprise-edition:9.5" # https://hub.com/r/mattermost/mattermost-enterprise-edition/tags
          restart: "unless-stopped"
          container_name: mattermost
          depends_on:
            - "mattermost_db"
          ports:
            - "8065:8065"
          environment:
            MM_SQLSETTINGS_DRIVERNAME: "postgres"
            MM_SQLSETTINGS_DATASOURCE: "postgres://${MM_POSTGRES_USER}:${MM_POSTGRES_PASSWORD}@mattermost_db/${MM_POSTGRES_DB}?sslmode=disable&connect_timeout=10"
            MM_SERVICESETTINGS_LISTENADDRESS: ":8065"
            MM_SERVICESETTINGS_SITEURL: "http://10.1.1.2:8065" # Or https://MM.domain.com
            MM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION: "true"
            MM_SERVICESETTINGS_ENABLEUSERACCESSTOKENS: "true"
            MM_SERVICESETTINGS_ENABLEOAUTHSERVICEPROVIDER: "true"
            MM_SERVICESETTINGS_ENABLEDEVELOPER: "true"
            MM_SERVICESETTINGS_ENABLETESTING: "true"
            MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS: "true"
            MM_EXPERIMENTALSETTINGS_ENABLEAPPBAR: "true"
            MM_PLUGINSETTINGS_ENABLEUPLOADS: "true"
            MM_LOGSETTINGS_CONSOLELEVEL: "DEBUG"
            MM_LOGSETTINGS_FILELEVEL: "DEBUG"
            MM_FILESETTINGS_MAXFILESIZE: 123524266
            MM_FEATUREFLAGS_AppsEnabled: "true"
            MM_FEATUREFLAGS_PluginApps: "1.1.0" # https://github.com/mattermost/mattermost-plugin-apps/releases
            MM_SERVICESETTINGS_ENABLELOCALMODE: "true"
            MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS: ""
      
      mattermost_db:
          image: "postgres"
          container_name: mattermost_db
          restart: "unless-stopped"
          environment:
            POSTGRES_PASSWORD: "${MM_POSTGRES_PASSWORD}"
            POSTGRES_USER: "${MM_POSTGRES_USER}"
            POSTGRES_DB: "${MM_POSTGRES_DB}"
    

    Linkwarden (linkwarden.yml)

    ## https://arstech.net/install-linkwarden-on-portainer/
    
    services:
      linkwarden:
        container_name: linkwarden
        image: ghcr.io/linkwarden/linkwarden:latest
        restart: unless-stopped
        volumes:
          - ./linkwarden/data:/data/data
        environment:
          - DATABASE_URL=postgresql://dbuser1:PASSWORD@linkwarden-db:5432/linkwarden
          - NEXTAUTH_SECRET=SuperPassword
          - NEXTAUTH_URL=http://localhost/api/v1/auth
        ports:
          - "4222:3000"
        networks:
          - linkwarden_net
      linkwarden-db:
        container_name: linkwarden-db
        image: postgres:16-alpine
        restart: unless-stopped
        environment:
          - POSTGRES_USER=dbuser1
          - POSTGRES_PASSWORD=PASSWORD
          - POSTGRES_DB=linkwarden
        volumes:
          - ./linkwarden/pgdata:/var/lib/postgresql/data
        networks:
          - linkwarden_net
    networks:
      linkwarden_net:
        driver: bridge
    

    IT Tools (ittools.yml)

    services:
      it-tools:
        restart: unless-stopped
        image: corentinth/it-tools:latest
        ports:
          - 8800:80
    

    Immich (immich.yml)

    #
    # WARNING: Make sure to use the docker-compose.yml of the current release:
    #
    # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    #
    # The compose file on main may not be compatible with the latest release.
    #
    
    name: immich
    
    services:
      immich-server:
        container_name: immich_server
        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}:/usr/src/app/upload
          - /etc/localtime:/etc/localtime:ro
        ports:
          - ${IMMICH_PORT:-2283}:2283
        depends_on:
          - redis
          - database
        restart: always
        healthcheck:
          disable: false
    
      immich-machine-learning:
        container_name: immich_machine_learning
        # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
        # Example tag: ${IMMICH_VERSION:-release}-cuda
        image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
        # 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, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
          - model-cache:/cache
        restart: always
        healthcheck:
          disable: false
    
      redis:
        container_name: immich_redis
        image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
        healthcheck:
          test: redis-cli ping || exit 1
        restart: always
    
      database:
        container_name: immich_postgres
        image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
        environment:
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_USER: ${DB_USERNAME}
          POSTGRES_DB: ${DB_DATABASE_NAME}
          POSTGRES_INITDB_ARGS: '--data-checksums'
        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
        healthcheck:
          test: >-
            pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
            Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
            --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database)");
            echo "checksum failure count is $$Chksum";
            [ "$$Chksum" = '0' ] || exit 1
          interval: 5m
          start_interval: 30s
          start_period: 5m
        command: >-
          postgres
          -c shared_preload_libraries=vectors.so
          -c 'search_path="$$user", public, vectors'
          -c logging_collector=on
          -c max_wal_size=2GB
          -c shared_buffers=512MB
          -c wal_compression=on
        restart: always
    
    volumes:
      model-cache:
    
    # .env
    #UPLOAD_LOCATION=./media
    #DB_DATA_LOCATION=./postgres
    #IMMICH_VERSION=release
    #DB_PASSWORD=postgres
    #DB_USERNAME=postgres
    #DB_DATABASE_NAME=immich
    #IMMICH_PORT=1054
    

    Homer (homer.yml)

    services:
      homer:
        image: b4bz/homer:latest
        container_name: Homer
        ports:
          - 80:8080
        user: 1000:1000 # default
    #    user: 0:0 # For when Default doesn't work
        environment:
          - INIT_ASSETS=1 # default
        volumes:
          - ./assets/:/www/assets
          - ./assets/tools:/www/assets/tools
          - ./assets/custom.css:/www/assets/custom.css  
    volumes:
      assets:
    

    GitLab (gitlab.yml)

    services:
      gitlab:
        image: gitlab/gitlab-ce:latest
        container_name: GitLab
        hostname: gitlab
        restart: always
        ports:
          - 8500:80
        volumes:
          - ./gitlab/config:/etc/gitlab:rw
          - ./gitlab/logs:/var/log/gitlab:rw
          - ./gitlab/data:/var/opt/gitlab:rw
    
    # .env
    # EXTERNAL_URL=https://gitlab.4n6post.com
    

    Etherpad (etherpad.yml)

    ---
    services:
      app:
        user: "0:0"
        image: etherpad/etherpad:latest
        tty: true
        stdin_open: true
        volumes:
          - plugins:/opt/etherpad-lite/src/plugin_packages
          - etherpad-var:/opt/etherpad-lite/var
        depends_on:
          - postgres
        environment:
          NODE_ENV: production
          ADMIN_PASSWORD: ${DOCKER_COMPOSE_APP_ADMIN_PASSWORD:-admin}
          DB_CHARSET: ${DOCKER_COMPOSE_APP_DB_CHARSET:-utf8mb4}
          DB_HOST: postgres
          DB_NAME: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
          DB_PASS: ${DOCKER_COMPOSE_POSTGRES_PASSWORD:-admin}
          DB_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
          DB_TYPE: "postgres"
          DB_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
          # For now, the env var DEFAULT_PAD_TEXT cannot be unset or empty; it seems to be mandatory in the latest version of etherpad
          DEFAULT_PAD_TEXT: ${DOCKER_COMPOSE_APP_DEFAULT_PAD_TEXT:- }
          DISABLE_IP_LOGGING: ${DOCKER_COMPOSE_APP_DISABLE_IP_LOGGING:-false}
          SOFFICE: ${DOCKER_COMPOSE_APP_SOFFICE:-null}
          TRUST_PROXY: ${DOCKER_COMPOSE_APP_TRUST_PROXY:-true}
        restart: always
        ports:
          - "${DOCKER_COMPOSE_APP_PORT_PUBLISHED:-9001}:${DOCKER_COMPOSE_APP_PORT_TARGET:-9001}"
    
      postgres:
        image: postgres:15-alpine
        environment:
          POSTGRES_DB: ${DOCKER_COMPOSE_POSTGRES_DATABASE:-etherpad}
          POSTGRES_PASSWORD: ${DOCKER_COMPOSE_POSTGRES_PASSWORD:-admin}
          POSTGRES_PORT: ${DOCKER_COMPOSE_POSTGRES_PORT:-5432}
          POSTGRES_USER: ${DOCKER_COMPOSE_POSTGRES_USER:-admin}
          PGDATA: /var/lib/postgresql/data/pgdata
        restart: always
        # Exposing the port is not needed unless you want to access this database instance from the host.
        # Be careful when other postgres docker container are running on the same port
        # ports:
        #   - "5432:5432"
        volumes:
          - postgres_data:/var/lib/postgresql/data/pgdata
    
    volumes:
      postgres_data:
      plugins:
      etherpad-var:
    
    
    
    
    # .env
    # DOCKER_COMPOSE_APP_PORT_PUBLISHED=9001
    # DOCKER_COMPOSE_APP_PORT_TARGET=9001
    # DOCKER_COMPOSE_APP_DEV_ENV_DEFAULT_PAD_TEXT="Welcome to MedaPad"
    # DOCKER_COMPOSE_APP_ADMIN_PASSWORD=etherpad
    # DOCKER_COMPOSE_POSTGRES_DATABASE=db
    # DOCKER_COMPOSE_POSTGRES_PASSWORD=medapad
    # DOCKER_COMPOSE_POSTGRES_USER=medapad
    

    Draw.io (drawio.yml)

    drawio:
            image: 'jgraph/drawio:latest'
            ports:
                - '8080:8080'
            restart: 'always'
            hostname: drawio
            container_name: Draw.io
    

    CyberChef (cyberchef.yml)

    services:
      cyber-chef:
        image: mpepping/cyberchef:latest
        container_name: CyberChef
        ports:
          - "8100:8000"
        networks:
          - docker-tools
    networks:
      docker-tools:
    

    CodiMD (codimd.yml)

    codimd-db:
            image: 'postgres:14-alpine'
            environment:
                - POSTGRES_DB=codimd
                - POSTGRES_USER=codimd
                - POSTGRES_PASSWORD=thepassword
            volumes:
                - './codimd/db-data:/var/lib/postgresql/data'
            restart: 'always'
            hostname: codimd-db
            container_name: Codimd-DB
    
        codimd:
            image: 'hackmdio/hackmd:2.5.4'
            environment:
                - CMD_DB_URL=postgres://codimd:thepassword@Codimd-DB/codimd
                - CMD_USECDN=false
            volumes:
                - './codimd/uploads:/home/hackmd/app/public/uploads'
            ports:
                - '3000:3000'
            restart: 'always'
            hostname: codimd
            container_name: Codimd
    

    BookStack (bookstack.yml)

    services:
        bookstack:
            image: lscr.io/linuxserver/mariadb
            volumes:
                - './planka/db-data:/var/lib/postgresql/data'
            environment:
                - MYSQL_DATABASE=bookstackapp
                - MYSQL_USER=bookstack
                - MYSQL_PASSWORD=bookstackpassword
                - TZ=America/Toronto
                - MYSQL_ROOT_PASSWORD=bookstackrootpassword
                - PGID=1000
                - PUID=1000
            restart: 'always'
            hostname: bookstack-db
            container_name: BookStack-DB
    
        linuxserver:
            image: 'lscr.io/linuxserver/bookstack:latest'
            environment:
                - DB_DATABASE=bookstackapp
                - DB_PASS=bookstackpassword
                - DB_USER=bookstack
                - 'APP_URL=http://bookstacks.4n6post.com'
                - DB_HOST=BookStack-DB
                - DB_PORT=3306
                - PGID=1000
                - PUID=1000
            volumes:
                - './bookstack/public:/var/www/bookstack/public:rw'
                - './bookstack/app_data:/config'
            ports:
                - '1003:80'
            restart: 'always'
            hostname: bookstack
            container_name: BookStack
    

    Post a Comment