Forgejo is an open source source control system. As game development not only needs to track text files but large binaries (Images, Videos, Audio etc.), traditional providers like GitHub or GitLab might not scale or become quite pricey. This is why a self-hosted solution was set up.
The Forgejo instance is currently hosted on Hetzner Cloud cpx11. For storage, a 1tb Hetzner Storage Box is attached via CIFS. The Forgejo instance can be accessed on [https://code.virtuos.world](https://code.virtuos.world).
## Installation on Ubuntu Server 22.04
- On a new server, add a new user that is not root:
```bash
adduser newusername
usermod -aG sudo newusername
sudo -i -u git newusername
```
- Create git user account and add it to the docker usergroup, then switch to the new user.
- Automount the storage box by editing `/etc/fstab`. Important: Use the UID and GID of the newly created git user! You can get them by typing `id git`.
- Mounting might result in an error regarding the iocharset, to fix that do:
```bash
apt install linux-generic
apt install linux-modules-extra-$(uname -r)
reboot
```
- Mount the storage
```bash
sudo mount -a
```
- Install docker-compose
```bash
sudo apt install docker-compose
```
- Create docker directory
```bash
sudo mkdir ~/forgejo
```
- Create docker-compose file
```bash
sudo nano docker-compose.yml
```
- Paste the following content. This assumes your UID is 115 and your GID is 120. Use `id -u <username>` to find your values. It also maps the repository to use the storage box.
> Edit: I removed `- /mnt/source/git/repositories:/data/git/repositories` as it's slow and hooks won't work on the Storage Box!
```yaml
version: '3'
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:1.20
container_name: forgejo
environment:
- USER_UID=115
- USER_GID=120
restart: always
networks:
- forgejo
volumes:
- ./forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /mnt/source/git/lfs:/data/lfs
ports:
- '3000:3000'
- '222:22'
```
For some reason in my case, the app.ini pointed to `/data/git/lfs` instead of `data/lfs`. Fixing this resulted in actually using `/mnt/source/git/lfs` on the host.
Thanks to KeepItTechie for this tutorial: [https://www.youtube.com/watch?v=I4OQMc1rIO4](https://www.youtube.com/watch?v=I4OQMc1rIO4)
## Customizing Forgejo/Gitea
On the host, the path starts from the folder with your docker-compose file, `/forgejo/gitea/public/assets/`
Paste the images with the respective names listed below:
- `public/img/logo.svg` - Used for site icon, app icon
- `public/img/logo.png` - Used for Open Graph
- `public/img/avatar_default.png` - Used as the default avatar image
- `public/img/apple-touch-icon.png` - Used on iOS devices for bookmarks
- `public/img/favicon.svg` - Used for favicon
- `public/img/favicon.png` - Used as fallback for browsers that don't support SVG favicons
---
# Leantime
Leantime is an open source project management system. The Leantime instance is hosted on Uberspace.de and can be accessed on [https://manage.virtuos.world](https://manage.virtuos.world).
## Installation on Uberspace
- Download latest release package, upload and untar:
- Fill in your database credentials (username, password, host, dbname) in `config/sample.env`
- Rename `config/sample.env` to `config/.env`
- Navigate to `<yourdomain.com>/install`
- Follow instructions to install database and set up first user account
## Updating Leantime
Leantime comes with an update script in `/leantime`:
```bash
./updateLeantime.sh
```
---
# Wordpress
Wordpress is an open source Content Management System (CMS). The Wordpress instance is hosted on Uberspace.de and can be accessed on [https://virtuos.world](https://virtuos.world).
Wordpress updates itself. Plugins may need manual updating via the Wordpress Interface.
---
# Wiki.js
Wiki.js is an open source Wiki software. The Wiki.js instance is hosted on Uberspace.de and you are currently accessing it on [https://docs.virtuos.world](https://docs.virtuos.world).