Quick setup script for an gitea in a nested container utilizing incus and docker-compose. https://about.gitea.com/
Go to file
2025-03-18 20:15:05 -04:00
custom Delete custom/logo.svg 2024-08-01 21:16:22 -04:00
util Initial Commit. Simple test turned into possible usable setup with some tweaks 2024-07-12 15:43:00 -04:00
gitea updated script 2025-03-18 20:12:55 -04:00
LICENSE Initial commit 2024-07-12 15:39:18 -04:00
README.md updated readme 2025-03-18 20:15:05 -04:00

🚀 Gitea Incus Deployment Script 🚀

This script automates the deployment of Gitea using a single Incus container with Docker Compose. It provides a simple command-line interface to create a profile, install Gitea with PostgreSQL, backup data, and update the installation.

📋 Table of Contents

Prerequisites

  • 📦 Incus installed and configured on your system
  • 🔑 Sudo or root access

🚀 Usage

Make the script executable:

chmod +x gitea

🔧 Create Profile

Create an Incus profile for Gitea:

./gitea profile [-c cpu] [-r ram]

Options:

  • -c cpu : Specify the number of CPUs (optional, default: 2)
  • -r ram : Specify the amount of RAM in GB (optional, default: 2GB)

📦 Install Gitea

Install Gitea and PostgreSQL using Docker Compose:

./gitea install [-p dbpassword]

Options:

  • -p dbpassword : Specify a custom database password (optional)

If no password is provided, a secure random password will be generated automatically.

💾 Backup Gitea

Create a backup of your Gitea installation:

./gitea backup

This will create a backup of your Gitea data and PostgreSQL database in the ./backups/ directory.

🔄 Update Gitea

Update Gitea to the latest version:

./gitea update

This will pull the latest Docker images and restart the services.

⚙️ Configuration

You can customize the deployment by:

  1. 📄 Environment File: Create a .env file in the same directory as the script to override the default settings:
CONTAINER_NAME="my-gitea"
HTTP_PORT="8080"
DB_USER="custom_user"
  1. 💽 Data Volumes: By default, the script creates data volumes for persistence. You can customize the paths in the script:
incus config device add $CONTAINER_NAME gitea-data disk source=/path/to/host/storage path=/var/lib/gitea
incus config device add $CONTAINER_NAME postgres-data disk source=/path/to/host/postgres path=/var/lib/postgresql/data

🔍 Script Behavior

  1. The script enforces the correct order of operations:
    • ✓ Profile must be created before installation
  2. 🌐 The script will create a network named "incusbr0" if it doesn't exist
  3. 💾 The root disk size for the Incus container is set to 20GB by default
  4. 🔌 Gitea will be accessible on port 80/443, and SSH access will be on port 2222
  5. 📦 The script creates a single Incus container with nesting enabled
  6. 🐳 Docker and Docker Compose are installed inside the Incus container
  7. 🚀 Gitea and PostgreSQL are deployed using Docker Compose within the Incus container
  8. 🔒 Nginx is configured as a reverse proxy with SSL via Certbot

📝 Notes

  • 🖥️ After installation, access Gitea through the web interface to complete the setup
  • 🔗 The script provides the URL to access Gitea after installation
  • 📌 The latest versions of Gitea and PostgreSQL Docker images are used
  • 📂 Backups are stored in the ./backups/ directory with timestamps

🛠️ Customization

You can modify the following variables in the script or through the .env file:

Variable Description Default
CONTAINER_NAME Name of the Incus container gitea
HTTP_PORT Port for HTTP traffic 80
HTTPS_PORT Port for HTTPS traffic 443
SSH_PORT Port for SSH access 2222
PROFILE_NAME Name of the Incus profile gitea
ROOT_DISK_SIZE Size of the root disk for the container 20GB
NETWORK_NAME Name of the Incus network incusbr0
DB_USER PostgreSQL database user for Gitea gitea
DB_PASS PostgreSQL database password Generated or specified during install

Troubleshooting

If you encounter any issues:

  1. 🔄 Check the Incus container status:

    incus list
    
  2. 📋 View the container logs:

    incus exec gitea -- docker-compose logs
    
  3. 🔌 Ensure all required ports are open and not in use by other services

  4. 📊 Check Gitea logs:

    incus exec gitea -- docker-compose logs server
    
  5. 🔍 Check Nginx logs:

    incus exec gitea -- cat /var/log/nginx/error.log