{"id":20110153,"url":"https://github.com/thiagola92/learning-woodpecker","last_synced_at":"2026-02-20T17:03:06.360Z","repository":{"id":231784495,"uuid":"782724626","full_name":"thiagola92/learning-woodpecker","owner":"thiagola92","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-08T15:03:18.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T16:56:05.245Z","etag":null,"topics":["ci","codeberg","continuous-integration","woodpecker-ci"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagola92.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-05T22:19:01.000Z","updated_at":"2024-04-07T12:27:15.000Z","dependencies_parsed_at":"2024-11-13T18:10:49.401Z","dependency_job_id":"5afd9a06-e3fe-4760-b452-76faa31cb209","html_url":"https://github.com/thiagola92/learning-woodpecker","commit_stats":null,"previous_names":["thiagola92/learning-woodpecker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thiagola92/learning-woodpecker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagola92%2Flearning-woodpecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagola92%2Flearning-woodpecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagola92%2Flearning-woodpecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagola92%2Flearning-woodpecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagola92","download_url":"https://codeload.github.com/thiagola92/learning-woodpecker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagola92%2Flearning-woodpecker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29658167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T16:33:43.953Z","status":"ssl_error","status_checked_at":"2026-02-20T16:33:43.598Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci","codeberg","continuous-integration","woodpecker-ci"],"created_at":"2024-11-13T18:10:44.313Z","updated_at":"2026-02-20T17:03:06.348Z","avatar_url":"https://github.com/thiagola92.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# learning-woodpecker-ci\nUsing self-hosted [Woodpecker CI](https://woodpecker-ci.org/) with [Codeberg](https://codeberg.org/).  \n\nGood to know:\n- Codeberg is built with [Forgejo](https://forgejo.org/).\n- Forgejo have their own [Actions](https://forgejo.org/docs/latest/user/actions/overview/).\n- [Runner](https://forgejo.org/docs/latest/user/actions/overview/#runners) is responsible for executing CI workflows.\n\nA \"Forgejo Runner\" is equivalent to \"Woodpecker Agent\".\n\n# application\n- Create an application at your organization \"Settings \u003e Applications\"  \n- **Redirect URIs**: `http://\u003cyour-ip\u003e:\u003cyour-port\u003e/authorize`\n  - I'm using http just for learning\n  - Remember to have your modem configured to accept connection to your port (search for \"port forward\").\n  - An example of redirect uri: `http://127.0.0.1:8000/authorize`.  \n\nAfter creation, it will give you a \"Client ID\" and \"Client Secret\" (save it to use with woodpecker-ci).  \n\n# woodpecker-ci\nhttps://woodpecker-ci.org/docs/administration/installation/docker-compose  \nhttps://woodpecker-ci.org/docs/administration/configuration/forges/forgejo  \n\n- Replace\n  - GITHUB by FORGEJO\n  - `8000:8000` by `\u003cyour-port\u003e:8000`\n  - `${WOODPECKER_HOST}` by `http://\u003cyour-ip\u003e:\u003cyour-port\u003e`\n  - `${WOODPECKER_GITHUB_CLIENT}` by the application \"Client ID\"\n  - `${WOODPECKER_GITHUB_SECRET}` by the application \"Client Secret\"\n  - `${WOODPECKER_AGENT_SECRET}` by the random string generated by `openssl rand -hex 32`\n- Add\n  - `WOODPECKER_FORGEJO_URL` with `https://codeberg.org`\n  - Directory to store woodpecker server data after `woodpecker-server-data: `\n  - Directory to store woodpecker agent data after `woodpecker-agent-config: `\n\n```\nservices:\n  woodpecker-server:\n    image: woodpeckerci/woodpecker-server:v3\n    ports:\n      - 8000:8000\n    volumes:\n      - woodpecker-server-data:/var/lib/woodpecker/\n    environment:\n      - WOODPECKER_OPEN=true\n      - WOODPECKER_HOST=${WOODPECKER_HOST}\n      - WOODPECKER_FORGEJO=true\n      - WOODPECKER_FORGEJO_URL=https://codeberg.org\n      - WOODPECKER_FORGEJO_CLIENT=${WOODPECKER_GITHUB_CLIENT}\n      - WOODPECKER_FORGEJO_SECRET=${WOODPECKER_GITHUB_SECRET}\n      - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}\n\n  woodpecker-agent:\n    image: woodpeckerci/woodpecker-agent:v3\n    command: agent\n    restart: always\n    depends_on:\n      - woodpecker-server\n    volumes:\n      - woodpecker-agent-config:/etc/woodpecker\n      - /var/run/docker.sock:/var/run/docker.sock\n    environment:\n      - WOODPECKER_SERVER=woodpecker-server:9000\n      - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}\n\nvolumes:\n  woodpecker-server-data:\n  woodpecker-agent-config:\n```\n\n# docker\n```\nsudo docker compose up\n```\n\n- When ready access your woodpecker-ci `http:://\u003cyour-ip\u003e:\u003cyour-port\u003e`.\n  - If you are on same machine as woodpecker-ci, use `http://127.0.0.1:\u003cyour-port\u003e` instead.\n  - If you are on same lan as woodpecker-ci, use `http://\u003cmachine-lan-ip\u003e:\u003cyour-port\u003e` instead.\n- When attempting to login, it will redirect you to codeberg and ask you permission.\n- After accepting, codeberg will redirect you to `http:://\u003cyour-ip\u003e:\u003cyour-port\u003e`.\n  - if you are on same machine as woodpecker-ci, after failing change it to `http://127.0.0.1:\u003cyour-port\u003e`.\n  - if you are on same machine as woodpecker-ci, after failing change it to `http://\u003cmachine-lan-ip\u003e:\u003cyour-port\u003e`.\n\n# references\nhttps://codeberg.org/dkarakasilis/self-hosted-ci  \nhttps://codeberg.org/actions/meta  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagola92%2Flearning-woodpecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagola92%2Flearning-woodpecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagola92%2Flearning-woodpecker/lists"}