No description
Find a file
2025-05-15 16:01:30 +02:00
backup Add backup/README.md 2025-01-17 15:36:40 +01:00
etc Update etc/forgejo/app.ini 2025-04-24 11:40:01 +02:00
logo Delete logo/logo.svg 2025-01-24 00:39:33 +01:00
mod_delete Update mod_delete/README.md 2025-01-28 20:25:28 +01:00
mod_forgotten_password Update mod_forgotten_password/README.md 2025-01-28 20:28:06 +01:00
mod_landing_page Update mod_landing_page/README.md 2025-01-28 20:28:53 +01:00
mod_upload Add mod_upload/README.md 2025-01-28 20:25:14 +01:00
templates Update templates/home.tmpl 2025-01-24 00:56:50 +01:00
README.md Update README.md 2025-05-15 16:01:30 +02:00

Note

We use

https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo

instead of the vanilla forgejo. The reason is that our data hungry research discipines need git-annex ( https://git-annex.branchable.com/ ).

forgejo-aneksajo is always a bit behind the main. However, the want to be part of the vanilla forgejo. I hope they will be able to do that. This would be nice for us because then we don't need to compile the source code ourselfs. :-)

Firewall

ufw allow 80
ufw allow 443
ufw allow 11080
ufw allow 22
ufw enable

Package installation

add-apt-repository ppa:git-core/ppa
apt update
apt upgrade

apt -y install mc net-tools nginx micro mariadb-server mariadb-client git git-lfs make curl lynx git-annex

SSH Port

We need to change the ssh port. We need it for git.

micro /etc/ssh/sshd_config

Replace

#Port 22

with

Port 11080

Restart service

systemctl restart sshd

Maria DB

systemctl enable mariadb
mysql_secure_installation
  • Switch to unix_socket authentication [Y/n] Y
  • Change the root password? [Y/n] n
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n] Y
  • Remove test database and access to it? [Y/n] Y
  • Reload privilege tables now? [Y/n] Y
mysql

Under mysql:

SET old_passwords=0;
CREATE USER 'forgejo'@'%' IDENTIFIED BY '[REDACTED]';
CREATE DATABASE forgejodb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
GRANT ALL PRIVILEGES ON forgejodb.* TO 'forgejo';
FLUSH PRIVILEGES;
exit

Install go lang >= 1.23

Add the go complier path to the bash rc

echo "export PATH=\$PATH:/usr/local/go/bin" >> /root/.bashrc
export PATH=$PATH:/usr/local/go/bin
cd /root
wget https://go.dev/dl/go1.23.5.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz

Install nodejs 22

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
nvm install 22

Some checks

node -v # Should print "v22.13.0"
nvm current # Should print "v22.13.0"
npm -v # Should print "10.9.2"

Install forgejo-aneksajo (v9.0.3-git-annex0 on the 16.01.2025)

Prepare the user

sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
  --group --disabled-password --home /home/git git

Make the necessary directories

mkdir /var/lib/forgejo
chown git:git /var/lib/forgejo
chmod 750 /var/lib/forgejo

mkdir -p /var/lib/forgejo/custom/public/assets
chown -R git:git /var/lib/forgejo/custom
chmod -R 750 /var/lib/forgejo/custom

mkdir /etc/forgejo
chown root:git /etc/forgejo
chmod 770 /etc/forgejo

Place the forgejo.service the systemd script to

/etc/systemd/system/forgejo.service

Compile the software

cd /root
https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo.git
cd forgejo-aneksajo
TAGS="bindata timetzdata" make build

cp gitea /usr/local/bin/forgejo
chmod 755 /usr/local/bin/forgejo
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/forgejo
systemctl enable forgejo.service
systemctl start forgejo.service

Check

systemctl status forgejo.service

SSL Certifcate

I placed the SSL certificates into /etc/nginx (ca.pem: certifcate bundle, key.pem: private key)

cd /etc/nginx
chmod 0400 key.pem
chmod 0444 ca.pem

nginx

cd /etc/nginx
mv nginx.conf nginx.conf_old
wget -O/etc/nginx/nginx.conf https://git.neuro.uni-bremen.de/git_rot/forgejo_installation_process/raw/branch/main/etc/nginx/nginx.conf

Test if everything is okay:

nginx -t
systemctl stop nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx

Configure forgejo

chmod 777 /etc/forgejo
touch /etc/forgejo/app.ini
chmod 777 /etc/forgejo/app.ini
systemctl enable forgejo.service
systemctl start forgejo.service

Check the status of forgejo

systemctl status forgejo.service

go to https://git.neuro.uni-bremen.de

Working on the forgejo config:

systemctl stop forgejo.service
chmod 755 /etc/forgejo
chmod 644 /etc/forgejo/app.ini
mkdir -p /var/lib/forgejo/uploads
chmod -R 0777 /var/lib/forgejo/uploads
systemctl stop forgejo.service

app.ini changes (Round 1):

For reference use /etc/forgejo/app.ini in this repo but with ALLOW_ONLY_EXTERNAL_REGISTRATION = false and the secrets from your installation.

systemctl restart forgejo.service
systemctl status forgejo.service

Anmelden und Admin-User erzeugen.

Now we go to https://git.neuro.uni-bremen.de/admin/auths

Create a new source of authentication

For the moment I am using the itexchange.neuro.uni-bremen.de/sso. Will be changed.

app.ini changes (Round 2):

[service]
[...]
ALLOW_ONLY_EXTERNAL_REGISTRATION = true
mkdir -p /var/lib/forgejo/custom/public/assets/img

Put the logos into /var/lib/forgejo/custom/public/assets/img

mkdir -p /var/lib/forgejo/custom/templates/user/auth
chmod -R 777 /var/lib/forgejo/custom

Put the files custom template files /var/lib/forgejo/custom/templates/

systemctl stop forgejo.service
systemctl start forgejo.service
systemctl status forgejo.service