--- - name: Create git group group: name: git state: present - name: Create git-static group group: name: git-static state: present - name: Gitea user user: system: true password: '!' home: /home/git shell: /bin/bash comment: "Git Version Control" group: git name: git - name: Gitea static user # To compile and own static content user: system: true password: '!' comment: "To compile and own static gitea content." group: git-static name: git-static - name: Download gitea get_url: dest: /usr/local/bin/gitea url: "https://dl.gitea.io/gitea/{{ gitea_version }}/gitea-{{ gitea_version }}-linux-amd64" mode: 0755 owner: root group: root - name: Download gitea upgrade script get_url: dest: /usr/local/bin/gitea-upgrade.sh url: "https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/upgrade.sh" mode: 0755 force: true owner: root group: root - name: Install dependencies package: name: - git - postgresql - python3-psycopg2 # For Ansible # - rsync # for static file generation # - nodejs # for static file generation # - npm # for static file generation # - make # for static file generation - nginx - jq # For upgrade.sh - pandoc # For reStructuredText rendering state: present - name: Ensure locale en_US.UTF-8 exists locale_gen: name: en_US.UTF-8 state: present register: locale_gen_result - name: Force-restart PostgreSQL after new locales are generated service: name: postgresql state: restarted when: locale_gen_result.changed - name: Create psql git user become: true become_user: postgres postgresql_user: user: git - name: Create psql gitea DB become: true become_user: postgres postgresql_db: name: gitea owner: git encoding: UTF-8 lc_collate: en_US.UTF-8 lc_ctype: en_US.UTF-8 template: template0 - name: Create gitea hierarchy file: state: directory mode: 0750 owner: git group: git path: "{{ item }}" loop: - /var/lib/gitea/data - /var/lib/gitea/log - /var/lib/gitea/custom/templates/custom/ - /var/lib/gitea/custom/public/img/ - name: Create gitea config hierarchy file: state: directory mode: 0750 owner: root group: git path: /etc/gitea - name: Setup nginx include_role: name=nginx vars: nginx_domain: git.afpy.org nginx_certificates: ['git.afpy.org'] nginx_conf: | server { listen [::]:80; listen 80; server_name git.afpy.org; return 301 https://git.afpy.org$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name git.afpy.org; include snippets/letsencrypt-git.afpy.org.conf; client_max_body_size 16M; # location /_/static/assets/ { # alias /var/lib/gitea-static/public/; # } location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # Public asset generation (to allow nginx to serve them) needs nodejs>14. # - name: Create gitea static hierarchy # file: # state: directory # mode: 0755 # owner: git-static # group: git-static # path: "{{ item }}" # loop: # - /var/lib/gitea-static/source # - /var/lib/gitea-static/public # # - name: Download gitea tarball # For the static content # unarchive: # src: "https://github.com/go-gitea/gitea/archive/refs/tags/v{{ gitea_version }}.tar.gz" # dest: /var/lib/gitea-static/source/ # remote_src: true # owner: git-static # group: git-static # register: download_gitea_tarball # # - name: Compile static assets # command: make frontend # args: # chdir: "/var/lib/gitea-static/source/gitea-{{ gitea_version }}" # become: true # become_user: git-static # when: download_gitea_tarball is changed # # - name: Copy public assets # synchronize: # src: "/var/lib/gitea-static/source/gitea-{{ gitea_version }}/public/" # dest: "/var/lib/gitea-static/public/"