No project description provided
Project description
r-shepard
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 integrationRolled my own solution. Need to document and integrate it into the UI. - Publish on PyPi
-
Add views for project creationDjango 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 integrationNot 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for r_shepard-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e76e14119cf12dc5863781b650a113ffdc5a2d597b9d8d5212061976186d9a1 |
|
MD5 | 48b12498470b7d44fe930a2b56aa850c |
|
BLAKE2b-256 | e9b0dd45b2be5866706d5ca3412ea7b22187aa9a42210c6ab5f98bb55fe7c2ad |