gitea#

Ansible role to install gitea server in docker environment

This role configure :

  • docker network

  • docker service

  • docker volume

an example of variables file :

---
gitea_user:
  uname: "gitea"
  uid: "6000"
  gname: "gitea"
  gid: "6000"
  home: "/var/local/gitea"

# Docker part
gitea_docker_project_directory: "{{ gitea_user.home }}/gitea"
gitea_docker_data_directory: "{{ gitea_docker_project_directory }}/data"
gitea_docker_log_directory: "{{ gitea_docker_project_directory }}/log"
gitea_docker_compose_file_path: "{{ gitea_docker_project_directory }}/docker-compose.yml"

gitea_docker_network_name: "gitea"
gitea_docker_network_subnet: 172.26.0.0/24
gitea_docker_network_gateway: 172.26.0.1

gitea_server_name: "gitea"
gitea_image: "gitea/gitea:1.17.3"
gitea_container_name: "gitea-server"
gitea_docker_network_ipv4_address: "172.26.0.42"

gitea_docker_systemd_service_file: "/lib/systemd/system/gitea.service"

# APP part
gitea_user_uid: "1000"
gitea_user_gid: "1000"

gitea_disable_registration: "true"

gitea_web_protocol: "http"
gitea_web_port: "3000"
gitea_ssh_port: "2222"

gitea_server_domain: "localhost"
gitea_server_min_password_length: "6"

gitea_ssl_mode: "disable"

gitea_app_name: "Gitea"

gitea_repo_root_path: "/data/git/repositories"
gitea_lfs_root_path: "/data/git/lfs"
gitea_run_user: "git"
__gitea_app_url: "{{ gitea_web_protocol }}://{{ gitea_server_domain }}:{{ gitea_web_port }}/"
gitea_log_root_path: "/data/gitea/log"
gitea_enable_federated_avatar: "on"
gitea_enable_open_id_sign_in: "on"
gitea_enable_open_id_sign_up: "on"
gitea_default_allow_create_organization: "on"
gitea_default_enable_timetracking: "on"
gitea_no_reply_address: "noreply.gitea.local.ici"
gitea_password_algorithm: "pbkdf2"
gitea_admin_name: "gitea"
gitea_admin_passwd: "gitea"
gitea_admin_email: "gitea@local.ici"

# Passwd complexity; can be : "lower,upper,digit,spec"
gitea_server_password_complexity: "off"

# MAIL part
gitea_smtp_host: ""
gitea_smtp_from: ""
gitea_smtp_user: ""
gitea_smtp_passwd: ""

# DB part
gitea_db_type: "postgres"
gitea_db_host: "172.16.1.42"
gitea_db_port: "5432"
gitea_db_name: "database42"
gitea_db_user: "user42"
gitea_db_password: "password42"
gitea_db_schema: ""
gitea_db_path: "/data/gitea/gitea.db"
gitea_db_charset: "utf8"

Enjoy :)

docker compose -f docker-compose.gitea.yml -p glxforge-gitea ps -a –format json

/app/gitea/gitea admin user create –admin –username glxforge-admin –random-password –email admin@gitea.local.ici –access-token

docker exec -u git 633d755cb66b05183f5882eed244967a0c2326e551e18b909cdfd9c74e137ce2 /app/gitea/gitea admin user create –admin –username glxforge-admin –random-password –email admin@gitea.local.ici –access-token

Defaults#

Docker part#

Gitea domain


glxforge_gitea_domain: "local.ici"

Docker Network (will be create during the role apply)


glxforge_gitea_docker_network_name: "glxforge-network"
glxforge_gitea_docker_network_subnet: "172.26.0.0/24"
glxforge_gitea_docker_network_gateway: "172.26.0.1"

Container ipv4 address


glxforge_gitea_docker_network_ipv4_address: "172.26.0.10"

Dockerfile part


glxforge_gitea_version: "1.19.4"
glxforge_gitea_container_image: "gitea/gitea:{{ glxforge_gitea_version }}"
glxforge_gitea_docker_name: "gitea-server"
glxforge_gitea_compose_project: "glxforge-gitea"
glxforge_gitea_container_name: "gitea-server"

