diff --git a/playbooks/home-services.yml b/playbooks/home-services.yml index 2e6faf9..8c53601 100644 --- a/playbooks/home-services.yml +++ b/playbooks/home-services.yml @@ -14,3 +14,4 @@ - caddy - vaultwarden - redbot + - forgejo diff --git a/roles/common/tasks/create_caddyfile_for_compose-service.yml b/roles/common/tasks/create_caddyfile_for_compose-service.yml new file mode 100644 index 0000000..79984f6 --- /dev/null +++ b/roles/common/tasks/create_caddyfile_for_compose-service.yml @@ -0,0 +1,6 @@ +- name: Deploy Caddyfile for {{ service_name }} + ansible.builtin.template: + src: compose-service.caddy.j2 + dest: '{{ caddyfiles_directory }}/{{ service_name }}' + mode: '644' + when: "'caddy' in group_names" diff --git a/roles/vaultwarden/templates/vaultwarden.caddy.j2 b/roles/common/tasks/templates/compose-service.caddy.j2 similarity index 55% rename from roles/vaultwarden/templates/vaultwarden.caddy.j2 rename to roles/common/tasks/templates/compose-service.caddy.j2 index 5c3fef0..5ed0297 100644 --- a/roles/vaultwarden/templates/vaultwarden.caddy.j2 +++ b/roles/common/tasks/templates/compose-service.caddy.j2 @@ -1,5 +1,4 @@ http://{{ service_name }}.{{ ansible_hostname }} { - reverse_proxy {{ service_name }}:80 + reverse_proxy {{ service_name }}:{{ docker_http_port }} encode zstd gzip } - diff --git a/roles/compose-service/tasks/main.yml b/roles/compose-service/tasks/main.yml index 98b99d0..07ae834 100644 --- a/roles/compose-service/tasks/main.yml +++ b/roles/compose-service/tasks/main.yml @@ -1,32 +1,30 @@ -- name: Deploy service - block: - - name: Assert mandatory variables are defines - ansible.builtin.assert: - that: - - service_name is defined - - docker_image is defined +- name: Assert mandatory variables are defines + ansible.builtin.assert: + that: + - service_name is defined + - docker_image is defined - - name: Setup {{ service_user }} user and directories - ansible.builtin.import_tasks: ../../common/tasks/create_service_user.yml +- name: Setup {{ service_user }} user and directories + ansible.builtin.import_tasks: ../../common/tasks/create_service_user.yml - - name: Deploy {{ service_name }} docker-compose - ansible.builtin.template: - src: 'service.yml.j2' - dest: '{{ service_root }}/docker-compose.yml' - owner: '{{ service_user }}' - group: '{{ service_user }}' - mode: '0644' +- name: Deploy {{ service_name }} docker-compose + ansible.builtin.template: + src: 'service.yml.j2' + dest: '{{ service_root }}/docker-compose.yml' + owner: '{{ service_user }}' + group: '{{ service_user }}' + mode: '644' - - name: Start {{ service_name }} container - community.docker.docker_compose_v2: - project_src: '{{ service_root }}' - state: present - remove_orphans: true - recreate: always +- name: Start {{ service_name }} container + community.docker.docker_compose_v2: + project_src: '{{ service_root }}' + state: present + remove_orphans: true + recreate: always - - name: Add container to Caddy network - community.docker.docker_network: - name: Caddy - connected: - - '{{ service_name }}' - appends: true +- name: Add container to Caddy network + community.docker.docker_network: + name: Caddy + connected: + - '{{ service_name }}' + appends: true diff --git a/roles/forgejo/defaults/main.yml b/roles/forgejo/defaults/main.yml new file mode 100644 index 0000000..7cf7ab8 --- /dev/null +++ b/roles/forgejo/defaults/main.yml @@ -0,0 +1,5 @@ +service_name: forgejo +docker_image: codeberg.org/forgejo/forgejo +docker_image_version: 11 +data_directory: "{{ service_root }}/data" +public_ssh_port: 222 diff --git a/roles/forgejo/tasks/main.yml b/roles/forgejo/tasks/main.yml new file mode 100644 index 0000000..8008c0e --- /dev/null +++ b/roles/forgejo/tasks/main.yml @@ -0,0 +1,31 @@ +- name: Deploy Forgejo + ansible.builtin.import_role: + name: compose-service + vars: + docker_volumes: + - '{{ data_directory }}:/data' + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + docker_env: + USER_UID: '{{ getent_passwd[service_user].1 }}' + USER_GID: '{{ getent_passwd[service_user].2 }}' + FORGEJO__server__SSH_PORT: '{{ public_ssh_port }}' + FORGEJO__openid__ENABLE_OPENID_SIGNIN: false + FORGEJO__openid__ENABLE_OPENID_SIGNUP: false + docker_ports: + - "{{ public_ssh_port }}:22" + use_docker_user: false + +- name: Ensure data directory exists + ansible.builtin.file: + path: '{{ data_directory }}' + state: directory + owner: '{{ service_user }}' + group: '{{ service_user }}' + mode: '700' + + +- name: Deploy Caddyfile for Forgejo + vars: + docker_http_port: 3000 + ansible.builtin.import_tasks: ../../common/tasks/create_caddyfile_for_compose-service.yml diff --git a/roles/vaultwarden/tasks/main.yml b/roles/vaultwarden/tasks/main.yml index 918b935..6470622 100644 --- a/roles/vaultwarden/tasks/main.yml +++ b/roles/vaultwarden/tasks/main.yml @@ -14,8 +14,6 @@ - '{{ data_directory }}:/data' - name: Deploy Caddyfile for vaultwarden - ansible.builtin.template: - src: vaultwarden.caddy.j2 - dest: '{{ caddyfiles_directory }}/vaultwarden' - mode: '644' - when: "'caddy' in group_names" + vars: + docker_http_port: 80 + ansible.builtin.import_tasks: ../../common/tasks/create_caddyfile_for_compose-service.yml