Gitea is a lightweight, self-hosted Git repository management solution that provides a clean, easy-to-use interface similar to GitHub. If you're still weighing self-hosting against other options, see our comparison of GitHub alternatives first. In this guide, we'll walk you through installing Gitea on an Amazon Lightsail VPS.
Prerequisites
Before you begin, ensure you have:
- An Amazon Lightsail account
- A Lightsail VPS running Ubuntu
- SSH access to your Lightsail instance
- Basic command-line knowledge
Step 1: Prepare Your Lightsail Instance
Create and Connect to Your Instance
- Log in to the Amazon Lightsail console
- Create a new Ubuntu instance
- Choose an appropriate plan (minimum 1GB RAM recommended)
- Connect via SSH through the Lightsail browser terminal or your local SSH client
Configure Lightsail Firewall
Open the Networking tab and add the following firewall rules:
- HTTP (Port 80)
- HTTPS (Port 443)
- SSH (Port 22)
- Gitea (Port 3000)
Step 2: Update Your System
Update system packages to ensure you have the latest versions:
sudo apt update
sudo apt upgrade -y
Step 3: Install Dependencies
Install necessary dependencies for Gitea:
sudo apt install -y git sqlite3 wget nginx
Step 4: Create Gitea User
Create a dedicated user for Gitea:
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/gitea gitea
Step 5: Download Gitea
Download the latest Gitea binary:
wget -O gitea https://dl.gitea.io/gitea/latest/gitea-1.20.3-linux-amd64
sudo chmod +x gitea
sudo mv gitea /usr/local/bin/
Step 6: Create Directory Structure
Set up the necessary directories:
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R gitea:gitea /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
Step 7: Configure Systemd Service
Create a systemd service file for Gitea:
sudo nano /etc/systemd/system/gitea.service
Paste the following configuration:
[Unit]
Description=Gitea
After=syslog.target
After=network.target
[Service]
RestartSec=2s
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea
[Install]
WantedBy=multi-user.target
Step 8: Configure Nginx Reverse Proxy
Create an Nginx configuration:
sudo nano /etc/nginx/sites-available/gitea
Add the following configuration:
server {
listen 80;
server_name gitea.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Enable the site:
sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Step 9: Performance Optimization for Lightsail
Add a swap file to improve performance on smaller instances:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo scp /swapfile /etc/fstab
sudo swapon /swapfile
Step 10: Start and Enable Gitea
Start the Gitea service and enable it to run on boot:
sudo systemctl start gitea
sudo systemctl enable gitea
Step 11: SSL Configuration with Let's Encrypt
Install Certbot:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Generate SSL for your domain
sudo certbot --nginx -d gitea.yourdomain.com
Security Recommendations
- Use a strong, unique password
- Keep Gitea and system updated
- Configure two-factor authentication
- Regularly backup your Gitea data
Lightsail Cost-Saving Tips
- Choose an appropriate instance size
- Use Lightsail's snapshot feature
- Stop instances when not in use
- Monitor instance metrics
Troubleshooting
If you encounter issues, check the logs:
# Gitea logs
sudo journalctl -u gitea
# Nginx logs
sudo tail -f /var/log/nginx/error.log
Connecting Your Gitea Repository to DeployHQ
After setting up your Gitea instance, you can easily integrate it with DeployHQ for streamlined deployments. Follow these steps:
Manual Repository Addition
1- Generate an Access Token in Gitea
- Navigate to your Gitea user settings
- Go to "Applications"
- Create a new Personal Access Token
- Select appropriate scopes (read:repository recommended)
- Copy the generated token securely
2- Add Repository in DeployHQ
- Log in to your DeployHQ account
- Click "Add Repository"
- Choose "Git" as the repository type
- Select "Other Git Provider"
3- Repository Connection Details
- Repository URL: `https://your-gitea-domain.com/username/repository.git`
- Authentication Type: Token
- Username: Your Gitea username
- Password/Token: Paste the generated access token
Important Configuration Notes
- Ensure the access token has sufficient permissions
- Use HTTPS URL for repository connection
- Verify firewall and network settings allow DeployHQ to access your Gitea instance
Deployment Setup
Once connected, you can:
- Configure deployment branches
- Set up automatic deployments
- Define custom deployment scripts
- Monitor deployment history
Troubleshooting Repository Connection
- Double-check the repository URL
- Verify access token permissions
- Ensure Gitea is publicly accessible
- Check network connectivity
Pro Tip: DeployHQ supports multiple deployment strategies, making it perfect for your self-hosted Gitea repositories!
Conclusion
You've successfully installed Gitea on Amazon Lightsail! Enjoy your self-hosted Git repository management platform.
Pro Tip: Use DeployHQ for seamless deployment of your projects directly to your Gitea repository!