Skip to content
Hunter Long edited this page May 1, 2020 · 23 revisions

Statping is easily ran on Docker with the light weight Alpine linux image. View on Docker Hub.

Docker Image Version (tag latest semver) Docker Image Size (tag) Docker Image Size (tag) Docker Pulls

Volume Mount

  • /app - Working directory in container. This directory will hold all configs, logs, assets, and sqlite database.

Latest Docker Image

The latest Docker image uses Alpine Linux to keep it ultra small.

docker run -d \
  -p 8080:8080 \
  --restart always \
  statping/statping

Mounting Volume

You can mount a volume to the /app Statping directory. This folder will contain logs, config.yml, and static assets if you want to edit the SCSS/CSS.

docker run -d \
  -p 8080:8080 \
  -v /mydir/statping:/app \
  --restart always \
  statping/statping

Attach a SSL Certificate

When you mount server.crt and server.key to the /app directory, Statping will run a HTTPS server on port 443. Checkout the SSL Wiki documentation to see more information about this.

docker run -d \
  -p 443:443 \
  -v /mydir/domain.crt:/app/server.crt \
  -v /mydir/domain.key:/app/server.key \
  -v /mydir:/app \
  --restart always \
  statping/statping

Development Docker Image

If you want to run Statping that was build from the source, use the dev Docker image.

docker run -d -p 8080:8080 statping/statping:dev

Cypress Testing Docker Image

This Docker image will pull the latest version of Statping and test the web interface with Cypress.

docker run -it -p 8080:8080 statping/statping:cypress

Or use Docker Compose

This Docker Compose file inlcudes NGINX, Postgres, and Statping.

Docker Compose with NGINX and Postgres

Once you initiate the docker-compose.yml file below go to http://localhost and you'll be forwarded to the /setup page. Database Authentication

  • database: postgres
  • port: 5432
  • username: statup
  • password: password123
  • database: statup
version: '2.3'

services:

  nginx:
    container_name: nginx
    image: jwilder/nginx-proxy
    ports:
      - 0.0.0.0:80:80
      - 0.0.0.0:443:443
    networks:
      - internet
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./statup/nginx/certs:/etc/nginx/certs:ro
      - ./statup/nginx/vhost:/etc/nginx/vhost.d
      - ./statup/nginx/html:/usr/share/nginx/html:ro
      - ./statup/nginx/dhparam:/etc/nginx/dhparam
    environment:
      DEFAULT_HOST: localhost

  statup:
    container_name: statup
    image: statping/statping:latest
    restart: always
    networks:
      - internet
      - database
    depends_on:
      - postgres
    volumes:
      - ./statup/app:/app
    environment:
      VIRTUAL_HOST: localhost
      VIRTUAL_PORT: 8080
      DB_CONN: postgres
      DB_HOST: postgres
      DB_USER: statup
      DB_PASS: password123
      DB_DATABASE: statup
      NAME: EC2 Example
      DESCRIPTION: This is a Statping Docker Compose instance

  postgres:
    container_name: postgres
    image: postgres:10
    restart: always
    networks:
      - database
    volumes:
      - ./statup/postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password123
      POSTGRES_USER: statup
      POSTGRES_DB: statup

networks:
  internet:
    driver: bridge
  database:
    driver: bridge

Or a simple wget...

wget https://raw.githubusercontent.com/statping/statping/master/servers/docker-compose.yml
docker-compose up -d

Docker Compose with Automatic SSL

You can automatically start a Statping server with automatic SSL encryption using this docker-compose file. First point your domain's DNS to the Statping server, and then run this docker-compose command with DOMAIN and EMAIL. Email is for letsencrypt services.

wget https://raw.githubusercontent.com/statping/statping/master/servers/docker-compose-ssl.yml

LETSENCRYPT_HOST=mydomain.com \
    LETSENCRYPT_EMAIL=info@mydomain.com \
    docker-compose -f docker-compose-ssl.yml up -d

Full docker-compose with Automatic SSL

version: '2.3'

services:

  nginx:
    container_name: nginx
    image: jwilder/nginx-proxy
    ports:
      - 0.0.0.0:80:80
      - 0.0.0.0:443:443
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    networks:
      - internet
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./statup/nginx/certs:/etc/nginx/certs:ro
      - ./statup/nginx/vhost:/etc/nginx/vhost.d
      - ./statup/nginx/html:/usr/share/nginx/html:ro
      - ./statup/nginx/dhparam:/etc/nginx/dhparam
    environment:
      DEFAULT_HOST: ${LETSENCRYPT_HOST}

  letsencrypt:
    container_name: letsencrypt
    image: jrcs/letsencrypt-nginx-proxy-companion
    networks:
      - internet
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./statup/nginx/certs:/etc/nginx/certs
      - ./statup/nginx/vhost:/etc/nginx/vhost.d
      - ./statup/nginx/html:/usr/share/nginx/html
      - ./statup/nginx/dhparam:/etc/nginx/dhparam

  statup:
    container_name: statup
    image: statping/statping:latest
    restart: always
    networks:
      - internet
      - database
    depends_on:
      - postgres
    volumes:
      - ./statup/app:/app
    environment:
      VIRTUAL_HOST: ${LETSENCRYPT_HOST}
      VIRTUAL_PORT: 8080
      LETSENCRYPT_HOST: ${LETSENCRYPT_HOST}
      LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
      DB_CONN: postgres
      DB_HOST: postgres
      DB_USER: statup
      DB_PASS: password123
      DB_DATABASE: statup
      NAME: SSL Example
      DESCRIPTION: This Status Status Page should be running ${LETSENCRYPT_HOST} with SSL.

  postgres:
    container_name: postgres
    image: postgres:10
    restart: always
    networks:
      - database
    volumes:
      - ./statup/postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password123
      POSTGRES_USER: statup
      POSTGRES_DB: statup

networks:
  internet:
    driver: bridge
  database:
    driver: bridge
Clone this wiki locally