Skip to main content
2025 Python Packaging Survey is now live!  Take the survey now

No project description provided

Project description

r-shepard

Coverage Status

Simple, self-hosted solution for collaborative (not real-time) R computing leveraging podman, RStudio, and Tailscale.

Built with Django and HTMX.

Develop

First start the development environment:

devenv up # starts redis, celery worker and celery beat
run-tests # runs the tests

Then start the Django development server:

python manage.py runserver # This could also be done from your IDE / debugging environment

Installation instructions (Ubuntu 22.04).

Requirements

  • Install podman (used for running RStudio containers)
sudo apt install podman`
  • Install Tailscale (used for secure access to the RStudio containers):
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale
  • Install git (needed for auto-commit functionality)
sudo apt install git
  • Install redis-server (needed for celery which is used for scheduling the auto-commit tasks)
sudo apt install redis-server

Prepare the environment

First, it's advised to create a new system user for the application:

sudo adduser -r -M r-shepard

This user should be able to run podman without sudo. To do this, assign subordinate group and user ID ranges to the user:

echo "r-shepard:100000:65536" | sudo tee -a /etc/subuid
echo "r-shepard:100000:65536" | sudo tee -a /etc/subgid

The user should also be able to run tailscale without sudo. To do this, start tailscale with the --operator=<user> flag:

sudo tailscale up --operator=r-shepard

Then, switch to your new system user and install the application:

pip install r-shepard

Then, apply migrations:

DB_PATH=/home/r-shepard/db.sqlite r-shepard migrate

Next, generate the static files

Then, you're ready to run the application:

daphne -b 0.0.0.0 -p 8000 r_shepard.asgi:application

Now add a systemd service file for the application:

r-shepard systemd # Not implemented yet
cp services/* /etc/systemd/system/
sudo systemctl daemon-reload

Minimum Viable Product

  • Create admin command for creating systemd services
  • Add installation instructions for Ubuntu 22.04
  • gitwatch integration Rolled my own solution. Need to document and integrate it into the UI.
  • Publish on PyPi
  • Add views for project creation Django admin is enough for now.
  • Test R Project/Package management inside the container (e.g. renv)
  • Add Volume management
  • Setup Frontend framework (e.g. Bootstrap, PicoCSS)
  • Setup 2FA
  • Add Tailscale Serve integration
  • Add basic container management via podman
  • Add basic views for projects and container management
  • Add Tailscale Funnel integration Not needed right now
  • Make it possible to assign users to projects (only superusers should be able to create projects and assign users to them) Not needed right now

Potential Future Features

  • LDAP integration
  • container-specific and user-specific auto-commits

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page