Unverified Commit 972e6589 authored by Tom Moulard's avatar Tom Moulard
Browse files

docker-compose: new empty docker-compose file

parent 87b1c518
Loading
Loading
Loading
Loading
+0 −499
Original line number Diff line number Diff line
version: '2'
networks:
  srv:

services:
  traefik:
    image: traefik:1.7.12
    command: >
     --api
     --api.statistics
    ports:
      - '80:80'
      - '443:443'
    expose:
      - '8080'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.port=8080'
      - 'traefik.frontend.rule=Host:traefik.${SITE}'
      - 'traefik.frontend.auth.basic.users=${USERS}'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - './traefik/traefik.toml:/traefik.toml'
      - './traefik/acme.json:/acme.json'
      - './traefik/logs:/logs'

  logstash:
    image: docker.elastic.co/logstash/logstash:7.1.0
    links:
      - elasticsearch
    volumes:
      - './logstash/:/usr/share/logstash/pipeline/'
      - './traefik/logs:/var/log/traefik'
      - './nginx/logs:/var/log/nginx'
    restart: always

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    environment:
      - 'cluster.name=docker-cluster'
      - 'bootstrap.memory_lock=true'
      - 'discovery.type=single-node'
      - 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
    restart: always
    ulimits:
      memlock:
        soft: -1
        hard: -1

  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0
    links:
      - elasticsearch
    networks:
      - 'srv'
        # volumes:
        # - './kibana/:/usr/share/kibana/config/'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:kibana.${SITE}'
      - 'traefik.port=5601'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab.${SITE}'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.${SITE}:80'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '2224:22'
    volumes:
      - './gitlab/config:/etc/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/data:/var/opt/gitlab'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:gitlab.${SITE}'
      - 'traefik.port=80'

  runner:
    image: gitlab/gitlab-runner:latest
    restart: always
    volumes:
      - './gitlab/runner:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    links:
      - gitlab
    restart: always
    labels:
      - 'traefik.enable=false'

  nginx:
    image: nginx:stable-alpine
    volumes:
      - './nginx/conf:/etc/nginx/conf.d'
      - './nginx/logs:/var/log/nginx/'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:${SITE}'
      - 'traefik.port=80'

  transmission:
    image: linuxserver/transmission:2.94-r1-ls12
    environment:
      - 'PGID=1000'
      - 'PUID=1000'
      - 'TZ=Europe/Paris'
    ports:
      - '51413:51413'
      - '51413:51413/udp'
    volumes:
      - './transmission/config:/config'
      - './transmission/downloads:/downloads'
      - './transmission/watch:/watch'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:torrent.${SITE}'
      - 'traefik.port=9091'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  video:
    image: gkiko/streama:v1.8.1
    volumes:
      - './transmission/downloads:/data'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:video.${SITE}'
      - 'traefik.port=8080'

  vpn:
    image: hwdsl2/ipsec-vpn-server:latest
    privileged: true
    environment:
      - 'VPN_IPSEC_PSK='
      - 'VPN_USER='
      - 'VPN_PASSWORD='
      - 'VPN_ADDL_USERS=' # space separated values
      - 'VPN_ADDL_PASSWORDS=' # space separated values
    ports:
      - '500:500'
      - '4500:4500/udp'
    restart: always
    volumes:
      - '/lib/modules:/lib/modules:ro'

  jupyter:
    image: jupyter/tensorflow-notebook:45f07a14b422
    command: >
     jupyter notebook
     --NotebookApp.token=''
     --NotebookApp.password=''
    environment:
      - 'JUPYTER_ENABLE_LAB=yes'
    volumes:
      - './jupyter/jupyter/config:/root/.jupyter/'
      - './jupyter/work:/work'
      - './jupyter/work:/home/jovyan/work'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:jupyter.${SITE}'
      - 'traefik.port=8888'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  pastebin:
    image: mkodockx/docker-pastebin:latest
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:paste.${SITE}'
      - 'traefik.port=80'

  nextcloud-db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - './nextcloud/db:/var/lib/mysql'
    environment:
      - 'MYSQL_ROOT_PASSWORD=pass'
      - 'MYSQL_PASSWORD='
      - 'MYSQL_DATABASE=nextcloud'
      - 'MYSQL_USER=nextcloud'
    restart: always
    labels:
      - 'traefik.enable=false'

  nextcloud:
    image: nextcloud
    links:
      - nextcloud-db
    volumes:
      - './nextcloud/data:/var/www/html'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:cloud.${SITE}'
      - 'traefik.port=80'

  sharelatex:
    image: sharelatex/sharelatex
    depends_on:
      - sharelatex-mongo
      - sharelatex-redis
    privileged: true
    links:
      - sharelatex-mongo
      - sharelatex-redis
    volumes:
      - './sharelatex/data:/var/lib/sharelatex'
      - '/var/run/docker.sock:/var/run/docker.sock'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:latex.${SITE}'
      - 'traefik.port=80'
    environment:
      SHARELATEX_MONGO_URL: mongodb://sharelatex-mongo/sharelatex
      SHARELATEX_REDIS_HOST: sharelatex-redis
      SHARELATEX_APP_NAME: ${USERNAME}'s ShareLaTeX
      SHARELATEX_NAV_TITLE: ${SITE} - ShareLaTeX
      SHARELATEX_SITE_URL: https://latex.${SITE}
      SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
      SHARELATEX_ADMIN_EMAIL: ${EMAIL}

  sharelatex-mongo:
    restart: always
    image: mongo
    expose:
      - 27017
    volumes:
      - ./sharelatex/mongo:/data/db
    restart: always
    labels:
      - 'traefik.enable=false'

  sharelatex-redis:
    restart: always
    image: redis
    expose:
      - 6379
    volumes:
      - ./sharelatex/redis/data:/data
    restart: always
    labels:
      - 'traefik.enable=false'

  blog-builder:
    image: jojomi/hugo:0.59
    restart: always
    environment:
    - HUGO_REFRESH_TIME=3600
    - HUGO_THEME=hugo-theme-cactus-plus
    - HUGO_BASEURL=/
    volumes:
      - ./blog/blog:/src
      - ./blog/nginx/conf/www:/output
    restart: always
    labels:
      - 'traefik.enable=false'

  blog:
    image: nginx:stable-alpine
    depends_on:
      - blog-builder
    volumes:
      - './blog/nginx/conf:/etc/nginx/conf.d'
      - './blog/nginx/logs:/var/log/nginx/'
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:blog.${SITE}'
      - 'traefik.port=80'

  portainer:
    image: portainer/portainer
    networks:
      - 'srv'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - './portainer/data:/data'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:portainer.${SITE}'
      - 'traefik.port=9000'

  jackett:
    image: linuxserver/jackett:v0.15.5-ls61
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./jackett/config:/config
      - ./jackett/downloads:/downloads
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:jackett.${SITE}'
      - 'traefik.port=9117'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  sonarr:
    image: linuxserver/sonarr:2.0.0.5337-ls92
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./sonarr/config:/config
      - ./sonarr/downloads:/downloads
      - ./sonarr/tv:/tv
    links:
      - transmission
      - jackett
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:sonarr.${SITE}'
      - 'traefik.port=8080'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  bazarr:
    image: linuxserver/bazarr:v0.8.3.4-ls61
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./bazarr/config:/config
      - ./bazarr/movies:/movies
      - ./bazarr/tv:/tv
    links:
      - transmission
      - jackett
      - sonarr
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:bazarr.${SITE}'
      - 'traefik.port=8080'
      - 'traefik.frontend.auth.basic.users=${USERS}'

  arachni:
    image: arachni/arachni
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:arachni.${SITE}'
      - 'traefik.port=9292'

  bitwarden:
    image: bitwardenrs/server:latest
    user: nobody
    environment:
      - ROCKET_PORT=8080
      - ADMIN_TOKEN=${USERS}
    volumes:
      - ./bitwarden/data:/data
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:bitwarden.${SITE}'
      - 'traefik.port=8080'

  factorio:
    image: factoriotools/factorio
    ports:
      - '34197:34197/udp'
      # - '27015:27015/tcp' # RCON port
    volumes:
      - ./factorio:/factorio
    restart: always
    labels:
      - 'traefik.enable=false'

  wordpress:
    image: wordpress
    environment:
      - WORDPRESS_DB_HOST=wordpress-db
      - WORDPRESS_DB_USER=wordpress-user
      - WORDPRESS_DB_PASSWORD=${USERS}
      - WORDPRESS_DB_NAME=wordpress-db
    volumes:
      - ./wordpress/wordpress:/var/www/html
    depends_on:
      - wordpress-db
    links:
      - wordpress-db
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:wordpress.${SITE}'
      - 'traefik.port=80'

  wordpress-db:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=wordpress-db
      - MYSQL_USER=wordpress-user
      - MYSQL_PASSWORD=${USERS}
      - MYSQL_RANDOM_ROOT_PASSWORD=${USERS}
    volumes:
      - ./wordpress/db:/var/lib/mysql
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=false'

  peertube:
    image: chocobozzz/peertube:production-buster
    environment:
      - 'PEERTUBE_DB_USERNAME=peertube'
      - 'PEERTUBE_DB_PASSWORD=${USERS}'
      - 'PEERTUBE_DB_HOSTNAME=peertube-db'
      - 'PEERTUBE_WEBSERVER_HOSTNAME=peertube.${SITE}'
      - 'PEERTUBE_WEBSERVER_PORT=443'
      - 'PEERTUBE_WEBSERVER_HTTPS=true'
      - 'PEERTUBE_ADMIN_EMAIL=admin@${SITE}'
      - 'PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "172.18.0.0/16"]'
    volumes:
      - ./peertube/data:/data
      - ./peertube/config:/config
    depends_on:
      - peertube-db
      - peertube-redis
    links:
      - peertube-db
      - peertube-redis
    networks:
      - 'srv'
    restart: always
    labels:
      - 'traefik.enable=true'
      - 'traefik.frontend.rule=Host:peertube.${SITE}'
      - 'traefik.port=9000'

  peertube-db: # peertube-db
    image: postgres:10-alpine
    environment:
      - 'POSTGRES_USER=peertube'
      - 'POSTGRES_PASSWORD=${USERS}'
      - 'POSTGRES_DB=peertube'
    networks:
      - 'srv'
    volumes:
      - ./peertube/db:/var/lib/postgresql/data
    restart: always
    labels:
      - 'traefik.enable=false'

  peertube-redis: # peertube-redis
    image: redis:4-alpine
    networks:
      - 'srv'
    volumes:
      - ./peertube/redis:/data
    restart: always
    labels:
      - 'traefik.enable=false'