custom | ||
util | ||
gitea | ||
LICENSE | ||
README.md |
🚀 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
- 🚀 Usage
- ⚙️ Configuration
- 🔍 Script Behavior
- 📝 Notes
- 🛠️ Customization
- ❓ Troubleshooting
✅ 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:
- 📄 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"
- 💽 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
- The script enforces the correct order of operations:
- ✓ Profile must be created before installation
- 🌐 The script will create a network named "incusbr0" if it doesn't exist
- 💾 The root disk size for the Incus container is set to 20GB by default
- 🔌 Gitea will be accessible on port 80/443, and SSH access will be on port 2222
- 📦 The script creates a single Incus container with nesting enabled
- 🐳 Docker and Docker Compose are installed inside the Incus container
- 🚀 Gitea and PostgreSQL are deployed using Docker Compose within the Incus container
- 🔒 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:
-
🔄 Check the Incus container status:
incus list
-
📋 View the container logs:
incus exec gitea -- docker-compose logs
-
🔌 Ensure all required ports are open and not in use by other services
-
📊 Check Gitea logs:
incus exec gitea -- docker-compose logs server
-
🔍 Check Nginx logs:
incus exec gitea -- cat /var/log/nginx/error.log