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
## 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
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