#+title: Forgejo #+HTML_HEAD: #+HTML_HEAD: #+OPTIONS: H:6 * links - [[./toc.org][TOC - Home System]] * Hardware * Forgejo Setup on Raspberry Pi ** Login data | property | value | |-------------+------------------------------| | url | https://git.ronnyabraham.com | | admin user | git-admin | | admin pass | 2reishit2ara | | admin email | ronny.abraham@ymail.com | ** Data Drive Setup *** ️Git Repository Storage Info | Property | Value | |-------------------+----------------------------------| | Physical Mount | /mnt/git | | Logical Bind Mount| /srv/git | | Device | /dev/sdb1 | | Filesystem Type | ext4 | | Label | gitdisk | | UUID | 649f82e9-cfc0-4725-b260-d40f413bd0c3 | | Used for | Forgejo repository storage | *** fstab entry #+begin_src conf UUID=649f82e9-cfc0-4725-b260-d40f413bd0c3 /mnt/git ext4 defaults,noatime 0 2 /mnt/git /srv/git none bind 0 0 #+end_src ** Data Volume Layout To separate application configuration from repository data, the Forgejo Docker container uses specific internal paths. We map our host directories accordingly for clarity and ease of maintenance. *** Folder Breakdown The folder structure on the host (Raspberry Pi): #+begin_example /mnt/storage/compose/docker/forgejo ← holds docker-compose.yml /srv/git/ ├── data/ ← holds all persistent repo data (repositories, issues, uploads) └── config/ ← holds configuration files (e.g. app.ini) #+end_example This split layout allows easy backup, inspection, and version control of the Forgejo configuration without interfering with large and changing repository data. *** Volume Mapping | Host path | Container path | Purpose | |-------------------+------------------------+--------------------------------| | /srv/git/data | /data/data | Git repos, issues, uploads | | /srv/git/config | /data/gitea/conf | app.ini, server configuration | Make sure both folders on the host (`/srv/git/data` and `/srv/git/config`) are owned by the correct user (e.g. UID 1000), and match the container’s expectations. *** docker-compose.yml #+INCLUDE: "docker.org::#docker-forgejo" :only-contents t ** Nginx Create file: /etc/nginx/sites-available/forgejo #+INCLUDE: "nginx.org::#forgejo-conf" :only-contents t Enable and reload Nginx: #+begin_src bash sudo ln -s /etc/nginx/sites-available/forgejo /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx #+end_src *** (Optional) Enable HTTPS with Certbot #+begin_src bash sudo certbot --nginx -d git.ronnyabraham.com #+end_src ** Finish Setup Visit: https://git.ronnyabraham.com Set up the admin user and create your first repository. ** Push or Mirror Repositories to Forgejo *** Push an Existing Local Repo to Forgejo 1. Go to your local repo: #+begin_src bash cd ~/your-local-project #+end_src 2. Add your Forgejo remote: #+begin_src bash git remote add origin https://git.ronnyabraham.com/ronny/.git #+end_src 3. Push your local code: #+begin_src bash git push -u origin main #+end_src 4. Optional: use SSH instead of HTTPS #+begin_src bash git remote add origin git@git.ronnyabraham.com:ronny/.git #+end_src *** Mirror a Bitbucket Repo to Forgejo 1. Clone your Bitbucket repo **bare**: #+begin_src bash git clone --mirror git@bitbucket.org:your-username/your-repo.git cd your-repo.git #+end_src 2. Add Forgejo as a new remote: #+begin_src bash git remote set-url --push origin git@git.ronnyabraham.com:ronny/your-repo.git #+end_src 3. Push all branches and tags: #+begin_src bash git push --mirror #+end_src 4. Delete the local clone if desired: #+begin_src bash cd .. rm -rf your-repo.git #+end_src