Port mapping


glxforge_gitea_internal_http_port: "3000"
glxforge_gitea_external_http_port: "{{ glxforge_http_port | default('3030') }}"
glxforge_gitea_internal_ssh_port: "2222"
glxforge_gitea_external_ssh_port: "{{ glxforge_ssh_port | default('3022') }}"

glxforge_gitea_home_dir: "/tmp/glxforge/gitea"
glxforge_gitea_data_dir: "{{ glxforge_gitea_home_dir }}/glxdata"

glxforge_gitea_compose_filename: "docker-compose.gitea.yml"
glxforge_gitea_compose_file_path: "{{ glxforge_gitea_home_dir }}/{{ glxforge_gitea_compose_filename }}"

glxforge_gitea_data_dir_server: "{{ glxforge_gitea_data_dir }}/gitea-server"

glxforge_gitea_secret_token_path: "{{ glxforge_gitea_data_dir_server }}/internal.token"
glxforge_gitea_access_token_dir: "{{ glxforge_gitea_home_dir }}/group_vars/galaxie_forge"
glxforge_gitea_access_token_path: "{{ glxforge_gitea_access_token_dir }}/gitea.yml"

Gitea WEG GUI admin access


glxforge_gitea_admin: "glxforge-admin"
glxforge_gitea_admin_random_password: true

Setup up gitea admin password if glxforge_gitea_admin_random_password is false


glxforge_gitea_admin_password: "Super42!"

Gitea APP registration


glxforge_gitea_app_registration_enabled: true
glxforge_gitea_app_registration_name: "glxforge_woodpecker_app"
glxforge_gitea_app_registration_redirects_uris:
  - "http://woodpecker.local.ici:3000/authorize"

App ini#

App name that shows in every page title


glxforge_gitea_app_name: "Galaxie-Forge (gitea inside)"

Change it if you run locally


glxforge_gitea_run_user: "git"

Either “dev”, “prod” or “test”, default is “dev”


glxforge_gitea_run_mode: "prod"

The protocol the server listens on. One of ‘http’, ‘https’, ‘unix’ or ‘fcgi’


glxforge_gitea_server_protocol: "http"

Expect PROXY protocol headers on connections


glxforge_gitea_server_use_proxy_protocol: "false"

Set the domain for the server


glxforge_gitea_server_domain: "{{ glxforge_gitea_docker_name }}"

Relative paths will be made absolute against the AppWorkPath.


glxforge_gitea_server_http_addr: "0.0.0.0"

The port to listen on. Leave empty when using a unix socket.


glxforge_gitea_server_http_port: "{{ glxforge_gitea_internal_http_port }}"

Disable SSH feature when not available


glxforge_gitea_server_disable_ssh: false

Whether to use the builtin SSH server or not.


glxforge_gitea_server_start_ssh_server: "true"

Domain name to be exposed in clone URL


glxforge_gitea_server_ssh_domain: "{{ glxforge_gitea_domain }}"

Port number to be exposed in clone URL


glxforge_gitea_server_ssh_port: "{{ glxforge_gitea_external_ssh_port }}"

The port number the builtin SSH server should listen on


glxforge_gitea_server_ssh_listen_port: "{{ glxforge_gitea_internal_ssh_port }}"

Overwrite the automatically generated public URL. Necessary for proxies and docker.


glxforge_gitea_server_root_url: "http://gitea.{{ glxforge_gitea_domain }}:{{ glxforge_gitea_external_http_port }}/"

LFS authentication secret, change this yourself


glxforge_gitea_server_lfs_jwt_secret: ""

Database type to use


glxforge_gitea_database_db_type: "sqlite3"

Database data location


glxforge_gitea_database_path: "/data/gitea/gitea.db"

Database timeout


glxforge_gitea_database_sqlite_timeout: "500"

https://www.sqlite.org/pragma.html#pragma_journal_mode


glxforge_gitea_database_sqlite_journal_mode: "OFF"

Whether the installer is disabled (set to true to disable the installer)


glxforge_gitea_security_install_lock: "true"

