chore: add docs
This commit is contained in:
137
README.md
137
README.md
@@ -0,0 +1,137 @@
|
||||
# tesseract
|
||||
|
||||
tesseract is a Docker-based cloud development environments that lets you create and manage isolated development
|
||||
environments. it is created because existing solutions are overengineered and missing things that i need.
|
||||
|
||||
tesseract was created because I needed a machine to test my other projects without polluting my machine's global
|
||||
environment with project dependencies such as JDKs and other tools. As some of you reading this can relate, I like to
|
||||
overengineer solutions to my problem, which is why I decided to build a container-based development environment for
|
||||
myself.
|
||||
|
||||
tesseract is not complete - it does not support multiuser and therefore no authentication system is currently in place.
|
||||
tesseract is designed to be used in an internal high-trust environment (such as a tailnet) where exposure to the machine
|
||||
is limited. there is also no automated testing in place as i do not want to waste more time than i need to on this
|
||||
project.
|
||||
|
||||
i am open to feature requests. however, limited time/effort will be spent on this project because unfortunately there are only 24 hours in a day.
|
||||
|
||||
---
|
||||
|
||||
# Documentation
|
||||
|
||||
- [Features](#features)
|
||||
- [Installation](#installation)
|
||||
- [Configuration](#configuration)
|
||||
- [User guide](#user-guide)
|
||||
- [Creating a template](#creating-a-template)
|
||||
- [Creating a workspace](#creating-a-workspace)
|
||||
- [Port forwarding](#port-forwarding)
|
||||
- [SSH access](#ssh-access)
|
||||
- [Docker runtime](#docker-runtime)
|
||||
|
||||
## Features
|
||||
|
||||
- Create isolated development environments through the web dashboard
|
||||
- Create _templates_ to reuse and recreate environments easily
|
||||
- Built-in SSH, HTTP, and WebSocket port forwarding
|
||||
- Subdomain support for workspaces
|
||||
- Train multiple machine learning models at the same time
|
||||
via [nvidia container toolkit](https://github.com/NVIDIA/nvidia-container-toolkit)
|
||||
|
||||
## Installation
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Before installing tesseract, make sure that your machine has docker installed.
|
||||
|
||||
The installation script will install tesseract to `/opt/tesseract/`. To start tesseract, run the `tesseract` binary,
|
||||
which runs tesseract in foreground.
|
||||
|
||||
## Configuration
|
||||
|
||||
A `config.json` must be present in `/opt/tesseract`. It contains configurable options for tesseract:
|
||||
|
||||
- `port`: which port tesseract should be listening on. The default is `8080`.
|
||||
- `databasePath` (required): relative path (relative to the binary) to where the SQLite database is located.
|
||||
- `hostName` (required): the host name hosting tesseract.
|
||||
|
||||
## User guide
|
||||
|
||||
Tesseract uses Docker under-the-hood to manage all your development environments, called _workspaces_.
|
||||
Each workspace is provisioned by an _image_ which is built from a _template_. A template defines the steps to set up a
|
||||
workspace using a `Dockerfile`. Tesseract provides base templates out of the box that you can then customize to suit
|
||||
your needs.
|
||||
|
||||
### Creating a template
|
||||
|
||||
To start, first head to the "Templates" section and create a new template by clicking on the "New Template" button:
|
||||
|
||||

|
||||
|
||||
You should see a dialog:
|
||||
|
||||

|
||||
|
||||
To start from a base template, click on the "Base template" dropdown, and select the base template you want to start
|
||||
from. Once you are satisfied, hit "Create", and you should be greeted with the template editor. Go ahead and select "
|
||||
Dockerfile" on the left:
|
||||
|
||||

|
||||
|
||||
If you selected a base template, then you should see some content in the editor. For example, in the screenshot above,
|
||||
the "Fedora 40 with OpenSSH Server" was selected, which configures a workspace with an OpenSSH server to enable SSH
|
||||
access.
|
||||
|
||||
You can now start editing the template. tesseract will auto save any changes you save. To build a template, click on
|
||||
the "Build button", which should present you with a build dialog:
|
||||
|
||||

|
||||
|
||||
**Image name** is self-explanatory. Keep in mind that if you provide an existing image name, the existing image will be
|
||||
overwritten.
|
||||
|
||||
**Build arguments** allow you to provide argument values for `ARG`s you defined in your template.
|
||||
|
||||
Once you are happy, click on "Build template". The dialog should disappear, and the "Build output" panel should appear
|
||||
below the editor:
|
||||
|
||||

|
||||
|
||||
### Creating a workspace
|
||||
|
||||
Once an image is built from a template, you can now create a workspace! Head to the workspaces page, and click on the "
|
||||
New workspace" button. You should be presented with the following dialog:
|
||||
|
||||

|
||||
|
||||
Here, you give your workspace a name, as well as the image to bootstrap the workspace. The **Docker runtime** allows you
|
||||
to pick a Docker runtime that should be used to run this workspace. For example, if you want docker-in-docker in your
|
||||
workspace, you should select `sysbox-runc` as the runtime.
|
||||
|
||||
### Port forwarding
|
||||
|
||||
tesseract provides a built-in proxy that enables both HTTP/WebSocket port forwarding via a subdomain under the host on which tesseract is deployed. To open a port, open the workspace info dialog, and switch to the "Forwarded Ports" tab:
|
||||
|
||||

|
||||
|
||||
Click on "Add port":
|
||||
|
||||

|
||||
|
||||
For "subdomain", enter a subdomain that you want to forward the port to. For example, you can forward port 80 to the `web` subdomain. Port 80 of the workspace is now accessible via `web.myhost.com`, where `myhost.com` is where you are hosting tesseract.
|
||||
|
||||
### SSH access
|
||||
|
||||
If a workspace has OpenSSH server installed and running, tesseract will automatically expose that under a randomly assigned SSH port. To access the workspace, SSH using host IP/name and the provided port.
|
||||
|
||||
### Docker runtime
|
||||
|
||||
To use a Docker runtime to run your workspaces, you need to first ensure that the runtime is set up and installed on
|
||||
your host machine. Below is a table that lists some Docker runtimes and what feature they provide:
|
||||
|
||||
| Name | Description |
|
||||
|:------------------------------------------------------------------------------:|:---------------------------------------:|
|
||||
| [sysbox](https://github.com/nestybox/sysbox) | Enables isolated Docker in workspaces |
|
||||
| [nvidia-container-toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) | Enables nvidia GPU access in workspaces |
|
||||
|
||||
> [!WARNING]
|
||||
> I don't have access to an nvidia machine to verify whether nvidia-container-toolkit works well with tesseract, but it should work on paper. Please donate to my kofi or GitHub sponsor if you want me to test it out.
|
||||
|
BIN
docs/screenshots/workspace-info-dialog-adding-port.png
Normal file
BIN
docs/screenshots/workspace-info-dialog-adding-port.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
BIN
docs/screenshots/workspace-info-dialog.png
Normal file
BIN
docs/screenshots/workspace-info-dialog.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
Reference in New Issue
Block a user