138 lines
4.1 KiB
Org Mode
138 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
|