Secret used to validate communication within Gitea binary


glxforge_gitea_security_internal_token: "{{ __glxforge_gitea_internal_token_bcrypt }}"

Password Hash algorithm, either “argon2”, “pbkdf2”, “scrypt” or “bcrypt”


glxforge_gitea_security_password_hash_algo: "bcrypt"

Reverse proxy authentication header name of user name, email, and full name


glxforge_gitea_security_rp_authentication_user: "X-WEBAUTH-USER"

Reverse proxy authentication header name of user name, email, and full name


glxforge_gitea_security_rp_authentication_email: "X-WEBAUTH-EMAIL"

Reverse proxy authentication header name of user name, email, and full name


glxforge_gitea_security_rp_authentication_full_name: "X-WEBAUTH-FULLNAME"

Interpret X-Forwarded-For header or the X-Real-IP header and set this as the remote IP for the request


glxforge_gitea_security_rp_limit: "1"

List of IP addresses and networks separated by comma of trusted proxy servers. Use * to trust all.


glxforge_gitea_security_rp_trusted_proxies: "127.0.0.0/8,::1/128"

Comma separated list of character classes required to pass minimum complexity. If left empty or no valid values are specified, the default is off (no checking) Classes include “lower,upper,digit,spec”


glxforge_gitea_security_password_complexity: "off"

The minimum password length for new Users


glxforge_gitea_security_min_password_length: "6"

Set to false to allow users with git hook privileges to create custom git hooks


glxforge_gitea_security_disable_git_hooks: "true"

Set to true to disable webhooks feature


glxforge_gitea_security_disable_webhooks: "false"

Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED


glxforge_gitea_security_only_allow_push_if_gitea_environment_set: "true"

Password Hash algorithm, either “argon2”, “pbkdf2”, “scrypt” or “bcrypt”


glxforge_gitea_security_password_hash_algo: "pbkdf2"

Validate against https://haveibeenpwned.com/Passwords to see if a password has been exposed


glxforge_gitea_security_password_check_pwn: "false"

Enables OAuth2 provider


glxforge_gitea_oauth2_enable: "true"

Algorithm used to sign OAuth2 tokens. Valid values: HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, EdDSA


glxforge_gitea_oauth2_jwt_signing_algorithm: "RS256"

Private key file path used to sign OAuth2 tokens. The path is relative to APP_DATA_PATH.


glxforge_gitea_oauth2_jwt_signing_private_key_file: "jwt/private.pem"

OAuth2 authentication secret for access and refresh tokens, change this yourself to a unique string CLI generate option is helpful in this case. https://docs.gitea.io/en-us/command-line/#generate


glxforge_gitea_oauth2_jwt_secret: ""

Lifetime of an OAuth2 access token in seconds


glxforge_gitea_oauth2_access_token_expiration_time: "3600"

Lifetime of an OAuth2 refresh token in hours


glxforge_gitea_oauth2_refresh_token_expiration_time: "730"

Check if refresh token got already used


glxforge_gitea_oauth2_invalidate_refresh_tokens: "false"

Maximum length of oauth2 token/cookie stored on server


glxforge_gitea_oauth2_max_token_length: "32767"

Root path for the log files - defaults to %(GITEA_WORK_DIR)/log


glxforge_gitea_log_root_path: "/data/gitea/log"

Either “console”, “file” or “conn”, default is “console”


glxforge_gitea_log_mode: "console"

Either “Trace”, “Debug”, “Info”, “Warn”, “Error” or “None”, default is “Info”


glxforge_gitea_log_level: "info"

Collect SSH logs (Creates log from ssh git request)


glxforge_gitea_log_enable_ssh_log: "false"

Time limit to confirm account/email registration


glxforge_gitea_srv_active_code_live_minutes: "180"

Time limit to perform the reset of a forgotten password


glxforge_gitea_srv_reset_passwd_code_live_minutes: "180"

Whether a new user needs to confirm their email when registering


glxforge_gitea_srv_register_email_confirm: "false"

Whether a new user needs to be confirmed manually after registration. (Requires REGISTER_EMAIL_CONFIRM to be disabled.)


