From f6e9ffd684b038e4b7b189f14505092b65d3c36a Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Thu, 26 Jan 2023 08:20:38 +0100 Subject: [PATCH] replace hugo with jekyll --- README.md | 5 +++- playbooks/all.yml | 2 +- roles/blog/files/nginx.conf | 18 ++++++++++++ roles/blog/tasks/main.yml | 34 ++++++++++++++++++++++ roles/blog/templates/docker-compose.yml.j2 | 23 +++++++++++++++ roles/blog/vars/main.yml | 3 ++ roles/pizzeria/meta/main.yml | 4 --- roles/pizzeria/tasks/main.yml | 9 ------ roles/pizzeria/vars/main.yml | 4 --- 9 files changed, 83 insertions(+), 19 deletions(-) create mode 100644 roles/blog/files/nginx.conf create mode 100644 roles/blog/tasks/main.yml create mode 100644 roles/blog/templates/docker-compose.yml.j2 create mode 100644 roles/blog/vars/main.yml delete mode 100644 roles/pizzeria/meta/main.yml delete mode 100644 roles/pizzeria/tasks/main.yml delete mode 100644 roles/pizzeria/vars/main.yml diff --git a/README.md b/README.md index 63a328c..b1a3693 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ All services below are running under Docker, except NSD and Borg. - Authoritative DNS using [NSD](https://www.nlnetlabs.nl/projects/nsd/about/) (ns.pizzapim.nl) - Reverse proxy using [Traefik](https://doc.traefik.io/traefik/) - Git server using [Forgejo](https://forgejo.org/) ([git.pizzapim.nl](https://git.pizzapim.nl)) -- Static website using [Hugo](https://gohugo.io/) ([pizzapim.nl](https://pizzapim.nl)) +- Static website using [Jekyll](https://jekyllrb.com/) ([pizzapim.nl](https://pizzapim.nl)) - File sychronisation using [Syncthing](https://syncthing.net/) - Microblogging server using [Mastodon](https://joinmastodon.org/) ([social.pizzapim.nl](https://social.pizzapim.nl)) - Calendar and contact synchronisation using [Radicale](https://radicale.org/v3.html) ([dav.pizzapim.nl](https://dav.pizzapim.nl)) @@ -27,11 +27,14 @@ All services below are running under Docker, except NSD and Borg. - peertube? - Pixelfed? - Prometheus +- Concourse CI? ## TODO - Forward to https not working correctly yet. I think it works now? Should check it. - Expose treafik dashboard only on local network +- Clear view of what services + which versions we are running. This way, we can track security updates better. +- Mastodon links verifications ### NSD diff --git a/playbooks/all.yml b/playbooks/all.yml index dee340b..3df8acc 100644 --- a/playbooks/all.yml +++ b/playbooks/all.yml @@ -7,12 +7,12 @@ - {role: 'forgejo', tags: 'forgejo'} - {role: 'syncthing', tags: 'syncthing'} - {role: 'kms', tags: 'kms'} - - {role: 'pizzeria', tags: 'pizzeria'} - {role: 'radicale', tags: 'radicale'} - {role: 'mastodon', tags: 'mastodon'} - {role: 'seafile', tags: 'seafile'} - {role: 'jitsi', tags: 'jitsi'} - {role: 'freshrss', tags: 'freshrss'} + - {role: 'blog', tags: 'blog'} - name: Setup dataserver hosts: dataserver roles: diff --git a/roles/blog/files/nginx.conf b/roles/blog/files/nginx.conf new file mode 100644 index 0000000..284340b --- /dev/null +++ b/roles/blog/files/nginx.conf @@ -0,0 +1,18 @@ +server { + listen 80; + server_name pizzapim.nl; + index index.html index.htm; + root /var/www/blog; + + location / { + try_files $uri $uri/ /index.html; + } + + location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { + expires 30d; + add_header Pragma public; + add_header Cache-Control "public"; + } + + error_page 404 /404.html; +} diff --git a/roles/blog/tasks/main.yml b/roles/blog/tasks/main.yml new file mode 100644 index 0000000..3b2c3a3 --- /dev/null +++ b/roles/blog/tasks/main.yml @@ -0,0 +1,34 @@ +- name: Create service directory + file: + path: "{{ service_dir }}" + state: directory +- name: Clone git repo + git: + repo: "{{ git_origin }}" + dest: "{{ service_dir }}/git" + register: repo +- name: Add open permissions for git repo + file: + path: "{{ service_dir }}/git" + state: directory + mode: 0757 +- name: Generate static files + command: + cmd: "docker run --rm --volume=\"{{ service_dir }}/git:/srv/jekyll:Z\" -it jekyll/minimal jekyll build" + chdir: "{{ service_dir }}" + when: repo.changed +- name: Copy docker compose file + template: + src: "{{ role_path }}/templates/docker-compose.yml.j2" + dest: "{{ service_dir }}/docker-compose.yml" +- name: Copy nginx config + copy: + src: "{{ role_path }}/files/nginx.conf" + dest: "{{ service_dir }}/nginx.conf" + register: nginx_conf +- name: Start docker compose + docker_compose: + project_src: "{{ service_dir }}" + pull: true + remove_orphans: true + restarted: "{{ nginx_conf.changed }}" diff --git a/roles/blog/templates/docker-compose.yml.j2 b/roles/blog/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..ccb6916 --- /dev/null +++ b/roles/blog/templates/docker-compose.yml.j2 @@ -0,0 +1,23 @@ +version: "3.8" + +services: + blog: + image: nginx + container_name: blog + volumes: + - {{ service_dir }}/git/templates:/etc/nginx/templates + - {{ service_dir }}/git/_site:/var/www/blog + - {{ service_dir }}/nginx.conf:/etc/nginx/conf.d/default.conf + networks: + - traefik + labels: + - traefik.http.routers.blog.entrypoints=websecure + - traefik.http.routers.blog.rule=Host(`pizzapim.nl`) + - traefik.http.routers.blog.tls=true + - traefik.http.routers.blog.tls.certresolver=pizzapim + - traefik.http.routers.blog.service=blog + - traefik.http.services.blog.loadbalancer.server.port=80 + +networks: + traefik: + external: true diff --git a/roles/blog/vars/main.yml b/roles/blog/vars/main.yml new file mode 100644 index 0000000..d477600 --- /dev/null +++ b/roles/blog/vars/main.yml @@ -0,0 +1,3 @@ +service_name: blog +service_dir: "{{ base_service_dir }}/{{ service_name }}" +git_origin: https://git.pizzapim.nl/pim/blog.git diff --git a/roles/pizzeria/meta/main.yml b/roles/pizzeria/meta/main.yml deleted file mode 100644 index 6b03734..0000000 --- a/roles/pizzeria/meta/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -dependencies: - - role: common - - role: docker - - role: traefik diff --git a/roles/pizzeria/tasks/main.yml b/roles/pizzeria/tasks/main.yml deleted file mode 100644 index 3d18940..0000000 --- a/roles/pizzeria/tasks/main.yml +++ /dev/null @@ -1,9 +0,0 @@ -- name: Clone pizzeria repository - git: - repo: "{{ git_origin }}" - dest: "{{ service_dir }}" -- name: Start the Docker Compose - docker_compose: - project_src: "{{ service_dir }}" - pull: true - remove_orphans: true diff --git a/roles/pizzeria/vars/main.yml b/roles/pizzeria/vars/main.yml deleted file mode 100644 index 33149bb..0000000 --- a/roles/pizzeria/vars/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -service_name: pizzeria -data_dir: "{{ base_data_dir }}/{{ service_name }}" -service_dir: "{{ base_service_dir }}/{{ service_name }}" -git_origin: https://git.pizzapim.nl/pim/pizzeria.git