Go to file
Alex Davies 4652368c8d Added service to populate user home from /etc/skel/, this will also
allow us to update user home files as time goes on, but won't overwrite
files the user has modified.
2024-01-23 15:06:29 -04:00
.github/workflows Server build 2024-01-23 07:54:35 -04:00
skel Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
.gitignore Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
Dockerfile Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
README.md Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
background.png Initial commit 2024-01-22 15:42:59 -04:00
docker-compose.yaml Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
kasmvnc.service Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
kasmvnc.yaml Initial commit 2024-01-22 15:42:59 -04:00
nix.conf Initial commit 2024-01-22 15:42:59 -04:00
userhome.service Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00
xstartup Added service to populate user home from /etc/skel/, this will also 2024-01-23 15:06:29 -04:00

README.md

Make sure sysbox and docker are installed and run

docker run -p 127.0.0.1:8466:8466 \
  --volume ./spiri-sdk-home:/home/spiri:rw \
  --runtime=sysbox-runc -it \
  git.spirirobotics.com/spiri/spiri-sdk-desktop:master

Navigate to http://localhost:8466, and log in using the username spiri and the password spiri-friend

For a complete example try this:

version: "3.3"

#Due to a bug in moby's libnetwork DNS resolver single domains like `gazebo`
# don't get resolved properly, even when we have ndots set to 0 like we're
# supposed to. So we need to reference `gazebo.compose-name_network-name`.
# We explicitly set the name variable so that changing folders doesn't break
# the install.
name: "spiri-sdk"

volumes:
  user-home:
  dockeradmin:
  docker-cache:

services:

  drone-stack:
    #The drone runs docker, so ultimately our drone stack is just a docker-in-docker container.
    ## This can make it difficult to deal with GPU acceleration, but remember that ROS *is*
    ## distributed. You don't need to run your GPU-accelerated rosnode on the drone-stack,
    ## just make sure you can contact the ROS_MASTER.
    runtime: sysbox-runc
    image: docker:24-dind
    command: dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --tls=false
    healthcheck:
      test: docker info
      start_interval: 1s
    ports:
      - "127.0.0.1:5760:5760" #Ground control
      - "127.0.0.1:4560:4560" # Simulation
      - "127.0.0.1:14560:14560" # Simulation
      - "127.0.0.1:11311:11311" #Ros master

    volumes:
      - docker-cache:/var/lib/docker/

    #Madness, setting a low ulimit here fixes memory leaks
    # https://answers.ros.org/question/336963/rosout-high-memory-usage/
    ulimits:
      nofile:
        soft: 1024
        hard: 524288

  gazebo:
    image: git.spirirobotics.com/spiri/gazebo-classic:main
    # command: gzserver --verbose /usr/share/gazebo-11/worlds/empty.world
    command: gzserver --verbose /usr/share/gazebo-11/worlds/citadel_hill_world.world
    ports:
      - "127.0.0.1:11345:11345" #Ros master

  desktop:
    image: git.spirirobotics.com/spiri/spiri-sdk-desktop:master
    runtime: sysbox-runc
    tty: true
    environment:
      DOCKER_HOST: tcp://drone-stack:2375
      ROS_MASTER_URI: http://drone-stack:11311
      GAZEBO_MASTER_URI: http://gazebo.spiri-sdk_default:11345

    ports:
      - 127.0.0.1:8466:8466
    volumes:
      - ./spiri-sdk-home:/home/spiri
    depends_on:
      drone-stack:
        condition: service_healthy