glxforge_gitea_srv_register_manual_confirm: "false"

List of domain names that are allowed to be used to register on a Gitea instance, wildcard is supported


glxforge_gitea_srv_email_domain_allowlist: ""

Comma-separated list of domain names that are not allowed to be used to register on a Gitea instance, wildcard is supported


glxforge_gitea_srv_email_domain_blocklist: ""

Disallow registration, only allow admins to create accounts


glxforge_gitea_srv_disable_registration: "false"

Allow registration only using gitea itself, it works only when DISABLE_REGISTRATION is false


glxforge_gitea_srv_allow_only_internal_registration: "false"

Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false


glxforge_gitea_srv_allow_only_external_registration: "false"

Mail notification


glxforge_gitea_srv_enable_notify_mail: "false"

This setting enables gitea to be signed in with HTTP BASIC Authentication using the user’s password


glxforge_gitea_srv_enable_basic_authentication: "true"

Every new user will have rights set to create organizations depending on this setting


glxforge_gitea_srv_default_allow_create_organization: "true"

Every new user will have restricted permissions depending on this setting


glxforge_gitea_srv_default_user_is_restricted: "false"

Either “public”, “limited” or “private”, default is “public”


glxforge_gitea_srv_default_user_visibility: "public"

Set which visibility modes a user can have


glxforge_gitea_srv_allowed_user_visibility_modes: "public,limited,private"

Either “public”, “limited” or “private”, default is “public”


glxforge_gitea_srv_default_org_visibility: "public"

True will make the membership of the users visible when added to the organisation


glxforge_gitea_srv_default_org_member_visible: "false"

Root path for storing all repository data. By default, it is set to %(APP_DATA_PATH)s/gitea-repositories


glxforge_gitea_repository_root: "/data/git/repositories"

Force every new repository to be private


glxforge_gitea_repository_force_private: "false"

Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used


glxforge_gitea_repository_default_private: "last"

Path for local repository copy. Defaults to tmp/local-repo (content gets deleted on gitea restart)


glxforge_gitea_repository_local_copy_path: "/data/gitea/tmp/local-repo"

Path for uploads. Defaults to data/tmp/uploads (content gets deleted on gitea restart)


glxforge_gitea_repository_temp_path: "/data/gitea/uploads"

Set default merge style for repository creating, valid options: merge, rebase, rebase-merge, squash


glxforge_gitea_repository_default_merge_style: "merge"

Sets the default trust model for repositories. Options are: collaborator, committer, collaboratorcommitter


glxforge_gitea_repository_default_trust_model: "committer"

Set the default theme for the Gitea install


glxforge_gitea_ui_default_theme: "auto"

All available themes. Allow users select personalized themes regardless of the value of DEFAULT_THEME.


glxforge_gitea_ui_themes: "auto,gitea,arc-green"

All available reactions users can choose on issues/prs and comments


glxforge_gitea_ui_reactions: "+1, -1, laugh, hooray, confused, heart, rocket, eyes"

Additional Emojis not defined in the utf8 standard


glxforge_gitea_ui_custom_emojis: "gitea, codeberg, gitlab, git, github, gogs"

Whether to search within description at repository search on explore page.


glxforge_gitea_ui_search_repo_description: "true"

Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve


glxforge_gitea_indexer_issue_indexer_path: "/data/gitea/indexers/issues.bleve"

Provider config options


glxforge_gitea_session_provider_config: "/data/gitea/sessions"

Either “memory”, “file”, “redis”, “redis-cluster”, “db”, “mysql”, “couchbase”, “memcache” or “postgres”


glxforge_gitea_session_provider: "file"

Whether to allow signin in via OpenID


glxforge_gitea_openid_enable_openid_signin: "true"

Whether to allow registering via OpenID


glxforge_gitea_openid_enable_openid_signup: "true"

Allowed URI patterns (POSIX regexp).


glxforge_gitea_openid_whitelisted_uris: ""

Forbidden URI patterns (POSIX regexp).


glxforge_gitea_openid_blacklisted_uris: ""

Whether a new auto registered oauth2 user needs to confirm their email.


