Files
SSW590-DevOps/docker/gitea/README.md
T

2.7 KiB

Inviscid Gitea foundation

This is the temporary, Gitea-only deployment while Student Pack registration is pending. The official image version is pinned; verify that it pulls before starting the service. SQLite is /data/gitea/gitea.db; repositories and other application data share the persistent named volume inviscid_gitea_data. Container replacement must preserve it. Never run docker compose down --volumes against the working service.

Only EC2 loopback port 3000 is published. Initial browser access uses an SSH tunnel. The existing Color Buttons container remains unchanged on port 80. No public backend or Git SSH firewall rule is needed.

From this directory on EC2:

sudo docker compose config --quiet
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

This initial configuration is NOT the final hostname-based HTTPS deployment. After domain registration, replace DOMAIN and ROOT_URL with the actual hostname and HTTPS URL. Payton can attach Caddy to inviscid_services and forward to gitea:3000, publish the proxy web ports, persist certificate state, and resolve the existing website's port-80 mapping. Remove the loopback mapping if no longer needed.

Self-registration is disabled. Create the initial administrator through the installer; create Payton's separate account using administration after initialization. Keep passwords, app.ini, database files, and volume contents out of Git and screenshots.

Sources:

Recorded deployment (October 12, 2026)

  • EC2: ssw590-group-web, i-025a57432604c8d4b, us-east-1.
  • Current public Elastic IP: 100.49.80.94 (replaces 54.221.175.174).
  • Remote configuration directory: /home/ubuntu/gitea.
  • Observed image digest: docker.gitea.com/gitea@sha256:f505a0d3a41323b786e05942fc7a4075e07ae7c169fd9485649aa55ee543a21a.
  • Gitea initialized with site title Inviscid; victor is administrator and payton is a regular user.
  • Local HTTP check returned 200; named-volume mount and SQLite file were verified.
  • Both containers remained running following Elastic IP association.
  • Domain registration, public HTTPS, renewal verification, external firewall checks, container-replacement persistence test, and team PR workflow remain incomplete.

For private browser access, use your own authorized key:

ssh -i /path/to/your-private-key -o ExitOnForwardFailure=yes -N -L 127.0.0.1:3000:127.0.0.1:3000 ubuntu@100.49.80.94

Open http://localhost:3000 while the tunnel stays open. Each team member must have their public key authorized and their source IP allowed for administrative SSH.