Ansible Infrastructure Setup
This playbook sets up the complete Gitea + API server infrastructure on a fresh Ubuntu 24.04 VPS.
Quick Start
# 1. Copy and edit inventory
cp hosts.ini.example hosts.ini
# Edit hosts.ini with your VPS details
# 2. Set passwords
export POSTGRES_ADMIN_PASSWORD="your-strong-password"
export API_SERVER_DB_PASSWORD="your-api-db-password"
# 3. Run playbook
ansible-playbook -i hosts.ini site.yml
What This Deploys
Infrastructure
- Gitea server (Git hosting + Actions)
- PostgreSQL (separate databases for Gitea and API)
- 5 Gitea Actions runners (self-hosted)
- Nginx reverse proxy
- UFW firewall
API Server Deployment System
/opt/api-artifacts/directory structure- Blue-green deployment scripts
- Systemd service configuration
- Environment file template
Database Setup
giteadatabase (for Gitea)apiserverdatabase (for your application)pgadminuser (admin access)apiserveruser (application access)
Configuration
Edit site.yml to customize:
vars:
create_separate_apiserver_db: true # false to share gitea DB
runner_count: 5 # Number of runners
gitea_version: "1.23.3" # Gitea version
Inventory File
Create hosts.ini:
[git]
your-vps-ip ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/key.pem ansible_python_interpreter=/usr/bin/python3
After Ansible Runs
- Access Gitea at
http://your-vps-ip - Create admin account
- Create repository
- Push code to trigger builds
See main deployment README for full workflow.