diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5e16864 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 40f0583..65bb421 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,5 @@ override.tf.json terraform.rc *secret* -.vscode \ No newline at end of file +.vscode +.env \ No newline at end of file diff --git a/Taskfile.yml b/Taskfile.yml index 9bd658e..e7d730d 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -3,6 +3,8 @@ env: { TF: terraform -chdir=terraform } silent: true tasks: + dev: docker compose -f compose.dev.yml up --build --force-recreate --no-deps + tf/init: $TF init -backend-config=backend.tfvars tf/plan: $TF plan -var-file=secret.tfvars tf/destroy: $TF destroy diff --git a/compose.dev.yml b/compose.dev.yml new file mode 100644 index 0000000..ecf01d1 --- /dev/null +++ b/compose.dev.yml @@ -0,0 +1,64 @@ +name: web-git +services: + # Gitea itself. + gitea: + container_name: web-git-instance + depends_on: + - backup + build: + context: gitea + dockerfile: Dockerfile.dev + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - data:/var/lib/gitea + ports: + - 80:80 + - 443:443 + - 2222:2222 + labels: + - docker-volume-backup.stop-during-backup=true + + # The back-up service. + backup: + container_name: web-git-backup + image: offen/docker-volume-backup:v2 + depends_on: + - bucket-script + volumes: + - data:/backup/my-app-backup:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + environment: + AWS_ENDPOINT: localstack:4566 + AWS_S3_BUCKET_NAME: test + AWS_ACCESS_KEY_ID: _ + AWS_SECRET_ACCESS_KEY: _ + BACKUP_CRON_EXPRESSION: "* * * * *" + AWS_ENDPOINT_INSECURE: true + + # The S3 container. + localstack: + container_name: web-git-s3 + image: localstack/localstack:s3-latest + ports: + - "4566:4566" + environment: + DEBUG: 1 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + # Just to make sure that the bucket is generated is the S3 container. + bucket-script: + container_name: web-git-s3-script + image: amazon/aws-cli + depends_on: + - localstack + entrypoint: /bin/sh -c + environment: + AWS_ACCESS_KEY_ID: _ + AWS_SECRET_ACCESS_KEY: _ + AWS_ENDPOINT_URL: http://localstack:4566 + command: '"aws s3api create-bucket --bucket test"' + +volumes: + data: diff --git a/gitea/Dockerfile b/gitea/Dockerfile new file mode 100644 index 0000000..cba7a78 --- /dev/null +++ b/gitea/Dockerfile @@ -0,0 +1,5 @@ +FROM gitea/gitea:latest-rootless + +ADD --chown=git:git config /etc/gitea +ADD --chown=git:git custom /etc/gitea-custom +ENV GITEA_CUSTOM /etc/gitea-custom diff --git a/gitea/Dockerfile.dev b/gitea/Dockerfile.dev new file mode 100644 index 0000000..10072c9 --- /dev/null +++ b/gitea/Dockerfile.dev @@ -0,0 +1,8 @@ +FROM gitea/gitea:latest-rootless + +ADD --chown=git:git config /etc/gitea +ADD --chown=git:git custom /etc/gitea-custom +ENV GITEA_CUSTOM /etc/gitea-custom + +RUN rm /etc/gitea/app.ini +RUN mv /etc/gitea/dev.app.ini /etc/gitea/app.ini diff --git a/image/custom/conf/app.ini b/gitea/config/app.ini similarity index 100% rename from image/custom/conf/app.ini rename to gitea/config/app.ini diff --git a/image/custom/conf/dev.app.ini b/gitea/config/dev.app.ini similarity index 100% rename from image/custom/conf/dev.app.ini rename to gitea/config/dev.app.ini diff --git a/image/custom/public/assets/img/apple-touch-icon.png b/gitea/custom/public/assets/img/apple-touch-icon.png similarity index 100% rename from image/custom/public/assets/img/apple-touch-icon.png rename to gitea/custom/public/assets/img/apple-touch-icon.png diff --git a/image/custom/public/assets/img/favicon.png b/gitea/custom/public/assets/img/favicon.png similarity index 100% rename from image/custom/public/assets/img/favicon.png rename to gitea/custom/public/assets/img/favicon.png diff --git a/image/custom/public/assets/img/favicon.svg b/gitea/custom/public/assets/img/favicon.svg similarity index 100% rename from image/custom/public/assets/img/favicon.svg rename to gitea/custom/public/assets/img/favicon.svg diff --git a/image/custom/public/assets/img/logo.png b/gitea/custom/public/assets/img/logo.png similarity index 100% rename from image/custom/public/assets/img/logo.png rename to gitea/custom/public/assets/img/logo.png diff --git a/image/custom/public/assets/img/logo.svg b/gitea/custom/public/assets/img/logo.svg similarity index 100% rename from image/custom/public/assets/img/logo.svg rename to gitea/custom/public/assets/img/logo.svg diff --git a/image/custom/templates/base/head.tmpl b/gitea/custom/templates/base/head.tmpl similarity index 100% rename from image/custom/templates/base/head.tmpl rename to gitea/custom/templates/base/head.tmpl diff --git a/image/custom/templates/home.tmpl b/gitea/custom/templates/home.tmpl similarity index 100% rename from image/custom/templates/home.tmpl rename to gitea/custom/templates/home.tmpl diff --git a/image/Dockerfile b/image/Dockerfile deleted file mode 100644 index d332842..0000000 --- a/image/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM gitea/gitea:latest - -RUN apk add aws-cli xz - -ADD --chown=git:git custom /data/gitea -ADD --chown=git:git entrypoint.sh /home/entrypoint.sh - -ADD --chown=git:git scripts /home/scripts -RUN chmod +x /home/scripts/* - -ADD --chown=git:git crontab.txt /home/crontab.txt -RUN /usr/bin/crontab /home/crontab.txt - -ENTRYPOINT [ "/home/entrypoint.sh" ] -CMD [ "/usr/bin/s6-svscan", "/etc/s6" ] \ No newline at end of file diff --git a/image/Dockerfile.dev b/image/Dockerfile.dev deleted file mode 100644 index a141218..0000000 --- a/image/Dockerfile.dev +++ /dev/null @@ -1,18 +0,0 @@ -FROM gitea/gitea:latest - -RUN apk add aws-cli xz - -ADD --chown=git:git custom /data/gitea -ADD --chown=git:git entrypoint.sh /home/entrypoint.sh - -ADD --chown=git:git scripts /home/scripts -RUN chmod +x /home/scripts/* - -ADD --chown=git:git crontab.txt /home/crontab.txt -RUN /usr/bin/crontab /home/crontab.txt - -RUN rm /data/gitea/conf/app.ini -RUN mv /data/gitea/conf/dev.app.ini /data/gitea/conf/app.ini - -ENTRYPOINT [ "/home/entrypoint.sh" ] -CMD [ "/usr/bin/s6-svscan", "/etc/s6" ] \ No newline at end of file diff --git a/image/crontab.txt b/image/crontab.txt deleted file mode 100644 index 04ff1ea..0000000 --- a/image/crontab.txt +++ /dev/null @@ -1 +0,0 @@ -0 0 * * * /home/scripts/push.sh >> /home/cron.log diff --git a/image/entrypoint.sh b/image/entrypoint.sh deleted file mode 100755 index 0188937..0000000 --- a/image/entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Get S3 data. -echo "Pulling data..." -./home/scripts/pull.sh -echo "Data pulled!" - -# Run crontab. -/usr/sbin/crond -f -l 8 & - -# shellcheck disable=SC2068 -exec /usr/bin/entrypoint $@ \ No newline at end of file diff --git a/image/scripts/pull.sh b/image/scripts/pull.sh deleted file mode 100644 index 9cda4ef..0000000 --- a/image/scripts/pull.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e - -# Pull achived data. -aws s3 cp "$BOOT_URI" /home/archive.tar.xz - -# Extracted Gitea data. -mkdir -p /var/lib/gitea -tar -xvf /home/archive.tar.xz -C /var/lib/gitea diff --git a/image/scripts/push.sh b/image/scripts/push.sh deleted file mode 100644 index 858b01e..0000000 --- a/image/scripts/push.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -GITEA_PROCESS="$(pgrep gitea)" - -# Stop Gitea. -echo "Stopped Gitea..." -kill -STOP "$GITEA_PROCESS" - -# Archive Gitea data. -echo "Archiving..." -cd /var/lib/gitea -tar cfJ ../archive.tar.xz . -cd .. - -# Upload to S3. -echo "Uploading..." -aws s3 cp archive.tar.xz "$BOOT_URI" - -# Restart Gitea. -kill -CONT "$GITEA_PROCESS" -echo "Restarted Gitea!" diff --git a/terraform/install.sh b/terraform/install.sh index 19a3273..49dacad 100755 --- a/terraform/install.sh +++ b/terraform/install.sh @@ -20,4 +20,9 @@ mkswap /swapfile swapon /swapfile # Stop SSH (because we have SSM.) -sudo service sshd stop \ No newline at end of file +sudo service sshd stop + +# Install Docker Compose. +curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +chmod +x /usr/local/bin/docker-compose +docker-compose version