mash-playbook/docs/services/forgejo.md
Sergio Durigan Junior 5b4cf85ec1 Better explain how to integrate Forgejo and Woodpecker CI
After fiddling quite a bit with this setup, I think it's only fair if
I expand the documentation and explain how to integrate both services.

Signed-off-by: Sergio Durigan Junior <sergiodj@sergiodj.net>
2024-02-24 18:42:20 -05:00

78 lines
3.1 KiB
Markdown

# Forgejo
[Forgejo](https://forgejo.org/) is a painless self-hosted Git service, an alternative fork to [Gitea](https://gitea.io/) (that this playbook also [supports](gitea.md)).
## Dependencies
This service requires the following other services:
- a [Postgres](postgres.md) database
- a [Traefik](traefik.md) reverse-proxy server
## Configuration
To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process:
```yaml
########################################################################
# #
# forgejo #
# #
########################################################################
forgejo_enabled: true
# Forgejo uses port 22 by default.
# We recommend that you move your regular SSH server to another port,
# and stick to this default.
#
# If you wish to use another port, uncomment the variable below
# and adjust the port as you see fit.
# forgejo_ssh_port: 222
forgejo_hostname: mash.example.com
forgejo_path_prefix: /forgejo
########################################################################
# #
# /forgejo #
# #
########################################################################
```
In the example configuration above, we configure the service to be hosted at `https://mash.example.com/forgejo`.
You can remove the `forgejo_path_prefix` variable definition, to make it default to `/`, so that the service is served at `https://mash.example.com/`.
## Usage
After installation, you should be able to access your new Forgejo instance at the configured URL (see above).
Going there, you'll be taken to the initial setup wizard, which will let you assign some paswords and other configuration.
## Recommended other services
You may also wish to look into [Woodpecker CI](woodpecker-ci.md), which can integrate nicely with Forgejo.
## Integration with Woodpecker CI
If you want to integrate Forgejo with [Woodpecker CI](woodpecker-ci.md), and if you plan to serve Woodpecker CI under a subpath on the same host as Forgejo (e.g., Forgejo lives at `https://mash.example.com` and Woodpecker CI lives at `https://mash.example.com/ci`), then you need to configure Forgejo to use the host's external IP when invoking webhooks from Woodpecker CI. You can do it by setting the following variables:
```yaml
forgejo_container_add_host_domain_name: "{{ devture_woodpecker_ci_server_hostname }}"
forgejo_container_add_host_domain_ip_address: "{{ ansible_host }}"
```
You will also need to edit Forgejo's configuration file (which lives under `/mash/forgejo/config/app.ini` on the host) and allow the service to communicate with your host's IP:
```
[webhook]
ALLOWED_HOST_LIST = A.B.C.D
```
In the example above, replace `A.B.C.D` with your host's IP address.