aboutsummaryrefslogtreecommitdiffstats
path: root/terminaldweller.com/cgit
diff options
context:
space:
mode:
Diffstat (limited to 'terminaldweller.com/cgit')
-rw-r--r--terminaldweller.com/cgit/bootstrap/Dockerfile7
-rwxr-xr-xterminaldweller.com/cgit/bootstrap/bootstrap.sh64
-rw-r--r--terminaldweller.com/cgit/bootstrap/crontab1
-rwxr-xr-xterminaldweller.com/cgit/bootstrap/docker-entrypoint.sh6
-rw-r--r--terminaldweller.com/cgit/cgit/Dockerfile2
-rw-r--r--terminaldweller.com/cgit/cgit/cgitrc19
-rw-r--r--terminaldweller.com/cgit/cgit/nginx.conf32
-rw-r--r--terminaldweller.com/cgit/docker-compose.yaml30
8 files changed, 161 insertions, 0 deletions
diff --git a/terminaldweller.com/cgit/bootstrap/Dockerfile b/terminaldweller.com/cgit/bootstrap/Dockerfile
new file mode 100644
index 0000000..73e757a
--- /dev/null
+++ b/terminaldweller.com/cgit/bootstrap/Dockerfile
@@ -0,0 +1,7 @@
+FROM alpine:3.16
+RUN apk update && apk add --no-cache git cronie busybox-initscripts
+RUN rc-service crond start && rc-update add crond
+COPY ./bootstrap.sh /bootstrap.sh
+COPY ./docker-entrypoint.sh /docker-entrypoint.sh
+COPY ./crontab /etc/crontabs/root
+ENTRYPOINT ["/bootstrap.sh"]
diff --git a/terminaldweller.com/cgit/bootstrap/bootstrap.sh b/terminaldweller.com/cgit/bootstrap/bootstrap.sh
new file mode 100755
index 0000000..a943ffb
--- /dev/null
+++ b/terminaldweller.com/cgit/bootstrap/bootstrap.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+GIT_REPO_DIR=/etc/gitrepos
+ORIGIN_HTTPS=https://github.com/terminaldweller
+ORIGIN_SSH=git@github.com:terminaldweller
+REPOS="cgrep \
+ mutator \
+ delf \
+ dwasm \
+ colo \
+ blog \
+ devourer \
+ hived \
+ mdrtl \
+ simplex \
+ scripts \
+ vagrantboxes \
+ dockerimages \
+ st \
+ dmenu \
+ tabbed \
+ dwm \
+ w3m \
+ leetcode \
+ irssi-scripts \
+ jupyter-notebook-docker-compose \
+ seer \
+ devi-githooks \
+ kaminokumo \
+ wikis \
+ grpc \
+ faultreiber \
+ luatablegen \
+ cfe-extra"
+
+bootstrap() {
+ for REPO in ${REPOS}; do
+ (cd "${GIT_REPO_DIR}" && git clone --bare "${ORIGIN_HTTPS}/${REPO}")
+ done
+}
+
+update_repos() {
+ for REPO in ${REPOS}; do
+ (cd "${GIT_REPO_DIR}/${REPO}" && git fetch)
+ done
+}
+
+on_startup() {
+ dir_list=$(ls -A == "$1")
+ if [ -z "$dir_list" ]; then
+ bootstrap
+ else
+ update_repos
+ fi
+}
+
+if [ "$1" = "--startup" ]; then
+ on_startup "$@"
+elif [ "$1" = "--update" ]; then
+ update_repos
+elif [ "$1" = "--bootstrap" ]; then
+ bootstrap
+fi
diff --git a/terminaldweller.com/cgit/bootstrap/crontab b/terminaldweller.com/cgit/bootstrap/crontab
new file mode 100644
index 0000000..2346740
--- /dev/null
+++ b/terminaldweller.com/cgit/bootstrap/crontab
@@ -0,0 +1 @@
+0 */6 * * * /bootstrap.sh --update
diff --git a/terminaldweller.com/cgit/bootstrap/docker-entrypoint.sh b/terminaldweller.com/cgit/bootstrap/docker-entrypoint.sh
new file mode 100755
index 0000000..a6ea4d5
--- /dev/null
+++ b/terminaldweller.com/cgit/bootstrap/docker-entrypoint.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+. /bootstrap.sh
+on_startup
+crond -s -P -f
diff --git a/terminaldweller.com/cgit/cgit/Dockerfile b/terminaldweller.com/cgit/cgit/Dockerfile
new file mode 100644
index 0000000..247023a
--- /dev/null
+++ b/terminaldweller.com/cgit/cgit/Dockerfile
@@ -0,0 +1,2 @@
+FROM alpine:3.16
+RUN apk add && apk add --no-cache cgit git fcgiwrap highlight
diff --git a/terminaldweller.com/cgit/cgit/cgitrc b/terminaldweller.com/cgit/cgit/cgitrc
new file mode 100644
index 0000000..3b72aa7
--- /dev/null
+++ b/terminaldweller.com/cgit/cgit/cgitrc
@@ -0,0 +1,19 @@
+css=/cgit/cgit.css
+# logo=/cgit.png
+
+# git repos go here
+scan-path=/srv/git/
+
+virtual-root=/
+
+# automatically render READMEs
+about-file=/usr/lib/cgit/filters/about-formatting.sh
+readme:=README.md
+
+# robots
+robots=noindex, nofollow
+
+include=/etc/cgitrepos
+
+# syntax highlighting
+source-filter=/usr/lib/cgit/filters/syntax-highlighting-edited.sh
diff --git a/terminaldweller.com/cgit/cgit/nginx.conf b/terminaldweller.com/cgit/cgit/nginx.conf
new file mode 100644
index 0000000..1fea320
--- /dev/null
+++ b/terminaldweller.com/cgit/cgit/nginx.conf
@@ -0,0 +1,32 @@
+worker_processes 1;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+ sendfile on;
+ keepalive_timeout 65;
+ gzip on;
+
+ server {
+ listen 80;
+
+ server_name git.terminaldweller.com;
+
+ root /usr/share/git;
+
+ try_files $uri @cgit;
+
+ location @cgit {
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi;
+ fastcgi_param PATH_INFO $uri;
+ fastcgi_param QUERY_STRING $args;
+ fastcgi_param HTTP_HOST $server_name;
+ fastcgi_pass unix:/run/fcgiwrap.socket;
+ }
+ }
+}
diff --git a/terminaldweller.com/cgit/docker-compose.yaml b/terminaldweller.com/cgit/docker-compose.yaml
new file mode 100644
index 0000000..4635764
--- /dev/null
+++ b/terminaldweller.com/cgit/docker-compose.yaml
@@ -0,0 +1,30 @@
+version: "3"
+services:
+ cgit:
+ image: cgit
+ build:
+ context: ./cgit/
+ networks:
+ - cgitnet
+ ports:
+ - "8040:8080"
+ restart: unless-stopped
+ volumes:
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro
+ - ./cgitrc:/etc/cgitrc:ro
+ - storage:/etc/gitrepos/
+ bootstrap:
+ image: bootstrap
+ build:
+ context: ./bootstrap
+ networks:bootstrapnet
+ volumes:
+ - storage:/etc/gitrepos/
+ entrypoint: ["/docker-entrypoint.sh"]
+ cap_drop:
+ - ALL
+networks:
+ cgitnet:
+ bootstrapnet:
+volumes:
+ storage: