# AppAIBuildTest - Deployment Configuration **Generated:** 2026-01-30 ## Overview This folder contains all configuration files needed to deploy **AppAIBuildTest** to your infrastructure: - **Server:** 192.168.1.43 (Ubuntu 24.04) - **Forgejo:** 192.168.1.63:3000 - **.NET Version:** 9.0.x ## Environments ### TEST Environment - **Port:** 5100 - **Domain:** http://test-appaibuiltest.jarjarbinks - **Folder:** /opt/appaibuiltest-test/app - **Service:** appaibuiltest-test - **Deploy:** Automatic on `git push` to main ### PROD Environment - **Port:** 5200 - **Domain:** http://appaibuiltest.jarjarbinks - **Folder:** /opt/appaibuiltest/app - **Service:** appaibuiltest - **Deploy:** Manual via workflow_dispatch ## Setup Instructions ### 1. Configure Forgejo Secrets Go to your repository in Forgejo → Settings → Actions → Secrets Required secrets (should already exist): - `DEPLOY_HOST` = `192.168.1.43` - `DEPLOY_USER` = `deploy` - `DEPLOY_SSH_KEY` = SSH private key for deploy user ### 2. Copy Workflow to Repository ```bash # In your repository mkdir -p .forgejo/workflows cp .forgejo/workflows/cicd.yml YOUR_REPO/.forgejo/workflows/ cd YOUR_REPO git add .forgejo/workflows/cicd.yml git commit -m "Add CI/CD workflow" git push ``` ### 3. Setup Server ```bash # Copy files to server (via MobaXterm SFTP or scp) # Upload: systemd, scripts folders to ~/appaibuiltest-setup/ # SSH to server ssh your-user@192.168.1.43 # Create dotnet-service user (if not exists) sudo useradd -r -s /bin/false dotnet-service # Run setup script cd ~/appaibuiltest-setup chmod +x scripts/setup-server.sh sudo ./scripts/setup-server.sh # Setup script will automatically: # - Install systemd services # - Create app directories # - Configure Caddy reverse proxy via API ``` ## Deployment ### Deploy to TEST ```bash git push origin main ``` Check deployment: ```bash # On server sudo systemctl status appaibuiltest-test sudo journalctl -u appaibuiltest-test -n 50 # Test locally curl http://127.0.0.1:5100 # Test via Caddy curl http://test-appaibuiltest.jarjarbinks ``` ### Deploy to PROD 1. Go to Forgejo → Repository → Actions 2. Select the workflow 3. Click **Run workflow** 4. Confirm deployment Check deployment: ```bash # On server sudo systemctl status appaibuiltest sudo journalctl -u appaibuiltest -n 50 # Test locally curl http://127.0.0.1:5200 # Test via Caddy curl http://appaibuiltest.jarjarbinks ``` ## Troubleshooting ### Service Issues ```bash # TEST service sudo systemctl status appaibuiltest-test sudo journalctl -u appaibuiltest-test -n 100 -f # PROD service sudo systemctl status appaibuiltest sudo journalctl -u appaibuiltest -n 100 -f ``` ### Check Ports ```bash ss -lntp | grep 5100 ss -lntp | grep 5200 ``` ### Restart Services ```bash sudo systemctl restart appaibuiltest-test sudo systemctl restart appaibuiltest sudo systemctl reload caddy ``` ## File Structure ``` /opt/appaibuiltest-test/app/ # TEST deployment (owned by dotnet-service) /opt/appaibuiltest/app/ # PROD deployment (owned by dotnet-service) /etc/systemd/system/appaibuiltest-test.service /etc/systemd/system/appaibuiltest.service Caddy routes configured via API # No manual Caddyfile editing needed ``` ## Technical Details - **Service User:** `dotnet-service` (restricted system user for running .NET apps) - **Caddy Configuration:** Via API (automatic, no manual file editing) - **Deployment Method:** rsync over SSH from Forgejo CI/CD - **Process Manager:** systemd with auto-restart