From 35321b6c3884491f4f559b3f4199e4563178f874 Mon Sep 17 00:00:00 2001 From: hc Date: Mon, 19 May 2025 19:45:55 +0800 Subject: hehe --- Dockerfile | 58 +++++++++++++++++++++++++ cgit-setup-auto.sh | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++ nginx.conf | 44 +++++++++++++++++++ startup.sh | 14 ++++++ 4 files changed, 241 insertions(+) create mode 100644 Dockerfile create mode 100644 cgit-setup-auto.sh create mode 100644 nginx.conf create mode 100644 startup.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6ecf73f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,58 @@ +FROM rockylinux:9 + +# Install required packages +RUN dnf install -y epel-release && \ + dnf install -y \ + tmux \ + git \ + nginx \ + fcgiwrap \ + gcc \ + make \ + openssl-devel \ + zlib-devel \ + procps-ng \ + systemd-sysv && \ + dnf clean all + +# Clone and build cgit +RUN git clone https://git.zx2c4.com/cgit /tmp/cgit && \ + cd /tmp/cgit && \ + git submodule init && \ + git submodule update && \ + make && \ + make install && \ + rm -rf /tmp/cgit + +# Create necessary directories +RUN mkdir -p /git /var/www/htdocs/cgit && \ + chown -R nginx:nginx /var/www/htdocs/cgit && \ + chgrp -R nginx /git && \ + chmod -R g+s /git && \ + chmod -R 775 /git + +# Configure cgit +RUN touch /etc/cgitrc && \ + chown nginx:nginx /etc/cgitrc && \ + chgrp nginx /etc/cgitrc && \ + chmod 664 /etc/cgitrc + +# Add cgit configuration +RUN echo 'css=/cgit.css' >> /etc/cgitrc && \ + echo 'logo=/cgit.png' >> /etc/cgitrc && \ + echo 'virtual-root=/' >> /etc/cgitrc && \ + echo 'cache-size=200' >> /etc/cgitrc && \ + echo 'scan-path=/git' >> /etc/cgitrc + +# Configure nginx +COPY nginx.conf /etc/nginx/nginx.conf + +# Create startup script +COPY startup.sh /startup.sh +RUN chmod +x /startup.sh + +# Expose port +EXPOSE 80 + +# Start services +CMD ["/startup.sh"] diff --git a/cgit-setup-auto.sh b/cgit-setup-auto.sh new file mode 100644 index 0000000..b4e6c53 --- /dev/null +++ b/cgit-setup-auto.sh @@ -0,0 +1,125 @@ +#!/bin/bash + +# CGit + Nginx Setup Script with Certbot SSL +# Usage: ./cgit-setup.sh +# Example: ./cgit-setup.sh sg2.0nom.ch hc@email.ch + +set -e + +# Check arguments +if [ $# -ne 2 ]; then + echo "Usage: $0 " + echo "Example: $0 domain.com name@email.com" + exit 1 +fi + +DOMAIN="$1" +EMAIL="$2" + +echo "Starting CGit + Nginx setup for $DOMAIN with email $EMAIL..." + +# Update system and install dependencies +echo "Installing dependencies..." +sudo dnf install -y epel-release +sudo dnf install -y tmux git nginx fcgiwrap git gcc make openssl-devel zlib-devel +sudo dnf install -y certbot python3-certbot-nginx + +# Clone and build cgit +echo "Building cgit..." +if [ ! -d "cgit" ]; then + git clone https://git.zx2c4.com/cgit +fi + +cd cgit +git submodule init +git submodule update +make +sudo make install +cd .. + +# Create directories and set permissions +echo "Setting up directories..." +sudo mkdir -p /git /var/www/htdocs/cgit +sudo chown -R nginx:nginx /var/www/htdocs/cgit +sudo chgrp -R nginx /git +sudo chmod -R g+s /git +sudo chmod -R 775 /git + +# Configure cgit +echo "Configuring cgit..." +sudo tee /etc/cgitrc > /dev/null < /dev/null <