glxforge_gitea_oauth2_client_register_email_confirm: ""

Scopes for the openid connect oauth2 provider (separated by space, the openid scope is implicitly added)


glxforge_gitea_oauth2_client_openid_connect_scopes: ""

Automatically create user accounts for new oauth2 users


glxforge_gitea_oauth2_client_enable_auto_registration: "false"

The source of the username for new oauth2 accounts:


glxforge_gitea_oauth2_client_username: "nickname"

Update avatar if available from oauth2 provider


glxforge_gitea_oauth2_client_update_avatar: "false"

How to handle if an account / email already exists


glxforge_gitea_oauth2_client_account_linking: "login"

Hook task queue length, increase if webhook shooting starts hanging


glxforge_gitea_webhook_queue_length: "1000"

Deliver timeout in seconds


glxforge_gitea_webhook_deliver_timeout: "5"

Webhook can only call allowed hosts for security reasons. Comma separated list, eg: external, 192.168.1.0/24, *.mydomain.com


glxforge_gitea_webhook_allowed_host_list: "external"

Allow insecure certification


glxforge_gitea_webhook_skip_tls_verify: "false"

Number of history information in each page


glxforge_gitea_webhook_paging_num: "10"

Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy


glxforge_gitea_webhook_proxy_url: ""

Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts.


glxforge_gitea_webhook_proxy_hosts: ""

Enabled or not mailer


glxforge_gitea_mailer_enabled: "false"

Mail server protocol. One of “smtp”, “smtps”, “smtp+starttls”, “smtp+unix”, “sendmail”, “dummy”


glxforge_gitea_mailer_protocol: ""

Mail server address, e.g. smtp.gmail.com


glxforge_gitea_mailer_smtp_addr: ""

Mail server port


glxforge_gitea_mailer_smtp_port: ""

If set to true, completely ignores server certificate validation errors


glxforge_gitea_mailer_force_trust_server_cert: "false"

Use client certificate in connection


glxforge_gitea_mailer_use_client_cert: "false"

Client cert file location


glxforge_gitea_mailer_client_cert_file: ""

Client key file location


glxforge_gitea_mailer_client_key_file: ""

Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format


glxforge_gitea_mailer_from: ""

Sometimes it is helpful to use a different address on the envelope. Set this to use ENVELOPE_FROM as the from on the envelope. Set to <> to send an empty address


glxforge_gitea_mailer_envelope_from: ""

Mailer user name and password, if required by provider


glxforge_gitea_mailer_user: ""

Use PASSWD = your password for quoting if you use special characters in the password


glxforge_gitea_mailer_passwd: ""

Timeout for Sendmail


glxforge_gitea_mailer_sendmail_timeout: "5m"
glxforge_gitea_picture_avatar_upload_path: "/data/gitea/avatars"
glxforge_gitea_picture_repository_avatar_upload_path: "/data/gitea/repo-avatars"

Path for attachments. Defaults to data/attachments only available when STORAGE_TYPE is local


glxforge_gitea_attachment_path: "/data/gitea/attachments"

Location the UI time display i.e. Asia/Shanghai


glxforge_gitea_time_default_ui_location: ""

Enable or not cron tasks


glxforge_gitea_cron_enabled: "false"

Setting this to true will run all enabled cron tasks when Gitea starts


glxforge_gitea_cron_run_at_start: "false"

Whether to enable the job


glxforge_gitea_cron_archive_enabled: "true"

Whether to always run at least once at start up time (if ENABLED


glxforge_gitea_cron_archive_run_at_start: "true"

Whether to emit notice on successful execution too


glxforge_gitea_cron_archive_notice_on_success: "false"

Time interval for job to run


glxforge_gitea_cron_archive_schedule: "@midnight"

Archives created more than OLDER_THAN ago are subject to deletion


glxforge_gitea_cron_archive_older_than: "24h"

Storage type


glxforge_gitea_storage_type: "local"

Storage type


glxforge_gitea_lfs_storage_type: "local"

Where your lfs files reside, default is data/lfs.


glxforge_gitea_lfs_path: "/data/git/lfs"