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

  1. 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
  2. Clone the repository

    cd ~
    git clone https://github.com/MicroLabClub/pbl-26-delta-robot.git
    cd pbl-26-delta-robot
  3. 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.yml
    Required:your service must bind to 127.0.0.1:9001 on the host — not 9001 alone, not 0.0.0.0:9001. Anything else bypasses HTTPS and exposes the container publicly.
  4. 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

CommandEffect
docker compose psContainer status for this project
docker compose logs -fTail logs from all services
docker compose logs -f appTail logs from a single service
docker compose downStop and remove containers
docker compose down -vSame, plus delete named volumes (wipes DB data)
docker compose exec app shOpen a shell inside the running container
docker system prune -afReclaim disk by removing unused containers and images
git pull && docker compose up -d --buildRedeploy 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).