version: "2.4"
services:
  mariadb:
    image: linuxserver/mariadb:latest
    container_name: mariadb
    env_file:
      - .env
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    volumes:
      - mariadb:/config
    networks:
      - docker-network
    restart: unless-stopped

  bitwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden_rs
    security_opt:
      - no-new-privileges=true
    env_file:
      - .env
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
    volumes:
      - bitwarden:/web-vault
      - bitwarden_data:/data
    networks:
      - docker-network
    depends_on:
      - mariadb
    restart: unless-stopped
  
  collabora:
    image: collabora/code:latest
    container_name: collabora
    hostname: collabora
    cap_add:
      - MKNOD
    env_file:
      - .env
    environment:
      - PUID=1001
      - PGID=1002
      - TZ=America/Los_Angeles
      - username=${COLLABORA_USERNAME}
      - password=${COLLABORA_PASSWORD}
      - domain='nextcloud\.thelyoncompany\.com'|'collabora\.thelyoncompany\.com'
      - extra_params='--o:ssl.enable=false --o:ssl.termination=true'
    volumes:
      - collabora:/etc/loolwsd
      - collabora_data:/opt/lool
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    networks:
      - docker-network
    depends_on:
      - swag
    restart: unless-stopped

  nextcloud:
    image: linuxserver/nextcloud:latest
    container_name: nextcloud
    hostname: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
    volumes:
      - nextcloud:/config
      - nextcloud_data:/data
    networks:
      - docker-network
    depends_on:
      - mariadb
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://nextcloud:80 || exit 1"]
      interval: 1m30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

   whoogle-search:
    image: benbusby/whoogle-search:latest
    container_name: whoogle-search
    pids_limit: 50
    mem_limit: 256mb
    memswap_limit: 256mb
    user: whoogle
    security_opt:
      - no-new-privileges
    cap_drop:
      - ALL
    tmpfs:
      - /config/:size=10M,uid=927,gid=927,mode=1700
      - /var/lib/tor/:size=15M,uid=927,gid=927,mode=1700
      - /run/tor/:size=1M,uid=927,gid=927,mode=1700
    environment:
      - WHOOGLE_PROXY_TYPE=https
      - WHOOGLE_CONFIG_DISABLE=0
      - WHOOGLE_CONFIG_THEME=system
      - WHOOGLE_CONFIG_TOR=0
      - WHOOGLE_CONFIG_VIEW_IMAGE=1
      - WHOOGLE_CONFIG_COUNTRY=US
      - WHOOGLE_CONFIG_LANGUAGE=lang_en
      - WHOOGLE_CONFIG_SEARCH_LANGUAGE=lang_en
      - WHOOGLE_CONFIG_URL=https://search.thelyoncompany.com
      - WHOOGLE_RESULTS_PER_PAGE=30
      - WHOOGLE_AUTOCOMPLETE=1
      - WHOOGLE_CONFIG_ALTS=1
      - WHOOGLE_ALT_TW=farside.link/nitter
      - WHOOGLE_ALT_YT=farside.link/invidious
      - WHOOGLE_ALT_IG=farside.link/bibliogram/u
      - WHOOGLE_ALT_RD=farside.link/libreddit
      - WHOOGLE_ALT_MD=farside.link/scribe
      - WHOOGLE_ALT_TL=farside.link/lingva
      - WHOOGLE_ALT_IMG=farside.link/rimgo
      - WHOOGLE_ALT_WIKI=farside.link/wikiless
      - WHOOGLE_ALT_IMDB=farside.link/libremdb
      - WHOOGLE_ALT_QUORA=farside.link/quetre
    networks:
      - docker-network
    depends_on:
      - swag
    restart: unless-stopped
  
  swag:
    image: linuxserver/swag:latest
    container_name: swag
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
      - URL=thelyoncompany.com
      - EMAIL=edwin@thelyoncompany.com
      - SUBDOMAINS=bitwarden,collabora,nextcloud,search
      - ONLY_SUBDOMAINS=true
      - EXTRA_DOMAINS=nextcloud.thelyoncompany.com,collabora.thelyoncompany.com,bitwarden.thelyoncompany.com,search.thelyoncompany.com
      - VALIDATION=dns
      - DNSPLUGIN=cloudflare
    volumes:
      - nginx:/config
    ports:
      - 80:80
      - 443:443
    networks:
      - docker-network
    depends_on:
      - mariadb
    restart: unless-stopped

volumes:
  nginx:
    external: true
  mariadb: 
    external: true
  nextcloud:
    external: true
  nextcloud_data:
    external: true
  bitwarden:
    external: true
  bitwarden_data:
    external: true
  collabora:
    external: true
  collabora_data: 
    external: true

networks:
  docker-network:
    external: true