Welcome to RhodeCode rcstack documentation!

RhodeCode rcstack

RhodeCode rcstack is a multi-node highly-scalable setup to run RhodeCode services. It consists of all RhodeCode services required with additionally Edge Router(Traefik with optional SSL) and Metrics Stack (Prometheus, Loki, Grafana) in single environment using Docker.

Latest Version

The latest version of rcstack is 5.27.5.

Overview

To quickly get and install rcstack run this command

mkdir docker-rhodecode && cd docker-rhodecode
curl -L -s -o rcstack https://dls.rhodecode.com/get-rcstack && chmod +x rcstack
./rcstack get-started

Please follow up with instructions on get-started for a quick overview what needs to be executed and how to use rcstack.

rcstack uses docker-compose to start few group of services. It creates following services for RhodeCode stack:

Router (mandatory to run):

./rcstack stack router up -d

starts service[s] called:
    - rc_cluster_router-traefik-N

Traefik aka Edge Router is responsible for handling all outgoing and incoming traffic to whole stack. It can do SSL termination, and handle SSL traffic with certificate management.

Traefik listens to few defaults ports and handles all incoming/outgoing traffic to the stack

  • 80 (HTTP)

  • 443 (HTTPS)

  • 9022 (SSH for RhodeCode traffic)

  • 3100 (Loki log aggregation)

See Change traefik defaults ports to change the defaults ports if those are already taken

Services (mandatory to run):

./rcstack stack services up -d

starts service[s] called:

    - rc_cluster_services-database-N
    - rc_cluster_services-database-mysql-N
    - rc_cluster_services-redis-N
    - rc_cluster_services-channelstream-N
    - rc_cluster_services-elasticsearch-N
    - rc_cluster_services-nginx-errors-N
    - rc_cluster_services-nginx-statics-N
  • Database (defaults to PostgreSQL) Optionally can be replaced by MySQL, or own external database if needed.

  • Redis, acts as cache and queue exchange

  • ChannelStream - live websocket communications

  • Elasticsearch (full text search backend)

  • Nginx (static file service/ error reporting) proxy serving RhodeCode static files

RhodeCode (mandatory to run):

./rcstack stack rhodecode up -d

starts service[s] called:

    - rc_cluster_apps-rhodecode-N
    - rc_cluster_apps-vcsserver-N
    - rc_cluster_apps-sshd-N
    - rc_cluster_apps-svn-N
    - rc_cluster_apps-celery-N
    - rc_cluster_apps-celery-beat-N
  • RhodeCode CE/EE web app

  • VCSServer for GIT/SVN/HG support

  • SSH server node for cloning over SSH

  • SVN webserver for SVN protocol support

  • Celery workers for asynchronous tasks

  • Celery beat for scheduler and automation tasks

Metrics (Optional)

./rcstack stack metrics up -d

starts service[s] called:

 - Container rc_cluster_metrics-grafana-N
 - Container rc_cluster_metrics-loki-N
 - Container rc_cluster_metrics-promtail-N
 - Container rc_cluster_metrics-statsd-exporter-N
 - Container rc_cluster_metrics-node-exporter-N
 - Container rc_cluster_metrics-prometheus-N
  • Grafana, metrics Dashboard

  • Loki, logs aggregation

  • Promtail - log scraping

  • Statsd-exporter - statsd to Prometheus bridge

  • Statsd-exporter - statsd to Prometheus metrics scraping from hostmachine

  • Prometheus, metrics time-series

  • Node-exporter - machine stats and usage

System Requirements

Hardware

2 CPU cores and 2GB RAM is typically sufficient for small teams/projects. We recommend 2-4 CPU cores and 4-8GB of RAM to unlock full potential of all services running in the RhodeCode Stack. For larger teams/projects we recommend 4-6 CPU cores+ and and 16GB or more of RAM.

OS Support

rcstack works on any linux distribution, and has a beta support for MacOS. There are two requirements for OS to be able to run whole rcstack.

  • Ability to run Docker daemon

  • Ability to run a certain standard unix tools like:

    • curl

    • tar

    • find

    • gzip

    • openssl