Four parts of one session.
Files, terminal, Git and previews are not four services you sign into separately. They are four views of the same workspace, and this page describes each one as a student actually uses it.
The session is the machine.
A workspace is a Linux session with your home directory, your shell and your tools. You reach it through the browser, but nothing about it is simulated. Processes you start keep running until the session stops.
Stopping a session does not lose the directory.
Storage is separate from the session lifecycle. That separation is the reason a workspace can be stopped without turning your project into something you have to rebuild from a zip file on a USB stick.
A local port, reached over HTTPS.
When your application listens on a port inside the workspace, that port can be opened in your browser through an address generated for your session. The port is not published on the host firewall, and the address is not guessable from the port number alone.
The repository lives where the code runs.
Git is available in the same session as the editor and the terminal, so reviewing a change, testing it and committing it happen in one place rather than across a laptop, a lab machine and a shared folder.
whoami
pwd
uname -sr
# student
# /home/student
# Linux 6.x
- Home directory
Your own
/homedirectory, not a shared scratch space. - Processes
Servers and long tasks keep running while the session is up.
- Tools
Whatever the workspace image includes. Check with
--versionbefore assuming.
A session is not permanent compute. It can be stopped to free resources, and anything running inside it stops with it. Saved files are not affected.
mkdir -p ~/projects/persistence-test
cd ~/projects/persistence-test
date > created.txt
# stop the workspace, start it again
cat ~/projects/persistence-test/created.txt
- Keep work here
Anything under your home directory, normally
~/projects. - Do not keep work here
/tmpand other temporary paths, which are meant to be discarded. - Verify it yourself
The commands above are the actual test. Run them once and you will trust it.
This is not a backup. It protects you from a stopped session, not from rm -rf. Push anything you care about to a Git remote.
python3 -m http.server 3000 --bind 0.0.0.0
# then open port 3000 from the workspace interface
- Bind to 0.0.0.0
Listening only on
127.0.0.1can keep the preview router from reaching the process. - Open from the interface
Use the ports control in the workspace. Do not construct the address by hand.
- Any port
3000, 8080, 8888 and others work the same way.
A preview is not hosting. The address is tied to a running session and stops working when the session stops, so it is not a place to deploy a finished project.
https://3000--main--web-lab--student.shamashcyber.com
- port3000
- branchmain
- workspaceweb-lab
- userstudent
git clone <repository-url>
cd <repository-directory>
git switch -c feature/my-work
git add .
git commit -m "finish lab work"
- Branch per exercise
Keep lab work on its own branch so the main branch stays readable.
- Push regularly
A remote is the only real backup of your work.
- No tokens in files
Never commit an access token, in source, in a README or in a script.
ShamashCyber does not host repositories. Use the Git service your course or club already uses as the remote.
01Session
The session is the machine.
A workspace is a Linux session with your home directory, your shell and your tools. You reach it through the browser, but nothing about it is simulated. Processes you start keep running until the session stops.
whoami
pwd
uname -sr
# student
# /home/student
# Linux 6.x
- Home directory
Your own
/homedirectory, not a shared scratch space. - Processes
Servers and long tasks keep running while the session is up.
- Tools
Whatever the workspace image includes. Check with
--versionbefore assuming.
A session is not permanent compute. It can be stopped to free resources, and anything running inside it stops with it. Saved files are not affected.
02Files
Stopping a session does not lose the directory.
Storage is separate from the session lifecycle. That separation is the reason a workspace can be stopped without turning your project into something you have to rebuild from a zip file on a USB stick.
mkdir -p ~/projects/persistence-test
cd ~/projects/persistence-test
date > created.txt
# stop the workspace, start it again
cat ~/projects/persistence-test/created.txt
- Keep work here
Anything under your home directory, normally
~/projects. - Do not keep work here
/tmpand other temporary paths, which are meant to be discarded. - Verify it yourself
The commands above are the actual test. Run them once and you will trust it.
This is not a backup. It protects you from a stopped session, not from rm -rf. Push anything you care about to a Git remote.
03Previews
A local port, reached over HTTPS.
When your application listens on a port inside the workspace, that port can be opened in your browser through an address generated for your session. The port is not published on the host firewall, and the address is not guessable from the port number alone.
python3 -m http.server 3000 --bind 0.0.0.0
# then open port 3000 from the workspace interface
- Bind to 0.0.0.0
Listening only on
127.0.0.1can keep the preview router from reaching the process. - Open from the interface
Use the ports control in the workspace. Do not construct the address by hand.
- Any port
3000, 8080, 8888 and others work the same way.
A preview is not hosting. The address is tied to a running session and stops working when the session stops, so it is not a place to deploy a finished project.
https://3000--main--web-lab--student.shamashcyber.com
- port3000
- branchmain
- workspaceweb-lab
- userstudent
04Git
The repository lives where the code runs.
Git is available in the same session as the editor and the terminal, so reviewing a change, testing it and committing it happen in one place rather than across a laptop, a lab machine and a shared folder.
git clone <repository-url>
cd <repository-directory>
git switch -c feature/my-work
git add .
git commit -m "finish lab work"
- Branch per exercise
Keep lab work on its own branch so the main branch stays readable.
- Push regularly
A remote is the only real backup of your work.
- No tokens in files
Never commit an access token, in source, in a README or in a script.
ShamashCyber does not host repositories. Use the Git service your course or club already uses as the remote.
Run the whole cycle once.
Start a server, open its preview, commit the change. It takes a few minutes and it is the clearest explanation of the platform.