First commit on self-hosted cloud
This commit is contained in:
158
README.md
158
README.md
@ -1,3 +1,157 @@
|
||||
# gitGK
|
||||
# gitGK Git Appliance
|
||||
|
||||
gitGK is a completely self-contained git server with no cloud dependency. It's also private and secure... your code never leaves your system. Whether you're developing software, maintaining configs, or tracking changes to any file-based workflow, gitGK is the cleanest, most efficient way to bring Git versioning in-house.
|
||||

|
||||
|
||||
**gitGK** is a completely self-contained git server with no cloud dependency. It's also private and secure... your code never leaves your system. Whether you're developing software, maintaining configs, or tracking changes to any file-based workflow, gitGK is the cleanest, most efficient way to bring Git versioning in-house.
|
||||
|
||||
Based on Gitea and pre-configured to run on Debian Linux, gitGK was created by Robbie Ferguson at **Category5 TV Network** to provide a fast, open-source alternative to GitHub and GitLab with full control and zero vendor lock-in.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- Fully automated install in minutes
|
||||
- Secure-by-default configuration
|
||||
- Gitea web UI (GitHub-style)
|
||||
- MariaDB database backend
|
||||
- NGINX reverse proxy
|
||||
- Optional HTTPS via Let's Encrypt
|
||||
- Automatic security updates enabled
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Installation
|
||||
|
||||
### Step 1: Download the Installer
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/Cat5TV/gitGK/refs/heads/main/install-gitgk.sh
|
||||
chmod +x install-gitgk.sh
|
||||
```
|
||||
|
||||
### Step 2: Run it
|
||||
|
||||
With a domain name:
|
||||
|
||||
```bash
|
||||
sudo ./install-gitgk.sh git.example.com
|
||||
```
|
||||
|
||||
Or just use your server's IP:
|
||||
|
||||
```bash
|
||||
sudo ./install-gitgk.sh
|
||||
```
|
||||
|
||||
This will install:
|
||||
- Git
|
||||
- Gitea (latest release)
|
||||
- MariaDB
|
||||
- NGINX (preconfigured for secure web UI access)
|
||||
- Automatic security updates
|
||||
|
||||
It will also:
|
||||
- Create system users
|
||||
- Set up services with `systemd`
|
||||
- Launch the Gitea web UI (default port: 3000 or as configured)
|
||||
|
||||
---
|
||||
|
||||
## 📂 Post-Install Info
|
||||
|
||||
- Web UI: Visit `http://yourdomain` or `http://your-server-ip`
|
||||
- Admin account setup is completed via the browser
|
||||
- MariaDB password saved to: `/root/gitea-db-password.txt`
|
||||
- Repo data stored in: `/var/lib/gitea`
|
||||
- Configuration in: `/etc/gitea/`
|
||||
|
||||
---
|
||||
|
||||
## 🔀 Step 3 (Optional): Move gitGK Data to External Disk
|
||||
|
||||
You can move all persistent gitGK data (repos + database) to a mounted external volume, such as a second VHD.
|
||||
|
||||
This step is for advanced users only, and the following commands are only examples.
|
||||
|
||||
### Step-by-step:
|
||||
|
||||
1. Mount your external storage to a path like `/mnt/gitgk-data`:
|
||||
```bash
|
||||
sudo mount /dev/sdb1 /mnt/gitgk-data
|
||||
```
|
||||
|
||||
2. Run the migration script:
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/Cat5TV/gitGK/refs/heads/main/gitgk-datamove.sh
|
||||
chmod +x gitgk-datamove.sh
|
||||
sudo ./gitgk-datamove.sh /mnt/gitgk-data
|
||||
```
|
||||
|
||||
This will:
|
||||
- Stop services
|
||||
- Move Gitea data and MariaDB data to the mounted volume
|
||||
- Update the MariaDB config
|
||||
- Replace original data folders with symlinks
|
||||
- Restart services
|
||||
|
||||
⚠️ **IMPORTANT**
|
||||
You must add the mount to `/etc/fstab` to ensure it is mounted again after reboot.
|
||||
Failing to do so will prevent gitGK from starting after a reboot.
|
||||
|
||||
Example `/etc/fstab` entry:
|
||||
```
|
||||
/dev/sdb1 /mnt/gitgk-data ext4 defaults 0 2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ Security
|
||||
|
||||
- Unattended security updates are **enabled**
|
||||
- MariaDB runs with a strong root password (generated during install)
|
||||
- Gitea runs under a limited system user
|
||||
- All services are managed with `systemd`
|
||||
- A firewall is recommended (not configured by default)
|
||||
- Automatic security updates are enabled
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Backups
|
||||
|
||||
You can include this server in your existing `rdiff-backup` or snapshot routines.
|
||||
|
||||
Make sure to include:
|
||||
- `/var/lib/gitea` (or your mounted data location)
|
||||
- `/var/lib/mysql` (or your mounted data location)
|
||||
- `/etc/gitea/` and `/etc/mysql/`
|
||||
|
||||
---
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🌐 Update Host IP or Use a Domain
|
||||
|
||||
If you're deploying a pre-built image, or the IP of your gitGK server otherwise changes (such as when cloning a VM), or if you want to use a domain instead of an IP address, use the included utility script:
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/Cat5TV/gitGK/refs/heads/main/gitgk-host.sh
|
||||
chmod +x gitgk-host.sh
|
||||
sudo ./gitgk-host.sh
|
||||
```
|
||||
|
||||
This script:
|
||||
- Detects and replaces the old IP or hostname in both:
|
||||
- `/etc/gitea/app.ini`
|
||||
- `/etc/nginx/sites-available/gitea`
|
||||
- Allows you to enter a domain name instead of using an IP
|
||||
- Automatically restarts Gitea and reloads NGINX
|
||||
|
||||
This is especially useful if your VM gets a new IP or if you bind your gitGK appliance to DNS.
|
||||
|
||||
|
||||
## 📜 License
|
||||
|
||||
Licensed under the **Apache License 2.0**
|
||||
(c) 2025 Robbie Ferguson
|
||||
**Category5 TV Network**
|
||||
|
Reference in New Issue
Block a user