Microlab Club · PBL-26
Delta Robot
Your team's subdomain. Deploy a Docker container on the reserved port and it replaces this page automatically.
Deployment details
- URL
- delta-robot-26.microlab.club
- SSH
ssh delta-robot-26_admin@delta-robot-26.microlab.club- Repo
- MicroLabClub/pbl-26-delta-robot
- Bind
127.0.0.1:9001- Host
194.180.191.175· Ubuntu 22.04 · shared with other teams
How it works
An nginx reverse proxy routes https://delta-robot-26.microlab.club to whatever process is listening on 127.0.0.1:9001 on this host. While your container is running, your app is live at the URL. While it isn't, this page is shown so visitors always get something useful.
You and your teammates share one Linux account on this host. Anything one of you changes affects the others — keep your work inside ~/.
Deploy in four steps
-
Connect via SSH
Use the password your instructor handed out. After first login, add your public key so the password isn't needed again.
ssh delta-robot-26_admin@delta-robot-26.microlab.club # from your laptop, after first login: ssh-copy-id delta-robot-26_admin@delta-robot-26.microlab.club -
Clone the repository
cd ~ git clone https://github.com/MicroLabClub/pbl-26-delta-robot.git cd pbl-26-delta-robot -
Add a compose file
A starter is already in your home directory. Copy it into the project root and adapt the build/image to match your code.
cp ~/docker-compose.example.yml ./docker-compose.ymlRequired:your service must bind to127.0.0.1:9001on the host — not9001alone, not0.0.0.0:9001. Anything else bypasses HTTPS and exposes the container publicly. -
Bring it up
docker compose up -d --build docker compose ps curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:9001/Open delta-robot-26.microlab.club — you should see your app, not this page. If you don't, see Troubleshooting below.
Cheat sheet
| Command | Effect |
|---|---|
docker compose ps | Container status for this project |
docker compose logs -f | Tail logs from all services |
docker compose logs -f app | Tail logs from a single service |
docker compose down | Stop and remove containers |
docker compose down -v | Same, plus delete named volumes (wipes DB data) |
docker compose exec app sh | Open a shell inside the running container |
docker system prune -af | Reclaim disk by removing unused containers and images |
git pull && docker compose up -d --build | Redeploy with the latest code |
df -h ~ | Check disk usage in your home dir |
Troubleshooting
This welcome page is still showing
Nginx couldn't reach your container on 127.0.0.1:9001. On the server:
docker compose ps
curl -v http://127.0.0.1:9001/
docker compose logs --tail=50 app
"port is already allocated" on docker compose up
Something else is already bound to 9001. Find it and stop it.
docker ps --filter "publish=9001"
docker stop <name>
"permission denied" running docker
You were added to the docker group on first provisioning. Group membership only takes effect on a new login session — log out and SSH back in.
I want a clean slate
docker compose down -v
docker system prune -af
git fetch && git reset --hard origin/main
"could not read Username for github.com" on git push
HTTPS clones are read-only without authentication. To push from the server, either use a Personal Access Token (paste it as the password when prompted) or switch the remote to SSH:
# option A — switch remote to SSH (recommended)
ssh-keygen -t ed25519 -C "delta-robot-26_admin@delta-robot-26"
cat ~/.ssh/id_ed25519.pub # add this to github.com/settings/keys
git remote set-url origin git@github.com:MicroLabClub/pbl-26-delta-robot.git
# option B — generate a token at github.com/settings/tokens with `repo` scope,
# then paste it when git prompts for password.
Most teams find it easier to do code edits + git push from a laptop and only run git pull && docker compose up -d --build on the server.
"container killed (OOMKilled)" / app dies under load
The default mem_limit: 512m in the starter compose is intentional — the shared server only has 4 GB RAM. If your app legitimately needs more, lower it elsewhere or message @prodiuscristian to coordinate.
docker stats --no-stream # see live memory usage per container
Using AI coding assistants
If you use Claude Code, Codex, Cursor, or similar, point them at delta-robot-26.microlab.club/llms.txt. That file contains the full deployment context (port-binding rule, memory limits, no-sudo, etc.) so the assistant doesn't suggest things that won't work on this server.
On the server itself, the same content is at ~/llms.txt (also linked as ~/CLAUDE.md and ~/AGENTS.md).