139 lines
4.1 KiB
Org Mode
139 lines
4.1 KiB
Org Mode
|
|
#+title: Forgejo
|
|||
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="_share/media/css/computer.css" />
|
|||
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="_share/media/css/org-media-sass/content-overview.css" />
|
|||
|
|
#+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/<repo-name>.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/<repo-name>.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
|