
Gitea is a popular, lightweight Git frontend that can also be deployed quickly thanks to the Docker image . However, after the container is started, the initial configuration (network options, permissions, database) is done via web interface by default. This is unattractive if you want an unattended and automated installation – for example, because you set up many Gitea instances.
Fortunately, various environment variables can be assigned to the Gitea container to define most of the settings – a complete list of variable fragments can be found in the documentation.
In connection with Podman, it is still important to note that the user account running the container must be allowed to continue executing commands after logout (linger). This setting must first be made – otherwise the container will stop after a few seconds. If Docker is used, this step is omitted, since Docker uses a background service. Also, if not already done, it is necessary to install the containers.podman Ansible collection:
$ ansible-galaxy collection install containers.podman
The creation of the first user requires the execution of a command as git user in the gitea container – by means of adjusted changed_when and failed_when conditions this step can also be implemented idempotently.
The entire installation can then be implemented as follows:
- name: Deploy Gitea hosts: podman-hosts become: true vars: gitea_user: svc-gitea gitea_admin: fmulder gitea_password: trustno1 tasks: - name: Enable linger command: loginctl enable-linger "{{ gitea_user }}" changed_when: false - name: Create Gitea data directory file: path: "/home/{{ gitea_user }}/gitea" state: directory owner: "{{ gitea_user }}" group: "{{ gitea_user }}" mode: '0755' become: false - name: Start Gitea containers.podman.podman_container: name: gitea image: docker.io/gitea/gitea:1.16 volume: - "/home/{{ gitea_user }}/gitea:/data" ports: - "3000:3000" - "10022:22" env: APP_NAME: "Pinkepank Gitea" GITEA__DEFAULT__RUN_MODE: prod GITEA__server__DOMAIN: "{{ ansible_fqdn }}" GITEA__server__SSH_DOMAIN: "{{ ansible_fqdn }}" GITEA__server__ROOT_URL: "http://{{ ansible_fqdn }}:3000" GITEA__server__OFFLINE_MODE: true GITEA__database__PATH: /data/gitea/gitea.db GITEA__database__DB_TYPE: sqlite3 GITEA__picture__DISABLE_GRAVATAR: true GITEA__service__DISABLE_REGISTRATION: true GITEA__service__REQUIRE_SIGNIN_VIEW: true GITEA__security__INSTALL_LOCK: true become: false - name: Create Gitea admin user command: "podman exec -u git gitea /usr/local/bin/gitea admin user create --admin --username {{ gitea_admin }} --password {{ gitea_password }} --email root@localhost" register: create_user changed_when: - create_user.rc != 1 - '"already exists" not in create_user.stdout' failed_when: - create_user.rc != 0 - '"already exists" not in create_user.stdout' become: false