Sovereign software for the Urbit internet appliance.
Urbit is a new OS and peer-to-peer network that’s simple by design, built to last forever, and 100% owned by its users. Urbit OS makes the server side usable for individuals without the need for MEGACORP to run their software. Urbit is your own personal server. Urbit is your last computer. Welcome.
A project by ~sipsen-pilser.
If you want to chat about this:
The project is under heavy development, as we move away from an MVP and towards an aplpha version of the software. You can follow the progress of the project via the projects
tab in this GitHub repository.
urbit
is very demanding when it comes to disk speed. It is advised to use this on a board with an SSD through a SATA or PCI connection. Aka, a Raspberry pi with an external USB-3 SSD will propably generate lag.balena is a complete set of tools for building, deploying and managing fleets of connected linux devices. We opted to use balena because it manages the whole lifecycle of our device and application. We only have to download the OS from our account and load it into the SD card for the Raspberry pi.
balena is completely free for up to 10 devices and most of it's components are Open Source.
The same setup will work flawlessly if you install another OS into the raspberry pi and use docker-compose up
.
Insert the SD card to the Rasspberry pi 4, connect it to power + Internet. Wait to download your application.
Visit the Cloud Dashboard to see that everything works as expected
Click on the web terminal, select urbit
and open a terminal session. Execute /usr/sbin/get-urbit-code.sh
. This script will give you the code for your Urbit.
Visit the following address to access ~Urbit
: ship.<device_public_url>
. Read more about balena Public Device URLs.
KEY_TRANSFER
with a value of 1
to the service urbit
. This will cause the urbit
container to restart without starting the urbit
binary. It will idle.urbit
containerkeys
directory: cd /urbit/keys
nano sipsen-pilser.key
KEY_TRANSFER
variable (or change it's value to 0).Moreover, if urbit
has already booted a commet (default behaviour), then you have to add another environment variable called: PIER_NAME
, equal to the name of your planet (e.g sipsen-pilser
). This will tell Urbit what pier to boot from, since now there are 2 piers (the new planet and the original commet).
git clone https://github.com/odyslam/home-urbit
cd
into the repositorysudo docker-compose up
localhost
, open a second terminal window.sudo docker ps
to find the ID
of the container that runs urbit
.sudo docker exec -it /bin/bash/ <container_ID
. You will get a new terminal inside the container./usr/sbin/get-urbit-code.sh
. You should see a code on the terminal. That's the password for your ship. Note it down.exit
to exit the shell.<raspberrypi_IP>
from a browser and enter the code you noted.$AMES_PORT
: The port for the ames protocol. Default value: 34343
$PIER_NAME
: Name of the pier the user wants to boot from. Useful if there are more than 1 pier
available.$TRANSFER_KEY
: If set to 1
, the urbit
container will start but it will not start urbit. The container will idle and the user can ssh
into the container to place their key in keys
directory. The key should have the form <name>.key
.$NETDATA_CLAIM_TOKEN
: Claim token for Netdata Cloud$NETDATA_CLAIM_ROOMS
: War-room to add the Netdata Agent$NETDATA_CLAIM_URL
: "https://app.netdata.cloud"$DO_NOT_TRACK
: Set to 1 to disable anonymous product usage statistics for the Netdata agent.To read more about claiming the Netdata Agent on Netdata Cloud, visit Netdata Learn.
$DOMAIN
: The default domain name for the device. Default is <balena_device_uuid>.balena-devices.com
.$PROTOCOL
: What protocol is used to access Home-Urbit. Default is http
.$MINIO_ROOT_USER
: The user for minio authnetication. Default: home-urbit
$MINIO_ROOT_PASSWORD
: The password for minio authnetication. Default: home-urbit
Caddy acts as a reverse-proxy. It proxies request based on the subdomain
of the request.
s3.<domain>
will proxy to the MINIO's dashboards3-api.<domain>
will proxy to the MINIO APIship.<domain>
will proxy to Urbit's dashboardmonitor.<domain>
will proxy to Netdata's dashboardThese helper scripts are available inside the urbit
container. To run them, ssh
into the container either using the balena
CLI tool or via the web terminal.
/usr/sbin/get-urbit-code.sh
: Get your Ship's code. This is required so that you can log into your ship for the first time./usr/sbin/reset-urbit-code.sh
: Reset your Ship's code./usr/sbin/run-urbit-cmd.sh -a <app> -c <ommand> -s <stdout>
: Run any command on your Urbit.homeurbit.local
. If you want to change the hostname of your Raspberry Pi.Yes, please.