diff --git a/README.md b/README.md index 147dd8e..dc7d726 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,152 @@ -# Gitea Incus Deployment Script +# 🚀 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 and install Gitea with PostgreSQL. +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](#prerequisites) -- [Usage](#usage) - - [Create Profile](#create-profile) - - [Install Gitea](#install-gitea) -- [Script Behavior](#script-behavior) -- [Notes](#notes) -- [Customization](#customization) -- [Troubleshooting](#troubleshooting) +## 📋 Table of Contents +- [✅ Prerequisites](#prerequisites) +- [🚀 Usage](#usage) + - [🔧 Create Profile](#create-profile) + - [📦 Install Gitea](#install-gitea) + - [💾 Backup Gitea](#backup-gitea) + - [🔄 Update Gitea](#update-gitea) +- [⚙️ Configuration](#configuration) +- [🔍 Script Behavior](#script-behavior) +- [📝 Notes](#notes) +- [🛠️ Customization](#customization) +- [❓ Troubleshooting](#troubleshooting) -## Table of Contents -- [Prerequisites](#prerequisites) -- [Usage](#usage) - - [Create Profile](#create-profile) - - [Install Gitea](#install-gitea) - - [Secure Configuration](#secure-configuration) -- [Script Behavior](#script-behavior) -- [Notes](#notes) -- [Customization](#customization) -- [Troubleshooting](#troubleshooting) +## ✅ Prerequisites -## Prerequisites +- 📦 Incus installed and configured on your system +- 🔑 Sudo or root access -- Incus installed and configured on your system -- Sudo or root access - -## Usage +## 🚀 Usage Make the script executable: ```bash -chmod +x gitea.sh +chmod +x gitea ``` -### Create Profile +### 🔧 Create Profile Create an Incus profile for Gitea: ```bash -./gitea.sh profile [-c cpu] [-r ram] +./gitea profile [-c cpu] [-r ram] ``` Options: -- `-c cpu`: Specify the number of CPUs (optional) -- `-r ram`: Specify the amount of RAM in GB (optional) +- `-c cpu` : Specify the number of CPUs (optional, default: 2) +- `-r ram` : Specify the amount of RAM in GB (optional, default: 2GB) -If CPU or RAM is not specified, the default Incus values will be used. - -### Install Gitea +### 📦 Install Gitea Install Gitea and PostgreSQL using Docker Compose: ```bash -./gitea.sh install [-p dbpassword] +./gitea install [-p dbpassword] ``` Options: -- `-p dbpassword`: Specify a custom database password (optional) +- `-p dbpassword` : Specify a custom database password (optional) -If no password is provided, a default password will be used. +If no password is provided, a secure random password will be generated automatically. -## Script Behavior +### 💾 Backup Gitea + +Create a backup of your Gitea installation: + +```bash +./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: + +```bash +./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" +``` + +2. **💽 Data Volumes**: By default, the script creates data volumes for persistence. You can customize the paths in the script: +```bash +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 3000, 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 + - ✓ 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 +## 📝 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 +- 🖥️ 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 +## 🛠️ Customization -You can modify the following variables at the top of the script to customize your deployment: +You can modify the following variables in the script or through the `.env` file: -- `CONTAINER_NAME`: Name of the Incus container -- `WEB_PORT`: Port for accessing Gitea web interface -- `SSH_PORT`: Port for SSH access -- `PROFILE_NAME`: Name of the Incus profile -- `ROOT_DISK_SIZE`: Size of the root disk for the container -- `NETWORK_NAME`: Name of the Incus network -- `DB_USER`: PostgreSQL database user for Gitea -- `DB_PASS`: Default PostgreSQL database password (can be overridden during installation) +| 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 +## ❓ 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 + +1. 🔄 Check the Incus container status: + ```bash + incus list + ``` + +2. 📋 View the container logs: + ```bash + incus exec gitea -- docker-compose logs + ``` + +3. 🔌 Ensure all required ports are open and not in use by other services + +4. 📊 Check Gitea logs: + ```bash + incus exec gitea -- docker-compose logs server + ``` + +5. 🔍 Check Nginx logs: + ```bash + incus exec gitea -- cat /var/log/nginx/error.log + ``` \ No newline at end of file